1、基于FPGA的PCIe设计基于FPGA的PCIe设计1.PCIe简介1.1.PCIe基本架构PCIe的优势以其复杂性为代价。PCIe是基于分组的串行连接协议,估计比PCI并行总线复杂10倍以上。这种复杂性部分源于在千兆赫速率所要求的并行到串行的数据转换以及转向基于分组的实现。PCIe保持了PCI基于加载存储的基本架构,包括对PCI-X增加的对分割事务的支持。此外,它引进了一系列底层信息传送要件来管理(如链路层流量控制)以模仿传统并行总线的边带线,且提供了更高水平的robustness和功能。该规定义了许多特性、能同时支持当今的需求和未来的扩展需要,且同时与PCI保持了软件兼容。PCI Expr
2、ess的先进特性包括:主动电源管理;先进的错误报告;通过端对端循环冗余校验(ECRC)支持的端对端的可靠性;支持热插拔以及服务质量(QoS)流通类。一个简化系统的拓扑结构包括四个功能类型,根联合体根联合体(root complex)、交换器(switch)、端点(multiple Endpoints)和桥(bridge)。1.ROOT Complex:根联合体对整个PCIe建构实施初始化并配置各链路。它通常把中央处理单元 (CPU)与其它三个功能中的一或多个PCIe交换器、PCIe端点和PCIe到PCI桥连接起来;2.Endpoint:端点通常位于终端应用,它负责连接应用与系统的PCIe网络。
3、端点要求并完成PCIe事务传输。一般来说,系统的端点比任何其他类型的PCIe部件都要多;(1)Legacy Endpoint;(2)PCI Express Endpoint;(3)Root Complex Integrated Endpoint;3.Switch:PCIe交换器把数据路由至下游多个PCIe端口,并分别从其中每个端口路由到上游唯一一个根联合体。PCIe交换器也可以灵活地把数据从一个下游端口路由到另一个下游端口(点对点),它消除了传统PCI系统限制性的树状结构;4.Root Complex Event Collector;5.PCI Express-PCI Bridge:桥用于连接
4、PCIe与系统诸如PCI/PCI-X等其他PCI总线标准,这样的系统同时采用上述各总线架构;1.2.PCIe协议规格PCIe 规对于设备的设计采用分层的结构,有事务层、数据链路层和物理层组成,各层有都分为发送和接收两功能块。在设备的发送部分,首先根据来自设备核和应用程序的信息,在事务层形成事务层包(TLP),储存在发送缓冲器里,等待推向下层;在数据链路层,在TLP 包上再串接一些附加信息,这些信息是对方接收TLP包时进行错误检查要用到的;在物理层,对TLP 包进行编码,占用链路中的可用通道,从发送器发送出去。事务层包(TLP),数据链路层包(DLLP),物理层(PLP)产生于各自所在层,最后通
5、过电或光等介质和另一方通讯。这其中数据链路层包(DLLP),物理层(PLP)的包不需要关心,在PCIeHIP核中封装好了。在 FPGA上做 PCIe的功能就是完成事务层包(TLP)的处理。1.3.处理层(Transaction Layer)处理层接收来自PCIe设备应用的数据,并将其封装为TLP(Transaction Layer Packet)后,发向数据链路层。此外事务层还可以从数据链路层中接收数据报文,然后转发至PCIe设备的核心层。处理层在应用层和数据链路层之间,来产生和接收传输层的包。处理层包括:发送数据路径,配置空间和接收路径。接收数据流程:1)收到从数据链路层来的TLP;2)配置
6、空间用来确定处理层的包是否正确;3)在每个虚拟通道,处理层的包被存在接收buffer中一个特定的部分(由收发类型确定:posted,non-posted,completion);4)处理层packet FIFO 块用来存储buffer传输层包的地址;发送数据流程:1)MegaCore通过tx_cred35:0来给应用层提供信息;2)应用层会请求传输层给它包,此时应用层需要提供提供PCI Express传输字头在tx_desc127:0中,已经数据在tx_data63:0中;3)Megacore会确认suffiicient flow control credits,并确定是相应还是延迟请求;4)
7、处理层仲裁各虚拟通道,然后选择优先级高的数据给数据链路层;1.3.1.处理层结构1.3.2.TLP报文TLP有三部分组成,帧头、数据、摘要(或者称ECRC)。TLP 头标长3或者4个DWORD,格式和容随报文类型变化,如下图所示。Fmt1:0 Format of TLP bits 6:5 of byte 0;Type4:0 Type of TLP bits 4:0 of byte 0;TC2:0 Traffic Class bits 6:4 of byte 1;Attr1:0 Attributes bits 5:4 of byte 2;TD 1b indicates presence of T
8、LP digest in the form of a single DW at the end of the TLP bit 7 of byte 2;EP indicates the TLP is poisoned bit 6 of byte 2;Length9:0 Length of data payload in DW bits 1:0 of byte 2 concatenated with bits 7:0 of byte 3;数据端为TLP 帧头定义下的数据段,如果该TLP 不携带数据,那该段为空。Digest段(可选)是基于头标、数据字段计算出来的CRC,成为ECRC,一般Diges
9、t 段由IP核填充。1.3.3.Non-posted & Posted如果设备发起端发出一个Non-Posted请求,在一定时间后,接收端需要回复一个完成包给发起端。如果发出的是Posted请求,不需要回复完成包给发起端。Posted Requests: Requests that do not require a Completion;Non-posted Requests: A valid Requester ID is required to properly route the resulting completions;除了Memory Write和Message事务属于Posted
10、报文,其他事务报文都是Non-posted报文,例如Memory Read、IO和Configuration等报文。1.4.数据链路层(Data Link Layer)1.4.1.数据链路层结构 Link management through the reception and transmission of data link layerpackets, which are used for the following functions: To initialize and update flow control credits for each virtual channel; For
11、power management of data link layer packet reception and transmission; To transmit and receive ACK/NACK packets; Data integrity through generation and checking of CRCs for transaction layer packets and data link layer packets; Transaction layer packet retransmission in case of NAK data link layer pa
12、cket reception using the retry buffer, Management of the retry buffer; Link retraining requests in case of error through the LTSSM of the physical layer;1.4.2.DLLP报文数据链路层保证来自发送端事务层的报文可以可靠、完整地发送到接收端的数据链路层。来自事务层的报文在通过数据链路层时,将被添加Sequence Number前缀和CRC后缀。数据链路层使用ACK/NAK协议保证报文的可靠传递。PCIe总线的数据链路层还定义了多种DLLP(D
13、ata Link Layer Packet),DLLP产生于数据链路层,终止于数据链路层。值得注意的是,TLP与DLLP并不相同,DLLP并不是由TLP加上Sequence Number前缀和CRC后缀组成的。1.5.物理层(Physical Layer)物理层是PCIe总线的最底层,将PCIe设备连接在一起。PCIe总线的物理电气特性决定了PCIe链路只能使用端到端的连接方式。PCIe总线的物理层为PCIe设备间的数据通信提供传送介质,为数据传送提供可靠的物理环境。物理层可以分割成2个子层:电气层和逻辑层。而有一些公司已经在电气层和逻辑层之间定义和采用了一种接口,这种接口称为PCI Expr
14、ess物理接口(PIPE)。控制器物理层用于与PHY的接口,并用于管理许多能够发起链路构建数据包的功能。一些特殊序列用于建立物理链路、进入和退出低功耗链路状态等。这些序列用于同步PCIe链路,并进行链路管理。值得注意的是PCIe设备发送PLP与发送TLP的过程有所不同。物理层的接收部分负责:通道映射、通道间去偏移,适用于由多条线路构成的链路。数据解扰数据包检测和解帧检查特殊数据包序列,例如TS1、TS2、跳过和电气空闲。物理层的发送部分负责:采用特殊符号插入来对数据包进行封帧,例如采用STD或SDP符号来标志数据包的开始,用END符号来标志结尾。数据加扰。链路控制初始化、带宽和线路反转(lan
15、e-reversal)协商。多条线路发送控制。生成跳过序列来补偿链路两端的时钟PPM差异。1.5.1.物理层结构 Initializing the link; Scrambling and descrambling and 8B/10B encoding and decoding of 2.5 Gbps (Gen1) or 5.0 Gbps (Gen2) per lane 8B/10B; Serializing and deserializing data;The hard IP implementation includes the following additional functionality: PIPE 2.0 Interface Gen1/Gen2: 8-bit250/500 MHz (fixed width, variable clock); Auto speed negotiation (Gen2); Training sequence transmission and decode; Hardware autonomous speed control; Auto lane reversal;1.5.2.LTSSM物理层是PC
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1