Figure 68: Interface summary for Lab 2
?设计有时钟和复位 ?默认块级???协议信号是存在的 ?端口?in1被以数据端口而实现,并伴随输入有效信号 ?数据在in1端口上,仅读。当端口in1_ap_vld为有效高 ?端口?in2被综合为数据端口,并与输出响应信号相关联 ?当端口in2被读时,端口?in2_ap_ack将被置高 ?inout_i定义为inout1参数的输入部分,与输入有效端口inout1_i_ap_val相关联,并且输出响应端口inout1_i_ap_ack ?inout1参数输出部分定义为inout_o,与输出有效端口inout1_o_ap_val相关联,并输入响应端口inout1_o_ap_ack. 10. 退出vivado HLS GUI 并且返回命令提示口
学习Vivado第4章lab3——实现数组的RTL接口
概述
这个练习说明了在函数中的数组参数,你可以实现不同种类的RTL端口 步骤1:创建和打开工程
1.在先前的lab中用Vivado HLS命令提示符,更改为lab3目录 2.键入vivado_hls -f run_hls.tcl来创建新的Vivado HLS工程
3.键入vivado_hls –p array_io_prj 来打开vivado HLS 用户界面工程 4.打开源代码如图69
此设计具有一个输入数组和一个输出数组。在C源代码中的注释说明了输入数组中的数据是如何有序作为一个通道和通道是怎么被计算的。
理解设计,您还可以查看试验平台和文件result.golden.dat的输入和输出数据。
Figure 69: C Code for Interface Synthesis Lab 3
步骤2:综合函数参数数组为RAM端口
在这一步中,查看数组端口是怎么综合成RAM端口的。 1.综合设计,当报告打开时查看接口简介。
接口简介表明了在C 源代码中的数组参数是怎么综合成默认的RAM端口的。 ?设计有时钟,复位和默认的块级I/O协议ap_ctrl_hs(注意在报告中的时钟) ? d_o参数已经综合成RAM端口(I/O协议ap_memory) ?数据端口(d_o_d0) ?地址端口(d_o_address0)
?芯片使能控制端口(d_o_ce0)和写使能端口(do_we0)
? d_i参数已经被综合成类似RAM接口,但有输入数据端口(d_i_q0)没有写使能端口,因为接口仅读数据。
在这两种情况下,数据端宽度是在C源代码中的数据值的宽度(在这种情况下的16位整数),并且地址端口的宽度已被自动调整大小匹配到的地址必须被存取的次数(5位的为32个地址)。
把数组综合成RAM端口是默认的,您可以控制这些端口怎么用一些其他的选择去实现。在实验3中的其余步骤演示这些选项:
? 采用单端口RAM和双端口RAM接口 ? 采用FIFO接口 ? 分割成离散的端口
步骤3:采用双端口RAM和FIFO接口
高层次综合让你可以指定RAM接口为单端口还是双端口。如果你不做出这样的选择,Vivado HLS 会自动分析设计和选择端口的数量,以便产生最大的数据速率。
第二步用的单端口RAM接口,因为在源代码中的for循环是默认的保持不展开,该循环每次迭代依次执行: ? 读输入端口
? 从内部RAM中读累计的结果 ? 和累计并且新数据写入到内部RAM中 ? 把结果写到输出端口 ? 重复循环的下一次迭代
这确保单一输入读和输出写入以往需要。即使采用多个输入和输出时,内部逻辑可以不采用额外端口。 注意:如果你指定了双端口RAM并且Vivado HLS 能确定必须只能用单端口,会使用单端口覆盖双端口规范。 在这个设计,如果你想用多RTL端口实现数组参数,首先得事情你必须展开for循环,并容许内部操作是并行的,否则多端口没有好处:没有展开的for循环可以确保在每次读时有一个数据被读。 1. 从工具栏中选择New Solution或者从工程菜单来创建新的解决方案 2. 设置默认,点击Finish
3. 保证C源代码在信息窗口中可见
4. 在指令选项卡中,选择for循环,在for循环上并右击打开Directives Editor对话框。 a. 在指令编辑对话框中激活指令下来菜单在上部并选择展开 b. 指令编辑如图71,点击OK
下次,为输入读指定双端口RAM,资源指令指示RAM连接到接口的类型。 5. 在指令选项卡中,选择port d_i并右击打开指令编辑对话框
a. 在指令编辑中在上部激活指令下拉菜单并选择RESOURCE(in Dirctive)
b. 点击 core options 框并选择RAM_2P_BRAM c. 确认在指令编辑对话框中的设定,如图72,点击OK
使用FIFO接口实现输出端口
6. 在指令选项卡(Directive)中,选择d_o,并右击打开Directives Editor对话框 a. 在指令编辑对话框中,保持指令为Interface(接口) b. 从模式下拉菜单中,选择ap_fifo. c. 点击OK
在Directive 标签展示了指令已经应用到设计中如图73