系列文章目录
前言
在上一篇中,我们已经讲述了AXI-Stream(以下简写AXIS)的相关信号和对应的缓冲模块设计;
在本篇中,将给出后续的上板实验过程;
一、环境
本次上板基于Xilinx 的Zynq 7010 FPGA,Digilent 的Zybo Z7板卡,Vivado集成开发环境;采用软硬协同的方式进行逻辑验证;
板卡图片:

二、验证SOC搭建
2.1 系统框图
在设计验证系统时,我们参考正点原子的AXI-DMA实验,只不过将其中的FIFO替换成我们自己编写的AXI-Stream-test模块;
正点原子系统框图:
AXIS验证系统框图:
验证需要zynq硬核的参与,PS端的HP内存映射接口与AXI DMA进行数据流的通信,GP接口与AXI DMA进行AXI-Lite通信,DMA将数据流以AXIS协议发送给AXI-Stream-test IP,并将AXI-Stream-test IP处理后的数据通过HP接口写入DDR3;
2.2 IP核打包
若想进行Block Design设计,则需要将AXI_Stream_test逻辑打包成IP;
1.选择Tools->Creat and Package New IP
2.选择Package a specified directory
首先进行File Groups,然后选择Ports and Interfaces,点击+号
选择axis_trl接口,取名M_AXIS,Mode选择master
点击Port Mapping,绑定信号,绑定信息如下:

继续绑定S_AXIS接口;
其端口映射如下:
4.点击Customization GUI,将C_M_Axis_Burst_Len参数托到Page0;

5.点击Review and Package完成IP打包
2.3 SOC系统硬件设计
在Vivado中,SOC的BD设计如下所示:
其中,DMA配置如下:
取消勾选 Enable Scatter Gather Engine 选项;
配置地址位宽为32;
配置数据流数据位宽为32;
其中,AXI_Stream_test IP配置如下:

C_M_Axis_Burst_Len:为8(最大传输为8,每8个数据就拉高一次TLAST信号)
Comb_Len:为4,缓冲4个数据(128bit);
2.4 SOC系统软件设计
先后点击export和Launch SDK;

创建一个新工程;


在新工程中添加一个main.c文件,其中代码如下:
#include "xaxidma.h"
#include "xparameters.h"
#include "xil_exception.h"
#include "xscugic.h"
#include "../user/headfile.h"
/************************** Constant Definitions *****************************/
#define DMA_DEV_ID XPAR_AXIDMA_0_DEVICE_ID
#define RX_INTR_ID XPAR_FABRIC_AXIDMA_0_S2MM_INTROUT_VEC_ID
#define TX_INTR_ID XPAR_FABRIC_AXIDMA_0_MM2S_INTROUT_VEC_ID
#define INTC_DEVICE_ID XPAR_SCUGIC_SINGLE_DEVICE_ID
#define DDR_BASE_ADDR XPAR_PS7_DDR_0_S_AXI_BASEADDR //0x00100000
#define MEM_BASE_ADDR (DDR_BASE_ADDR + 0x1000000) //0x01100000
#define TX_BUFFER_BASE (MEM_BASE_ADDR + 0x00100000) //0x01200000
#define RX_BUFFER_BASE

该文介绍了在XilinxZynq7010FPGA和ZyboZ7开发板上,使用AXI-Stream协议进行SOC系统验证的过程。内容包括环境配置、系统框图、IP核打包、硬件和软件设计,特别是AXI-Stream-testIP与AXI-DMA的集成,以及中断系统的设置。最后,文章提供了一个简单的上板实验,通过DMA进行数据传输并验证了结果的正确性。
最低0.47元/天 解锁文章
1235

被折叠的 条评论
为什么被折叠?



