PCI Express中8/10b编码器的设计

2017-12-07 02:03
软件 2017年11期
关键词:码字表达式编码器

郑 凯

(淮阴师范学院 物理与电子电气工程学院,江苏 淮安 223300)

PCI Express中8/10b编码器的设计

郑 凯

(淮阴师范学院 物理与电子电气工程学院,江苏 淮安 223300)

随着通信技术的发展,PCI Express的应用越来越广泛,但高速传输引起的信号质量劣化的问题随之产生,因此PCI Express引入了具有较高性能的8b/10b编码。8b/10b编码是一种面向字节的二进制编码,此种编码特别适合于高速通信领域中数据传输,基本特性是直流平衡,便于高频时钟信号的嵌入。本文在研究了PCI Express协议规范以及8b/10b编码原理的基础上,设计了面向PCI Express的8b/10b编码。

高速通信;PCI Express;8b/10b编码

0 引言

随着数字通信中数据容量以及传输实时性要求的日益增长,计算机内部和外部的总线对于数据传输的速率提出了更高的要求,因此高性能、高扩展性、更良好的升级性以及造价更为低廉的 PCI Express始一出现便得到广泛的应用。PCI Express以串行差分的方式在设备之间进行数据的交互,实现超高速通信,但是通信速率的提升引起传输过程中的信号质量的恶化。为了解决在高速数据传输过程中的数据失真等问题,通常将数据编码为具有强纠错能力,适合于进行高速传输的数据结构之后再进行传输[1-4]。8b/10b编码以其高效性是目前告诉数据传输接口或者总线的常用编码方式,PCI Express亦采用此种编码机制。

8b/10b编码具有很好的直流平衡的特点,即在传输过程中的“1”和“0”的个数趋于相等,如图1所示。通过将8bits的数据映射为10bits的符号,保证了足够的“1”和“0”之间的跳变,转换的密度较高会避免在高速传输中连续的逻辑1或逻辑0有多个位没有跳变时,信号的转换由于电压位阶的关系而造成信号错误。且足够的“1”和“0”之间的跳变,方便将时钟信号嵌入到数据流中,避免传输高速时钟信号引起的电气噪声,时钟信号的嵌入也使得对端设备在进行时钟恢复的时候简单易实现。另外,8b/10b编码机制抗干扰性较强,且具有一定的检错能力[5-7]。

8b/10b编码针对数据字符和控制字符有着不同的编码规则。控制字符编码相对简单,直接使用查找表即可完成。PCIE协议中共定义了12种控制字符,其编码为固定编码。通过对协议中控制字符的编码进行分析,设计中为了减小一级选择器的输入数目以降低大扇入引入的延迟,将首先根据输入字符的高3位和低5位进行区分,分别以输入数目较小的选择器完成。

图1 8b/10b 编码与普通编码的直流特性Fig.1 The characteristics of 8b / 10b encoding compared with the common encoding

1 编码概述与原理

1.1 概述

在PCI Express中,8b/10b编码模块处于物理层发送端的PCS层中,当处于多通道的模式时,每个通道的8b/10b编码器独立工作,位置图如图2所示。

图2 8b/10b 编码器在物理层中的位置Fig.2 The position of the 8b/10b encoder in the physical layer

1.2 编码原理

该编码技术的基本精神很简单,即将8bits字符经过映射机制转化为10bits的符号。8b/10b编码可分为3b/4b编码和5b/6b编码两部分,将8b码组分为 3bits(HGF)和 5bits(EDCBA)两部分,分别通过 3b/4b和 5b/6b编码得到相应的 4bits和 6bits码组,编码过程中设置运行不一致(RD)对编码进行控制选择,如图3所示。

图3 8b/10b 编码映射图Fig.3 8b/10b encoding mapping Diagram

PCIE协议中的数据字符分为数据字符和控制字符,数据可以统一的表示为Dx.y和Kx.y,其中D表示为数据字符,K表示为特殊的控制字符,x表示输入的原始数据的低5位EDCBA,y表示输入的原始数据的高3位HGF。在PCI Express协议规范中,共定义了12个特殊的控制字符(K码),这些特殊字符用于链路训练过程中的帧同步和连接管理机制,同时也用于辅助进行DLLP及TLP包的识别和保证在多通道传输时DLLP和TLP包的标识字符的位置符合特定的规则。

1.3 编码内在相关性分析

通过分析8b/10b编码的内在相关性,对于3b/4b编码模块有以下的结论,表1为3b/4b的编码表:

