PCIExpress物理层链路训练一致性测试状态设计

点赞:4997 浏览:12992 近期更新时间:2024-01-20 作者:网友分享原创网站原创

摘 要:本文描述了PCIExpress物理层链路训练中一致性测试状态的设计,主要通过设计有限状态机实现一致性测试状态的功能.完成了LTS(LinkTrainingandStatusStateMachine)中的polling.active到polling.pliance状态的跳转.仿真验证结果表明设计的状态机功能复合预期.

关 键 词 :PCIExpress;一致性测试;LTS;有限状态机

中图分类号:TP393 文献标识码:A 文章编号:1007-9599 (2013) 06-0000-04

1.引言

随着计算机技术的飞速发展,当前主流的PCI总线已经不能满足传输上日益增长的数据量的需求,新标准总线,PCIE(PCIExpress),将全面取代现行的PCI和AGP(AccelerateGraphicalPort),最终实现总线标准的统一.它的主要优势就是数据传输速率高,目前最高可达到10GB/s以上,而且还有相当大的发展潜力.

PCIE也有多种规格,从PCIEx1(1个通道)到PCIEx16(16个通道),能满足现在和将来一定时间内出现的低速设备和高速设备的需求[1].

PCIE是高性能的通用I/O的连接技术,可被广泛应用于未来计算机和通讯的各种平台中.它是PCI的一个革命版本,保留了PCI的一些良好特性.有着更好扩展性的串行化总线技术取代了并行总线.PCIE采用了当前非常先进的点对点互联技术;同时,PCIE提供了另外的一些非常高级的特性,如功耗管理、质量怎么写作、热插拔、数据完整性校验、差错处理等.在原来PCI的基础上做了大幅度的改进,被称为第三代总线技术[2].

2.系统结构

2.1 PCIExpress架构

PCIExpress有三层结构,如图1所示,从上到下依次为事务层、数据链路层和物理层(逻辑子层和电气子层).

事务层:请求/结束事务结构、TLP流量控制和消息传送.数据链路层:负责保证链路上发送的数据正确,同时负责保证在链路上可靠地传送分组.物理层:分成两个子层,逻辑子层和电气子层.其中,逻辑子层负责数据加扰、8b/10b编码和分组分帧;电气子层收发链路电气信号.此外,所有链路训练都在逻辑子层内部完成[3].

图1 PCIExpress三层结构

2.2 物理层结构

如图2,物理层分为逻辑子层和电气子层.逻辑子层包括MAC(MediaAccessLayer)和PCS(PhysicalCodingSublayer),MAC和PCS之间用PIPE接口连接.电气层主要就是PMA(PhysicalMediaAttachmentLayer)部分.而链路训练就是位于MAC中.

图2 物理层结构

2.3 LTS结构

LTS(LinkTrainingandStatusStateMachine)主要负责链路训练和初始化过程.LTS是配置和初始化设备物理层、端口和相关链路的物理层控制过程,使链路可以传送正常的数据包流量.它主要负责以下内容:配置链路宽度、通路反排、极性颠倒、协商速率、位锁定、符号锁定以及通路间去偏差.

如图3,LTS主要包括11个大状态:Detect、Polling、Configuration、Recovery、L0、L0s、L1、L2、HotReset、Loopback、Disabled,各个状态又分别由子状态机实现.

PCIExpress物理层链路训练一致性测试状态设计参考属性评定
有关论文范文主题研究: 关于状态的论文范文集 大学生适用: 在职研究生论文、函授毕业论文
相关参考文献下载数量: 98 写作解决问题: 写作资料
毕业论文开题报告: 文献综述、论文目录 职称论文适用: 期刊发表、中级职称
所属大学生专业类别: 写作资料 论文题目推荐度: 优秀选题

复位后进入初始状态Detect状态,在此状态,设备检测链路另一端是否有设备,Detect状态也可以由其他状态进入.在Polling状态期间要实现位锁定和符号锁定;确认通路极性和通路数据速率;还要进行合格性测试.在Configuration状态要进行链路宽度、链路号的协商;要执行通路反排、极性颠倒以及去除通路间时差;接收器要向发送器通告它从L0s跳到L0状态所需要的FTS有序集的数量.L0是正常的、链路全激活状态,在此期间事务层包TLP、数据链路层包DLLP以及物理层的有序集能够被发送和接收.L0s是低功耗状态,如果链路上没有包被发送并且计时时间到,设备发送器向对方的接收器发送几个电气闲有序集之后主动将链路从L0置入L0s状态.L1是比L0s功耗更低的状态,由它退出到L0需要更长的时间.L2是比L1功耗更低的状态,退出等待时间比L1长.

