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

TMS320C6678开发板 ZYNQ PS + PL异构多核案例开发手册(4)

原创
作者头像
创龙科技Tronlong
发布2022-07-31 23:54:31
1.2K0
发布2022-07-31 23:54:31
举报

本文主要介绍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等接口。

emio_uart_demo案例

案例功能

案例功能:PS端通过EMIO方式使用UART0串口进行数据收发。

本案例默认将UART1作为PS端调试串口。

Block Memory Generator IP核

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

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

图 183

Aurora 64B66B IP核

本案例使用Aurora 64B66B IP核实现Aurora高速串行通信协议。

图 184

Aurora 64B66B IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg074-aurora-64b66b.pdf》和《ug476-7Series_Transceivers.pdf》,具体说明配置如下。

点击"Core Options",Line Rate(Aurora通信速率)设置为10Gbps,GT Refclk(GTX参考时钟)设置为125MHz,INIT clk、GT DRP clk设置为100MHz,Dataflow Mode(数据流模式)设置为Duplex(双工模式)。

图 185

点击"GT Selections",Lanes设置为1,表示使用单通道GTX。选择GTXQ1(QUAD_110)的GTXE2_X0Y7(MGTXRX_3、MGTXTX_3引脚),即对应SFP1光口。

图 186

图 187

AXI Timer IP核

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

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

图 188

aurora_reset模块

本案例使用aurora_reset模块为Aurora 64B66B IP核提供reset_pd和pma_init复位信号。aurora_reset模块clk_in使用由Aurora 64B66B IP核init_clk输出的100MHz时钟。

图 189

aurora_reset模块源码为"aurora_dma_bd.srcs\sources_1\imports\hdl\aurora_reset.v",关键代码说明如下。

定义模块接口。

图 190

根据Aurora 64B66B IP核的复位时序进行复位信号配置。

图 191

图 192

axi_ethernet_demo案例

案例功能

案例功能:演示PL端千兆以太网的实现。

操作说明

评估板配备一个PL端千兆网口PL RGMII ETH,请使用网线将评估板PL端网口、PC机连接到同一个路由器,绿灯常亮、黄灯闪烁表示连接正常。

图 193

将本案例的动态设备树镜像文件pl.dtbo和PL端.bin格式可执行文件复制到"/lib/firmware/"目录下,并将PL端可执行文件重命名为system_wrapper.bin,然后执行如下命令加载设备树文件和PL端可执行文件。

Target# mount -t configfs configfs /configfs

Target# mkdir /configfs/device-tree/overlays/ethernet

Target# echo pl.dtbo > /configfs/device-tree/overlays/ethernet/path

图 194

执行如下命令关闭PS端网口eth0,并使PL端网口eth1自动获取IP地址。PL端网口本次测试的IP地址为192.168.0.250。

Target# ifconfig eth0 down

Target# udhcpc -i eth1

图 195

如下使用Iperf工具测试评估板与PC机的网络通信速度。若未安装,可在Ubuntu中执行"sudo apt-get install iperf"安装。

UDP测试

在Ubuntu执行如下命令查看PC机IP地址并等待评估板连接。

Host# ifconfig

Host# iperf -s -u

图 196

在评估板文件系统执行如下命令测试网络通信速度,命令中192.168.0.134为PC机IP地址。测试完成后,Ubuntu和评估板均会打印测试结果。不同测试环境,测试结果将会有所差异。

Target# iperf -u -c 192.168.0.134 -b 1000M

图 197

TCP测试

在Ubuntu执行如下命令查看PC机IP地址并等待评估板连接。

Host# ifconfig

Host# iperf -s

图 198

在评估板文件系统执行如下命令测试网络通信速度,命令中192.168.0.134为PC机 IP地址。测试完成后,Ubuntu和评估板均会打印测试结果。不同测试环境,测试结果将会有所差异。

Target# iperf -c 192.168.0.134

图 199

Vivado工程说明

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

图 200

IP核配置

AXI DMA IP核

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

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

  1. 启用SG(scatter-gather)模式和启用控制/状态流。
  2. Width of Buffer Length Register设置为16,则DMA单次传输最大寻址范围为2^(Width of Buffer Length Register),DMA单次传输最大数据量为2^(Width of Buffer Length Register)*8=64KByte。
  3. 读/写通道的Memory Map Data Width、Stream Data Width均设置为32,Max Burst Size均设置为16。

图 201

AXI Ethernet IP核

本案例使用AXI Ethernet IP核实现MAC层和物理层功能。

AXI Ethernet(AXI 1G/2.5G Ethernet Subsystem) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg138-axi-ethernet.pdf》。

配置AXI Ethernet IP核链路速率为1Gbps,PHY接口类型为RGMII。

图 202

axi_mig_pcie_demo案例

案例功能

案例功能:评估板ZYNQ端作为PCIe EP(Endpoint)设备,处理PCIe RC(Root Complex)设备发起的PCIe BAR0空间读写事务。

