微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > pc通过pcie接口和xilinx fpga virtex-6进行高速数据通信的几个

pc通过pcie接口和xilinx fpga virtex-6进行高速数据通信的几个

时间:12-12 整理:3721RD 点击:
我想在windows xp的平台下通过pcie接口和xilinx fpga virtex-6进行高速数据通信(pcie core是virtex-6 integrated block for pci express,version 1.6 ),可是我对驱动和pcie都不是很了解,希望高手能够不吝解答我如面的疑惑:
1.pcie 配置区中的bar0,bar1。。。bar5对应的是memory是实际空间吗,例如我将bar0设为1M的memory,那是不是就有1M的实际的ram空间和她对应。
2.在实际操作中如何使用pcie传输数据。例如:我要将adc的采样数据通过pcie传给pc保存。是不是应该将先将采样数据保存到一片ram空间中,再将数据拷贝的bar0所对应的memory中,再通知pc将数据读走。
3.如果要求传输速度很快(2Gb/s左右),是不是一定要用dma模式,用pc轮询的方式可以吗(cpu占用率高也没关系)。如果是用dma模式的话,那dma控制器是在pc端的还是在fpga端。
总之,我想实现的功能是,fpga将adc采样数据通过pcie接口以2Gb/s的速度(如果达不到可以慢点或将数据压缩)传给pc端(windows xp),如果能告诉我在这样的需求下我该如何实现那更好。
先谢谢大家了。

跪求啊

1.bar是基地址,bar分配到mem空间后这个pcie设备占用的就是mem空间(当然还可以分
配到io空间),bar加空间长度共同决定了系统为该function分配多少空间。不占用内存
(ram)的实际物理内存,该空间和内存的寻址空间是并列的。一个设备的bar就是决定
了访问该设备的系统地址空间范围,并且地址和物理存储空间完全不需要一一对应。
2.你这个功能肯定是要fpga外挂ddr或者甚至qdr的,有这个以后ddr或者qdr就相当于设
备的buffer,通知cpu来取就是了。
另外fpga是可以和cpu共享系统内存的,这个稍微复杂一下。鉴于你问的问题估计搞定这
个会比较困难,还是建议你fpga外挂ddr吧。
3.2gbps的速率是实际的数据率吗?如果是,pcie gen1估计无法满足你的需求,用pcie
gen2的dma和轮循都能满足。

我有个问题想问elechen,为什么CPU轮询的方式能够满足楼主的带宽需求?
CPU搬数据每次不是只能搬4Byte或8Byte吗?为了8Byte打包,协议开销巨大啊
难道cache controller能够代表CPU向PCIE链路对端发出burst请求,一次搬一个cache line?
或者PC上的RC能够将CPU的single请求,转换成burst请求?

我说的轮询是相对于中断方式而言。说得不严谨不能和dma对立。只是扫了一下楼主的帖子,细节没有认真分析。

pcie1.1 x1的达不到2Gbps,X2或X4的就可以了

然,插槽要支持

Yes

鈌pga是可以和cpu共享系统内存的,这个怎么实现?
做个板子插到内存槽上吗?

我做过这个驱动和logic设计,你有问题可以站内我

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top