简要记录一下:实验任务是通过自定义一个 AXI4 接口的 IP 核,通过 AXI_HP 接口对 PS 端 DDR3 进行读写测
试(该AXI配置的AXI FULL模式)。即PL端通过按下按键KEY后向PS端的DDR3写入数据,然后PS端可以通过串口读出数据并且可以通过ILA去抓出PL端的写模块写入的数据比较是否一致
硬件框图:
DDR3 Test 是自定义的 IP 核,具有 AXI4 Master 端口,该端口通过 AXI Smartconnect模块,最终连接到 PS 端的 S_AXI_HP0 端口。输入的按键控制 DDR3 Test 模块对 PS 的 DDR3 进行读写测
试,并在读写测试结束后,通过两个 PL LED 灯分别指示读写完成和读写错误 。
自定义IP核axi4_rw_test IP核:
该IP核里有两个模块,最底层模块是读写控制模块,状态机控制逻辑:
硬件block design:
生成bit流导出至vitis平台:
#include "stdio.h"
#include "xil_cache.h"
#include "xil_printf.h"
#include "xil_io.h"
int main()
{
int i;
char c;
Xil_DCacheDisable();
printf("AXI4 PL DDR TEST");
while(1)
{
scanf("%c",&c);
if(c == 'c'){
printf("start\r\n");
for(i=0;i<4096;i=i+4)
{
printf("%d is %d\n",i,(int)(Xil_In32(0x10000000+i)));
}
}
}
return 0;
}
烧录代码:可以看见串口和ILA抓出的数据通道并没有数据,等待着PL key按键按下后触发
按下PL端按键后:当捕获到数据通道的valid和ready信号都拉高后,开始发送数据
此时PS串口也能读出数据:
补:也是实现在Linux下用AXI数据流做PS与PL的交互了,不枉之前自己花好多时间来配置Linux环境:
配环境时遇到一个问题:Could not find ARM device on the board for connection 'Local'即无法在Linux实现烧录。
我查看设备管理器确认是下载了下载器驱动,不知道为啥一直烧不了。结果是对于 Linux ,由于安装驱动程序需要 root 或 sudo 访问权限,因此从 Vivado 2015.4 版本开始,默认不安装 jtag 驱动,仍然需要再次手动安装。
详细可参考:
关于电脑无法识别Xilinx下载器的解决方法-OpenEdv-开源电子网
VITIS烧录时识别不到串口需要在根目录的dev文件目录下给端口赋权限,不然识别不到COM口,命令如下:sudo chmod 777 ttyUSB0