链路重训练Recovery状态,当处于L0状态的链路由于发生了使链路不可操作的某个错误时,会从L0状态进入Recovery状态,在此状态期间,执行链路训练状态Polling和Configuration状态下类似的操作,而且在此状态还可以进行改速率,以及进行均衡(确定信号发送的2阶去加重水平).Loopback状态被用作测试和故障隔离状态,一旦进入Loopback状态,主设备就能够遵循8b/10b编码规则发送任何图谱的符号,从设备回环收到的数据.Disabled状态可以使一条已配置的链路被禁止.HotReset状态是热复位状态[3]-[6].

图3 LTS链路训练机状态图

2.4 一致性测试状态

如图4,一致性测试状态polling.pliance是Polling轮询状态中的一个子状态,是一个非正常的状态,当设备出现故障时会进入该状态进行测试.在polling.pliance期间, 阻抗的测试探针或者 的接地阻抗钩到任一通路上的发送信号差分对,使得该设备进入polling.pliance状态.在这个状态下,要求该设备在链路上生成合格性测试位谱,该位谱会在相邻通道间产生最坏情况的干扰,造成最坏情况的EMI,这样就可以供钩到该链路上的测试设备测试EMI噪声、串话干扰、位错误率等等. 图4 Polling状态图

3.设计

3.1 Polling.pliance状态

进入该状态是为了进行测试,会进行相应的设置.首先要确定发送端的速率和去加重水平de-emphasis,这些设置是为发送数据做准备;其次就是确定发送的pliancepattern测试图谱.PCIExpress1.0速率为2.5GT/s,PCIExpress1.0速率为5.0GT/s,PCIExpress1.0速率为8.0GT/s.

确定速率和去加重水平都是由两台设备共同协商决定的:

(1)如果两台设备只支持2.5GT/s,两端设备的速率就确定为2.5GT/s;de-emphasis为-3.5dB.

(2)如果由于在polling.active状态中检测到8个连续的TS1(TrainingSequence)而进入polling.plianc,两端设备的速率为双方所能支持的最高速率;de-emphasis就由TS1中所携带的信息协商决定.

(3)如果由于链路控制寄存器中的enter_pliance位置1而进入polling.plianc,两端设备的数据速率就由链路控制寄存器中的target_link_speed决定;de-emphasis取决于速率,如果速率是5GT/s,de-emphasis为-3.5dB;如果速率是8GT/s,de-emphasis由链路控制寄存器中的CompliancePreset/De-emphasis决定.

(4)其它情况下,就由两端设备所能支持的最大速率和进入到polling.pliance的次数决定.

确定发送的一致性图案:根据不同的情况需要发送pliancepattern和modifiedpliancepattern.

在双方确定发送测试图谱的速率之后,就要进入electricalidle电气闲改速率

3.2 Polling.pliance状态机实现

本设计主要是实现LTS中polling.active到polling.pliance状态的跳转,从而为设备提供测试的环境.

如图5,是所设计的实现polling.pliance状态的有限状态机.Compliance_idle是初始状态,pliance.enter_tx_eidle发EIOS进入电气闲,pliance.enter_enter_speed_change处于电气闲,并把速率改到协商好的速率,pliance.tx_pliance发送测试图谱pliancepattern或modifiedpliancepattern,pliance.exit_tx_eidle再次发EIOS(ElectricIdleOrderSet)进入电气闲,pliance.exit_speed_change处于电气闲,把速率改到PCIExpress1.0的速率2.5GT/s,pliance.exit_in_eidle还是处于电气闲,pliance.exit是退出状态,表明已经完成polling.pliance状态.


图5 polling.pliance状态机实现

4.仿真结果

图6 modelsim仿真波形图

如上图6所示,是在modelsim中进行仿真得到的结果.先利用verilog语言编写设计模块代码,进而在modelsim软件中进行功能仿真.从波形图上可以看出,主状态机(current_state)从000000→000001→000010→000011→000010,其中“000000”代表detect.quiet状态,“000001”代表detect.active状态,“000010”代表polling.active状态,“000011”代表polling.pliance状态.Polling.pliance状态机(current_pliance_state)从000→011→100→110→111→000跳转,其中“000”代表pliance.idle状态,“011”代表pliance.tx_pliance状态,“100”代表pliance.exit_tx_eidle状态,“110”代表pliance.exit_in_eidle状态,“111”代表pliance.exit状态.

从上图可以看出,主状态机成功从polling.active进入到polling.pliance状态.pliance状态机根据不同情况也可以成功的跳转;当pliance状态机跳转到pliance.exit状态时,表明设备此时在polling.pliance状态可以成功退出,这时主状态机又从polling.pliance跳转到polling.active状态,回到正常状态.

5.结论

本文介绍了PCIExpress协议的三层结构、物理层结构,详细介绍了LTS的组成结构和一致性测试状态,完成了polling轮询状态中的polling.pliance一致性测试状态的功能.能够正确地从正常状态跳转到一致性测试状态,为外界测试提供必要的测试环境.