完整word版学习VivadoHLS第5章例程中文版.docx
- 文档编号:10302995
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:11
- 大小:1.15MB
完整word版学习VivadoHLS第5章例程中文版.docx
《完整word版学习VivadoHLS第5章例程中文版.docx》由会员分享,可在线阅读,更多相关《完整word版学习VivadoHLS第5章例程中文版.docx(11页珍藏版)》请在冰点文库上搜索。
完整word版学习VivadoHLS第5章例程中文版
学习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>Vivado2014.2>VivadoHLS>VivadoHLS2014.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路径如图99
2.执行TCL并建立vivadoHLSProject,采用的是vivado_hls–frun_hls.tcl如图99所示
3.在用户界面里打开工程。
用vivado_hls–pwindow_fn_prj命令打开,
4.在资源管理器中打开源文件夹,并双击window_fn_top.cpp打开代码,如图100
5.按住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%),和在RTL硬件中的操作是不大于必要了。
2.向下滚动到接口总结报告图105
图105展示了数据端口现在是8位和24位
3.退出VIVADOHLS用户界面,返回命令提示符
总结
在这个教程中,您学习到:
•如何更新现有的标准C类型为Vivado高层次综合任意精度的类型。
•在硬件性能和使用位精确的数据类型的面积计算的优势。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 学习 VivadoHLS 例程 中文版