本实验练习使用的设计是实验1并对它进行优化。
步骤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.变更到lab3路径:cdc:\Vivado_HLS_Tutorial\Introduction\lab3.
3.在命令提示符窗口中,键入:vivado_hls -f run_hls.tcl建立工程
4.在命令提示符窗口中,键入:vivado_hls -p fir_prj在vivado用户界面打开工程,Vivado HLS打开,如下图所示。方案1的综合已经完成
如前面所述,本设计的目标是:
?为这个设计创建一个的最高吞吐量的版本
?最终的设计应该能够处理一个伴随输入有效信号的输入数据。
?伴随着一个输出有效信号的输出数据。
?为了FIR设计,此滤波器系数存储在外部的一个单端口的ram中。
步骤2:优化I/O接口
因为设计规范中包含了I/O协议,所以首先你对创建正确的I/O协议和端口执行优化。I/O协议类型的选择可能会影响设计优化的可能性。如果有I / O协议的规定,应在设计周期的早期设置I/O协议。
在lab1中,查看一下设计中的I/O协议,您可以通过导航找到在solution1\syn文件夹下的报告文件夹中综合报告,可以重看一遍综合报告,会发现I/O要求是:
?端口C必须有一个单端口的RAM访问
?端口X必须有一个指示输入数据是有效的信号
?端口Y必须有一个指示输出数据是有效的信号
(重看了综合报告,看见了Interface里面x,y,c等RTL 端口,但是这样的具体要求不知道在什么地方体现出来,就是I/O协议方面的要求,应该是下面红色的圈起来的)
端口C已经是一个单端口RAM的访问。但是,如果你没有明确指定的RAM访问类型,高层次综合可能会使用双端口接口的RAM。HLS如果为了创建一个具有更高的吞吐量设计可以这样做。如果要求是单端口的,你应该明确地添加要求到设计的I / O协议中,要求使用单端口RAM。
输入端口x在默认情况下是一个简单的32位数据口。您可以通过指定的I / O协议ap_vld实现它与相关的数据有效信号的输入数据端口。
输出Y口已经有一个相关联的输出有效信号。这是默认的指针参数。你没有对这个端口指定明确的端口协议,因此就按照默认要求去实现,但如果要求了,那就按照要求去实现。
为了保存已经存在的结果,创建一个新的解决方案,命名为solution2
1. 点击New Solution工具栏按钮,创建一个新的解决方案
2. 保存默认的solution2名字,不要更改任何技术或时钟设定
3. 点击完成
创建solution2,并将其设置为默认的解决方案 - 确认solution2是在资源管理器窗格中突出显示,表示它是当前的解决方案。
要添加优化指令来定义所需的I / O接口的解决方案,请执行以下步骤。
4. 在资源管理器窗口中,打开Source包含项(见图22)
5. 双击fir.c ,在信息窗口中打开文件
6. 激活辅助窗格中的指令选项卡(Directives tab),选择顶层函数中fir跳转到源代码视图中fir函数的顶部(图22)。
指令选项卡在图22右边展示,列出了在设计中的所有可以被优化的对象。在指令选项卡中,你可以为设计添加优化指令。只有当源代码是在信息窗格中打开时您才可以查看指令选项卡。
7. 在指令选项卡中,选择C的参数/端口(绿点)。
8. 右击并选择插入指令(Insert Directives)
9. 实现单端口ram接口须按以下操作
a. 从该指令的下拉菜单中选择源(RESOURCE)(为什么要选择RESOURCE,这个下拉框中其他选项有什么意义,在什么情况下用,有待研究)
b. 点击core框
c. 选择RAM_1P_BRAM, 如图23所示(这个下拉菜单中也有很多选项,每个选项在什么情况下用有待研究,不知道从什么地方可以找到相关资料)
上述步骤指定数组c是使用单端口块RAM资源来实现。由于数组c是函数的参数列表,因此是函数之外。自动创建一组数据端口来访问单端口RAM块的RTL实现之外。
由于I / O协议是不可能改变的,你可以将这些指令优化添加到源代码里,作为编译指示,以确保正确的I/ O协议嵌入到设计中。
10. 在指令编辑器(Directive Editor)中的Destination中选择源文件(source file)。
11. 要应用指令,单击OK。
提示:如果你想改变任何指令的目的,就在指令选项卡中的指令双击并修改目标。
12. 接下来,指定端口X要有相关的有效信号/端口
a. 在指令选项卡中,选择输入端口x(绿色点)
b. 右击,并选择Insert Directives
c. 从指令编译下拉菜单中选择接口(Interface )
d. 从对话框的Destination中选择Source File
e. 在mode中选择ap_vld模式
f. 单击OK应用指令
13. 最后,明确指定端口Y,有一个相关联的有效信号/端口。
a. 在指令(Directive)选项卡中,选择输入端口y(绿色点)
b. 右击,并选择Insert Directives
c. 从指令编译下拉菜单中选择接口(Interface )
d. 从对话框的Destination中选择Source File
e. 选择ap_vld的模式
f. 单击确定应用指令
评论
查看更多