基于Xilinx公司硬IP核的方法实现PCI Express总线接口及数据的传输设计

网友投稿 352 2022-11-04

基于Xilinx公司硬IP核的方法实现PCI Express总线接口及数据的传输设计

1 PCI Express 总线简介

(1)在数据传输模式上,PCI Express 总线采用双工串行传输模式,一条PCI Express 通道由2 对LVDS 差分线对组成:

一对负责发送,另一对负责接收,单向数据传输速率为2.5 Gb/s。

(2)具有很好的灵活性,一个PCI Express 物理连接可以根据实际需要配置成×1,×2,×4,×8,×16,×32 个并行的数据通

道,满足不同设备之间通信带宽的要求。

(3)在软件层与PCI 总线完全兼容,原有PCI 总线的驱动程序可以完全移植到PCI Express 总线架构的系统中。

PCI Express 协议定义了3 层结构:物理层,数据链路层和事务层。每个层次按照协议中规定的内容,完成相应的数据处理功能。

2 PCI Express 接口设计方法

使用 PEX 8311 实现PCI Express 接口,用户仅需实现相对简单的本地总线接口即可,降低了开发难度。但是这种方法受限于专用接口芯片的性能,用户无法根据自身的需求提升接口的性能。

3 PCI Express 接口实现

3.1 接口电路的设计

在接口电路中,PCI Express 物理层和数据链路层的电路采用Xilinx 公司的PCI Express Endpoint Block plus v1.5 硬核端点模块实现,能够有效完成接口物理层和数据链路层的数据处理功能,提供给上层一个事务层数据接口。

核配置与辅助控制模块与硬核端点模块紧密联系,完成硬核端点模块中通道宽度、时钟频率、设备号、版本号、存储空间类型与大小等一系列可控制参数的配置与一些基本功能的控制。

硬核端点模块提供的事务层数据接口为 64 bit 的数据发送接口和64 bit 的数据接收接口以及控制数据发送和接收的一系列控制信号接口。数据接收控制器将收到的事务层包进行解析,根据数据包的类型进行相应的处理。数据发送控制器用于将所要发送的数据按照事务层包的格式进行封装后,发送到硬核端点模块。

数据输入 FIFO 和数据输出FIFO 共同构成了数据通道,均为双端口FIFO,用于连接PCI Express 接口和用户逻辑。数据输入FIFO 用于保存从接口收到的数据;用户逻辑电路输出的数据保存到数据输出FIFO 中后发送到接口电路。

3.2 控制状态机的设计

数据发送控制器和数据接收控制器负责事务层数据的封装和解析工作,是本设计中的关键电路模块。这两个模块均采用有限状态机方式进行设计,下面详细介绍这2 个模块状态机的设计。

接收控制器从硬核端点模块中收到事务层包(TLP),根据TLP 的格式,第56 bit~第62 bit 为表示数据包类型的标志位。按照标志位中的信息,对TLP 的内容进行解析,进行相应的数据操作。所设计的状态机的状态转换图如图2 所示,各个状态的说明如表1 所示。

与接收控制器状态机相比,发送控制器状态机相对简单,只有3 个状态,状态转换图见图3,各个状态的说明见表2。

系统复位后,发送控制器状态机处于复位状态。当从接收控制器收到发送数据的命令后,如果需要发送的是一个载荷数据,则将从存储器或者I/O 中取出的载荷数据填充到TLP中的相应位置后发送到端点模块;如果需要发送的只是一个响应或者标志信息,则直接封装成一个TLP 发送到端点模块。

3.3 DMA 控制器的设计

由于串行总线结构与传统的并行总线结构不同,因此存储器的读写操作都是以数据包的形式传输。普通的读写操作一次最多只能进行64 bit 数据的读写,使得总线多数时间处于等待状态,严重影响了PCI Express 总线的数据传输速率。本文设计出相应的DMA 控制器,实现了DMA 方式的数据传输。

在设计了上述14 个DMA 控制寄存器后,接收控制器和发送控制器的状态机也要进行相应的调整,以适应DMA 操作的需要。在接收控制器状态机中加入了2 个状态,分别用于接收数据传输过程中的第1 个DMA 数据包和剩余的DMA数据包。在发送控制器状态机中也加入了2 个状态,分别用于发送数据传输过程中的第1 个DMA 数据包和剩余的DMA数据包。为了达到尽可能高的数据传输速率,在接收和发送过程中都使用了64 bit 数据传输模式。

在设计了如上所述的 DMA 控制器后,PCI Express 总线接口就可以用DMA 方式进行数据的读写操作。进行DMA 读/写操作的具体过程如下:(1)写中断控制寄存器,打开中断;(2)写读/写地址寄存器,设置读/写数据的起始地址;(3)写读/写包长度寄存器,设置读/写数据包的大小;(4)写读/写包数量寄存器,设置读/写数据包的数量;(5)写控制寄存器,启动DMA 读/写操作;(6)等待中断服务寄存器发出中断;(7)收到中断,读中断服务寄存器;(8)写中断控制寄存器,关闭中断。

间;采用DMA 方式时,可以根据用户的设置连续写入多个数据,消除了2 次操作之间的等待时间,大大提高了数据传输速率。

采用多种数据量对 PCI Express 接口进行DMA 方式读数据测试,得到的结果如图4 所示,硬件层数据传输速率稳定在840 Mb/s。

采用多种数据量对 PCI Express 接口进行DMA 方式写数据测试,得到的结果如图5 所示,硬件层数据传输速率稳定在720 Mb/s。

从图 4、图5 可以看出,DMA 控制器有效减少了数据传输过程中的等待时间,大幅度地提高了数据传输速率,发挥了PCI Express 总线的优越性能。

5 结束语

本文采用基于 Xilinx 公司硬IP 核的方法设计实现了PCI Express 总线接口及数据的传输。对于DMA 控制器的设计,能提高数据传输的速率,使PCI Express 总线的性能得到充分发挥。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:正则表达式与cut 、sort、uniq、tr
下一篇:for循环 whil语句,循环控制语句
相关文章

 发表评论

暂时没有评论,来抢沙发吧~