1、用linux主机通过PCIE链接FPGA,通过AXIfull总线读写FPGA内部的FIFO,首先PCIE写fifo,然后将FPGA中的数据读出来,对比测试,不出错。在此基础上详尽分析记录AXI4总线读操作和写操作的时序。
2、搭建BD工程如下,顶层引出fifo的控制信号线和数据信号线,在顶层例化一个fifo,32位,深度1024,fifo模式要设置成first fall-through,不然会出错;
3、顶层源码 【略】
4、现在上位机通过Pcie发送一个4KB的数据包,数据包的内容是:5aa5,1000,CRC_CODE,00000000,+累加的自然数;
4.1、5aa5是数据头,1000[十进制的4096,表示当前数据包的大小为4KB]
4.2、一个8个字节的校验码,接收端将接收端的数据重新计算校验码,和接收到的校验码进行比较来判断收据接收是否正确;
5、写fifo的数据图:
6、读FIFO的时序图:【注意开始FIFO要设置成first fall-through模式,standard模式下前面读出来的几个字节都是错的,从ila图上看到的数据都是对的,只是读信号和数据没有对齐】。下面可以看到在读信号有效的时候,有效数据已经准备好了。读信号和第一个有效数据是完全对齐的。
7、测试读写速度:现在使用的X1模式,32位数据宽度,速度只有10MB/S,继续尝试提速;
8、AXI写操作时序:
9、AXI读操作时序: