Board logo

标题: 学习Vivado第5章lab1——任意精度类型 [打印本页]

作者: pengpengpang    时间: 2015-3-28 16:23     标题: 学习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.打开Vivado HLS 命令提示符
a.在windows系统中,采用Start>All Programs>Xilinx Design Tools>Vivado2014.2>Vivado HLS>Vivado HLS 2014.2 Command Prompt,如下图
b.在linux系统下,打开新的shell,


2. 用命令提示符窗口,如92,改变lab1 C验证的路径


3. 执行TCL并建立vivado HLS Project,采用的是vivado_hls–f run_hls.tcl如图92所示
4. 当vivado HLS 完成,在用户界面里打开工程。用vivado_hls–p hamming_window_prj命令打开,如图93


步骤2:查看测试平台并运行C仿真
1.        在资源管理器中打开Source foleder,并双击window_fn_top.cpp打开代码如图94


2.按住ctrl键,并点击window_fn_top.h在45行,来打开头文件
3.向下滚动,展示类型定义如图95


这个设计采用标准的C/C++浮点类型对所有数据进行操作。Vivado高层次综合能综合浮点类型直接转化成硬件,提供的操作是标准的数学操作(+、-、*、%、etc).
当用从math.h或cmath.h中调用数学函数时,参考vivado HLS user guide(ug902)更多的细节关于数学函数在综合中被支持。
4. 在工具栏中点击run C Simulation按钮,打开C仿真对话框。
5. 接受默认的设置(没有选项被选择)并点击OK
控制台窗口出现了设计仿真希望的结果
步骤3:综合设计查看结果
1.在工具栏中点击Run C Synthesis按钮,为了把设计综合成RTL级
当综合完成,综合报告自动打开,图96出现了综合报告


实例中的顶层设计占用大多数资源。
2.把滚轮到报告的底部,展看实例,查看资源估计的细节部分如图97


细节展示了浮点乘法,(fmul),浮点操作花费了大量的资源和时钟。分析视图(图98)展示了这个操作还用了大部分的时钟周期,(8个状态中的5个需要来执行有循环winfn创建的逻辑)。
在本教程中,关于使用分析视图的更多细节可用。为了理解这种设计的目的,操作的两个状态,在第一个状态中,花费两个时钟从存储器中读操作,最后一个状态的操作是往存储器中写状态。


3.退出vivado HLS 用户界面,返回命令提示符
附件大小实验例子.rar12.22 KB







欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0