java怎么拦截某个对象
320
2022-11-17
基于XAPP1052参考设计的PCIe总线实现方法
0 引言
1 PCIe 总线简介
PCIe 系统中使用链路(Lane)进行 2 个 PCIe 设备间的物理连接,1 条链路相当于 1 条只挂连 1 个设备的总线,每条链路都分配有链路号。
2 IP 核介绍及参数设置
2.1 IP 核简介
Xilinx PCIe 的 IP 具有高性能、高灵活性、高可靠性等特点,支持 x1、x2、x4、x8 链路宽度。支持链路和极性的错序连接,完全符合 PCIe 的层级模型,包含事务层、数据链路层和物理层。图 1 是 IP核的功能框图及各个接口[3]。
图 1 IP 核功能框图及接口
用户逻辑接口(User logic):用户需要根据该接口编写本地总线逻辑,进而与 IP 核进行通信;
配置接口(Host interface):主机通过该接口对IP 核进行配置或读取状态;
物理层接口(PCI express fabric):通过高速差分信号与桥或根复合体直接进行连接;
2.2 参数设置
图 2 设置链路带宽和参考时钟
3 设置基址寄存器(BAR)设置情况
图4 设置最大载荷
3 DMA 功能设计
PCIe 总线的高带宽特性需要通过 DMA 功能来实现,有效且稳定的 DMA 功能是实现 PCIe 总线的关键。
针对 PCIe 接口 Xilinx 提供了多个参考设计。
表 2 PCIe 各参考设计比较情况
笔者介绍的 DMA 功能主要以 XAPP1052 为基础进行设计。图 5 是该参考设计的架构框图。
图 5 XAPP1052 设计架构
主要功能模块说明如下:
控制和状态寄存器(Control/Status register):主要是与 DMA 控制器相关的如 DMA 传输长度、启动 DMA 等寄存器;
图 6 ISE 工程界面截图
DMA 读写的操作流程大致分以下几个步骤:
1) 对 DMA 控制器复位,进行初始化操作;
2) 填写 DMA 读(写)的目的地址寄存器;
3) 填写 TLP 大小及数量寄存器,确定传输数据量的大小;
4) 启动 DMA 读(写);
5) 等待并处理 DMA 读(写)完成中断;
6) 回到 1)。
图 7、图 8 分别是 DMA 读和 DMA 写测试情况。
图 7 DMA 读测试情况
8 DMA 写测试情况
由图 7 和图 8 可知,在 X4 模式下 DMA 读和DMA 写的带宽[7]分别达到 554 MB/S 和 881 MB/S。
4 结束语
笔者基于 XAPP1052 参考设计,并增加了用于测试 DMA 数据的存储器控制接口及存储器读完成TLP 检查模块,形成了完整的 DMA 测试功能模块,解决了 DMA 读时数据乱序到达等关键问题,在 X4模式下,DMA 读和 DMA 写的带宽分别达到了 554MB/S 和 881 MB/S,可满足大多数情况的带宽要求。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~