鄭 凱
(淮陰師范學(xué)院 物理與電子電氣工程學(xué)院,江蘇 淮安 223300)
PCI Express中8/10b編碼器的設(shè)計(jì)
鄭 凱
(淮陰師范學(xué)院 物理與電子電氣工程學(xué)院,江蘇 淮安 223300)
隨著通信技術(shù)的發(fā)展,PCI Express的應(yīng)用越來越廣泛,但高速傳輸引起的信號質(zhì)量劣化的問題隨之產(chǎn)生,因此PCI Express引入了具有較高性能的8b/10b編碼。8b/10b編碼是一種面向字節(jié)的二進(jìn)制編碼,此種編碼特別適合于高速通信領(lǐng)域中數(shù)據(jù)傳輸,基本特性是直流平衡,便于高頻時(shí)鐘信號的嵌入。本文在研究了PCI Express協(xié)議規(guī)范以及8b/10b編碼原理的基礎(chǔ)上,設(shè)計(jì)了面向PCI Express的8b/10b編碼。
高速通信;PCI Express;8b/10b編碼
隨著數(shù)字通信中數(shù)據(jù)容量以及傳輸實(shí)時(shí)性要求的日益增長,計(jì)算機(jī)內(nèi)部和外部的總線對于數(shù)據(jù)傳輸?shù)乃俾侍岢隽烁叩囊螅虼烁咝阅堋⒏邤U(kuò)展性、更良好的升級性以及造價(jià)更為低廉的 PCI Express始一出現(xiàn)便得到廣泛的應(yīng)用。PCI Express以串行差分的方式在設(shè)備之間進(jìn)行數(shù)據(jù)的交互,實(shí)現(xiàn)超高速通信,但是通信速率的提升引起傳輸過程中的信號質(zhì)量的惡化。為了解決在高速數(shù)據(jù)傳輸過程中的數(shù)據(jù)失真等問題,通常將數(shù)據(jù)編碼為具有強(qiáng)糾錯(cuò)能力,適合于進(jìn)行高速傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)之后再進(jìn)行傳輸[1-4]。8b/10b編碼以其高效性是目前告訴數(shù)據(jù)傳輸接口或者總線的常用編碼方式,PCI Express亦采用此種編碼機(jī)制。
8b/10b編碼具有很好的直流平衡的特點(diǎn),即在傳輸過程中的“1”和“0”的個(gè)數(shù)趨于相等,如圖1所示。通過將8bits的數(shù)據(jù)映射為10bits的符號,保證了足夠的“1”和“0”之間的跳變,轉(zhuǎn)換的密度較高會避免在高速傳輸中連續(xù)的邏輯1或邏輯0有多個(gè)位沒有跳變時(shí),信號的轉(zhuǎn)換由于電壓位階的關(guān)系而造成信號錯(cuò)誤。且足夠的“1”和“0”之間的跳變,方便將時(shí)鐘信號嵌入到數(shù)據(jù)流中,避免傳輸高速時(shí)鐘信號引起的電氣噪聲,時(shí)鐘信號的嵌入也使得對端設(shè)備在進(jìn)行時(shí)鐘恢復(fù)的時(shí)候簡單易實(shí)現(xiàn)。另外,8b/10b編碼機(jī)制抗干擾性較強(qiáng),且具有一定的檢錯(cuò)能力[5-7]。
8b/10b編碼針對數(shù)據(jù)字符和控制字符有著不同的編碼規(guī)則。控制字符編碼相對簡單,直接使用查找表即可完成。PCIE協(xié)議中共定義了12種控制字符,其編碼為固定編碼。通過對協(xié)議中控制字符的編碼進(jìn)行分析,設(shè)計(jì)中為了減小一級選擇器的輸入數(shù)目以降低大扇入引入的延遲,將首先根據(jù)輸入字符的高3位和低5位進(jìn)行區(qū)分,分別以輸入數(shù)目較小的選擇器完成。

圖1 8b/10b 編碼與普通編碼的直流特性Fig.1 The characteristics of 8b / 10b encoding compared with the common encoding
1.1 概述
在PCI Express中,8b/10b編碼模塊處于物理層發(fā)送端的PCS層中,當(dāng)處于多通道的模式時(shí),每個(gè)通道的8b/10b編碼器獨(dú)立工作,位置圖如圖2所示。

圖2 8b/10b 編碼器在物理層中的位置Fig.2 The position of the 8b/10b encoder in the physical layer
1.2 編碼原理
該編碼技術(shù)的基本精神很簡單,即將8bits字符經(jīng)過映射機(jī)制轉(zhuǎn)化為10bits的符號。8b/10b編碼可分為3b/4b編碼和5b/6b編碼兩部分,將8b碼組分為 3bits(HGF)和 5bits(EDCBA)兩部分,分別通過 3b/4b和 5b/6b編碼得到相應(yīng)的 4bits和 6bits碼組,編碼過程中設(shè)置運(yùn)行不一致(RD)對編碼進(jìn)行控制選擇,如圖3所示。

