0

0

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

雪夜

雪夜

发布时间:2025-07-10 13:14:02

|

615人浏览过

|

来源于php中文网

原创

本文主要介绍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开发板的ZYNQ PS + PL异构多核案例开发手册(3)

本次测试板卡为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端串口调试终端打印如下信息。

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

图 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。

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

图 129

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

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

图 130

获取DDR实际有效容量。

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

图 131

DDR数据线测试。

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

图 132

DDR地址线测试。

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

图 133

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

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

图 134

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

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

图 135

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

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

图 136

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

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

图 137

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

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

图 138

Vivado工程说明

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

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

图 139

IP核配置AXI DMA IP核

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

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

取消默认勾选的Enable Scatter Gather Engine选项,配置DMA工作模式为直接寄存器模式(Direct Register Mode)。Width of Buffer Length Register设置为23,则DMA单次传输最大寻址范围为2^(Width of Buffer Length Register),DMA单次传输最大数据量为2^(Width of Buffer Length Register)*8=8MByte。读/写通道的Memory Map Data Width、Stream Data Width均设置为512,Max Burst Size均设置为64。
基于TMS320C6678开发板的ZYNQ PS + PL异构多核案例开发手册(3)

图 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。

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

图 141

通过Controller Options配置DDR3参数。

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

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

图 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。

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

图 143

AXI位宽设置为256bit。

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

图 144

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

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

图 145

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

图 146

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

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

图 147

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

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

图 148

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

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

图 149

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

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

图 150

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

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

图 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的工作时钟。

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

图 152

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

图 153

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

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

图 154

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

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

图 155

Block Memory Generator IP核

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

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

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

图 156

AXI Timer IP核

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

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

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

图 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》,具体配置如下。

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

图 158

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

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

图 159

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

图 160

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

图 161

aurora_dma案例案例功能

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

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

图 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引脚。

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

图 163

基于PS端裸机测试

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

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

图 164

可从上图得到如下信息:

SFP+光口外部回环的数据传输速率为1145MB/s。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

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

图 165

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

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

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

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

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

图 166

可从上图得到如下信息:

SFP+光口外部回环的数据传输速率为1145MB/s。SFP+光口外部回环的数据传输误码率为0。关键代码(PS端裸机/PL端MicroBlaze)

初始化并校准Timer。

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

图 167

初始化DMA设备。

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

图 168

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

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

图 169

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

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

图 170

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

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

图 171

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

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

图 172

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

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

图 173

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

图 174

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

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

图 175

Vivado工程说明

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

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

图 176

模块/IP核配置AXI DMA IP核

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

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

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

图 177

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

图 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的工作时钟。

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

图 179

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

图 180

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

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

图 181

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

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

图 182

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1074

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

149

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1219

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.19

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

469

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

13

2025.12.06

length函数用法
length函数用法

length函数用于返回指定字符串的字符数或字节数。可以用于计算字符串的长度,以便在查询和处理字符串数据时进行操作和判断。 需要注意的是length函数计算的是字符串的字符数,而不是字节数。对于多字节字符集,一个字符可能由多个字节组成。因此,length函数在计算字符串长度时会将多字节字符作为一个字符来计算。更多关于length函数的用法,大家可以阅读本专题下面的文章。

923

2023.09.19

go中interface用法
go中interface用法

本专题整合了go语言中int相关内容,阅读专题下面的文章了解更多详细内容。

76

2025.09.10

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

31

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号