1 ZYNQ与DSP之间通信例程1.1 ZYNQ 与DSP之间SRIO通信1.1.1 例程位置
1.1.3.1.2 下载ZYNQ PL程序
1.1.3.2 加载运行DSP程序1.1.3.2.1 CCS导入例程
1.1.3.2.2 下载CCS程序1.1.3.2.2.1 目标配置文件设置
1.1.3.2.2.2 启动目标配置文件
1.1.3.2.2.3 仿真器连接目标器件
1.1.3.2.2.4 加载DSP程序
1.1.3.2.2.5 DSP程序运行
1.1.3.3 运行结果说明1.1.3.3.1 DSP程序运行结果
1.1.3.3.2 ZYNQ PL程序运行结果
1.1.3.4 退出实验
ZYNQ例程保存在资料盘中的Demo\ZYNQ\PL\srio_gen2_0_ex文件夹下。
DSP例程保存在资料盘中的Demo\DSP\XQ_SRIO_x4LANE_5Gbps文件夹下。
1.1.2 功能简介实现DSP与ZYNQ之间SRIO接口传输功能。
DSP与ZYNQ之间SRIO通道宽度为4,每个SRIO通道速率5Gbps。DSP SRIO参考时钟频率为250MHz,ZYNQ SRIO参考时钟频率为125MHz。
DSP与ZYNQ之间SRIO接口相关信号连接示意图如下图所示:
![图片1.png 图片1.png](https://static.assets-stash.eet-china.com/forum/202302/02/165908zmoojwzwz7snbtb7.png)
DSP作为Initiator发起NWrite数据写事务,将数据写入ZYNQ PL端的RAM空间(最大2KB);接着,DSP发起NRead数据读事务,从ZYNQ PL端的RAM空间读取数据;DSP完成数据写、读事务后,对读写数据进行比对,以检测SRIO传输是否有数据错误。
1.1.3 例程使用特别提示:例程使用,请参考下面章节顺序执行。确保ZYNQ PL程序要先运行,然后才能运行DSP程序。
1.1.3.1 加载运行ZYNQ程序1.1.3.1.1 打开Vivado工程双击桌面Vivado图标,打开Vivado工具:
![图片2.png 图片2.png](https://static.assets-stash.eet-china.com/forum/202302/02/165928vnvjpkh8ndznhczr.png)
点击Open Project,打开工程(注意:确保例程路径为非中文路径):
![图片3.png 图片3.png](https://static.assets-stash.eet-china.com/forum/202302/02/165945ghrv0g66w2077hob.png)
![图片4.png 图片4.png](https://static.assets-stash.eet-china.com/forum/202302/02/170003ww88cy7q8x55dcbq.png)
Vivado工程打开后界面如下图所示:
![图片5.png 图片5.png](https://static.assets-stash.eet-china.com/forum/202302/02/170027l7jry6i5j7inltek.png)
点击Open Hardware Manager:
![图片6.png 图片6.png](https://static.assets-stash.eet-china.com/forum/202302/02/170037pluhngwnrlgjbs2h.png)
打开Hardware Manager的界面如下图所示:
![图片7.png 图片7.png](https://static.assets-stash.eet-china.com/forum/202302/02/170049df4z04vkto3kkta2.png)
此后,确保FPGA JTAG仿真器已连至接板卡和电脑,并且板卡处于上电状态。
点击Hardare Manager界面上的Open target,并在弹出的菜单中单击Auto Connect:
![图片8.png 图片8.png](https://static.assets-stash.eet-china.com/forum/202302/02/170146f4xqz663y1z2m61y.png)
仿真器连接成功后,在找到的xc7z035_1器件上右击,并在弹出的菜单中点击Program Device…:
![图片9.png 图片9.png](https://static.assets-stash.eet-china.com/forum/202302/02/170203ji0xl80wlhylx0lu.png)
一般来说,Vivado下载工具会自动找到本工程下的程序bit流下载文件和调试文件,如果没有自动找到,则需要用户通过旁边的浏览按钮去自行选取。确保程序下载文件没问题后,点击Program下载程序:
![图片10.png 图片10.png](https://static.assets-stash.eet-china.com/forum/202302/02/170234fd0m9mda907dm55t.png)
程序下载完成后,点击界面上的“>>”按钮,可实时抓取查看ZYNQ PL端信号运行波形:
![图片11.png 图片11.png](https://static.assets-stash.eet-china.com/forum/202302/02/170308pfq5n5ff5oqnmfw3.png)
双击桌面CCS快捷图标,打开CCS软件:
![图片12.png 图片12.png](https://static.assets-stash.eet-china.com/forum/202302/02/170334n787awmv6ssbbs6t.png)
CCS设置工作空间时,选择默认即可:
![图片13.png 图片13.png](https://static.assets-stash.eet-china.com/forum/202302/02/170345bm6um0vn96ven08r.png)
通过菜单File->Import…导入CCS工程:
![图片14.png 图片14.png](https://static.assets-stash.eet-china.com/forum/202302/02/170356slo0ryqc05z2ri0z.png)
导入项目选择CCS Projects:
![图片15.png 图片15.png](https://static.assets-stash.eet-china.com/forum/202302/02/170417sthtnaq0yynn5n1z.png)
点击Browse…,浏览找到例程所在位置(注意:确保例程路径为非中文路径),选中例程所在目录,并点击“确定”:
![图片16.png 图片16.png](https://static.assets-stash.eet-china.com/forum/202302/02/170431mw75007o7y05yah5.png)
CCS软件将识别到的例程显示在Discovered projects一栏,最后点击Finish:
![图片17.png 图片17.png](https://static.assets-stash.eet-china.com/forum/202302/02/170441qv7eg645pcr0z07j.png)
例程导入后界面如下图所示:
![图片18.png 图片18.png](https://static.assets-stash.eet-china.com/forum/202302/02/170450ha8crc6aa8ccrrpu.png)
特别提示:目标配置文件设置这一步骤可以只进行一次,后面例程可以反复使用,不用重复创建或设置。
在右边的Target Configuration窗口,双击打开之前创建好的目标配置文件,如下图的XDS200-C6657.ccxml:
![图片19.png 图片19.png](https://static.assets-stash.eet-china.com/forum/202302/02/170502uh6qg287xe5zrm88.png)
如果还没有目标配置文件,则在Target Configuration窗口的空白处或User Defined文件夹处右击,并在弹出的菜单中点击“New Target Configuration”新建目标配置文件:
![图片20.png 图片20.png](https://static.assets-stash.eet-china.com/forum/202302/02/170512o1vawgy1xb1lpyr9.png)
在打开的目标配置文件中,需要配置仿真器类型、器件型号,我们实验用的仿真器为XQ-XDS200U,选中仿真器类型XDS2xx USB Debug Probe即可,器件型号勾选上TMS320C6657,如下图所示,然后点击高级设置项Target Configuration,准备Gel文件设置:
![图片21.png 图片21.png](https://static.assets-stash.eet-china.com/forum/202302/02/170522a1crrg534nqzrcq5.png)
在高级项设置窗口中,点击C66xx_0核心,然后在右侧的初始化脚本栏中,点击Browse,找到我们提供的Gel文件,即XinesC6657.gel。设置完Gel文件后,点击Save:
![图片22.png 图片22.png](https://static.assets-stash.eet-china.com/forum/202302/02/170530eh8p3s65y6k68hkw.png)
在已经创建并设置好的目标配置文件处右击,并在弹出的菜单中点击Launch Selected Configuration,打开调试窗口:
![图片23.png 图片23.png](https://static.assets-stash.eet-china.com/forum/202302/02/170540jjfehfbm1vvml1vk.png)
调试窗口打开后,右键单击C66xx_0核心0,并在弹出的菜单中点击Connect Target:
![图片24.png 图片24.png](https://static.assets-stash.eet-china.com/forum/202302/02/170549g35tzvw36e5dbvdb.png)
点击Load图标,加载DSP程序:
![图片25.png 图片25.png](https://static.assets-stash.eet-china.com/forum/202302/02/170559gr4ufa1u4e11rw14.png)
点击Browse…或Browse project…,找到DSP程序的可执行文件(以.out为后缀),然后点击OK,如下图所示:
![图片26.png 图片26.png](https://static.assets-stash.eet-china.com/forum/202302/02/170610s6q4po6ffivi4oof.png)
点击Resume运行图标,运行DSP程序,如下图所示:
![图片27.png 图片27.png](https://static.assets-stash.eet-china.com/forum/202302/02/170620cwc698wb70ou00co.png)
CCS软件的Console控制台窗口打印SRIO调试信息。
DSP通过SRIO接口先发起NWrite写事务,数据长度为2048字节;接着DSP发起NRead事务,数据长度为2048字节,然后比对读写事务对应的数据。
如果SRIO传输异常,存在数据错误,则程序里面错误计数器累加,并输出打印当前错误个数。每当完成100次NWrite和NRead SRIO读写事务,则输出打印一次“DSP <-> FPGA 204800 bytes OK!”字样,如下图所示:
![图片29.png 图片29.png](https://static.assets-stash.eet-china.com/forum/202302/02/170719edvzywvexb3dpefg.png)
ZYNQ PL端提供的ILA调试窗口,可以实时抓取采集SRIO本地总线信号时序波形。SRIO本地总线信号说明如下(详细定义请参考数据手册Xilinx文档pg007_srio_gen2.pdf):
SRIO本地发送总线信号 | |
iotx_tvalid | [size=10.5000pt]发送数据有效标志位 |
iotx_tready | [size=10.5000pt]发送准备好标志位 |
iotx_tlast | [size=10.5000pt]最后一个发送数据标志位 |
iotx_tdata | [size=10.5000pt]发送数据 |
iotx_tkeep | [size=10.5000pt]发送数据字节控制位 |
iotx_tuser | [size=10.5000pt]发送控制数据,主要内容是源I[size=10.5000pt]D[size=10.5000pt]和目的I[size=10.5000pt]D |
SRIO本地接收总线信号 | |
iorx_tvalid | [size=10.5000pt]接收数据有效标志位 |
iorx_tready | [size=10.5000pt]接收准备好标志位 |
iorx_tlast | [size=10.5000pt]最后一个接收数据标志位 |
iorx_tdata | [size=10.5000pt]接收数据 |
iorx_tkeep | [size=10.5000pt]接收数据字节控制位 |
iorx_tuser | [size=10.5000pt]接收控制数据,主要内容是源I[size=10.5000pt]D[size=10.5000pt]和目的I[size=10.5000pt]D |
状态信号 | |
port_initialized | SRIO端口初始化完成标志位 1:SRIO端口初始化完成; 0:SRIO端口初始化未完成。 |
link_initialized | SRIO链路初始化完成标志位 1:SRIO链路初始化完成; 0:SRIO链路初始化未完成。 |
mode_1x | SRIO运行模式 1:SRIO运行在降速模式,即4个通道减速到1个通道运行; 0:SRIO运行在全速模式,即4个通道全部运行。 |
ZYNQ端SRIO接收抓取示例如下图所示(对应DSP端发起NWrite事务):
![图片30.png 图片30.png](https://static.assets-stash.eet-china.com/forum/202302/02/170731qvxlx11lolhkxvio.png)
ZYNQ SRIO发送抓取示例如下图所示(对应DSP端发起NRead事务):
![图片31.png 图片31.png](https://static.assets-stash.eet-china.com/forum/202302/02/170746qayaasyasdnhzhul.png)
![图片32.png 图片32.png](https://static.assets-stash.eet-china.com/forum/202302/02/170758hzedgzacdakerbya.png)
CCS软件窗口上,点击Terminate断开DSP仿真器与板卡的连接:
![图片33.png 图片33.png](https://static.assets-stash.eet-china.com/forum/202302/02/170808ri7guui2f8dw8wqw.png)
Vivado调试界面Hardware Manager窗口,右键单击localhost(1),在弹出的菜单中点击Close Server,断开ZYNQ JTAG仿真器与板卡的连接:
![图片34.png 图片34.png](https://static.assets-stash.eet-china.com/forum/202302/02/170819x6rgzunrfu0wn2qe.png)
最后,关闭板卡电源,实验结束。
平台说明:
XQ6657Z35/45-EVM 高速数据处理评估板(XQTyer评估板)由广州星嵌电子科技有限公司自主研发,核心板包含一片TI DSP TMS320C6657和一片Xilinx ZYNQ-7000 SoC 处理器XC7Z035-2FFG676I。适用于无人机蜂群、软件无线电系统,基带信号处理,无线仿真平台,高速图像采集、处理等领域。