圖3 8b/10b 編碼映射圖Fig.3 8b/10b encoding mapping Diagram
PCIE協(xié)議中的數(shù)據(jù)字符分為數(shù)據(jù)字符和控制字符,數(shù)據(jù)可以統(tǒng)一的表示為Dx.y和Kx.y,其中D表示為數(shù)據(jù)字符,K表示為特殊的控制字符,x表示輸入的原始數(shù)據(jù)的低5位EDCBA,y表示輸入的原始數(shù)據(jù)的高3位HGF。在PCI Express協(xié)議規(guī)范中,共定義了12個(gè)特殊的控制字符(K碼),這些特殊字符用于鏈路訓(xùn)練過程中的幀同步和連接管理機(jī)制,同時(shí)也用于輔助進(jìn)行DLLP及TLP包的識別和保證在多通道傳輸時(shí)DLLP和TLP包的標(biāo)識字符的位置符合特定的規(guī)則。
1.3 編碼內(nèi)在相關(guān)性分析
通過分析8b/10b編碼的內(nèi)在相關(guān)性,對于3b/4b編碼模塊有以下的結(jié)論,表1為3b/4b的編碼表:

表1 3b/4b 編碼表Table 1 3b/4b encoding
① 3bits碼組000,011,100編碼之后得到的4bits碼組具有相互取反的兩組編碼,且編碼之后的4bits碼組具有的不一致屬性與當(dāng)前運(yùn)行不一致具有取反或者相同的特點(diǎn)。
② 3bits碼組001,010,101,110編碼之后得到的4bits碼組具有唯一的一組編碼。
③ 3bits碼組 111較為特殊,編碼之后會得到兩組相互取反的 4bits碼組,分析整個(gè) 8b/10b編碼表可以發(fā)現(xiàn),4bits碼組的選擇與特定的幾組 5bits碼組相關(guān)。
3b碼字111最為特殊,根據(jù)輸入數(shù)據(jù)中的低5位的不同,具有兩組相反的4b編碼,而正 常情況下出現(xiàn)的4b編碼為0001和1110。總結(jié)可知,部分3b碼字對應(yīng)的4b碼字根據(jù)RD屬性值的 不同,具有相互取反的兩種4b編碼,對應(yīng)的3b碼字為000、011、100、11l;部分 3b碼字對應(yīng)的 4b碼字根據(jù)RD屬性的不同具有相同的4b編碼,對應(yīng)的3b碼字為 001、010、101、110。在 3b/4b 編碼修正中,將根據(jù)上述規(guī)則對預(yù)編碼的結(jié)果進(jìn)行修正。
對于 5b/6b編碼模塊,分析可知編碼之后得到的 6b碼組,根據(jù)當(dāng)前不一致屬性的不同,共有 18中單值的碼組,14組雙值的碼組。5b/6b編碼結(jié)果中,根據(jù)RD屬性值的不同,共有18中單值編碼結(jié)果,14種雙值編碼結(jié)果。在預(yù)編碼的結(jié)果中,設(shè)置最高位指示預(yù)編碼的結(jié)果是否為雙值編碼結(jié)果。若最高位為1,則表示編碼結(jié)果具有雙值屬性,若CRD值同時(shí)為負(fù),則修正結(jié)果為預(yù)編碼結(jié)果取反;否則修正結(jié)果與預(yù)編碼結(jié)果保持一致。
1.4 編碼方案分析
依據(jù) 8b/10b的內(nèi)在相關(guān)性,目前實(shí)現(xiàn) 8b/10b編碼有兩種方案[8-10]:
① 邏輯表達(dá)式法:此種方案是依據(jù)編碼表具有的相關(guān)性,分析得出 10bits碼組每一位與輸入的8bits碼組每一位的邏輯關(guān)系,以邏輯表達(dá)式的形式直接通過8bits輸入計(jì)算得出10bits碼組的輸出。此種方案電路復(fù)雜,難度較大,且由于延時(shí)、競爭、冒險(xiǎn)的存在,數(shù)據(jù)輸出的抖動較為嚴(yán)重,嚴(yán)重的限制了芯片的最高工作頻率。
② 查找表法:即直接通過輸入的8b碼組查尋得到10b碼組,共需要256組數(shù)據(jù)的碼組和12組控制字符的編碼。此種方案實(shí)現(xiàn)簡單,但是消耗的資源較大,且會受到系統(tǒng)內(nèi)部存儲器的讀出時(shí)間的限制,增加芯片的面積和功耗。
通過分析現(xiàn)有的實(shí)現(xiàn)方案,并進(jìn)一步研究8b/10b具有的內(nèi)在聯(lián)系,本文提出以下的方案[11-13]。本方案共有4部分組成,3b/4b模塊、5b/6b模塊、不一致屬性控制和輸出模塊,整體框架如圖 4所示。

圖4 設(shè)計(jì)框圖Fig.4 The structure diagram
其中 3b/4b模塊由于輸入較為簡單,本文采用邏輯表達(dá)式的方法來實(shí)現(xiàn),根據(jù)RD+列的碼組計(jì)算得到表達(dá)式。通過對3b/4b編碼表進(jìn)行卡諾圖化簡,得出如下的邏輯表達(dá)式:

