基于TMS320C6678开发板的ZYNQ PS + PL异构多核案例开发手册(3)

2022-07-31 23:52:53 浏览数 (3)

本文主要介绍ZYNQ PS PL异构多核案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx SDK 2017.4。其中测试板卡为TMS320C6678开发板,文章内容包含多个特色案例,如axi_gpio_led_demo案例、axi_timer_pwm_demo案例、axi_uart_demo案例、emio_gpio_led_demo案例、mig_dma案例等,由于篇幅过长,文章分为上下6个小节展示,欢迎大家按照顺序进行文章内容查看。

本次测试板卡为TMS320C6678开发板,它是一款基于TI KeyStone架构C6000系列TMS320C6678八核C66x定点/浮点DSP,以及Xilinx Zynq-7000系列XC7Z045/XC7Z100 SoC处理器设计的高端异构多核评估板,TMS320C6678开发板每核心主频可高达1.25GHz,XC7Z045/XC7Z100集成PS端双核ARM Cortex-A9 PL端Kintex-7架构28nm可编程逻辑资源,引出双路CameraLink、双路SFP 光口、四路千兆网口、双路SATA、双路PCIe、四路USB、双路CAN、双路CAMERA、HDMI IN/OUT、LVDS、LCD、RS485、RS232、Micro SD、HPC FMC等接口。

mig_dma案例

案例功能

案例功能:PS端通过AXI4-Lite总线控制AXI DMA,将数据在DDR与BRAM之间进行搬运,以测试DDR读写速率与误码率。

由于PS端Master GP接口上接有其他外设,因此PS端映射PL端DDR的内存空间最大为1GByte。

操作说明

加载PS端裸机程序、PL端程序后,即可看到PS端串口调试终端打印如下信息。

图 128

案例配置PL端DDR理论最大带宽为:533MHz*2*32bit=4264MByte/s。测试结果如下:

表 1

读/写速率

最小速率

最大速率

平均速率

写速率

3821.32MByte/s

3829.36MByte/s

3824.52MByte/s

读速率

3601.01MByte/s

3607.63MByte/s

3604.41MByte/s

关键代码(PS端)

初始化并校准Timer。

图 129

初始化DMA设备,使用轮询模式,关闭DMA中断。

图 130

获取DDR实际有效容量。

图 131

DDR数据线测试。

图 132

DDR地址线测试。

图 133

启动DMA传输,使用Timer进行计时,等待DMA传输完成后计算数据传输速率。

图 134

进行DDR -> DMA -> BRAM的数据传输测试。

图 135

进行BRAM -> DMA -> DDR的数据传输测试。

图 136

传输完成后更新速率测试相关信息,包括最小值、最大值与平均值。

图 137

每次传输完成后,对传输数据进行校验。

图 138

Vivado工程说明

点击BLOCK DESIGN窗口下的"Address Editor"选项,查看IP核地址,地址分配如下图所示。

图 139

IP核配置

AXI DMA IP核

本案例使用AXI DMA IP核将数据在DDR与BRAM之间进行搬运。

