微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > PCIe技术问题

PCIe技术问题

时间:10-02 整理:3721RD 点击:
各位大佬你们好,小弟最近做K7 325T PCIE的项目,1.在进行DMA传输的时候不是应该有个DMA控制器吗,这个DMA控制器是集成在PCIE IP里面的还是我自己需要通过verilog去实现  2.之前听一位大神说DMA的状态和控制寄存器存放在BAR0中,BAR0不是用来存放用户数据的么,这里不是很理解,望各位大神指教 3.我理解的DMA的启动顺序为 PC机驱动程序通过读取PCIE IP核的配置空间找到Calibility链表,然后配置一些相关的参数比如BAR的物理地址 ,然后复位DMA状态寄存器 ,配置一次DMA传输的TLP大小,配置DMA读写地址,配置MAX_PAY_LOAD等参数,然后启动DMA 等待中断后结束 还望各位大神不吝赐教

没做过,好像听说DMA控制器一般自己写,应该不复杂,一个发送状态机,一个接收状态机

1,DMA控制器得自己写 ;
2,DMA控制器需要DMA读写启动控制、DMA读写地址、DMA读写长度、DMA读写中断状态等参数,这些参数都放在BAR0空间中,需要上位机配置;
3,你的第3条里提到的一些东西是不需要你自己干的,比如配置BAR的物理地址;我理解的顺序是上位机要先找到PCIE设备,以DMA写为例,设置DMA写长度和地址,置DMA启动位为高,FPGA开始上传数据,触发中断,上位机处理中断。



  大神你好,请问一下 BAR0空间不是用来存储用户数据的吗  按照你的说法就是DMA命令和状态寄存器以及用户数据都是存储在BAR0里面的是吧

我不知道你说的数据是啥 我们做的是:
1,BAR0我们多是把它拆成一个个寄存器来使用,这些寄存器包括DMA控制和状态寄存器,以及一些其他自己根据需要自定义的用户寄存器。
2,大规模的数据(比如说我现在做的一个视频采集卡)是不走BAR0的,我们是将数据放在一个FIFO里,DMA发送状态机会读取FIFO里的数据 然后组织pcie Memory Write TLP将数据写入上位机指定的内存地址中去。


你可以加我qq 2770422249


加qq说吧 2770422249

请问你的DMA写完了吗,想请教一些问题



   大神,已加你QQ

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

网站地图

Top