王可揚(yáng),吉兵,屈凌翔
(中國電子科技集團(tuán)公司第五十八研究所,江蘇 無錫 214072)
PCI-Express(Peripheral Component Interconnect Express,PCIe)作為第三代高性能通用I/O 總線技術(shù),可以視作是PCI 總線的改進(jìn)版本。它不單繼承了PCI 的一些良好特性,實(shí)現(xiàn)了PCI 總線協(xié)議全部軟件的向下兼容[1-2],同時(shí),在總線結(jié)構(gòu)上進(jìn)行了革命性的改變:一是從并行式變?yōu)榱舜惺?,二是采用了點(diǎn)對點(diǎn)的互連技術(shù)[3]。此外,PCIe也支持如熱插拔、功耗管理、質(zhì)量服務(wù)等高級特性[4]。
目前PCIe5.0 可支持最快32 GT/s 的傳輸速率,同時(shí),不僅支持單通道數(shù)據(jù)傳輸,也可以支持2 路、4 路、甚至32 路的多通道數(shù)據(jù)傳輸。然而,在PCIe 進(jìn)行多通道數(shù)據(jù)傳輸時(shí),即使使用同樣的時(shí)鐘源從發(fā)送端進(jìn)行數(shù)據(jù)發(fā)送,如果不在接收端進(jìn)行處理,仍然無法保證所有通道的數(shù)據(jù)能夠同時(shí)抵達(dá)接收端[5]。因此各個(gè)通道間就會存在時(shí)差,這是因?yàn)閷?shí)際電路中存在數(shù)據(jù)的傳輸延時(shí)。導(dǎo)致延時(shí)的因素有:(1)各通道信號線的長度不同;(2)線路板在印刷時(shí)的阻抗存在差別;(3)由于數(shù)據(jù)的串化和解串引入延遲;(4)外部因素例如溫度的影響等[6-7]。
因?yàn)楦魍ǖ赖难訒r(shí)來源不盡相同,必然會使得各通道上的延時(shí)也有所區(qū)別。這也給消除多通道數(shù)據(jù)傳輸?shù)难訒r(shí)誤差帶來了更大的設(shè)計(jì)壓力。圖1 所示為以四通道為例的情況。
如圖1 所示,接收端在接收到各通道傳送來的數(shù)據(jù)后需要經(jīng)過反數(shù)據(jù)剝解邏輯,即由數(shù)據(jù)發(fā)送時(shí)的剝解順序來進(jìn)行數(shù)據(jù)合并。如果各通道上的數(shù)據(jù)在同一時(shí)間點(diǎn)并未對齊,那么接收端就無法正確地進(jìn)行數(shù)據(jù)合并,從而產(chǎn)生順序混亂的數(shù)據(jù)包并發(fā)送到數(shù)據(jù)鏈路層。這是不被允許的,所以接收端必須對各通道間的相位偏移進(jìn)行消除,以保證多通道數(shù)據(jù)能夠在同一時(shí)間點(diǎn)到達(dá)接收端進(jìn)行后續(xù)處理。該過程被稱為鏈路的多通道糾偏(Laneto-Lane De-skew),圖2 所示為四通道的De-skew 過程。
圖1 數(shù)據(jù)傳輸中產(chǎn)生的skew 現(xiàn)象
圖2 接收端的De-skew 處理
本文提出了一種De-skew 邏輯電路設(shè)計(jì),能夠在不預(yù)先知曉哪路數(shù)據(jù)先到達(dá)的情況下消除各通道間的偏移現(xiàn)象,同時(shí)滿足通道間skew 最大值的約束要求。該邏輯方案也可以應(yīng)用于PCIe 以外的其他任何電路中多通道間相位偏移的處理。
PCIe 協(xié)議規(guī)范中對多通道De-skew 做了一些規(guī)則要求,但并未規(guī)定實(shí)現(xiàn)De-skew 的具體方法。目前主要的實(shí)現(xiàn)方法是借助TS1/TS2 以及FTS 等有序集。因?yàn)檫@些有序集具有特定的結(jié)構(gòu)和長度,且在所有通道上遵循同時(shí)發(fā)送的規(guī)則,因此可以用來作為衡量各通道間偏移量的標(biāo)志。在PCIe 協(xié)議規(guī)范中,針對第一代/第二代(Generation one/Generation two,Gen1/Gen2)和第三代/第四代(Generation three/Generation four,Gen3/Gen4)所要實(shí)現(xiàn)的De-skew,建議利用不同的有序集,具體如下[8]:
(1)Gen1/Gen2 中建議使用以下一個(gè)或多個(gè)作為衡量標(biāo)志:TS1/TS2 有序集的COM 字符(有序集的頭字節(jié))、EIEOS 有序集的COM 字符、在FTS 序列后緊接著的第一個(gè)SKP 有序集的COM 字符、不使用SRIS 時(shí)在訓(xùn)練序列中的SKP 有序集的COM 字符。
(2)Gen3/Gen4 中建議使用以下一個(gè)或多個(gè)作為衡量標(biāo)志:SDS 有序集、退出L0s 狀態(tài)時(shí)的EIEOS 有序集、Gen3 時(shí)的SKP 有序集、Gen4 時(shí)的FTS 序列后緊跟的第一個(gè)SKP 有序集。
目前,國內(nèi)外常見的De-skew 電路設(shè)計(jì)思路多是利用計(jì)數(shù)器和多個(gè)寄存器進(jìn)行設(shè)計(jì)實(shí)現(xiàn)。該方法使用多個(gè)寄存器進(jìn)行數(shù)據(jù)的緩存移位,每兩個(gè)寄存器間加一個(gè)選擇器用來控制數(shù)據(jù)是否進(jìn)入寄存器進(jìn)行緩存。同時(shí),在每條通道上添加一個(gè)計(jì)數(shù)器,當(dāng)每一路的數(shù)據(jù)到達(dá)第一個(gè)寄存器時(shí)就開始計(jì)數(shù)[9]。計(jì)數(shù)器可以用來觀察各條通道上的數(shù)據(jù)何時(shí)到達(dá),也可以觀察各通道數(shù)據(jù)分別經(jīng)過了多少個(gè)寄存器。更重要的是,通過各通道計(jì)數(shù)器的數(shù)值做差可以算出各通道間的skew 大小并判斷其是否超過所允許的最大值。但該方法實(shí)現(xiàn)需要的寄存器數(shù)量較多,尤其在Gen3/Gen4 速率下,由于每秒內(nèi)傳輸數(shù)據(jù)量的加大,代碼實(shí)現(xiàn)會更為冗長復(fù)雜。即使速率不變,隨著設(shè)計(jì)頻率以及數(shù)據(jù)位寬的改變,寄存器數(shù)量也會發(fā)生改變,因而整個(gè)De-skew 代碼的實(shí)現(xiàn)需要進(jìn)行大量變動。針對上述問題,本文提出了一種新穎的邏輯設(shè)計(jì),可有效降低邏輯設(shè)計(jì)的復(fù)雜度,同時(shí)擁有很強(qiáng)的代碼復(fù)用性。
針對如何消除多通道的skew 問題,本文提出了一種利用同步FIFO 實(shí)現(xiàn)De-skew 的邏輯電路。
以Gen3 速率下的八通道傳輸情況為例,結(jié)構(gòu)如圖3所示。在每條通道后接入一個(gè)同步FIFO(FIFO 結(jié)構(gòu)如圖4所示),F(xiàn)IFO 作為一種先進(jìn)先出的數(shù)據(jù)寄存器,保證了數(shù)據(jù)流按順序?qū)懭肭野错樞蜃x出。在此基礎(chǔ)上,本文所提出的FIFO 結(jié)構(gòu)還能夠準(zhǔn)確地對FIFO 的空/滿狀態(tài)進(jìn)行判斷,以保證數(shù)據(jù)正確地寫入或者讀出。具體實(shí)現(xiàn)方式為:采用EIEOS 有序集作為Gen3 條件下的De-skew 衡量標(biāo)志,當(dāng)某條通道上檢測到EIEOS 的有序集時(shí),該通道的FIFO 便會將push 信號拉高,此時(shí)通道上的數(shù)據(jù)塊將會被寫入到FIFO 中進(jìn)行暫時(shí)的緩存。當(dāng)所有通道上FIFO 的push 信號均被拉高時(shí),即所有通道均檢測到EIEOS 有序集且每條通道上的數(shù)據(jù)塊均已寫入各個(gè)FIFO中后,將所有通道上FIFO 的pop 信號同時(shí)進(jìn)行拉高。這樣,所有通道將同時(shí)輸出EIEOS 有序集以及之后的所有數(shù)據(jù)塊,從而實(shí)現(xiàn)了各條通道數(shù)據(jù)的對齊校正功能,完成了通道的De-skew。
圖3 利用FIFO 的De-skew 邏輯電路
圖4 FIFO 結(jié)構(gòu)圖
值得注意的是,該邏輯電路所使用的FIFO 支持位寬和深度的自由配置。通過對這兩個(gè)參數(shù)的配置,進(jìn)而滿足各種不同數(shù)據(jù)傳輸速率下的De-skew 需求。在本設(shè)計(jì)中,設(shè)備工作在Gen3 條件下,每條通道的數(shù)據(jù)位寬為32 bit,時(shí)鐘頻率為250 MHz,規(guī)定各條通道間的skew 最大值為32 ns。因此FIFO 的位寬設(shè)置為32 bit,并合理設(shè)置FIFO 的深度(Deepth)使之能夠滿足最大skew 值的要求。由于此時(shí)傳輸?shù)臄?shù)據(jù)流中每個(gè)symbol(字符,長度為8 bit)對應(yīng)的傳輸時(shí)間為1 ns,則各條通道間的skew 最大為32 個(gè)symbol 的位置。此時(shí)FIFO 的位寬為32 bit,即4 個(gè)symbol 的大小。將FIFO 的深度設(shè)置為8,這樣FIFO中能夠緩存的數(shù)據(jù)最多為32 個(gè)symbol,從而確保了最大skew 值的要求。假設(shè)lane0 的數(shù)據(jù)流最先到達(dá)接收端并被push 進(jìn)其對應(yīng)的FIFO 中。而lane7 的數(shù)據(jù)流則比lane0 要晚到36 ns,即36 個(gè)symbol 的位置。這樣當(dāng)lane7的數(shù)據(jù)流到達(dá)接收端并被push 進(jìn)其對應(yīng)的FIFO時(shí),lane0 上的FIFO 已經(jīng)被填滿。而此時(shí)因?yàn)? 條通道的push 并未全部完成,各FIFO 的pop 信號不會被拉高,lane0 會同lane7 一起往各自FIFO 中送入數(shù)據(jù),這會造成lane0 的FIFO 的數(shù)據(jù)溢出,產(chǎn)生錯(cuò)誤,進(jìn)而產(chǎn)生De-skew錯(cuò)誤信號。De-skew 錯(cuò)誤信號會通知發(fā)送端重新進(jìn)行數(shù)據(jù)發(fā)送,直到通道間skew 不超過最大規(guī)定值,或者超時(shí)傳輸終止。
針對前文所述的傳輸情況:時(shí)鐘頻率為500 MHz、數(shù)據(jù)位寬為8 bit、最大skew 值為20 ns 的Gen2 速率,只要將FIFO 配置為位寬為8 bit,深度為10,同時(shí)將EIEOS有序集的檢測改為對COM 字符的檢測,便能夠輕松實(shí)現(xiàn)該情況下的De-skew 設(shè)計(jì)。因此,本文提出的邏輯電路結(jié)構(gòu)不僅具有全面性和可實(shí)現(xiàn)性,還具有很好的代碼復(fù)用性。
本文采用Synopsys 公司的PCIe VIP 以及AMBA AXI VIP 搭建了驗(yàn)證平臺。VIP 作為驗(yàn)證知識產(chǎn)權(quán)模塊,它是一種預(yù)先驗(yàn)證過的內(nèi)建驗(yàn)證結(jié)構(gòu),能夠提供完整且靈活的應(yīng)用機(jī)制。通常,VIP 是基于標(biāo)準(zhǔn)協(xié)議的,可以很方便地將其插入到基于仿真的確認(rèn)測試中,從而顯著提高驗(yàn)證的可復(fù)用性及驗(yàn)證效率。PCIe 控制器可以作為RC(根聯(lián)合體)或者EP(終點(diǎn)設(shè)備),將PCIe VIP 作為RC,而將待測設(shè)計(jì)作為EP 進(jìn)行驗(yàn)證。
基于所搭建的驗(yàn)證平臺,本文采用Synopsys 公司的仿真工具以及Novas 公司的Verdi 工具進(jìn)行了仿真聯(lián)調(diào)。圖5 為對邏輯電路進(jìn)行驗(yàn)證仿真的波形。此時(shí)的輸入數(shù)據(jù)為連續(xù)4 個(gè)64′hffff_0000,即為Gen3 條件下的EIEOS 有序集。從圖3 中可以看到,輸入8 條通道的數(shù)據(jù)中,EIEOS 有序集并未對齊,而經(jīng)過該De-skew 邏輯電路后最終的輸出數(shù)據(jù)——8 條通道的EIEOS 有序集完成了對齊。仿真結(jié)果驗(yàn)證了該De-skew 邏輯電路功能的正確性和可行性。
圖5 De-skew 功能仿真圖
表1 所示為本文De-skew 邏輯設(shè)計(jì)方案同現(xiàn)有常用方案的對比,可以看到,雖然利用計(jì)數(shù)器和多個(gè)寄存器進(jìn)行數(shù)據(jù)緩存的方案也能正確實(shí)現(xiàn)De-skew 功能,并對通道間skew 是否超過最大規(guī)定值進(jìn)行判斷,但本文提出的方案更為簡便,代碼量更少,通過配置FIFO 的位寬和深度也能適用于Gen3/Gen4 等更高的速率情況,具有全面性、優(yōu)越性和可復(fù)用性。
表1 De-skew 邏輯電路方案對比
由于PCIe 多通道間的延遲差異,必然會導(dǎo)致數(shù)據(jù)傳輸中的skew 現(xiàn)象。本文提出了一種邏輯電路,在通道數(shù)據(jù)到達(dá)接收端的先后順序未知的情況下,實(shí)現(xiàn)De-skew功能,同時(shí)滿足PCIe 規(guī)定的最大skew 值需求。最后搭建測試平臺并通過仿真驗(yàn)證了該邏輯設(shè)計(jì)方案。結(jié)果表明,本文所提出的邏輯設(shè)計(jì)有效實(shí)現(xiàn)了PCIe 多通道的De-skew 功能,同時(shí),該邏輯電路具有普適性,能夠適用于PCIe 的各種速率、位寬、時(shí)鐘頻率等搭配情況,可應(yīng)用于其他高速電路的多通道傳輸。本設(shè)計(jì)為消除通道間的skew 問題提供了良好的借鑒意義。