当前位置:   article > 正文

PCIE总线_fpga的pcie选择bank时的要求

fpga的pcie选择bank时的要求

一、PCIE总线的基本知识

PCIE总线主要关注点是数据的吞吐量,这个参数是选型的重要依据。

其中吞吐率是指传输过程中有效的数据量

数据量计算举例:

        传输速率为每秒传输量GT/s,而不是每秒位数Gbps,是因为传输量包括不提供额外吞吐量的开销位,比如PCIe 1x和PCIe 2x使用8b/10b编码方案,导致占用了20%(=2/10)的原始信道带宽。
GT/s——Giga transtion per second (千兆传输/秒),即每一秒内传输的次数,重点在于描述物理层通信协议的速率属性,可以不和链路宽度等关联。
Gbps——Giga Bits per second (千兆位/秒)。GT/s和Gbps之间不存在成比例的换算关系。

        PCIe吞吐量(可用带宽)计算方法:
        吞吐量=传输速率*编码方案
        例如:PCIe 2.0协议支持5.0GT/s,即每一条Lane上支持每秒钟传输5G个Bit,但这并不意味着PCIe 2.0协议的每一条Lane支持5Gbps的速率。
为什么这么说呢,因为PCIe 2.0的物理层协议中使用的是8b/10b编码方案,即每传输8个Bit,需要发送10个Bit,这多出来的2Bit并不是对上层有意义的信息。那么,PCIe 2.0协议的每一条Lane支持5*8/10=4Gbps=500MB/s的速率。以一个PCIe 2.0 x8的通道为例,x8的可用带宽为4*8=32Gbps=4GB/s。
        同理:PCIe 3.0协议支持8.0GT/s,即每一条Lane上支持每秒钟传输8G个Bit。而PCIe 3.0的物理层协议中使用的是128b/130b编码方案,即每传输128个Bit,需要发送130个Bit,那么,PCIe 3.0协议的每一条Lane支持8*128/130=7.877GB/s=984.6MB/s的速率。以一个PCIe 3.0 x16的通道为例,x16的可用带宽为7.877*16=126.032 Gbps=15.754GB/s。
由此可计算出上表中的数据。
原文链接:https://blog.csdn.net/weixin_45270982/article/details/110849060

二、PCIE的绘图

        绘图需要从FPGA的芯片着手,如果是PCIE,可使用GTY接口,则需要查询GTY相关的官方文档。如当前的芯片是XCVU13P-FIGD2104 ,则应该查询ug578-ultrascale-gty-transceivers.pdf文档中Board Design Guidelines章节,对画原理图及PCB进行了约束。其中内容包括但不限于:校准电阻选择、时钟选择、部分引脚连线方式等。

        由官方文档可知,PCIE gen1.0~gen5.0硬件参考时钟都是100MHZ。通过锁相环锁定到指定的频率上。因此原理图图设计的时候,PCIE bank的参考时钟为100MHz差分信号。

        BANK的选择需要在FPGAs Packaging and Pinouts.pdf中找到相关内容。首先根据不同封装的资源不同,根据实际的项目需求,选择合适的封装。如选择封装为FIGD2104,则资源分配图如下。根据资源分配图,选择合适的bank。再根据bank的类型(HP/GTY),查看对应的手册,从而找到引脚连接的约束。

以下是PCIE设计中常规的几个小点举例:

② 关于PCIE LANE拆分问题:

        设计拆分前首先要明白PCIE设备有多少个控制端口,控制端口决定着拆分结果,这个一般手册上都会有说明,抛开BOIS软件配置不说,有些PCIE设备有“PCIE_*_PRSNTn ”这个信号有多少个就对应多少个控制端口,该信号为PCIE控制器的使能信号端,低有效,当不用时悬空即可;举个例子:某个PCIE设备有32 Lane,但是只有两个控制端口,因此拆分时最优的拆分就是两个X16 ,当然你也可以拆分成两个X1 ,那也是相当奢侈!

③ PCB走线注意问题点:

        (a)PCIE总线上每个LANE 上AC耦合电容两端需要进行分段等长,芯片扇出部分走线阻抗可不做严格控制,但是尽量缩短扇出线部分的走线长度

        (b) 阻抗控制100Ω,差分对PN两条布线总长度之差不能超过4mils 。

        (c)信号如果需要打孔换层,建议在换层孔附近添加回流孔,回流孔尽量靠近信号孔。

          (D) 走线参考GND,保证参考平面完整,不允许有跨平面分割的情况。如果设计中无法避免跨平面参考,建议在跨平面分割处用旁路电容将回流信号连接起

          (E) TX和RX建议走在不同层,或者隔开尽可能远的距离。差分对P和N必须在同一层,并按照差分约束布线。

④校准电阻

        PCIE控制器上的校准电阻,精度为1%,布局时需要靠近器件放置,远离干扰源。这部分因为对PCB绘制有关,需要在原理图上标注。

        绘图相关内容应该见GTY文件的布线部分,内有详细的说明。详见芯片官方文档。

        另外,在绘原理图的时候,应该遵守一定的规范,原理图绘制分为国标和国家标准。详情见电路设计国家标准的文档。
                        
        原文链接:https://blog.csdn.net/weixin_44987757/article/details/113881597

https://zhuanlan.zhihu.com/p/283026221 https://zhuanlan.zhihu.com/p/26172972

三、FPGA开发

        针对PCIE总线如何在PL端开发,经过查询资料主要是借助两种IP核。一种是XDMA for PCIE;另一种是DMA。如果是前者,可通过直接调取ip核实现控制。如果是后者,需要一定的编码方式。

如何配置XDMA核的教程详见如下链接    https://zhuanlan.zhihu.com/p/493072708

        需要注意的是,虽然GTY文档中说明了PCIE的数据传输方式是存在一定数据冗余的,表现为不同的编码形式。但是这些只是原理科普,这些数据流的产生在数据层及物理层处理,而我们在PL端做FPGA设计的时候,只需要关注有效数据就可以了。因目前只是理论验证阶段,所以这个观点在后续会验证。后续实际使用XDMA核的时候,会来继续补充这部分内容。

        如果PCIE需要访问DDR存储设备,则需要单独链接MIG核,此部分内容在上个链接有部分描述。后续涉及到会补充。

四、目前存在的疑问

1.XDMA和DMA有什么区别?

2.MIG和DMA都是操作DDR存储器,可通用码?

3.后续需要针对实际的硬件开发PCIE部分,需补充设计。

四、总结

        在进行PCIE原理选型和设计的时候,最需要关注的是吞吐量这个参数。通过吞吐量来确定PCIE的类别,其次,需要关注FPGA芯片对的资源类型,是否支持PCIE及支持的版本号。需要做到兼容。

        PCIE本质上是个总线,有好几种接口,如M.2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/770724
推荐阅读
相关标签
  

闽ICP备14008679号