5b/6b模塊依據(jù)查找表的 RD+列實(shí)現(xiàn),由于在得到6bits碼組的輸出時(shí),依據(jù)RD屬性的不同會出現(xiàn)相同或者取反的兩組編碼,因此在實(shí)現(xiàn)查找表時(shí),將6bits輸出碼組添加一位狀態(tài)比特,以輔助輸出模塊得到正確的輸出。
在分別得到RD+列的6b碼組和4b碼組之后,不一致屬性控制模塊會根據(jù)當(dāng)前 RD值的值來選取6b碼組與之匹配的碼組,不一致屬性控制模塊根據(jù)得到的6b碼組計(jì)算6b碼組的不一致屬性。在選取正確的6b碼組的時(shí)候,根據(jù)RD屬性的不同,需要對查表得到的6b碼字進(jìn)行取反或者保持原值。重新計(jì)算 6b碼字之后的不一致屬性將作為當(dāng)前不一致進(jìn)行對4b碼組選擇控制信號,在查詢4b碼字的時(shí)候,要針對幾組特殊的碼字進(jìn)行單獨(dú)控制,具體控制的原則在上述分析 3b/4b編碼分析中有提到,需要進(jìn)行特殊處理的是,當(dāng)3bits碼組為111時(shí),4bits碼組 1000和 0111分別只會出現(xiàn)在 5bits碼組為01011,01101,01110的RD+列和10001,10010,10100的RD-列,對于其他的5bits碼組則根據(jù)上述表達(dá)式進(jìn)行通用性的編碼。之后不一致屬性模塊依據(jù)得到的4bits碼組計(jì)算4bits碼組的不一致屬性,并作為當(dāng)前運(yùn)行不一致進(jìn)行對下一次編碼的控制。
由于本設(shè)計(jì)分成幾個(gè)不同的模塊,且包含組合邏輯與時(shí)序邏輯,因此需要對時(shí)序進(jìn)行一些調(diào)整控制,以保證設(shè)計(jì)中子模塊的同步。首先,由于3b/4b模塊使用邏輯表達(dá)式,屬于純組合邏輯,而 5b/6b模塊采用查找表的方式,采用了時(shí)序邏輯,因此為保證4bits和6bits碼組產(chǎn)生的同步性,需要將計(jì)算得到的 4bits碼組通過一級緩存,緩存之后的 4bits碼組與6bits碼組作為輸出模塊的輸入。輸出模塊采用純組合邏輯,且由于輸出模塊的輸出涉及到 RD的反饋,因此在輸出之前要做一級緩存,緩存之后得到最終編碼完成的10bits碼組以及將作為下一次編碼過程RD的RD屬性值。
本文在分析了現(xiàn)有8b/10b編碼方案的基礎(chǔ)上,結(jié)合8b/10b編碼規(guī)則和3b/4b、5b/6b的內(nèi)在相關(guān)性,提出設(shè)計(jì)8b/10b編碼器的一種方案。在功能驗(yàn)證和測試時(shí),我們使用Synopsys公司的VCS軟件進(jìn)行仿真,該軟件許可在PC、Linux平臺上使用,支持Verilog硬件描述語言(HDL)仿真。
在測試時(shí),更換不同的testcase(測試用例)對該模塊的輸入接口添加不同的激勵,觀察其狀態(tài)跳轉(zhuǎn)和輸出信號。仿真結(jié)果圖如圖5所示:
通過仿真調(diào)試,本文的設(shè)計(jì)方案可以正確的完成8b/10b的編碼功能,得出正確的輸出碼組,并符合時(shí)序上的要求。

圖5 仿真結(jié)果圖Fig.5 Simulation chart
[1] 范宇. 基于RS 碼的網(wǎng)絡(luò)編碼層設(shè)計(jì)[J]. 軟件, 2013, 34(5):92-95.
[2] 羅星星, 蒲保興, 趙穎, 等. 隨機(jī)網(wǎng)絡(luò)編碼數(shù)據(jù)傳輸?shù)姆抡鎸?shí)現(xiàn)[J]. 軟件, 2014, 35(8): 32-37.
[3] 李浩, 戴志濤. 基于異構(gòu)多核的H.264 編碼器研究與實(shí)現(xiàn)[J]. 軟件, 2015, 36(1): 110-115.
[4] 陳鑫, 陳曉, 蔡婷婷. 基于SPIHT算法的ROI編碼研究[J].軟件, 2015, 36(2): 112-117.
[5] 趙冬艷. PCIe高速串行總線技術(shù)應(yīng)用研究[J]. 戰(zhàn)術(shù)導(dǎo)彈控制技術(shù), 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接口實(shí)現(xiàn)[J]. 微處理機(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編碼器的設(shè)計(jì)[J]. 軟件,2017,38(11):208-211
鄭凱(1989-),男,工作于淮陰師范學(xué)院,主要研究方向:集成電路、電路設(shè)計(jì)。