本案例测试评估板ZYNQ端和DSP端的PCIe通信,其中DSP端PCIe为双通道链路(x2),ZYNQ端PCIe配置为四通道链路(x4),自适应DSP端的双通道链路。

DSP端测试程序为“4-软件资料\Demo\DSP_Demo\noOS-demos\pcie_rc\”,为便于测试,我司在本案例的bin目录下提供了DSP端测试程序可执行文件pcie_rc_noOS_FPGA.out。

操作说明

使用ADT-Link公司的R22SR公对母PCIe信号交换线连接评估板PCIe EP(ZYNQ)金手指和PCIe RC(DSP)插槽。

图 203

将本案例PL端.bin格式可执行文件复制到评估板文件系统"/lib/firmware/"目录下,并将PL端可执行文件重命名为system_wrapper.bin,然后执行如下命令加载PL端可执行文件。

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

图 204

通过仿真器加载评估板DSP端程序并运行,DSP端调试串口将打印PCIe通信速率(如下图所示)。本次总共传输64KByte数据,平均写速率约为702MByte/s,平均读速率约为640MByte/s。

图 205

Vivado工程说明

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

图 206

IP核配置

MIG 7 Series IP核

MIG(Memory Interface Generator) 7 Series IP核用于配置PL端DDR,说明见mig_dma案例IP核配置部分。

AXI Memory Mapped To PCI Express IP核

本案例使用AXI Memory Mapped To PCI Express IP核将PL端DDR映射为可被PCIe RC设备访问的内存。

AXI Memory Mapped To PCI Express IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg055-axi-bridge-pcie.pdf》,具体配置说明如下。

配置设备类型为PCIe Endpoint设备,参考时钟为外部RC端输入的100MHz。

图 207

Lane Width配置为x4,Link Speed配置为5.0GT/s。

图 208

配置PCIe设备信息。Base Class Menu配置为Memory controller,Vendor ID配置为0x10EE,Device ID配置为0x7024。

图 209

BAR容量设置。根据PCIe RC设备实际支持情况设置容量大小,此处设置BAR0为64KByte。

图 210

BAR0的地址设置为0x60000000。

图 211

emio_emac_demo案例

案例功能

案例功能:PS端通过EMIO方式使用GEM1进行网络数据收发。

操作说明

基于FreeRTOS测试

请使用Micro USB线连接PC机和评估板PS端调试串口CON9(USB TO UART),并使用网线将评估板PS端网口(PS RGMII0 ETH)、PL端网口(PL RGMII ETH)和PC机连接到同一个路由器,绿灯常亮、黄灯闪烁表示连接正常。

图 212

本小节简单演示如何将轻量级IP栈(IwIP)与FreeRTOS搭配使用。本次测试使用DHCP模式,如需设置为静态IP地址,请参考关键代码小节修改案例。

案例支持同时运行以下四个任务:

  1. PS端网口执行TCP echo server任务:PC主机通过网络调试工具向评估板发送数据,评估板将接收到的数据返回到PC主机。
  2. PS端网口执行UDP echo server任务:PC主机通过网络调试工具向评估板发送数据,评估板将接收到的数据返回到PC主机。
  3. PL端网口执行TCP echo server任务:PC主机通过网络调试工具向评估板发送数据,评估板将接收到的数据返回到PC主机。
  4. PL端网口执行UDP echo server任务:PC主机通过网络调试工具向评估板发生数据,评估板将接收到的数据返回到PC主机。

加载PS端FreeRTOS程序、PL端程序后,即可看到PS端串口调试终端打印如下信息。其中PS端网口IP地址为192.168.1.113,PL端网口IP地址为192.168.1.115。

图 213

双击打开产品资料“4-软件资料\Tools\Windows\”目录下的网络调试工具SocketTool_NoAD.exe。

  1. PS端网口TCP echo server任务测试

在弹出的界面中点击“TCP Client -> 创建”,在“对方IP”中输入评估板PS端网口IP地址:192.168.1.113,在“对方端口”中输入TCP echo server端口号:7,再点击确定。

图 214

点击“连接”,在“数据发送窗口”中输入需发送至评估板的数据,再点击“发送数据”。“数据接收及提示窗口”中将打印由PC机发送至评估板,以及由评估板发送至PC机的数据。

图 215

同时,串口调试终端将会打印如下信息。

图 216

PS端网口UDP echo server任务测试

在弹出的界面中点击“UDP Client -> 创建”,在“对方IP”中输入评估板PS端网口IP地址:192.168.1.113,在“对方端口”中输入UDP echo server端口号:8,再点击确定。

图 217

在“数据发送窗口”中输入需发送至评估板的数据,再点击“发送数据”。“数据接收及提示窗口”中将打印由PC机发送至评估板,以及由评估板发送至PC机的数据。

图 218

同时,串口调试终端将会打印如下信息。

图 219

PL端网口TCP echo server任务测试

