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

2022-07-31 23:54:31 浏览数 (2)

本文主要介绍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.srcssources_1importshdlaurora_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-软件资料DemoDSP_DemonoOS-demospcie_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-软件资料ToolsWindows”目录下的网络调试工具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

0 人点赞