AXI DMA(AXI Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg021_axi_dma.pdf》,具体配置说明如下。

  1. 取消默认勾选的Enable Scatter Gather Engine选项,配置DMA工作模式为直接寄存器模式(Direct Register Mode)。
  2. Width of Buffer Length Register设置为23,则DMA单次传输最大寻址范围为2^(Width of Buffer Length Register),DMA单次传输最大数据量为2^(Width of Buffer Length Register)*8=8MByte。
  3. 读/写通道的Memory Map Data Width、Stream Data Width均设置为512,Max Burst Size均设置为64。

图 140

MIG 7 Series IP核

本案例使用MIG 7 Series IP核完成DDR的初始化与读写校验。

MIG(Memory Interface Generator) 7 Series IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《ds176_7Series_MIS.pdf》和《ug586_7Series_MIS.pdf》,具体配置说明如下。

Memory Selection选择DDR3 SDRAM。

图 141

通过Controller Options配置DDR3参数。

Clock Period设置为1875ps(即总线频率为533.33MHz),DDR传输速率为533.33x2≈1066Mb/s。

图 142

PHY to Controller Clock Ratio设置为4:1,通过该参数配置IP核的用户时钟ui_clk频率。DDR Clock Period为533.33MHz,如PHY to Controller Clock Ratio配置为4:1,则ui_clk时钟频率为533.33/4=133.33MHz。

Memory Part设置为MT41K512M16XX-107,兼容MT41K256M16XX-107。

Data Width设置为32。

Number of Bank Machines设置为8。

最大理论带宽为:533.33MHz*2*32bit/8≈4264MByte/s。

图 143

AXI位宽设置为256bit。

图 144

通过Memory Options配置IP核输入时钟。此处选择为200MHz,地址映射选择为RBC(ROW/BANK/COLUMN)模式。

图 145

图 146

FPGA Options配置选项,System Clock选择"No Buffer",Reference Clock选择"Use System Clock"。

图 147

IO Planning Options选择"Fixed Pin Out:Pre-existing pin out is known and fixed"。

图 148

Pin Selection配置选项,点击"Read XDC/UCF",选择工程"mig_dma.srcsconstrs_1importsconstraints"路径下的mig_dma_tl6678zh.ucf将其导入,再点击Vaildate对管脚进行校验,校验通过后点击OK。

图 149

点击Next,直至出现如下界面,选择Accept。

图 150

点击Next,直至出现如下界面,选择Generate即可完成IP核配置。

图 151

AXI BRAM Controller IP核

本案例使用AXI BRAM Controller IP核创建BRAM控制器。

AXI BRAM Controller IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg078-axi-bram-ctrl.pdf》,具体配置说明如下。

FCLK_CLK1输出200MHz时钟作为BRAM的工作时钟。

图 152

图 153

在BLOCK DESIGN界面的"Address Editor"选项中配置BRAM大小为1MByte。

图 154

配置数据位宽为256,BRAM接口数量为1。

图 155

Block Memory Generator IP核

本案例使用Block Memory Generator IP核创建BRAM资源。

Block Memory Generator IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg058-blk-mem-gen.pdf》,具体配置如下。

图 156

AXI Timer IP核

本案例使用AXI Timer IP核进行计数,用于计算数据传输速率。

AXI Timer IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg079-axi-timer.pdf》,具体配置如下。

图 157

AXI GPIO IP核

本案例使用AXI GPIO IP核读取MIG 7 Series IP核的init_calib_complete引脚的值,从而判断DDR的状态。当MIG 7 Series IP核完成DDR的初始化与读写校验后,init_calib_complete引脚将被拉高。

AXI GPIO IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg144-axi-gpio.pdf》,具体配置如下。

图 158

根据开发文档,通过寄存器GPIO_TRI可将GPIO配置为输入/输出模式;通过寄存器GPIO_DATA可将GPIO配置为高/低电平,以及可读取GPIO的电平状态。

图 159

图 160

图 161

aurora_dma案例

案例功能

案例功能:PS端通过AXI4-Lite总线控制AXI DMA,将数据在BRAM与SFP 光口之间进行搬运,以测试SFP 光口外部回环的数据传输速率与误码率,SFP 光口基于Aurora协议进行数据传输。

图 162 程序功能框图

操作说明

将评估板ZYNQ端启动方式选择拨码开关设置为00(1~2),此档位为JTAG模式。使用Micro USB线连接PC机和评估板CON9(USB TO UART)接口,并正确连接PS端调试串口。使用RS232交叉串口母母线、USB转RS232公头串口线,将评估板PL端调试串口CON19(RS232)连接到PC机的USB接口。

将一个SFP 多模双纤光模块接入SFP1光口,并使用一根光纤线缆将光模块的RX与TX相连接,形成外部回环。SFP1光口使用GTX Quad 110的MGTXRX_3、MGTXTX_3引脚。

图 163

基于PS端裸机测试

加载PS端裸机程序aurora_dma_a9.elf、PL端程序后,即可看到PS端串口调试终端打印SFP 光口外部回环的数据传输测试信息。本案例的GTX带宽配置为10Gbps,即理论速度为1250MB/s。

图 164

可从上图得到如下信息:

  1. SFP 光口外部回环的数据传输速率为1145MB/s。
  2. SFP 光口外部回环的数据传输误码率为0。

基于PL端MicroBlaze测试

将本案例PL端Vivado工程可执行文件aurora_dma_xxx.bin复制到评估板文件系统"/lib/firmware/"目录下,再将PL端"baremetal_demobin"目录下的MicroBlaze应用程序aurora_dma_microblaze.bin和PS端应用程序tl_devmem_rw复制到评估板文件系统任意相同路径下。

执行如下命令,加载MicroBlaze应用程序至PS端DDR的0x18000000地址。

Target# ./tl_devmem_rw -w -a 0x18000000 -s 100000 -o byte -f aurora_dma_microblaze.bin

图 165

执行如下命令,加载PL端Vivado工程可执行文件。

Target# echo aurora_dma_xc7z045.bin > /sys/class/fpga_manager/fpga0/firmware

执行上述命令后,可看到PL端串口调试终端打印SFP 光口外部回环的数据传输测试信息。本案例的GTX带宽配置为10Gbps,即理论速度为1250MB/s。

图 166

可从上图得到如下信息:

  1. SFP 光口外部回环的数据传输速率为1145MB/s。
  2. SFP 光口外部回环的数据传输误码率为0。

关键代码(PS端裸机/PL端MicroBlaze)

初始化并校准Timer。

图 167

初始化DMA设备。

图 168

使用轮询模式,关闭DMA中断。

图 169

开启基于Aurora协议的GTX数据传输速率与误码率测试,构建每次传输所要发送的数据包。

图 170

分别往DMA设备写入源地址、目的地址与数据量,并启动DMA传输。

图 171

启动DMA传输后,使用Timer进行计时,等待DMA传输完成后计算数据传输速率。

图 172

每次传输完成后,对传输数据进行校验。

图 173

图 174

计算数据传输平均速率与误码率。

图 175

Vivado工程说明

点击BLOCK DESIGN窗口下的"Address Editor"选项,查看IP核地址,地址分配如下图所示。

图 176

模块/IP核配置

AXI DMA IP核

本案例使用AXI DMA(AXI Direct Memory Access) IP核将数据在BRAM与SFP 光口之间进行搬运。

AXI DMA IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg021_axi_dma.pdf》,具体配置说明如下。

  1. 取消默认勾选的Enable Scatter Gather Engine选项,配置DMA工作模式为直接寄存器模式(Direct Register Mode)。
  2. Width of Buffer Length Register设置为23,则DMA单次传输最大寻址范围为2^(Width of Buffer Length Register),DMA单次传输最大数据量为2^(Width of Buffer Length Register)*8=8MByte。
  3. 读/写通道的Memory Map Data Width、Stream Data Width均设置为64,Max Burst Size均设置为256。
  4. m_axi_mm2s_aclk和m_axi_s2mm_aclk使用由Aurora 64B66B IP核usr_clk_out输出的156.25MHz时钟。

图 177

图 178

AXI BRAM Controller IP核

本案例使用AXI BRAM Controller IP核创建BRAM控制器。

AXI BRAM Controller IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg078-axi-bram-ctrl.pdf》,具体配置说明如下。

FCLK_CLK1输出200MHz时钟作为BRAM的工作时钟。

图 179

图 180

在BLOCK DESIGN界面的"Address Editor"选项中配置BRAM大小为512KByte。

图 181

配置数据位宽为512,BRAM接口数量为1。

图 182

0 人点赞