ug871-vivado-high-level-synthesis-tutorial第4章lab4中文

来源:互联网 发布:python 抓取欧美 编辑:程序博客网 时间:2024/06/07 11:38

接口综合lab4:实现AXI4接口

概述

这个练习说明了在I/O端口中指定AXI4总线接口,这个练习除了增加AXI4接口外还展示了如何创建一个用接口和逻辑指令一起优化的设计。

步骤1:创建和打开工程

1.在先前的lab中用VivadoHLS命令提示符,更改为lab4目录

2.键入vivado_hls -f run_hls.tcl来创建新的Vivado HLS工程

3.键入vivado_hls -p axi_interfaces_prj来打开vivado HLS 用户界面工程

4.打开源代码如图84

此设计用的是和Lab3一样的源代码,并在设计重命名axi_interfaces

                             

步骤2:创建采用AXI4 流接口的一个优化设计

在这种设计最佳性能实现中,每个通道的数据将进行并行处理,每个通道以专用硬件实现。

理解的关键是如何最好地执行这种优化,是要认识到在输入和输出数组中的通道让他们自己成为循环分区。循环分区是Vivado HLS用户指南中有全面的解释(UG902,但基本上意味着每个数组元素,又存储在不同分区中。)

在本练习中,您指定的数组参数,以实现为AXI4流接口。如果该数组被划分成多个通道,你可以通过在并行设计中为每个端口元素实现相同的流接口。

最后,如果在I / O端口被配置为提供和利用通道数据时,for循环的局部展开可以为每个通道确保专用硬件处理。

首先,分区阵列:

 

1:保证C源代码在信息窗口中打开

2:在指令标签中,选择d_o并右击打开指令编辑对话框。

a. 选择上部Directives中的下拉菜单,并选择ARRAY_PARTITION

b. 点击Type的下拉菜单,并指定为cyclic分区

c. 在Factor对话框中,输入8,创建8个分区(这个结果在8个端口中)

d. 在指令编辑对话框中填充如图85,点击OK

  

3:在指令标签中,选择d_o并右击打开DirectivesEditor对话框

a. 激活上部Directives下拉菜单,选择INTERFACE

b. 点击Mode下拉菜单,指定axis接口

c. 点击OK

4:在指令标签中,选择d_i并重复上述步骤2和步骤3。

a. 应用cyclic分区并且Factor为8

b. 应用axis接口

5下一步,对for循环进行局部展开和流水线操作。

a. 在指令标签中,选择For_Loop并且右击打开Directives Editor对话框

b. 激活上部的Directives下拉菜单,选择UNROLL

I.     选择因素8(factor 8)部分展开for循环,这等同于重写C代码以每一次循环迭代中执行8个循环体的复制(其中,新的循环仅在总执行用于四次迭代,而不是32)。

II.   点击OK

c. 在指令标签中,选择For_loop并右击打开Directives Editor对话框。

I.     激活上部的Directives下拉菜单,并选择PIPELINE

II.   保持间隔空白,让他默认为1

III.  选择enableloop rewinding(使能重复循环)

IV.   点击OK

当设计顶层是循环,你可以用选择流水线重复,这个通知vivadoHLS在RTL实现中,这个循环连续运行(与功能和功能重新启动周期没有结束)。

在执行了上述步骤,指令标签如图86。检查保证所有的选择都正确的应用。如果没有,双击指令重新打开Directives Editor

6.综合设计

 当报告在信息窗口中打开,确认d_id_o8个独立的AXI4流接口实现

7.在设计中的性能部分,确认每个时钟周期对for循环的处理样本(间隔1)以3延迟,并且设计有比实验3解决方案23,或4使用的资源更小(图83)。

阵列接口和部分for循环展开的循环分区允许执行该C代码在硬件上实现八个单独的通道。

步骤3:实现AXI4-Lite接口

在这个练习中,您可以把块级I/O协议端口组成简单的AXI4 Lite接口,AXI4 Lite接口容许这些块级控制信号被控制,由CPU访问

1:从工具栏中选择New Solution或者从工程(project menu)菜单来创建新的解决方案

2:设置默认,点击Finish,包括从solution1种复制存在的指令

3:保证C源代码在信息窗口中可见

4:在指令选项卡中,选择顶层函数axi_interface并且右击打开Directives Editor对话框。

a.    在对话框上部激活Directives下来菜单,并选择INTERFACE

b.   激活mode下拉菜单,并选择s_axilite.这指定了与函数返回(块级I / O端口)被实现为一个AXI4Lite接口相关联的端口。由于默认模式为函数的返回是ap_hs,这里需要指定该I / O协议。

c.    点击OK

指令标签显示如图87

5:综合设计

       当报告打开,只有RTL端口为AXI4 Slave Lite的接口出现在接口摘要

6:选择从工具栏导出RTL(Export RTL),或者解决方案(Solution)菜单来创建IP

7:保持格式选择项为IP Catalog点击OK

您可以在solution2/impl文件夹中看见IP包如图88,因为你用vivado IP Catalog格式,这个包在ip文件夹中

Ip文件夹包括了drivers 子文件夹,如图88

当你在设计中添加了AXI4-Lite接口时,IP封装过程还创建软件驱动程序文件,使外部模块,通常一个CPU,以控制该块(启动,停止,设置端口值,检查中断状态)。

8:双击xaxi_interfaces_hw.h文件在信息窗口中打开

这显示了地址访问和控制的块级接口信号例如,设置控制寄存器从01,将使能ap_start端口,另外设定位7将使能自动重启动,使设计将在每个事务结束时自动重新启动。

其余C驱动程序文件是用来整合AXI4-Slave-Lite接口控制嵌入在CPU或微控制器上运行的代码,并包含在IP封装中。

 

结论在本教程中,您学习:

•有哪些块级I / O协议,以及如何控制它们。

•如何指定和应用端口级的I / O协议。

•如何指定阵列端口RAMFIFO的接口。

•如何划分的RAMFIFO接口为子端口。

•如何使用两个I / O指令和优化指令来创建AXI4接口的优化设计。

0 0