在弹出的界面中点击“TCP Client -> 创建”,在“对方IP”中输入评估板PL端网口IP地址:192.168.1.115,在“对方端口”中输入TCP echo server端口号:7,再点击确定。

图 220

点击“连接”,在“数据发送窗口”中输入需发送至评估板的数据,再点击“发送数据”。“数据接收及提示窗口”中将打印由PC机发送至评估板,以及由评估板发送至PC机的数据。

图 221

同时,串口调试终端将会打印如下信息。

图 222

PS端网口UDP echo server任务测试

在弹出的界面中点击“UDP Client -> 创建”,在“对方IP”中输入评估板PL端网口IP地址:192.168.1.113,在“对方端口”中输入UDP echo server端口号:8,再点击确定。

图 223

在“数据发送窗口”中输入需发送至评估板的数据,再点击“发送数据”。“数据接收及提示窗口”中将打印由PC机发送至评估板,以及由评估板发送至PC机的数据。

图 224

同时,串口调试终端将会打印如下信息。

图 225

基于Linux测试

将本案例的动态设备树镜像文件emio-emac-demo-overlay.dtbo和PL端.bin格式可执行文件复制到"/lib/firmware/"目录下,并将PL端可执行文件重命名为system_wrapper.bin,然后执行如下命令加载设备树文件和PL端可执行文件。

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

Target# mount -t configfs configfs /configfs

Target# mkdir /configfs/device-tree/overlays/emio_emac

Target# echo emio-emac-demo-overlay.dtbo > /configfs/device-tree/overlays/emio_emac/path

图 226

执行如下命令关闭PS端网口eth0,并使PL端网口eth1自动获取IP地址。PL端网口本次测试得IP地址为192.168.0.117。

Target# ifconfig eth0 down

Target# udhcpc -i eth1

图 227

如下使用Iperf工具测试评估板与PC机的网络通信速度。若未安装,可在Ubuntu中执行"sudo apt-get install iperf"安装。

UDP测试

在Ubuntu执行如下命令查看PC机IP地址并等待评估板连接。

Host# ifconfig

Host# iperf -s -u

图 228

在评估板文件系统执行如下命令测试网络通信速度,命令中192.168.0.134为PC机IP地址。测试完成后,Ubuntu和评估板均会打印测试结果。不同测试环境,测试结果将会有所差异。

Target# iperf -u -c 192.168.0.134 -b 1000M

图 229

TCP测试

在Ubuntu执行如下命令查看PC机IP地址并等待评估板连接。

Host# ifconfig

Host# iperf -s

图 230

在评估板文件系统执行如下命令测试网络通信速度,命令中192.168.0.134为PC机IP地址。测试完成后,Ubuntu和评估板均会打印测试结果。不同测试环境,测试结果将会有所差异。

Target# iperf -c 192.168.0.134

图 231

关键代码(PS端-FreeRTOS)

创建任务,任务函数为main_thread。

图 232

在任务函数main_thread中进行IwIP初始化,再创建任务netword_thread。

图 233

在任务network_thread中,调用xemac_add函数,添加设置好的网络接口信息,初始化PS端网口和PL端网口。

图 234

图 235

设置MAC地址,再根据评估板MAC地址的类型调用xemacpsif_init函数配置硬件。

图 236

获取评估板MAC地址类型信息。

图 237

图 238

在xemacpsif_init函数中,调用函数low_level_init来进行硬件设置。

图 239

在任务network_thread中,添加设置好的网络接口信息后,尝试自动获取IP地址。

图 240

成功获取IP地址后,建立TCP echo server和UDP echo server两个线程。

图 241

回显通过TCP协议发送至程序中的输入字符。

图 242

回显通过UDP协议发送至程序中的输入字符。

图 243

建立任务监控网口硬件连接状态(link up/link down)。

图 244

图 245

如需设置为静态IP地址,可参考如下说明。

修改宏定义,1表示自动获取IP地址,0表示使用静态IP地址。

图 246

设置静态IP地址、网关和子网掩码。

图 247

Vivado工程说明

通过GMII to RGMII IP核,将PS端的千兆以太网控制器(GEM1)的GMII接口转换为RGMII接口,实现对PL端网口的控制。

图 248

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • emio_uart_demo案例
  • 案例功能
  • Block Memory Generator IP核
  • Aurora 64B66B IP核
  • AXI Timer IP核
  • aurora_reset模块
  • axi_ethernet_demo案例
  • 案例功能
  • 操作说明
  • Vivado工程说明
  • IP核配置
  • AXI DMA IP核
  • AXI Ethernet IP核
  • axi_mig_pcie_demo案例
  • 案例功能
  • 操作说明
  • Vivado工程说明
  • IP核配置
  • MIG 7 Series IP核
  • AXI Memory Mapped To PCI Express IP核
  • emio_emac_demo案例
  • 案例功能
  • 操作说明
  • 基于FreeRTOS测试
  • 基于Linux测试
  • 关键代码(PS端-FreeRTOS)
  • Vivado工程说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档