基于blockdesign的PCIe BRAM读写器——Vivado工程搭建

在这里插入图片描述
DMA 直接存储器访问
BRAM 随机访问数据存储器

每个单元对应每个地址 在读写数据时 都会先获取地址 在进行读写数据 BRAM是FPGA内部专用的存储资源,性能优异但数量有限,每一个BRAM是36Kb大小,也可以配置成2个18Kb的BRAM,BRAM可以用来实现多种不同位宽和深度的RAM/ROM/FIFO,在FPGA中应用非常广泛和灵活。

xdma的原理
xdma的主要原理是通过直接访问主机内存,实现数据的快速传输。
在传统的DMA ( Direct Memory Access )技术中,数据传输需要经过CPU的干预,而xdma可以绕过CPU,直接将数据从外设读取到主机内存或者从主机内存传输到外设。这样可以大大提高数据传输的速度和效率。

XDMA主要是在应用层面
在FPGA例化配置完以后基本上就不需要FPGA在逻辑层面上进行过多的操作了,FPGA只需要对HOST主机进行中断触发操作即可,所有的DMA操作完全由HOST主机通过PCIE配置XDMA的寄存器来实现。
主要通信的结构
一般的PCIE通信模式就是host需要数据或者host被通知数据到达时,host通过配置endpoint端DMA寄存器,然后DMA通过PCIE将数据由endpoint端搬运至HOST端的过程,当host需要发送数据给endpoint时,则通过配置endpiont端的DMA寄存器将数据通过PCIE由host端搬运至endpoint端
那DMA怎么知道把数据从哪里搬到哪里
PCIE的地址空间管理,PCIE通过BAR空间映射将设备端的地址空间映射到主机里的一段地址空间,这样在主机端直接操作对应的BAR空间就是在操作endpoint里面的地址空间了,而这种映射关系就需要主机在驱动加载的过程中,去配置对应endpoint的BAR空间寄存器去分配地址空间和长度

加载与初始化过程
从上电开始说起,我们的电脑就是HOST端,我们的板卡就是EP端;上电后双方各自加载各自的软件,EP加载完后等着电脑(电脑比较慢,也需要他慢),HOST在上电后先初始化自己的PCIE设备,然后扫描PCIE总线上的EP设备(这一部分在HOST驱动完成),如果EP在物理层上与HOST端LINK上了,那HOST就会给EP分一个设备号,并且获取EP的PCIE的header寄存器(一般存储了PCIE设备的ID,和其他的能力属性),将这些信息暂存。当系统启动末期在加载设备驱动的时候PCIE总线驱动会匹配驱动程序的ID与上面暂存的ID,如果匹配成功,加载设备的驱动程序,在设备驱动里完成EP的BAR空间分配,中断分配等工作。那这个通信链路就算搭建完成了……

通过vivado建立工程
在这里插入图片描述

搭建 blockdesign

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值