基于FPGA的PCIe设计

上传人:积*** 文档编号:201948136 上传时间:2023-04-21 格式:DOCX 页数:17 大小:829.71KB
收藏 版权申诉 举报 下载
基于FPGA的PCIe设计_第1页
第1页 / 共17页
基于FPGA的PCIe设计_第2页
第2页 / 共17页
基于FPGA的PCIe设计_第3页
第3页 / 共17页
资源描述:

《基于FPGA的PCIe设计》由会员分享,可在线阅读,更多相关《基于FPGA的PCIe设计(17页珍藏版)》请在装配图网上搜索。

1、基于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:端点一般位于终端应用内,它负责

3、连接应用与系统内的PCIe网络。端点规定并完毕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;

4、 5. PCI Express-PCI Bridge:桥用于连接PCIe与系统内诸如PCI/PCI-X等其她PCI总线原则,这样的系统同步采用上述各总线架构; 1.2. PCIe合同规格 PCIe 规范对于设备的设计采用分层的构造,有事务层、数据链路层和物理层构成,各层有都分为发送和接受两功能块。 在设备的发送部分,一方面根据来自设备核和应用程序的信息,在事务层形成事务层包(TLP),储存在发送缓冲器里,等待推向下层;在数据链路层,在TLP 包上再串接某些附加信息,这些信息是对方接受TLP包时进行错误检查要用到的;在物理层,对TLP 包进行编码,占用链路中的可用通道,从发送器发送

5、出去。事务层包(TLP),数据链路层包(DLLP),物理层(PLP)产生于各自所在层,最后通过电或光等介质和另一方通讯。这其中数据链路层包(DLLP),物理层(PLP)的包不需要关怀,在PCIe HIP核中封装好了。在 FPGA上做 PCIe的功能就是完毕事务层包(TLP)的解决。 1.3. 解决层(Transaction Layer) 解决层接受来自PCIe设备应用的数据,并将其封装为TLP(Transaction Layer Packet)后,发向数据链路层。此外事务层还可以从数据链路层中接受数据报文,然后转发至PCIe设备的核心层。解决层在应用层和数据链路层之间,来产生和接受传

6、播层的包。解决层涉及:发送数据途径,配备空间和接受途径。 接受数据流程: 1)收到从数据链路层来的TLP; 2)配备空间用来拟定解决层的包与否对的; 3)在每个虚拟通道,解决层的包被存在接受buffer中一种特定的部分(由收发类型拟定:posted,non-posted,completion); 4)解决层packet FIFO 块用来存储buffer传播层包的地址; 发送数据流程: 1)MegaCore通过tx_cred[35:0]来给应用层提供信息; 2)应用层会祈求传播层给它包,此时应用层需要提供提供PCI Express传播字头在tx_desc[127:0]中,已经数据

7、在tx_data[63:0]中; 3)Megacore会确认suffiicient flow control credits,并拟定是相应还是延迟祈求; 4)解决层仲裁各虚拟通道,然后选择优先级高的数据给数据链路层; 1.3.1. 解决层构造 1.3.2. TLP报文 TLP有三部分构成,帧头、数据、摘要(或者称ECRC)。TLP 头标长3或者4个DWORD,格式和内容随报文类型变化,如下图所示。 l Fmt[1:0] – Format of TLP– bits 6:5 of byte 0; l Type[4:0] – Type of TLP – bits 4:0 of

8、byte 0; l TC[2:0] – Traffic Class  – bits [6:4] of byte 1; l Attr[1:0] – Attributes – bits [5:4] of byte 2; l TD – 1b indicates presence of TLP digest in the form of a single DW at the end of the TLP – bit 7 of byte 2; l EP – indicates the TLP is poisoned  – bit 6 of byte 2; l Length[9:0] – Le

9、ngth of data payload in DW – bits 1:0 of byte 2 concatenated with bits 7:0 of byte 3; 数据端为TLP 帧头定义下的数据段,如果该TLP 不携带数据,那该段为空。 Digest段(可选)是基于头标、数据字段计算出来的CRC,成为ECRC,一般Digest 段由IP核填充。 1.3.3. Non-posted & Posted 如果设备发起端发出一种Non-Posted祈求,在一定期间后,接受端需要答复一种完毕包给发起端。如果发出的是Posted祈求,不需要答复完毕包给发起端。 n Posted Req

