關(guān)于FPGA芯片的SERDES接口的電路設(shè)計方案
隨著FPGA發(fā)展到今天,SerDes(Serializer-Deserializer)基本上是標(biāo)配了。從PCI到PCI Express, 從ATA到SATA,從并行ADC接口到JESD204, 從RIO到Serial RIO,…等等,都是在借助SerDes來提高性能。SerDes是非常復(fù)雜的數(shù)?;旌显O(shè)計,用戶手冊的內(nèi)容只是描述了森林里面的一棵小樹,并不能夠解釋SerDes是怎么工作的。SerDes怎么可以沒有傳輸時鐘信號?什么是加重和均衡?抖動和誤碼是什么關(guān)系?各種抖動之間有什么關(guān)系?本篇小文試著從一個SerDes用戶的角度來理解SerDes是怎么設(shè)計的, 由于水平有限,一定有不夠準(zhǔn)確的地方,希望對剛開始接觸SerDes的工程師有所幫助。
串行接口常用于芯片至芯片和電路板至電路板之間的數(shù)據(jù)傳輸。隨著系統(tǒng)帶寬不斷增加至多吉比特范圍,并行接口已經(jīng)被高速串行鏈接,或SERDES (串化器/ 解串器)所取代。起初, SERDES 是獨(dú)立的ASSP 或ASIC 器件。在過去幾年中已經(jīng)看到有內(nèi)置SERDES 的FPGA 器件系列,但多見于高端FPGA芯片中,而且價格昂貴。
本方案是以CME最新的低功耗系列FPGA的HR03為平臺,實現(xiàn)8/10b的SerDes接口,包括SERDES收發(fā)單元,通過完全數(shù)字化的方法實現(xiàn)SERDES的CDR(Clock Data Recovery,時鐘數(shù)據(jù)恢復(fù)),完成100~200Mhz的板間SERDES單通道通信,該SERDES接口方案具有成本低、靈活性高、研發(fā)周期短等特點。
1 硬件接口
硬件的接口如上圖所示,主要包括發(fā)送與接收模塊。
發(fā)送模塊包括8b/10b編碼器,并串轉(zhuǎn)換器,鎖相環(huán)(PLL)頻率合成器和發(fā)送器,接收模塊包括 8b/10b解碼器,Comma 檢測器,串并轉(zhuǎn)換器,時鐘數(shù)據(jù)恢復(fù)器(CDR)和接收器。
8b/10b編碼器用于將從上層協(xié)議芯片發(fā)送過來的字節(jié)信號映射成直流平衡的 10 位8b/10b 編碼,并串轉(zhuǎn)換用于將 10 位編碼結(jié)果串行化,并串轉(zhuǎn)換所需的高速、低抖動時鐘由鎖相環(huán)提供,發(fā)送器用于將 CMOS 電平的高速串行碼流轉(zhuǎn)換成抗噪聲能力較強(qiáng)的差分信號,經(jīng)背板連接或光纖信道發(fā)送到接收機(jī)。
在接收端,接收器將接收到的低擺幅差分信號還原為 CMOS 電平的串行信號,CDR 從串行信號中抽取時鐘信息,完成對串行數(shù)據(jù)的最佳采樣,串并轉(zhuǎn)換利用 CDR 恢復(fù)的時鐘,將串行信號轉(zhuǎn)換成 10 位的并行數(shù)據(jù),Comma 檢測器檢測特殊的 Comma 字符,調(diào)整字邊界,字邊界正確的并行數(shù)據(jù)經(jīng)過 8b/10b 解碼,還原為字節(jié)信號,傳送到上層協(xié)議芯片,完成整個信息傳輸過程。
實際的設(shè)計中,CDR部分是由純邏輯電路完成的,為設(shè)計的核心的部分,下面將介紹數(shù)字CDR在HR03的實現(xiàn)方案。
2 數(shù)字CDR
CDR模塊作用是從數(shù)據(jù)中恢復(fù)嵌入的時鐘,然后接收器按照恢復(fù)的時鐘進(jìn)行數(shù)據(jù)位對齊并通過comma進(jìn)行字對齊。最后,將數(shù)據(jù)進(jìn)行8b/10b解碼,供系統(tǒng)使用。
本方案采用同頻多相的時鐘采樣方法,具體實現(xiàn)過程利用PLL產(chǎn)生4個時鐘頻率相同,相位相差90度的時鐘,分別為clk0、clk90、clk180、clk270,這四個時鐘輸出完全同步,利用4個時鐘對數(shù)據(jù)進(jìn)行采樣,以獲得4倍過采樣的效果,具體的實現(xiàn)過程如下圖所示:
在數(shù)據(jù)時鐘恢復(fù)時,將到來的數(shù)據(jù)分別輸入到四個觸發(fā)器,分別用4個不同的相位進(jìn)行采樣,要注意保證從輸入引腳到四個觸發(fā)器的延遲基本一致。
第一列觸發(fā)器的觸發(fā)分別由時鐘CLK0、CLK90、CLK180、CLK270的上升沿觸發(fā),按照這樣的方式來觸發(fā)就可以得到四個數(shù)據(jù)采樣點。這樣就將原始時鐘周期分成了四個單獨(dú)的90度的區(qū)域,如果系統(tǒng)時鐘為200MHz,上圖所示的電路就相當(dāng)于產(chǎn)生了800MHz 的采樣速率。
僅通過一階的觸發(fā)器,輸出的采樣數(shù)據(jù)存在亞穩(wěn)態(tài)的問題,因此需對采樣點作進(jìn)一步的處理。這里可將四個采樣點通過進(jìn)一步的觸發(fā),除掉亞穩(wěn)態(tài)的問題,從而使采樣點移到下一個相同的時鐘域。通常,亞穩(wěn)態(tài)的去除要經(jīng)過兩三級的處理,這就使得在有效數(shù)據(jù)輸出前會有數(shù)位無效的數(shù)據(jù),在數(shù)據(jù)采樣的第一個階段,電路檢測數(shù)據(jù)線上數(shù)據(jù)的傳輸。當(dāng)檢測到有數(shù)據(jù)傳輸時,對傳輸數(shù)據(jù)的有效性進(jìn)行確認(rèn)。確認(rèn)數(shù)據(jù)有效后,輸出高電平來指示采樣點有數(shù)據(jù)傳輸。
因為最終有四個輸出,所以需要一個復(fù)用器來選擇數(shù)據(jù)。發(fā)送數(shù)據(jù)與采樣時鐘的對應(yīng)關(guān)系如上圖所示,其對應(yīng)關(guān)系分為4種情況,每種情況下對應(yīng)一個最佳的采樣時鐘,系統(tǒng)通過對數(shù)據(jù)邊沿位置信息的判斷,來確定哪路時鐘為最佳采樣時鐘,并利用復(fù)用器從選定的時鐘域中選擇數(shù)據(jù)位,例如檢測電路確定從時鐘域A中采樣的數(shù)據(jù)有效,那么將時鐘域A中采樣的數(shù)據(jù)通過輸出端輸出。
3 結(jié)束語
通過對純數(shù)字電路的CDR電路,在沒有硬核的支持下,完成了FPGA上SERDES的接口設(shè)計,并通過實驗的傳輸測試,在HR03的FPGA上,可完成100~200Mbps的數(shù)據(jù)傳輸。