pcie与DMA求助
最近小弟在搞PCIE与DMA方面的项目,具体情况是:在项目中需要pc机将数据传输到FPGA(xilinx的xc5vfx_70t)里面的一个128K的双端口sram中。传输通道选择pcie(x8通道),之后用DMA与pcie endpoint(ip 核)相连,DMA就是xilinx官方网站下载的DMA(这个DMA好像是仅仅用来测试的),当初xilinx的技术支持告诉我,用DMA与PCIe endpoint 相连之后,与我们用户交互的逻辑是两个异步FIFO,一个是用来存储PC传输下来的数据,,一个是存储发送回pc的数据,DMA会将PC传输下来的数据存储到接收FIFO里面,而我们用户需要做的,就是从接收FIFO里面取出数据,再存储到我们的128K的双端口SRAM里面。我们需要发送回pc机的数据,也是直接存储在发送FIFO里面,DMA会自动的把这些数据发送回PC机。
现在我们面临的问题是:怎么在DMA中没有发现那两个FIFO啊?是不是因为xilinx官网上的DMA仅仅是用来测试的啊?我去看DMA代码的时候,感觉好像它直接把接收到的数据直接发送回去了。还有一个问题,比如我的接收FIFO满了,不能再接收pc传下来的数据了,怎么办?那个fifo的full信号是如何与DMA相连的?还有就是DMA怎样在传输数据到接收fifo和从发送fifo里面读数据之间进行切换?需要发送中断到pc吗?是不是在发送fifo里面有数据,DMA就会立马去取出来,送回给pc?
总结一下:就是在DMA中没有发现接收和发送的fifo,第二个问题是中断(比如接受fifo的full信号是如何与DMA相连的,还包括其他中断)。
不好意思,问题说的有点复杂,小弟是菜鸟,对pcie和DMA都了解的很肤浅,那个DMA的代码也有好几千行,而且还和pcie通信协议有关,看起来非常吃力,都酱油了一个月了,项目还没什么进展,恳请大神指导!小弟不胜感激!
自己顶起啊,求各种大神指点!
我也在做pcie和DMA的项目 呵呵。可以讨论一下。我QQ284370467
pcie应用层的逻辑最好自己写,只是用xilinx的iP就可以了。中断处理和数据传输要配合起来,才可以。而起pc端需要驱动给板卡申请内存。
那个技术支持给我们的DMA代码有好几千行,如果自己写,不知道要调试好久啊,关键是那个pcie端口太多了,感觉难度好大。
DMA中没有FIFO,使用xilinx的 FIFO ipcore ,生成自己需要的FIFO
关键是不知道如何与那个DMA连接起来,特别是产生中断……
你的问题解决了吗?
我现在也遇到类似的问题呢?恳请赐教
我现在也遇到类似的问题 ><
DMA一般不会有fifo,fifo很有可能是在pcie 端点控制器这边,一般pcie ip会提供一个访问其fifo的地址,DMA只用往这个地址读或者写,实现数据搬运功能。
补充一点,不知道你用的PCIE ep是不是只是具有收发数据功能(PHY),如果是那你需要自己写应用层逻辑。最简单的就是:收发fifo控制,fifo满后或者收到一个包后,使能一个DMA请求信号 DMAreq,这个信号连到DMA控制器。DMA不就启动了吗
帮忙顶顶!
不清楚你说的DMA是什么,是不是指管理 TLPs 包的那一部分? 处理各种不同类型的包,XXXX_FMT_TYPE。
DMA么自己做就行了啊,反正你就用条PCIE链路而已
这个好像有
DMA可以自己写。
另外请问一下,PCIE的MSG事物层,FPGA收发MSG你做过没有?
谢谢!
是v5的开发板吗 不是有个xilinx的xapp1052和xapp859关于pcie的bus master dma 可以参考下
在dmac中会有FIFO,你可以在ip说明中看到,但是像我们用的DMAC中的FIFO是自己通过ram生成的,(因为这是我们自己做的ip),像其它公司做的ip都应该在定制的时候会有这个选项来让你选择这个fifo的大小,他怎么和PCIE链接,那就要看你的PCIE的接口是支持什么协议,像我们的ip是支持axi协议,那么我就会根据axi总线将其和dmac,还有其他模块链接在一起。dmac的原理是数据搬运,他首先会将数据搬运到自己的fifo中,然后在搬运到其他模块中
LZ,你的问题解决的如何,小弟现在也遇到pcie 与pc间数据传输问题,我是菜鸟,还请赐教
本人最近也遇到类似问题正在看Xilinx官网的xapp1052和xapp859还有相关代码,希望对你有用
我也在做pcie和DMA的项目 呵呵。可以讨论一下
DMA一般不会有fifo,fifo很有可能是在pcie 端点控制器这边,一般pcie ip会提供一个访问其fifo的地址,DMA只用往这个地址读或者写,实现数据搬运功能。
你好,我现在做一个毕设论文想把PCIE ,DMA,AXI全弄进去,不懂的是,PCIE接口和DMA相连接,是在中间加入AXI总线接口,还是说,应该是PCIE连DMA,然后再在DMA的另一连走AXI总线接口,使DMA变得更通用。求大神提点一下
我也在做DMA,看不明白呀。谁有仿真环境,用DO直接能执行的,我DO工程里的没波行呀
看来有不少人在做这个啊,可以组一个群讨论一下。
Xilinx的资料比较多,你可以看看
后续有人啊,我也在学这个东西,希望可以得到帮助 呜呜
顶啊!这个以后要会搞的!
最后回答时间好久了,不知道还有人做这个没有,一点头绪没有
各位大侠,小弟最近也在做关于pcie的项目,参考了xapp1052和xapp859,但是小弟菜鸟,不太能看懂,现在想加个sdram ,不知道该如何加,有什么建议么?
