南京观海微电子---PCIe协议接口

简介: 本文介绍了PCIe总线的引脚定义、协议架构及TLP数据包传输机制。涵盖物理层、数据链路层与事务层的功能,详解TLP封装与解包流程,以及各层在数据传输中的作用。

1. PCIe引脚定义

PCI Express,官方简称PCIe,是计算机总线的一个重要分支, 插槽图片如下:

下表列出在边缘连接器上的PCI Express卡两侧的导线。在印刷电路板(PCB)的焊接侧为A侧,并且组件侧的B侧。PRSNT1# 和PRSNT2# 引脚必须比其余稍短,以确保热插入卡时其余管脚完全插入。WAKE# 引脚采用全电压唤醒计算机,但必须拉高从备用电源,以表明该卡是能够唤醒。

2. PCIe协议层

PCIE协议中包括应用层、事务层、数据链路层和物理层。

应用层(Application Layer):应用层是在事务层之上的一层,它处理与连接的设备进行的高级通信。这可能包括配置设备、初始化寄存器、发送和接收控制命令等。

事务层(Transaction Layer):事务层是PCIe协议的核心,它负责将上层软件请求转化为数据传输和交换。事务层处理内存读写请求、配置空间访问以及其他与连接的设备进行通信的请求。

事务层接收由应用层传来的组成TLP核心部分所需要的信息,并将数据组装成Header 和 Data(有些TLP没有DATA),计算End CRC (ECRC)。

数据链路层(Data Link Layer):数据链路层接收事务层传过来的TLP包,然后在其前面加上12bit 的Sequence ID,并根据目前所有的信息计算32bit 的CRC (LCRC),并附着在后面。

物理层(Physical Layer):主要职责是处理所有的数据物理传输,发送端数据分发到各个Lane传输(stripe),接收端把各个Lane上的数据汇总起来(De-stripe),每个Lane上加扰(Scramble,目的是让0和1分布均匀,去除信道的电磁干扰EMI)去扰(De-scramble),以及8/10或者128/130编码解码,等等。物理层接收数据链路层传过来的TLP包,然后在其前面和后面分别附加1 Byte的 Start 和 End 帧字符。

3. TLP包

打包后的TLP包格式如下图所示,并且每块数据组成部分来自哪一个协议层都用不同的颜色标出。

Data是事务层上层给的数据,事务层给它头上加个Header,然后尾巴上再加个CRC校验,就构成了一个TLP;这个TLP下传到数据链路层,又被数据链路层头上加了个包序列号,尾巴再加个CRC校验,构成一个DLLP;然后DLLP下传到物理层,头上加个Start,尾巴加个End符号,把这些数据分派到各个Lane上,然后每个Lane上加扰码,经8/10或128/130编码,最后通过物理传输介质传输给接收方。

接收方物理层是最先接收到这些数据的,然后执行逆操作;在数据链路层,校验序列号和LCRC;如果检查无误,剥掉序列号和LCRC,往事务层走;如果校验出错,通知对方重传;在事务层,校验ECRC,如果有错则抛弃数据,如果没错,则去掉ECRC,获得数据。

下面一张图更加详细的向大家展示了数据是如何从上到下,一层一层的打包,最终通过物理层输出。

相关文章
|
2月前
|
缓存 前端开发 芯片
南京观海微电子---AXI总线技术简介——ZYNQ PS和PL的互联技术
AXI是Xilinx ZYNQ系列中实现ARM与FPGA高速通信的核心协议,支持Lite、4和Stream三种总线,分别适用于控制、批量传输和数据流场景。通过AXI Interconnect实现多设备互联,结合DMA等IP核,可高效完成数据交互,广泛应用于嵌入式系统开发。
南京观海微电子---AXI总线技术简介——ZYNQ PS和PL的互联技术
|
2月前
|
存储 芯片 异构计算
南京观海微电子---MIG IP核的使用——DDR接口专栏(二)
本文介绍Xilinx FPGA中MIG IP核的使用方法,涵盖DDR3颗粒选型、FPGA匹配、MIG参数配置及管脚分配等关键步骤,帮助用户实现对片外DDR存储器的高效读写操作。
南京观海微电子---MIG IP核的使用——DDR接口专栏(二)
|
2月前
|
固态存储 内存技术
南京观海微电子---PCIe协议(一)
PCIe是一种高速、点对点的互连协议,支持低延迟和高带宽数据传输。具备向下兼容性,涵盖插槽、带宽、协议和供电兼容,确保新旧设备协同工作。架构包括根复合体、终端设备和桥接器,广泛应用于SSD、NVM等设备。
南京观海微电子---PCIe协议(一)
|
2月前
|
存储 缓存 芯片
南京观海微电子---快速上手DDR读写例程——DDR接口专栏(三)
本文介绍如何使用FPGA中DDR IP核的Native接口进行读写操作,详细解析用户接口信号及时序控制,并结合Verilog代码实现DDR3的初始化、连续写入与读取验证,帮助开发者掌握DDR高速存储应用。
南京观海微电子---快速上手DDR读写例程——DDR接口专栏(三)
|
2月前
|
监控
南京观海微电子----显示模组导电粒子聚集导致大电流花屏的现象
显示模组绑定时使用的ACF导电粒子若聚集,可能导致PAD间短路,引发大电流或显示异常。常见原因包括FPC过宽覆盖LCD ITO走线,或金手指过短导致覆盖膜形成台阶。建议优化FPC设计,确保金手指超出LCD边缘0.2mm并加点硅胶保护,同时在测试中引入电压电流监控,防止隐患产品流出。
南京观海微电子----显示模组导电粒子聚集导致大电流花屏的现象
|
2月前
|
芯片 内存技术
南京观海微电子---如何区分LED显示屏与LED背光源?
LED显示屏由LED点阵组成,通过红、绿、蓝等发光二极管的亮灭显示文字、图像、视频等内容。具有高亮度、高清晰度、节能环保、寿命长等优点,广泛应用于广告、舞台、信息展示等领域,正朝着全彩化、高密度、高可靠性方向快速发展。
南京观海微电子---如何区分LED显示屏与LED背光源?
|
SQL 存储 分布式计算
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
1992 0
|
11月前
|
Java Maven Android开发
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
974 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
|
小程序 JavaScript Java
微信小程序的后端开发需要使用什么语言?
【8月更文挑战第22天】微信小程序的后端开发需要使用什么语言?
2726 65
|
10月前
|
SQL 自然语言处理 数据可视化
📊 Quick BI 真实体验评测:小白也能快速上手的数据分析工具!
作为一名软件开发工程师,我体验了阿里云的Quick BI工具。从申请试用账号到上传数据、创建数据集,再到搭建仪表板和使用智能小Q功能,整个过程流畅且简单易用。尤其对非专业数据分析人士来说,拖拽式设计和自然语言问数功能极大降低了操作门槛。虽然在试用入口明显度和复杂语义理解上还有提升空间,但整体体验令人满意。Quick BI让我改变了对数据分析的认知,值得推荐给需要快速制作报表的团队成员。