10、uests: Requests that do not require a Completion; n Non-posted Requests: A valid Requester ID is required to properly route the resulting completions; 除了Memory Write和Message事务属于Posted报文,其她事务报文都是Non-posted报文,例如Memory Read、IO和Configuration等报文。 1.4. 数据链路层(Data Link Layer) 1.4.1. 数据链路层构造 ■ Link

11、 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 power management of data link layer packet reception and transmission; ■ To transmit and receiv

12、e 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 packet reception using the retry buffer, Management of the retry buffer; ■ Link retrain

13、ing requests in case of error through the LTSSM of the physical layer; 1.4.2. DLLP报文 数据链路层保证来自发送端事务层的报文可以可靠、完整地发送到接受端的数据链路层。来自事务层的报文在通过数据链路层时,将被添加Sequence Number前缀和CRC后缀。数据链路层使用ACK/NAK合同保证报文的可靠传递。 PCIe总线的数据链路层还定义了多种DLLP(Data Link Layer Packet),DLLP产生于数据链路层,终结于数据链路层。值得注意的是,TLP与DLLP并不相似,DLLP并不是由TLP

14、加上Sequence Number前缀和CRC后缀构成的。 1.5. 物理层(Physical Layer) 物理层是PCIe总线的最底层,将PCIe设备连接在一起。PCIe总线的物理电气特性决定了PCIe链路只能使用端到端的连接方式。PCIe总线的物理层为PCIe设备间的数据通信提供传送介质,为数据传送提供可靠的物理环境。 物理层可以分割成2个子层:电气层和逻辑层。而有某些公司已经在电气层和逻辑层之间定义和采用了一种接口,这种接口称为PCI Express物理接口(PIPE)。控制器物理层用于与PHY的接口,并用于管理许多可以发起链路构建数据包的功能。某些特殊序列用于建立物理链

15、路、进入和退出低功耗链路状态等。这些序列用于同步PCIe链路,并进行链路管理。值得注意的是PCIe设备发送PLP与发送TLP的过程有所不同。 物理层的接受部分负责: n 通道映射、通道间去偏移,合用于由多条线路构成的链路。 n 数据解扰 n 数据包检测和解帧 n 检查特殊数据包序列,例如TS1、TS2、跳过和电气空闲。 物理层的发送部分负责: n 采用特殊符号插入来对数据包进行封帧,例如采用STD或SDP符号来标志数据包的开始,用END符号来标志结尾。 n 数据加扰。 n 链路控制——初始化、带宽和线路反转(lane-reversal)协商。 n 多条线路发送控制。 n

16、生成跳过序列来补偿链路两端的时钟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

17、: ■ PIPE 2.0 Interface Gen1/Gen2: 8-bit@250/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 物理层是PCIe体系构造最重要,也是最难以实现的构成部分。PCIe总线的物理层定义了LTSSM(Link Trainin

18、g and Status State Machine)状态机,在PCIe链路可以正常工作之前,需要对PCIe链路进行链路训练。PCIe链路使用该状态机管理链路状态,并进行链路训练、链路恢复和电源管理。LTSSM状态机涵盖了11个状态,涉及Detect,Polling,Configuration,Recovery,L0,L0s,L1, L2,Hot Reset,Loopback,Disable。这11个状态之间转换的逻辑,如下图所示, 这11个状态大体可以分为4大类: (1) PCIe链路训练有关。正常的PCIe链路训练状态转换流程依次是,Detect->Polling->Configu

19、ration->L0。L0是PCIe链路可以正常工作的电源状态; (2) PCIe链路重新训练有关。这个状态也称为Recovery。Recovery是一种非常重要的链路状态,进入这个状态的因素也诸多,例如电源状态的变化,PCIe链路速率的变化等; (3) 电源状态有关。PCIe总线的电源状态重要有两部分的内容: 1. 基于软件控制的PCI-PM电源管理机制,是系统软件通过修改寄存器中的电源管理字段,使PCIe设备进入D状态:D0,D1,D2,D3; 2. 基于硬件控制的ASPM(=Active State Power Management)电源管理机制,是基于硬件自主控制的链路电源管理

