FPGA实践教程:在Xilinx zynq-7z035上运行LeNet(四)系统集成操作

本文档系列是我在实践将简单的神经网络LeNet-5实现到Xilinx 的zynq-7z035的FPGA上遇到的问题和解决方法。

本文档重点探讨vivado软件的使用。

完成此过程可以参阅的文档有

UG892: Design Flows Overview 设计流程概览

UG895:System-Level Design Entry 系统级设计入门

UG895:Using the Vivado IDE 运用vivado集成设计环境,可能后两个更加着重探讨软件的使用。

背景:我们用vivado HLS对相关软件生成了相应的IP core,现在需要对IP core进行系统集成,形成完整的设计。

一、添加之前生成的IP core


之前一直以为是在add sources中加入IP core,后来发现加入之后IP core在相应的IP catalog中找不到。可能add source有其他的意思。IP core是在project setting中加入的。


在block design中加入


经常在图中看到变量[31:0]这样的东西,这个描述是什么意思呢?


二、搭建系统

1.基础知识

搭建系统中有一个重要的因素是DMA:(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。


  • AXI4:主要面向高性能地址映射通信的需求;
  • AXI4-Lite:是一个简单地吞吐量地址映射性通信总线;
  • AXI4-Stream:面向高速流数据传输;
  • AXI4总线分为主、从两端,两者间可以连续的进行通信。
  • GP master interface与GP slave interface之间有什么区别?

为了实现相应的系统,我们该把什么样的IP core加入block?加入block之后线如何连接?

下面几个可能为重要的IP core


可能有用的文档有UG895:System-Level Design Entry 系统级设计入门

UG895:Using the Vivado IDE 运用vivado集成设计环境

2.创建HDL wrapper


我们只创建了一个PS,并且没有用到相应的fabric,但是zynq PS已经与Gigabit Ethernet PHY, the USB PHY, the SD card, the UART port and the GPIO相连接,所以我们仍然有许多工作可以做,比如在这个PS上运行linux,或者运行裸程序。

三、连接相应的IP

DMA (Direct Memory Access)让系统将数据从一个部分传到另一个部分,可以将任何一个data producer传输到memory,也可以从任何一个memory传输到data consumer。

  • MM2S意思是memory-mapped to stream, S2MM意思是stream to memory-mapped
  • 当用到scatter-gather时,DMA与controller之间有一条额外的AXI bus,为了简化这条线并不在图表之中。
  • AXI-lite bus让处理器与AXI DMA之间进行联系
  • AXI-MM2S与AXIS2MM让Memory-Mapped AXI4 buses提供与DDR之间的连接。
  • AXIS-MM2S与AXIS-S2MM为AXI4-Stream总线,只在source与sink之间进行相应的stream流,不需要地址。

1.点击create block,先点添加IP,把AXI derect memory access和zynq processing system加入,然后点击相应的block automation和connection automation,系统会自动添加相应的IP块进行相应初步的IP连接。


  • AXI4-Lite是一个轻量级的地址映射单次传输接口,占用很少的逻辑单元;
  • AXI4-Stream去掉了地址项,允许无限制的数据突发传输规模;

2. 下面需要在PS上使能一个高性能的AXI slave interface,我们需要在ZYNQ processing system双击IP core使这个管脚出来。双击ZYNQ processing system,然后点击PS-PL configuration,然后点击HP slave Interface,勾选第一个S_AXI_HP0_interface,以使能这个管脚。(HP的意思就是Hign-performance)(PS的意思是processing system?)


3.加入FIFO,然后把FIFO与DMA进行连接


进行了下面两个连接之后,把areset连接到大家的reset上,把clock连在clock上。练完之后就是下面这种结构。


4.移除AXI stream statu管脚和DMA的control ports管脚

在设计中这两个管脚是不需要的,所以我们可以移除他们。双击DMA块,然后取消勾选enable control,我们能看到对应于图上的control管脚们都没有了。


5.连接DMA interrupt与PS

首先双击点进去processing system的块,然后在interrupt选项里面勾选fabric interrupts中IRQ F2P选项。


加入叫concat的IP块,然后按下图连管脚



四、validate与export

1.点击validate,运行完之后会显示success,no error等信息,


2.可以点击regenerate layout icon来进行重新布局


3.点击generate bitstream,生成相应的比特流


失败了,

教训1:项目的用的板子的名字任何地方都要一致。

教训2:要设置相应的clock。

出现这个错误是由于对clock用的不熟并且不知道每一个连接的意思。因此我们重复进行上面的步骤试一下,重复几次之后还是不能进行相应的系统设计。

为了解决连线等等问题,我们需要能看懂连线,所以我们查阅相应的文档PG082 Processing System 7来看解决这个问题。

在又运行了两次失败之后,我们不得不进行最简单的操作。设置最简单的系统以走完整个流程。


点击generate bitstream,运行成功后给出了整个板子的占用情况。



经过此次操作,我们虽然不能成功运用调用DMA,但是我们成功的搭建了整一个最简单的系统,下一步,我们就要用系统烧录到相应的板子上。

阅读更多
个人分类: FPGA
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