表1 3b/4b 编码表Table 1 3b/4b encoding

① 3bits码组000,011,100编码之后得到的4bits码组具有相互取反的两组编码,且编码之后的4bits码组具有的不一致属性与当前运行不一致具有取反或者相同的特点。

② 3bits码组001,010,101,110编码之后得到的4bits码组具有唯一的一组编码。

③ 3bits码组 111较为特殊,编码之后会得到两组相互取反的 4bits码组,分析整个 8b/10b编码表可以发现,4bits码组的选择与特定的几组 5bits码组相关。

3b码字111最为特殊,根据输入数据中的低5位的不同,具有两组相反的4b编码,而正 常情况下出现的4b编码为0001和1110。总结可知,部分3b码字对应的4b码字根据RD属性值的 不同,具有相互取反的两种4b编码,对应的3b码字为000、011、100、11l;部分 3b码字对应的 4b码字根据RD属性的不同具有相同的4b编码,对应的3b码字为 001、010、101、110。在 3b/4b 编码修正中,将根据上述规则对预编码的结果进行修正。

对于 5b/6b编码模块,分析可知编码之后得到的 6b码组,根据当前不一致属性的不同,共有 18中单值的码组,14组双值的码组。5b/6b编码结果中,根据RD属性值的不同,共有18中单值编码结果,14种双值编码结果。在预编码的结果中,设置最高位指示预编码的结果是否为双值编码结果。若最高位为1,则表示编码结果具有双值属性,若CRD值同时为负,则修正结果为预编码结果取反;否则修正结果与预编码结果保持一致。

1.4 编码方案分析

依据 8b/10b的内在相关性,目前实现 8b/10b编码有两种方案[8-10]:

① 逻辑表达式法:此种方案是依据编码表具有的相关性,分析得出 10bits码组每一位与输入的8bits码组每一位的逻辑关系,以逻辑表达式的形式直接通过8bits输入计算得出10bits码组的输出。此种方案电路复杂,难度较大,且由于延时、竞争、冒险的存在,数据输出的抖动较为严重,严重的限制了芯片的最高工作频率。

② 查找表法:即直接通过输入的8b码组查寻得到10b码组,共需要256组数据的码组和12组控制字符的编码。此种方案实现简单,但是消耗的资源较大,且会受到系统内部存储器的读出时间的限制,增加芯片的面积和功耗。

2 设计实现

通过分析现有的实现方案,并进一步研究8b/10b具有的内在联系,本文提出以下的方案[11-13]。本方案共有4部分组成,3b/4b模块、5b/6b模块、不一致属性控制和输出模块,整体框架如图 4所示。

图4 设计框图Fig.4 The structure diagram

其中 3b/4b模块由于输入较为简单,本文采用逻辑表达式的方法来实现,根据RD+列的码组计算得到表达式。通过对3b/4b编码表进行卡诺图化简,得出如下的逻辑表达式:

5b/6b模块依据查找表的 RD+列实现,由于在得到6bits码组的输出时,依据RD属性的不同会出现相同或者取反的两组编码,因此在实现查找表时,将6bits输出码组添加一位状态比特,以辅助输出模块得到正确的输出。

在分别得到RD+列的6b码组和4b码组之后,不一致属性控制模块会根据当前 RD值的值来选取6b码组与之匹配的码组,不一致属性控制模块根据得到的6b码组计算6b码组的不一致属性。在选取正确的6b码组的时候,根据RD属性的不同,需要对查表得到的6b码字进行取反或者保持原值。重新计算 6b码字之后的不一致属性将作为当前不一致进行对4b码组选择控制信号,在查询4b码字的时候,要针对几组特殊的码字进行单独控制,具体控制的原则在上述分析 3b/4b编码分析中有提到,需要进行特殊处理的是,当3bits码组为111时,4bits码组 1000和 0111分别只会出现在 5bits码组为01011,01101,01110的RD+列和10001,10010,10100的RD-列,对于其他的5bits码组则根据上述表达式进行通用性的编码。之后不一致属性模块依据得到的4bits码组计算4bits码组的不一致属性,并作为当前运行不一致进行对下一次编码的控制。

由于本设计分成几个不同的模块,且包含组合逻辑与时序逻辑,因此需要对时序进行一些调整控制,以保证设计中子模块的同步。首先,由于3b/4b模块使用逻辑表达式,属于纯组合逻辑,而 5b/6b模块采用查找表的方式,采用了时序逻辑,因此为保证4bits和6bits码组产生的同步性,需要将计算得到的 4bits码组通过一级缓存,缓存之后的 4bits码组与6bits码组作为输出模块的输入。输出模块采用纯组合逻辑,且由于输出模块的输出涉及到 RD的反馈,因此在输出之前要做一级缓存,缓存之后得到最终编码完成的10bits码组以及将作为下一次编码过程RD的RD属性值。

