学习VivadoHLS第5章-例程中文版_第1页
学习VivadoHLS第5章-例程中文版_第2页
学习VivadoHLS第5章-例程中文版_第3页
学习VivadoHLS第5章-例程中文版_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习Vivado第5章lab1——任意精度类型概述C/C++提供的数据类型被固定为8位边界•char(8-bit)•short(16-bit)•in(32-bit)•longlong(64-bit)•float(32-bit)•double(64-bit)•精确宽度的整数类型,如int16_t〔16位〕和int32_t〔32位〕当创立硬件时,经常在一些例子中要求更高精度的位宽。例如,一个输入为12位的滤波器,累积的结果最大范围只要求27位,用标准C数据类型的硬件设计会导致不必要的硬件本钱。比精确类型要求更多LUT和存放器的操作延迟甚至超过时钟周期,因此需要更多的周期来计算结果Vivado高层次综合〔HLS〕提供了许多位准确或任意精度的数据类型,可以让你模拟使用任何〔任意〕宽度的变量。本教程由两个实验练习组成:•Lab1–综合使用浮点类型的设计和查看结果。本设计采用标准C++浮点类型。•Lab2–综合在lab1中使用同样的功能但使用任意精度适宜类型,突出在精度和结果的优点。这次演习显示了同样的设计如何可以转换到VivadoHLSap_fixed类型,保存所要求的精度,但创造一个更优化的硬件实现。教程设计描述从xilinx网站下载教程设计文件,在教程设计中查看信息。教程所用的设计文件在教程目录vivado_HLS_Tutorial\Arbitary\Precision任意精度:Lab1任意精度Lab1:查看采用的标准C/C++类型设计在这个lab中,您用标准的C类型综合设计,您用此设计作为一个参考,为lab2使用任意精度类型的设计的参考。重要:在教程中的图片和命令假设教程数据路径vivado_HLS_Tutorial被解压放置在c:\vivado_HLS_Tutorial中。如果教程数据目录解压缩到不同的位置,或者在Linux系统上,调整一些路径名引用到的位置您选择放置Vivado_HLS_Tutorial目录。步骤1:创立并翻开工程1.翻开VivadoHLS命令提示符a.在windows系统中,采用Start>AllPrograms>XilinxDesignTools>Vivado2023.2>VivadoHLS>VivadoHLS2023.2CommandPrompt,如下列图b.在linux系统下,翻开新的shell,2.用命令提示符窗口,如92,改变lab1C验证的路径3.执行TCL并建立vivadoHLSProject,采用的是vivado_hls–frun_hls.tcl如图92所示4.当vivadoHLS完成,在用户界面里翻开工程。用vivado_hls–phamming_window_prj命令翻开,如图93步骤2:查看测试平台并运行C仿真1.在资源管理器中翻开Sourcefoleder,并双击window_fn_top.cpp翻开代码如图94、2.按住ctrl键,并点击window_fn_top.h在45行,来翻开头文件3.向下滚动,展示类型定义如图95这个设计采用标准的C/C++浮点类型对所有数据进行操作。Vivado高层次综合能综合浮点类型直接转化成硬件,提供的操作是标准的数学操作(+、-、*、%、etc).当用从math.h或cmath.h中调用数学函数时,参考vivadoHLSuserguide〔ug902)更多的细节关于数学函数在综合中被支持。4.在工具栏中点击runCSimulation按钮,翻开C仿真对话框。5.接受默认的设置〔没有选项被选择〕并点击OK控制台窗口出现了设计仿真希望的结果步骤3:综合设计查看结果1.在工具栏中点击RunCSynthesis按钮,为了把设计综合成RTL级当综合完成,综合报告自动翻开,图96出现了综合报告实例中的顶层设计占用大多数资源。2.把滚轮到报告的底部,展看实例,查看资源估计的细节局部如图97细节展示了浮点乘法,〔fmul),浮点操作花费了大量的资源和时钟。分析视图〔图98〕展示了这个操作还用了大局部的时钟周期,〔8个状态中的5个需要来执行有循环winfn创立的逻辑〕。在本教程中,关于使用分析视图的更多细节可用。为了理解这种设计的目的,操作的两个状态,在第一个状态中,花费两个时钟从存储器中读操作,最后一个状态的操作是往存储器中写状态。3.退出vivadoHLS用户界面,返回命令提示符学习Vivado第5章lab2——查看用任意精度类型的设计简介这个lab练习采用了和lab1同样的设计,但是数据类型现在是任意精度类型。您首先查看设计,并检查设计结果。步骤1:创立并仿真工程1.在lab1中用命令提示符窗口,变为lab2路径如图992.执行TCL并建立vivadoHLSProject,采用的是vivado_hls–frun_hls.tcl如图99所示3.在用户界面里翻开工程。用vivado_hls–pwindow_fn_prj命令翻开,4.在资源管理器中翻开源文件夹,并双击window_fn_top.cpp翻开代码,如图1005.按住ctrl键,并在45行单击window_fn_top.h,翻开头文件6.滚动文件的下方,查看类型定义如图101头文件,window_fn_top.h仅有这个文件不同于lab1,数据类型已更改为ap_fixed点类型,类似于float和double类型的,他们支持整数和小数位表示。数据类型在头文件ap_fixed中被定义。在头文件中的定义定义数据类型的大小:·首先规定了总字的长度·第二定了整形位数·因此小数位的数目是第一项减去第二项当你修改C代码使用任意精度的类型,而不是标准的C类型,你必须做出最常见的变化之一是降低数据类型的大小。在这种情况下,你改变使用8位,24位和18位的字,而不是32位浮点类型的设计。这将导致较小的操作,减小的面积,以及更少的时钟周期来完成。类似的优化帮助,当你改变较为常见的C类型,如int,short和char。例如,改变只需要从整形〔32位〕变为INT18位数据类型,确保只用一个单一的DSP48需要执行任何乘法。在这两种情况下,必须确认该设计仍执行正确的操作,并且它也具有所要求的精度。设置有Vivado高级综合的任意精度类型的好处是可以模拟的更新的C代码,以确认其功能和精确度。7.在资源管理器中翻开测试平台文件夹,并双击8.滚到文件下方,查看如图102为了这个设计的测试平台包括代码用了检查结果的精度。预期的结果是使用浮点类型仍然产生。结果检查验证的结果是准确的指定范围之内〔在这种情况下,内0.001的预期结果〕。这使得更新后的设计可以快速,高效地使用C进行验证,以快速编译和运行时间。9.在工具栏中点击RunCSimulation按钮,翻开C仿真对话框10.接受默认设置〔没有选项的选择〕并点击OK控制台窗口展示了C仿真的结果,用更新数据类型,其结果与期望的结果不再相同,但是它们是在误差范围内。步骤2:综合设计并查看结果1.在工具栏里点击RunCSynthesis按钮,把设计综合成RTL。当综合完成,综合报告自动翻开,如图104所示综合报告注意通过使用任意精度类型,你可以减少延迟和资源使用〔25%和60%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论