Virtex 5与上位机之间的PCIE通信
利用Xilinx公司的ML505开发板上的“金手指”,完成与电脑主机之间的PCIE通信!
主要参考文档:XAPP1052 这个文档必须精读!
FPGA 这一端就直接调用IP核,在核程序的基础上稍加修改就可以使用;
上位机可以利用官方提供的驱动与界面:
驱动是WDM生成的,有32K的数据限制,即每次最多只能传32K,根据协议理论上可以传8M;
界面有两部分组成,一部分是VB写的界面,另一部分是VC写的DriverMgr,VB调用DriverMgr里面的函数,DriverMgr再去调用底层驱动;
我们现在用Windriver自己生成驱动,比WDM的更加简单方便,而且可以不拘束于它的限制,能够根据我们实际的需求进行设计,界面也用MFC设计。
在传输的过程中,我们遇到一个很奇怪的问题,就是FPGA这一端只要发带有“0x0a”的数据,上位机用fopen("***.dat",'a+');函数把收到的数据存在一个文件里,这时
数据文件里0a前面必定多出一个0d!! 其实在C语言中 0a是‘\n’(换行),而0d是'\r'(回车),用fopen语句会自动把0a变成0d0a!!!!! 改成fopen("***.dat",'ab+')就可以了!!