参考书籍《Xilinx FPGA高速串行传输技术与应用》
编著 黄万伟
出版社 电子工业出版社
仅供学习交流所用
PCIe优势
- 采用点对点的互联技术。为每一个设备单独分配共享的通道带宽,保证了多设备的带宽资源,大幅度提高了数据的传输速率。
- 采用双通道技术。在传输模式上,PCI-Express采用与全双工通信技术类似的双通道传输模式,在速度方面,PCI-Express v1.0a 为每个通道提供了2.5Gb/s的传输速率。
- 扩展灵活。PCI-Express总线可以延伸到系统之外,采用专用线缆将各种外设直接与系统内部的PCI-Express连接到一起。
- 支持热插拔和热交换。
- 另外还具有如软件层与PCI兼容、先进错误报告、链路级数据完整性等技术优势。
PCIe各版本传输速度
版本 | 数据原始传输速率 | 数据传输速率 | 编码方式 |
---|---|---|---|
PCIe 1.0 | 2.5GT/s | 8GB/s | 8b/10b |
PCIe 2.0 | 5GT/s | 16GB/s | 8b/10b |
PCIe 3.0 | 8GT/s | 32GB/s | 128b/130b |
PCIe 4.0 | 16GT/s | 64GB/s | 128b/130b |
PCIe协议分层模型
PCIe协议是多层协议,由事物层、数据链路层、物理层组成。
物理层分为逻辑子层核电气子层。
逻辑子层又分为物理代码子层(PCS)和介质接入控制子层(MAC)。
事物层
主要负责事物层包(TLP)的封装和解封装。TLP包用于事物的交互,如读、写和特定类型的事件。事物层也负责管理TLP包基于信用的流控和软硬件能耗管理。
数据链路层
数据链路层作为事物层和物理层的中间层,主要负责链路管理和保证数据的完整性,包括错误检测和数据恢复。
发送端的数据链路层接收事物层发来的TLP包,计算数据保护吗和TLP序列号并加到TLP上,然后提交给物理层进行传输。接收端的数据链路层检查接收到的TLP的数据完整性,然后提交给事物层进行进一步处理。当检测到TLP错误时,数据链路层发出重传请求。
数据链路层也产生和消费包用于链路管理。为了与事物层的TLP相区分,使用数据链路层包(DLLP)术语指代数据链路层产生和消费的包。物理层
物理层包括所有的接口操作电路,如驱动和缓冲区、并/串转换和串/并转换、PLL和阻抗匹配电路,也包括与接口初始化和维护相关的逻辑功能。
物理层主要负责将从数据链路层收到的信息转换成合适的串行格式,并以特定的频率和宽度通过PCIe链路传输。
数据包格式示意图:帧信息 | 序列号 | 事物层头 | 数据 | ECRC | LCRC | 帧信息
PCIe的三个协议层(事物层、数据链路层和物理层)在数据传输中的作用,数据流从一个设备的事物层发起,经过数据链路层到物理层的总线接口设备,然后通过相应的PCIe数据电缆传输到另一个设备的物理层设备,经过另一个设备的数据链路层再传输到事物层进行处理,每一层都代表一个协议栈。
PCIe物理接口
PCIe物理接口包括数据线,控制线,电源线和复位线。
数据线
与PCI总线使用的单端信号不同,PCIe链路使用差分信号进行数据传递,链路的最大宽度是x32,但在实际使用中,一般处理器系统最多提供x16的PCIe插槽,并使用PETp0~PETp15、PETn0~PETn15和PERp0~PERp15、PERn0~PERn15共64根数据信号线组成32对差分信号进行数据传输,其中16对PETxx信号用于发送数据,另外16对PERxx信号用于接收数据。
控制线
当PCIe设备进入休眠状态,主电源Vcc已经停止供电时,PCIe设备可以通过WAKE#信号向处理器系统提交设备唤醒请求,使处理器系统重新为PCIe设备提供主电源Vcc。
由此可见,产生该信号的硬件逻辑必须由辅助电源Vaux供电。在PCIe总线中,WAKE#信号是可选的,因此使用WAKE#信号唤醒PCIe设备的机制也是可选的。当某个设备需要被唤醒时,该设备首先将WAKE#信号置位,然后经过一段时延后,处理器系统开始位该设备提供主电源Vcc,并使用PERST#信号对该设备进行复位操作。此时WAKE#信号时钟保持为低,当Vcc上电完成后,PERST#信号也将置位为无效并结束复位,WAKE#信号也将随之置为无效,结束整个唤醒过程。电源线
PCIe设备使用两种电源信号供电,分别是Vcc和Vaux,额定电压均是3.3V。其中Vcc为主电源,PCIe设备的主要逻辑模块均使用Vcc供电,Vaux是辅助电源,另外一些与电源管理相关的逻辑及一些特殊的的寄存器使用Vaux供电,这样即使Vcc被移除,与电源管理相关的逻辑状态及特殊的寄存器内容也不会发生改变,从而保证Vcc恢复后,设备可以很快地恢复到正常工作状态。
复位线
PERST#信号为全局复位信号,处理器系统需要为PCIe插槽和PCIe设备提供该复位信号。PCIe设备使用该信号复位内部逻辑。当该信号有效时,PCIe设备将进行复位操作。