鄭 乾,晏 敏,趙建中,李 優(yōu),張 鋒
(1.湖南大學(xué)物理與微電子科學(xué)學(xué)院,長沙410082;
2.中國科學(xué)院微電子研究所專用集成電路與系統(tǒng)研究室,北京100020)
基于PCIE2.0的物理層彈性緩沖器設(shè)計(jì)
鄭 乾1,2,晏 敏1,趙建中2,李 優(yōu)2,張 鋒2
(1.湖南大學(xué)物理與微電子科學(xué)學(xué)院,長沙410082;
2.中國科學(xué)院微電子研究所專用集成電路與系統(tǒng)研究室,北京100020)
彈性緩沖器是PCIE,USB等高速串行總線物理層接收器的重要組成部分,用于物理層接收器中恢復(fù)時(shí)鐘與本地時(shí)鐘的頻率補(bǔ)償和相位同步,對信號的傳輸質(zhì)量起著重要作用?;赑CIE2.0協(xié)議,采用存儲(chǔ)器常半滿的實(shí)現(xiàn)方式,設(shè)計(jì)一款深度、寬度均為10的彈性緩沖器。該彈性緩沖器應(yīng)用于PCIE2.0的物理層設(shè)計(jì)中,并采用SMIC 55 nm CMOS工藝實(shí)現(xiàn)。芯片測試結(jié)果表明,該彈性緩沖器滿足PCIE2.0協(xié)議的要求,可正常工作于500 MHz的時(shí)鐘頻率下,實(shí)現(xiàn)恢復(fù)時(shí)鐘與本地時(shí)鐘的頻率和相位補(bǔ)償,保證了接收器正常接收數(shù)據(jù)。
彈性緩沖器;頻率補(bǔ)償;SKP指令集;半滿方式;異步FIFO
PCI Express(PCIE)是第三代高性能 I/O總線,主要用于計(jì)算機(jī)與通信平臺(tái)等應(yīng)用的外圍I/O互連[1]。PCIE總線采用串行高速差分總線替代傳統(tǒng)的并行總線,并采用端到端的連接方式,能夠獲得更高的系統(tǒng)吞吐量,正在逐漸全面取代PCI和AGP總線,成為新的局部總線工業(yè)標(biāo)準(zhǔn)[2]。采用PCIE總線進(jìn)行通信時(shí),發(fā)送器采用差分對的方式發(fā)送串行差分信號,接收器則采用時(shí)鐘和數(shù)據(jù)恢復(fù)電路從接收到的串行差分信號中恢復(fù)出時(shí)鐘和發(fā)送器傳送過來的串行數(shù)據(jù)[3]。由于發(fā)送器與接收器均有自己的獨(dú)立時(shí)鐘源,兩者的時(shí)鐘頻率及相位可能存在一定的偏差,即接收端恢復(fù)出來的時(shí)鐘與本地的參考時(shí)鐘可能存在一定偏差。當(dāng)數(shù)據(jù)從恢復(fù)時(shí)鐘域傳至本地時(shí)鐘域時(shí),需要進(jìn)行跨時(shí)鐘域處理,保證信號傳輸?shù)钠焚|(zhì)。PCIE總線采用彈性緩沖器進(jìn)行頻率補(bǔ)償和相位同步[4],保證數(shù)據(jù)正常傳輸。針對PCIE總線的實(shí)際工程應(yīng)用,本文采用半滿方式設(shè)計(jì)了一款彈性緩沖器。
彈性緩沖器的作用在于橋接2個(gè)存在一定偏差的時(shí)鐘域以補(bǔ)償頻率和同步相位[5],即采用一個(gè)時(shí)鐘域(恢復(fù)時(shí)鐘)存放數(shù)據(jù)進(jìn)入緩沖器,采用另一個(gè)時(shí)鐘域(本地時(shí)鐘)從緩沖器中移出數(shù)據(jù),同時(shí)監(jiān)測自身的狀態(tài)并且在適當(dāng)?shù)臅r(shí)候插入或移除特定字符來補(bǔ)償頻率偏差,避免溢出錯(cuò)誤,如圖1所示。
圖1 橋接2個(gè)不同時(shí)鐘域的彈性緩沖器
2.1 時(shí)鐘頻率補(bǔ)償
PCIE2.0協(xié)議規(guī)定總線的最高傳輸速率為5 Gb/s,容許的誤差范圍是+/-300 ppm,即總線允許的頻率范圍為4.998 5 GHz~5.001 5 GHz[6]。由于參考時(shí)鐘源不同,發(fā)送器與接收器的時(shí)鐘頻率可能出現(xiàn)微小偏差。如果用單元間距 UI來計(jì)算的話, 5 Gb/s的一個(gè)時(shí)鐘單元間距為 200 ps,由于有+/-300 ppm的余裕,因此最壞情況下時(shí)鐘單元間距分別為199.94 ps和200.06 ps,即兩端最大時(shí)鐘間距偏差為0.12 ps。因而約每隔1 666個(gè)周期,可能位移一個(gè)時(shí)鐘單元間距[1]。既然時(shí)鐘有差異,那么勢必要對數(shù)據(jù)進(jìn)行緩存處理,才能避免錯(cuò)誤的發(fā)生。在PCI Express總線中,通常在傳送的SKP指令集中插入或移除SKP字符來補(bǔ)償這種時(shí)鐘頻率偏差。
2.2 SKP指令集
PCIE總線協(xié)議規(guī)范了SKP指令集,該指令集由1個(gè)COM字符加3個(gè)SKP字符組成,如圖2所示。發(fā)送端將在一定字符間隔間發(fā)送SKP指令集[6]。因?yàn)樵谧畈钋闆r下,2個(gè)時(shí)鐘域之間大概每經(jīng)過1 666個(gè)周期位移一個(gè)時(shí)鐘單元間距,所以SKP指令集的傳輸間隔必須小于1 666個(gè)時(shí)鐘周期。根據(jù)PCI Express總線協(xié)議規(guī)范,發(fā)送端在1 180個(gè)~1 538個(gè)字符時(shí)間間隔(不是位時(shí)間)輸出SKP指令集,而彈性緩沖器在接收到SKP指令集時(shí),最多可插入或移除2個(gè)SKP符號以補(bǔ)償兩端的時(shí)鐘頻率偏差。之所以不是位時(shí)間,是因?yàn)镾KP符號的插入和移除每次都是整個(gè)字符在處理[7]。插入和移除的位置通常位于第一個(gè)SKP字符之后,目的是保證極性的正確性以避免8b/10b解碼過程發(fā)生極性錯(cuò)誤。
圖2 SKP指令集
2.3 彈性緩沖器作用域
典型用于PCIE等高速接口的彈性緩沖器架構(gòu)如圖3所示。彈性緩沖器位于解串器之后,8b/10b解碼器之前。因?yàn)閺椥跃彌_器是以符號的層次來補(bǔ)償頻率偏差,所以必須位于解串器之后。另外,PCIE總線協(xié)議規(guī)范了一種環(huán)回模式[7],即PCI Express設(shè)備可以將接收到的10位數(shù)據(jù)原封不動(dòng)地通過發(fā)送端傳送回去,數(shù)據(jù)必須通過彈性緩沖器進(jìn)行同步,所以必須位于8b/10b解碼器之前。
圖3 高速接口彈性緩沖器典型架構(gòu)
2.4 彈性緩沖器容量
SKP指令集通常依據(jù)規(guī)定的時(shí)間間隔周期性送出,但當(dāng)TLP數(shù)據(jù)交易層封包很大的時(shí)候,必須等到整TLP封包發(fā)送完之后,才將累積的待傳送SKP指令集發(fā)送出去[5]。所以,需要考慮彈性緩沖器的深度以保證最大TLP數(shù)據(jù)傳送時(shí),也能正常補(bǔ)償時(shí)鐘偏差而不出現(xiàn)溢出狀態(tài)。
彈性緩沖器的大小通常取決于3個(gè)因素,分別是:傳送SKP指令集的時(shí)間間隔,設(shè)備支持的最大數(shù)據(jù)承載量(payload)及鏈路寬度[5]。SKP指令集字符間隔則明文指出為1 180個(gè)~1 538個(gè)字符,即最大間隔為1 538個(gè)字符。彈性緩沖器最大數(shù)據(jù)位移量的計(jì)算公式如下:
PCIE總線允許的最大數(shù)據(jù)承載量是4 096個(gè)字符,TLP基本數(shù)據(jù)量則包括數(shù)據(jù)框開始符號(1個(gè)字符)、封包次序符號(2個(gè)字符)、封包標(biāo)頭(16個(gè)字符)、ECRC(4個(gè)字符)、LCRC(4個(gè)字符)以及數(shù)據(jù)框的退出符號(1個(gè)字符)總共28個(gè)字符[7]。而SKP指令集字符間隔則明文指出為1 180個(gè) ~1 538個(gè)字符。
根據(jù)最大數(shù)據(jù)位移量計(jì)算公式可知,最壞情況即當(dāng)兩端PCI Express設(shè)備以x1的連接狀態(tài)存在時(shí),輸出端剛好必須輸出SKP指令集的時(shí)候,輸出最大數(shù)據(jù)承載量的封包。計(jì)算可得數(shù)據(jù)位移量為3.4個(gè)。
3.1 基本原理
彈性緩沖器實(shí)質(zhì)上是一個(gè)異步FIFO[8],其寫時(shí)鐘為恢復(fù)時(shí)鐘,其讀時(shí)鐘為本地時(shí)鐘,FIFO深度則取決于數(shù)據(jù)最大位移量。
若彈性緩沖器的讀寫時(shí)鐘頻率一致,彈性緩沖器正常傳送SKP指令集[9],如圖4所示。
圖4 正常的SKP指令集傳送示意圖
若寫時(shí)鐘頻率小于讀時(shí)鐘頻率時(shí),讀出的數(shù)據(jù)多于寫入的數(shù)據(jù),彈性緩沖器在檢測到SKP指令集輸出時(shí),根據(jù)實(shí)際的數(shù)據(jù)位移量在SKP指令集的第一個(gè)SKP字符之后插入1個(gè)或2個(gè)SKP字符[9],如圖5所示。
圖5 插入SKP字符的SKP指令集傳送示意圖
若寫時(shí)鐘頻率大于讀時(shí)鐘時(shí),寫入的數(shù)據(jù)多于讀出的數(shù)據(jù),彈性緩沖器在檢測到SKP指令集輸入時(shí),根據(jù)實(shí)際的數(shù)據(jù)位移量在SKP指令集的第一個(gè)SKP字符之后移除1個(gè)或2個(gè)SKP字符[9],如圖6所示。
圖6 移除SKP字符的SKP指令集傳送示意圖
3.2 實(shí)現(xiàn)方式
彈性緩沖器的實(shí)現(xiàn)方式通常有2種:常半滿方式和流程控制方式[5]。常半滿方式采用把緩沖器維持在半滿狀態(tài)的方式實(shí)現(xiàn),當(dāng)檢測到SKP指令集的時(shí)候,若彈性緩沖器不處于半滿狀態(tài),寫時(shí)鐘頻率小于讀時(shí)鐘頻率時(shí),保持讀地址指針不變,輸出插入的SKP字符,寫時(shí)鐘頻率大于讀時(shí)鐘頻率時(shí),則保持寫地址指針不變,將寫入的SKP字符移除[10]。流程控制方式則不同于常半滿方式,該方式不把緩沖器維持在半滿狀態(tài),而是只維持在一個(gè)底端進(jìn)入點(diǎn)的狀態(tài)[11],當(dāng)檢測到SKP指令集的時(shí)候,若寫時(shí)鐘頻率大于讀時(shí)鐘時(shí),其工作過程與常半滿方式是一致的,而寫時(shí)鐘頻率小于讀時(shí)鐘頻率時(shí),則產(chǎn)生相應(yīng)的使能信號,控制讀時(shí)鐘而不讓讀時(shí)鐘進(jìn)行讀操作。常半滿方式與流程控制方式均有各自的優(yōu)缺點(diǎn),常半滿方式實(shí)現(xiàn)的彈性緩沖器其緩沖器深度較深,等待時(shí)間較長,但其電路實(shí)現(xiàn)簡單,而且不用門控時(shí)鐘,有利于DFT的實(shí)現(xiàn)。流程控制方式則可降低緩沖器的深度,相應(yīng)等待時(shí)間較短,但需要添加額外的電路模塊去產(chǎn)生相應(yīng)的使能信號,較復(fù)雜,同時(shí)該使能信號必須控制后續(xù)解碼器等電路的時(shí)鐘,即會(huì)產(chǎn)生門控時(shí)鐘,不利于DFT的實(shí)現(xiàn)。本文基于常半滿方式實(shí)現(xiàn)彈性緩沖器。
根據(jù)彈性緩沖器容量計(jì)算知道,當(dāng)PCIE總線允許的最大數(shù)據(jù)承載量是4 096個(gè)字符時(shí),數(shù)據(jù)的位移量為3.4個(gè),故彈性緩沖器的深度應(yīng)該為8,以滿足4個(gè)字符的位移量??紤]到讀寫時(shí)鐘本身存在相位偏差,故實(shí)際設(shè)計(jì)彈性緩沖器的深度為10,以保證在最差情況下彈性緩沖器依然能正常工作。
本文的常半滿彈性緩沖器的基本結(jié)構(gòu)如圖7所示,包括讀寫地址指針模塊、讀寫地址指針同步模塊、數(shù)據(jù)位移量檢測模塊、SKP指令集檢測與增刪模塊和存儲(chǔ)器模塊。
圖7 彈性緩沖器基本結(jié)構(gòu)
4.1 讀寫地址指針
讀寫地址指針模塊用來控制存儲(chǔ)器的讀寫地址指針。因?yàn)閺椥跃彌_器的深度為10,需要4位來編碼10個(gè)地址??紤]到讀寫地址指針以逐一遞增的方式改變,故采用二進(jìn)制碼的編碼方式,即從0000~1111中選取10個(gè)地址??紤]地址指針比較需要在同一個(gè)時(shí)鐘域進(jìn)行,而且采用格雷碼實(shí)現(xiàn)時(shí)鐘域過渡,故選取的地址范圍為0011~1100,讀地址read_addr從0011開始,寫地址write_addr從1000開始,循環(huán)變化,插入或移除SKP字符時(shí)保持地址不變。
4.2 讀寫地址指針同步
讀寫地址指針分別在讀寫時(shí)鐘控制下遞增,由于讀寫時(shí)鐘存在一定范圍的頻率差或者相位差,直接進(jìn)行比較容易造成錯(cuò)誤判斷,因此需將讀寫地址指針分別同步到同一個(gè)時(shí)鐘域下。二進(jìn)制碼的編碼方式存在同時(shí)多位變化,為了避免毛刺的產(chǎn)生,需將二進(jìn)制碼轉(zhuǎn)換為格雷碼,同步到另一個(gè)時(shí)鐘域,再將格雷碼轉(zhuǎn)換成為二進(jìn)制碼[12]。
4.3 數(shù)據(jù)位移量檢測
數(shù)據(jù)位移量檢測模塊主要在于根據(jù)讀寫地址指針的差值來判斷實(shí)際緩沖器中的數(shù)據(jù)位移量。理論上讀寫地址指針的初始差值應(yīng)該為5。因?yàn)?個(gè)時(shí)鐘可能存在相位偏移,所以超前時(shí)鐘域?qū)?yīng)的讀寫地址指針的初始差值為6,滯后時(shí)鐘域?qū)?yīng)的讀寫地址指針的初始差值為5。彈性緩沖器開啟后,根據(jù)位移量的大小產(chǎn)生相應(yīng)的控制信號,對于寫時(shí)鐘域,當(dāng)位移量大于6時(shí)產(chǎn)生over信號,當(dāng)位移量大于7時(shí)產(chǎn)生over_more信號,當(dāng)位移量等于0時(shí),產(chǎn)生彈性緩沖器full信號。對于讀時(shí)鐘域,當(dāng)位移量小于4時(shí),產(chǎn)生under信號,當(dāng)位移量小于3時(shí),產(chǎn)生under_ more信號,當(dāng)位移量等于0時(shí),產(chǎn)生彈性緩沖器empty信號。
4.4 SKP指令集檢測與增刪
SKP指令集檢測與增刪模塊在于檢測數(shù)據(jù)流中的SKP指令集并根據(jù)數(shù)據(jù)位移量檢測模塊產(chǎn)生的控制信號進(jìn)行SKP字符插入或移除。由于COM字符為K28.5字符,SKP字符為K28.0字符,因此分別用k28p5_wr、k28p0_wr、k28p5_rd、k28p0_rd分別代表寫入COM字符,寫入SKP字符,讀出COM字符,讀出SKP字符。為了保證檢測到SKP指令集以及在第一個(gè)SKP字符之后插入或移除SKP字符,采用三級流水線對這6個(gè)信號進(jìn)行鎖存。同時(shí),根據(jù)數(shù)據(jù)位移量模塊的控制信號,產(chǎn)生remove_skp以及insert_skp信號控制SKP字符的移除以及插入。當(dāng)over_more信號有效時(shí),對寫入的SKP指令集移除2個(gè)SKP字符,當(dāng)over_more信號無效,over信號有效時(shí),對寫入的SKP指令集移除一個(gè)SKP字符。當(dāng)under_more信號有效時(shí),對輸出的SKP指令集插入2個(gè)SKP字符,當(dāng)under_ more信號無效,under信號有效時(shí),對輸出的SKP指令集插入一個(gè)SKP字符。
4.5 存儲(chǔ)器模塊
該彈性緩沖器存儲(chǔ)單元位寬為10 bit,深度為10,故沒有采用專門的存儲(chǔ)單元庫實(shí)現(xiàn),而是采用寄存器來實(shí)現(xiàn)。即寄存器實(shí)現(xiàn)的雙口RAM結(jié)構(gòu)。
本文的彈性緩沖器設(shè)計(jì)采用Verilog HDL硬件描述語言設(shè)計(jì),通過VCS做功能仿真驗(yàn)證。仿真結(jié)果如圖8~圖11所示。
圖8 移除單個(gè)SKP字符的仿真結(jié)果
圖9 插入單個(gè)SKP字符的仿真結(jié)果
圖10 累積移除3個(gè)SKP字符的仿真結(jié)果
圖11 累積插入3個(gè)SKP字符的仿真結(jié)果
本文彈性緩沖器采用SMIC 55 nm CMOS工藝在不同的工藝角下進(jìn)行綜合,讀、寫時(shí)鐘頻率均為500 MHz,并采用較為保守的時(shí)序約束,綜合所得電路的功耗和面積如圖12所示。其中,SS代表PVT:ss corner,1.08 V,125℃;TT代表 PVT:tt corner,1.2 V,25℃;FF代表PVT:ff corner,1.32 V, -40℃。
圖12 彈性緩沖器面積與動(dòng)態(tài)功耗綜合結(jié)果
本文設(shè)計(jì)一種彈性緩沖器,將該彈性緩沖器集成到PCIE2.0的物理層設(shè)計(jì)中,并采用SMIC 55 nm CMOS工藝進(jìn)行流片,測試結(jié)果表明,該彈性緩沖器完全滿足PCIE2.0協(xié)議的具體要求,讀寫時(shí)鐘達(dá)到500 MHz,實(shí)現(xiàn)了頻率補(bǔ)償和相位同步,且數(shù)據(jù)能夠正常傳送。
[1] Budruk R,Anderson D,Shanley T.PCI Express System Architecture[M].[S.l.]:MindShare,Inc.,2003.
[2] 王 齊.PCI Express體系結(jié)構(gòu)導(dǎo)讀[M].北京:機(jī)械工業(yè)出版社,2010.
[3] Dhawan S K.Introduction to PCI Express——A New High Speed Serial Data Bus[C]//Proc.of Nuclear Science Symposium Conference Record.[S.l.]:IEEE Press,2005:687-691.
[4] Intel Corporation.PHY Interface for the PCI Express, SATA and USB 3.0 Architectures[EB/OL].(2013-10-23).http://www.intel.com/content/www/us/en/io/pciexpress/phy-interface-pci-express-sata-usb30-architectures. html.
[5] Winkles J.Elastic Buffer Implementations in PCI Express Devices[EB/OL].(2003-11-12).http:// www.docin.com/p-118906415.html.
[6] 劉瑞梅,韓曉毅.PCI Express總線PHY接口技術(shù)分析[J].河北建筑工程學(xué)院學(xué)報(bào),2010,28(1):129-133.
[7] 陳乃塘.從PCIe探索彈性緩沖器真義[J].電子測試, 2005,(10):48-51.
[8] Cummings C E.Simulation and Synthesis Techniques for Asynchronous FIFO Design[EB/OL].(2005-06-16).http://www.docin.com/p-46476833.html.
[9] 陳乃塘.PCI Express數(shù)據(jù)連接層與物理層(上)[J].電子測試,2004,(8):39-50.
[10] 劉奇浩,翁惠輝.65 nm工藝下基于PCI Express2.0協(xié)議的物理編碼子層設(shè)計(jì)[J].中國集成電路,2013, (3):40-45.
[11] Michelogiannakis G,Balfour J,Dally W J.Elastic-buffer Flow Control for On-chip Networks[C]//Proc.of the 15th International Symposium on High Performance Computer Architecture.Raleigh,USA:IEEE Press, 2009:151-162.
[12] Schutti M,Pfaff M,Hagelauer R.Data Transfer Between Asynchronous ClockDomainsWithoutPain[D]. [S.l.]:Research Institute for Integrated Circuits,2000.
編輯 任吉慧
Design of Elastic Buffer at Physical Layer Based on PCIE2.0
ZHENG Qian1,2,YAN Min1,ZHAO Jian-zhong2,LI You2,ZHANG Feng2
(1.School of Physics and Electronics,Hunan University,Changsha 410082,China;
2.ASIC&System Department,Institute of Microelectronics of Chinese Academy of Sciences,Beijing 100020,China)
Elastic buffer is a very important function in receiver at high-speed serial protocols such as PCI Express (PCIE)and USB.The frequency delta and phase delta are managed perfectly to ensure data integrity by the elastic buffer when bridging local clock domain and recovered clock domain.This paper proposes elastic buffer logic in primed method to satisfy PCIE2.0 protocol specification.The width and depth of the elastic buffer are both 10.The proposed logic is integrated into Physical Layer(PHY)and implemented based on 55 nm CMOS process of SMIC.The result to be measured well agreeds with the actual requirement.It can work well under the frequency of 500 MHz and ensure data to
ata correctly.
elastic buffer;frequency compensation;SKP instruction set;half-full method;asynchronous First Input First Output(FIFO)
1000-3428(2014)10-0071-05
A
TN942
10.3969/j.issn.1000-3428.2014.10.014
國家“863”計(jì)劃基金資助項(xiàng)目(2011AA010403)。
鄭 乾(1987-),男,碩士研究生,主研方向:高速接口電路設(shè)計(jì),計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì);晏 敏,副教授;趙建中,助理研究員;李 優(yōu),博士研究生;張 鋒,副研究員。
2013-11-04
2013-12-10E-mail:zhengqian@hnu.edu.cn
中文引用格式:鄭 乾,晏 敏,趙建中,等.基于PCIE2.0的物理層彈性緩沖器設(shè)計(jì)[J].計(jì)算機(jī)工程,2014, 40(10):71-75.
英文引用格式:Zheng Qian,Yan Min,Zhao Jianzhong,et al.Design of Elastic Buffer at Physical Layer Based on PCIE2.0[J].Computer Engineering,2014,40(10):71-75.