xilinx PCIe PIO工程上板验证

验证环境

window 10 系统

vivado 2017.4

KC705 开发板

验证目的

1)通过xilinx 提供的PIO example 入门pcie。

2)抓取pcie tlp报文,学习TLP报文。

背景知识

首先了解一下pcie的应用,在PCIE中有两种数据传输方式:

DMA(Direct Memory Access),直接内存访问,在该模式下,数据传送不是由CPU负责处理,而是由一个特殊的处理器DMA控制器来完成,因此占用极少的CPU资源。

PIO(Programmed Input-Output),可编程输入输出,在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。举例老说,在DMA方式下,如果copy文件的同时在播放mp3音乐,则不受丝毫影响;如果在PIO模式下,则会发现音乐声时断时续,这是因为大部分CPU资源被文件传输占用。

目前笔者也在研究pcie dma实现(毫无头绪),这里先记录下PIO学习过程。

工程搭建

如下图所示,选择KC705开发板,通道数X8, 速度5.0GT/s, 其他保持默认就行。
 

xilinx PCIe PIO工程上板验证

然后生成example例程如下

xilinx PCIe PIO工程上板验证

直接综合,实现,生成mcs文件下载到板卡。

exampe 的逻辑框图如下

xilinx PCIe PIO工程上板验证

PIO example 工程的功能是FPGA内部开辟了4 * (512 *32)的RAM区,可以通过pcie接口做读写测试,地址范围 0x000- 0x7ff, 位宽32bit。

上机调试

将开发板插在主机的pcie插槽上,然后打开windriver软件,可以发现开发板被找到,显示设备如下:

xilinx PCIe PIO工程上板验证

xilinx PCIe PIO工程上板验证

可以看到当前开发板pcie的配置信息,而且申请了bar0空间,接下来对bar0空间读写测试

xilinx PCIe PIO工程上板验证

读写地址0 ,写入0x11223344 ,读出来0x11223344 , 读写正确

xilinx PCIe PIO工程上板验证

读写地址0x7fc, 写入0xaabbccdd, 读出来0xaabbccdd, 读写正确

xilinx PCIe PIO工程上板验证

读写地址0x800, 写入0x01020304 ,读出来0xffffffff, 读写错误。

xilinx PCIe PIO工程上板验证

因为PIO example工程申请的ram地址空间为0x000-0x7ff,所以无法对0x800地址做读写操作。

通过ILA抓取pcie报文,这里不记录了。

参考文档

pg054

xilinx PCIe PIO工程上板验证

xilinx PCIe PIO工程上板验证xilinx PCIe PIO工程上板验证xilinx PCIe PIO工程上板验证