学习VivadoHLS第4章 例程中文版(2)

2025-07-13

下来菜单为块级接口协议展示了三种选择

?ap_ctrl_none: 没有块级I/O控制协议

?ap_ctrl_hs: 块级I/O控制握手协议,我们已经采用的

?ap_ctrl_chain: 块级I/O协议的控制链。这个I/O协议主要是用于把流水线块链接在一起。

块级I/O协议ap_ctrl_chain不包含在这个教程中。这个协议与ap_ctrl_hs协议类似,但增加了额外的输入信 号,ap_continue,它必须为高,当ap_done为了继续下次事务被置位时。这允许下游模块在系统上施加回压,并进一步停止处理,这是不能接受 新的数据。

6. 在Directives Editor对话框中的DestinationEditor部分中,选择Source File

默认情况下,指令被放置在directives.tcl文件。在这个例子中,该指令被放置在现有的I / O指令的源文件中。 7. 从下拉菜单中选择ap_ctrl_none

8. 点击OK

源文件现在有新的指令,在源文件代码和指令选项卡中都是高亮的。如图62

新指令表示与函数参数/接口相关联被称为返回。所有接口指令与函数参数相连接。对于块级I/O协议,返回参数被用于具体的块级接口。如果函数在源代码里没有返回参数也是可能的。

Figure 62: Block-Level Interface Directive ap_ctrl_none

在工具栏里点击Run C Synthesis按钮,或者用菜单Solution>Run C Synthesis来综合设计。

在源文件中添加的指令改变的源文件。图62所示源文件名为*adders.c。这个标记表明文件已经更改,但没有保存。 10. 点击YES 来接受对源文件的更改。 当报告打开时,接口概述出现,如图63

Figure 63: Interface summary for ap_ctrl_none

当接口协议ap_ctrl_none被采用时,没有块级接口协议被添加到设计中。仅有诸如clock、reset和data端口。 注意,也没有ap_done信号,consumer模块接收来自ap_return的数据,当数据有效时,ap_return端口现在不能表明

另外,RTL协同仿真的功能需要一个块级I/O协议,为了自动协同仿真安排测试平台和RTL设计。任何试图用RTL协同仿真的结果在下面的错误信息中,停止RTL协同仿真(理解上有误差)

@E [SIM-345] Cosim only supports the following 'ap_ctrl_none' designs: (1) combinational designs; (2) pipelined design with task interval of 1; (3) designs with array streaming or hls_stream ports. @E [SIM-4] *** C/RTL co-simulation finished: FAIL *** 退出vivado HLS GUI返回命令提示框

学习Vivado第4章lab2——接口I/O协议 概述

这个实验解释了怎么指定具体的端口I/O协议。

1. 在lab1中用Vivado HLS命令提示符,更改为lab2目录,如图64 2. 键入vivado_hls -f run_hls.tcl来创建新的Vivado HLS工程

Figure 64: Setup for Interface Synthesis Lab 2

3. 键入vivado_hls -p adders_io_prj 来打开vivado HLS 用户界面工程 4. 打开源代码如图65

Figure 65: C Code for Interface Synthesis Lab 2

本练习的源代码是与lab1类似。出于同样的原因使用简单的代码,它有助于聚焦在接口的行为,而不是核心逻辑。 这一次,代码没有一个函数的返回,取代函数输出的是通过指针参数* in_out1输出。这也提供了机会,探索双向(输入输出)端口的接口选项。

I / O协议的类型,你可以通过接口综合添加到C函数的参数取决于参数类型。这些选项在Vivado高层次综合用户指南(UG902)有完整描述。

在本实施例中的指针参数既是输入和输出的功能。在RTL设计中,该参数被实现为单独的输入和输出端口。 对于图65所示的代码,每个函数参数可能的选项在下表中被描述

函数参数 In1 和 In2 I/O协议选择 按值传递的参数都可以用下面的I / O协议来实现 ? Ap_none:没有I/O协议,这个是默认的输入 ? Ap_stable:无I/O协议 ? Ap_ack:实现与相关的输出端口确认 ? Ap_val:实现与相关的输入有效端口 ? Ap_hs:实现了两个输入有效和输出端口确认。 按引用传递的输出可以用下面的I/O协议实现 ?Ap_none:没有I/O协议,这个是默认的输入 ?Ap_stable:无I/O协议 ?Ap_ack:实现与相关的输出端口确认 ?Ap_val:实现与相关输出的有效端口,这个是默认的输出 ?ap_ovld:实现与相关输出有效端口,(任何INOUT端口的输入部分没有有效的端口) ?ap_hs:实现所有输入有效端口和输出响应端口 ?ap_fifo:FIFO接口与相关输出写入,输入FIFO满端口 ?ap_bus:Vivado HLS总线接口协议 In_out1 在实验1中应用的端口指令实际上不是必需的,因为AP_NONE是使用这些C参数的默认I/ O协议。在这个练习中给出了指令,以避免处理任何默认或不是默认的I / O端口协议的行为。 在本练习中,您将实现一系列的I / O协议。 步骤2:端口具体的I/O协议 1. 保证能在信息窗口中看见C源代码

2. 激活指令选项卡(Directives tab)并选择输入参数in1(input argument in1),如图66

Figure 66: Adding Port I/O Protocols

3. 右击并选择插入指令(Insert Directives)

4. 当指令编辑窗口打开,使指令下来框为INTERFACE

a. 保持目标是默认值,这次,指令被存储在directives.tcl文件中。 b. 从模式下来菜单选择ap_val c. 点击OK

5. 选择参数 in2 ,添加一个接口指令指定I/O协议为ap_ack 6. 选择参数in_out1并添加一个接口指令I/0协议为ap_hs

7. 在资源管理器窗口中,扩展约束文件夹,并双击打开directives.tcl文件,如图67

Figure 67: Directives for Lab 2

8. 综合设计

9. 当文件打开时,查看接口概述,如图68


学习VivadoHLS第4章 例程中文版(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南阳市石灰企业名录2024版

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219