20、机制,只有在PCIe设备处在D0状态是才可以启动ASPM机制,此外,与ASPM有关的链路状态有L0s,L1(涉及L1.1和L1.2); (4) 其她有关,例如Hot Reset, Link Disable, Loopback等; 1.6. PCIe HIP设立 1.6.1. Hard IP模块构造 1.6.2. System设立 1) Pcie core的类型:软核、硬核。 2) PHY type: 选择用不同的器件来实现,可以看到下面支持lane的数量的不同。 3) Port type: Native Endpoint、Legacy Endpoint、Root point。

21、 4) Xcvr ref_clk: 设立reclk的输入时钟,可以在手册中清晰看到,对于不同的器件,输入参照时钟的区别。 5) Application Interface: 用于指定PCI Express中传播层和应用层的接口,如果用MegaWizard,建议采用Avalon-ST. 6) Application clock: 指定应用的接口时钟,在选择硬核和软核时有区别。 7) Max rate: Gen1(2.5Gbps), Gen2(5.0Gbps) 8) Test out width: 设立test_out的宽度,对于不同的核和lanes有不同的设立。 9) PCIe re

22、config: 重配备硬核只读配备寄存器。 1.6.3. PCIe Register 对PCIe(PCI)设备来说,CPU初始化会检测到FPGA有多少个BAR 空间,每个空间有多大,然后相应为这些BAR 空间分派地址。对系统设备来说,它能“看”到FPGA的空间就是BAR 空间,只能访问这些BAR 空间。也就是说,CPU端通过PCIe接口访问FPGA被局限在BAR空间内。在FPGA 中,BAR空间的设立根据顾客逻辑设计的需求来定义大小。 1.6.4. Capabilities Parameter 1) Tags supported: 设立支持non-posted报文祈求的t

23、ags数目。 Hard IP:32 or 64 tags for X1,X4和X8模式。 Soft IP:4-256 for X1和X4模式,4-32 for X8模式。 2) Implement completion timeout disable: 该选项只对Gen2的Root Port和Endpoint有效. 3) Completion Time out range: 你可以选择ABCD,分别相应不同的时间范畴。 4) Error Reporting: 可以显示的错误信息。 5) MSI Capabilities: 用来设立应用层祈求数量,将此值设立给消息控制寄存器。

24、SOPC只支持1个MSI。 6) link Capabilities: Link common clock:与否用系统提供的一般参照时钟给PHY来做参照时钟,建议选用。 Data link layer active reporting:只在root port有效 Link port number: 将只读端口数目设立到link Capabilities寄存器中。 7) Slot Capability: Table 3-3中具体简介了Slot capability寄存器中各个值相应的意义。该选项只对Root Port有效。 8) MSI-X capabilities: 此中断只对

25、Hard IP的Endpoint有效。 MSI-X Table size:系统软件读这个地方来拟定MSI-X Table Size,只读。 MSI-X Table Offset: 指向MSI-X table的基地址,只读。 BAR Indicator: 用来将MSI-Xtable映射到memory空间,只读。 PCIe可以发出两种中断,一种是虚拟INTx信号线,一种是MSI。 过去PCI板卡发送中断通过拉低INTx(INTA#,INTB#,INTC#,INTD#)来申请中断,CPU检测到INTx的中断,就跳转执行INTx相应的中断驱动程序,驱动程序里需要操作板卡将INTx拉回去,

26、否则就发生嵌套中断了。 MSI是基于消息机制的,CPU启动后为FPGA分派一种或多种消息地址,FPGA发送中断只需要向相应的地址内发送消息即可。消息内容中涉及消息号,每个消息号相应在CPU端的某一地址。中断和其她包是分开的,中断发送是非常简朴的,并不需要用到PCIe Core的TX接口,只需要简朴操作几条信号线就可以实现PCIe核组织需要的中断包向外发送。 1.6.5. Buffer Setup n Maximum payload size: 设立最大的有效载荷大小,对于不同的器件有不同的上限值; n Number of virtual channels: 设立虚拟通道数; n Number of low-priority VCs:设立虚拟通道在低优先级仲裁组的数量。该值只能不不小于或等于虚拟通道数; n Retry buffer size:设立重试Buffer的深度,用来存储发送报文直到被确认; n Maximum retry packets: 设立重试包的大小; 1.7. 其她接口信号 n LMI信号:该接口可以用来读写PCI Express配备空间。 n Avalon-ST和Descriptor/Data是两种不同的接口。两种接口不存在掺杂的说法。固然部分信号是相似或相近的。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档

相关搜索

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!