前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于TMS320C6678开发板的ZYNQ PS + PL异构多核案例开发手册(3)

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

原创
作者头像
创龙科技Tronlong
发布2022-07-31 23:52:53
7160
发布2022-07-31 23:52:53
举报

本文主要介绍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.srcs\constrs_1\imports\constraints\"路径下的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_demo\bin\"目录下的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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • mig_dma案例
  • 案例功能
  • 操作说明
  • 关键代码(PS端)
  • Vivado工程说明
  • IP核配置
  • AXI DMA IP核
  • MIG 7 Series IP核
  • AXI BRAM Controller IP核
  • Block Memory Generator IP核
  • AXI Timer IP核
  • AXI GPIO IP核
  • aurora_dma案例
  • 案例功能
  • 操作说明
  • 基于PS端裸机测试
  • 基于PL端MicroBlaze测试
  • 关键代码(PS端裸机/PL端MicroBlaze)
  • Vivado工程说明
  • 模块/IP核配置
  • AXI DMA IP核
  • AXI BRAM Controller IP核
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com