3 仿真与验证

本文在分析了现有8b/10b编码方案的基础上,结合8b/10b编码规则和3b/4b、5b/6b的内在相关性,提出设计8b/10b编码器的一种方案。在功能验证和测试时,我们使用Synopsys公司的VCS软件进行仿真,该软件许可在PC、Linux平台上使用,支持Verilog硬件描述语言(HDL)仿真。

在测试时,更换不同的testcase(测试用例)对该模块的输入接口添加不同的激励,观察其状态跳转和输出信号。仿真结果图如图5所示:

通过仿真调试,本文的设计方案可以正确的完成8b/10b的编码功能,得出正确的输出码组,并符合时序上的要求。

图5 仿真结果图Fig.5 Simulation chart

[1] 范宇. 基于RS 码的网络编码层设计[J]. 软件, 2013, 34(5):92-95.

[2] 罗星星, 蒲保兴, 赵颖, 等. 随机网络编码数据传输的仿真实现[J]. 软件, 2014, 35(8): 32-37.

[3] 李浩, 戴志涛. 基于异构多核的H.264 编码器研究与实现[J]. 软件, 2015, 36(1): 110-115.

[4] 陈鑫, 陈晓, 蔡婷婷. 基于SPIHT算法的ROI编码研究[J].软件, 2015, 36(2): 112-117.

[5] 赵冬艳. PCIe高速串行总线技术应用研究[J]. 战术导弹控制技术, 2011, 28(1): 5-9.

[6] Edward Solari, George Willse.PCI&PCI-X Hardware and Software Architecture and Design[J]. PHEI, 2003, 15(4): 33-36.

[7] Eugin Hyun, Kwang-Su Seong. Design and Verification for PCI Express Controller[C]. The 3th International Conferrence on Information Technology and Applications, 2005: 581-586

[8] 石峰, 吴建飞. 基于Xilinx FPGA的PCIE接口实现[J]. 微处理机, 2008, 29(6): 19-22.

[9] Verdiell. J.PCIe optical interconnects[C]. Avionics, Fiber-Optics and Photonics Technology Conference(AVFOP), 2011.

[10] Ostler.FPGA Bootstrapping on PCIe Using PartialReconfiguration[C]. Reconfigurable Computing and FPGAs, 2011.

[11] PCI-SIG.PCI Express Base Specifications Revision3.0[S].America:PCI—SIG, November 10, 2010.

[12] PCI-SIG. PCI Express Base Specifications Revision2.0[S].America: PCI-SIG, December 20, 2006.

[13] PCI-SIG. PCI Express Base Specifications Revision1.0[S].America: PCI-SIG, April 15, 2003.

The Design of the 8/10 b Encoder Based on PCI Express

ZHENG Kai
(School of Physics and Electronic Electrical Engineering, Huaiyin Normal University, Huaian Jiangsu, 223300, China)

As the development of the Comunication technology, the PCI Express is more and more popular in application, but high speed of data transfer causes the deterioration of the signal quality,so 8b/10b encoder with high encoding performance is adapted in PCI Express. 8b/10b encoder is a kind of binary encoder facing to byte, which is specially fit to data transfer of high speed field, with baseful characreristic of DC balance, and it’s ease to embed high frequency clock signal in bit stream. This paper designs a kind of 8b/10b encoder facing PCI Express after researching the PCI Express Spec and the principle of 8b/10b algorithm.

High speed communication; PCI Express; 8b/10b coding

TP334.7

A

10.3969/j.issn.1003-6970.2017.11.039

本文著录格式:郑凯. PCI Express中8/10b编码器的设计[J]. 软件,2017,38(11):208-211

郑凯(1989-),男,工作于淮阴师范学院,主要研究方向:集成电路、电路设计。

猜你喜欢
码字表达式编码器
一个混合核Hilbert型积分不等式及其算子范数表达式
表达式转换及求值探析
浅析C语言运算符及表达式的教学误区
放 下
基于FPGA的同步机轴角编码器
数据链系统中软扩频码的优选及应用
基于PRBS检测的8B/IOB编码器设计
JESD204B接口协议中的8B10B编码器设计
多总线式光电编码器的设计与应用
长为{4,5,6}的完备删位纠错码的存在性*