FPGA與ADC數(shù)字?jǐn)?shù)據(jù)輸出的接口
現(xiàn)場可編程門陣列(FPGA)與模數(shù)轉(zhuǎn)換器(ADC)輸出的接口是一項常見的工程設(shè)計挑戰(zhàn)。本文簡要介紹各種接口協(xié)議和標(biāo)準(zhǔn),并提供有關(guān)在高速數(shù)據(jù)轉(zhuǎn)換器實現(xiàn)方案中使用LVDS的應(yīng)用訣竅和技巧。
本文引用地址:http://m.butianyuan.cn/article/202211/440186.htm接口方式和標(biāo)準(zhǔn)
現(xiàn)場可編程門陣列(FPGA)與模數(shù)轉(zhuǎn)換器(ADC)數(shù)字?jǐn)?shù)據(jù)輸出的接口是一項常見的工程設(shè)計挑戰(zhàn)。此外,ADC使用多種多樣的數(shù)字?jǐn)?shù)據(jù)樣式和標(biāo)準(zhǔn),使這項挑戰(zhàn)更加復(fù)雜。對于通常在200 MHz以下的低速數(shù)據(jù)接口,單倍數(shù)據(jù)速率(SDR) CMOS非常普遍:發(fā)送器在一個時鐘沿傳送數(shù)據(jù),接收器在另一個時鐘沿接收數(shù)據(jù)。這種方式可確保數(shù)據(jù)有充足的時間完成建立,然后由接收器采樣。在雙倍數(shù)據(jù)速率(DDR) CMOS中,發(fā)送器在每一個時鐘沿都會傳送數(shù)據(jù)。因此,在相同的時間內(nèi),它傳輸?shù)臄?shù)據(jù)量是SDR的兩倍。然而,接收器正確采樣的時序更加復(fù)雜。
并行低壓差分信號(LVDS)是高速數(shù)據(jù)轉(zhuǎn)換器的常見標(biāo)準(zhǔn)。它采用差分信號,每一位均有P線和N線;在最新的FPGA中,其速度可達DDR 1.6 Gbps或800 MHz。并行LVDS的功耗低于CMOS,但所需的線數(shù)則是CMOS的兩倍,因而布線可能比較困難。
LVDS常常用在具有“源同步”時鐘系統(tǒng)的數(shù)據(jù)轉(zhuǎn)換器中,不過這并不是LVDS標(biāo)準(zhǔn)的一部分。在這種設(shè)置中,時鐘與數(shù)據(jù)同相,并且與數(shù)據(jù)一同發(fā)送。這樣,接收器就能使用該時鐘更輕松地捕捉數(shù)據(jù),因為它現(xiàn)在知道數(shù)據(jù)傳輸何時發(fā)生。
FPGA邏輯的速度一般跟不上高速轉(zhuǎn)換器的總線速度,因此大多數(shù)FPGA具有串行器/解串器(SERDES)模塊,用以將轉(zhuǎn)換器端的快速、窄帶串行接口轉(zhuǎn)換為FPGA端的慢速、寬帶并行接口。針對總線中的每個數(shù)據(jù)位,此模塊輸出2、4或8位,但以?、?或1/8的時鐘速率輸出,從而有效地將數(shù)據(jù)解串。數(shù)據(jù)由FPGA內(nèi)部的寬總線處理,其速度遠低于連接到轉(zhuǎn)換器的窄總線。
LVDS信號標(biāo)準(zhǔn)也用于串行鏈路,大部分是用在高速ADC上。當(dāng)引腳數(shù)量比接口速度更重要時,通常使用串行LVDS。常常使用兩個時鐘:數(shù)據(jù)速率時鐘和幀時鐘。并行LVDS部分提到的所有考慮同樣適用于串行LVDS。并行LVDS不過是由多條串行LVDS線組成。
I2C使用兩條線:時鐘和數(shù)據(jù)。它支持總線上的大量器件,而無需額外的引腳。I2C相對較慢,考慮協(xié)議開銷,速度為400 kHz至1 MHz。它通常用在慢速、小尺寸器件上。I2C也常常用作控制接口或數(shù)據(jù)接口。
SPI使用3到4條線:
時鐘
數(shù)據(jù)輸入和數(shù)據(jù)輸出(4線),或者雙向數(shù)據(jù)輸入/數(shù)據(jù)輸出(3線)
片選(每個非主機器件使用一條線)
可用片選線有多少,SPI就能支持多少器件。它的速度可達約100 MHz,通常用作控制接口和數(shù)據(jù)接口。
串行PORT (SPORT)是一種基于CMOS的雙向接口,每個方向使用一個或兩個數(shù)據(jù)引腳。對于非%8分辨率,其可調(diào)字長能夠提高效率。SPORT支持時域復(fù)用(TDM),通常用在音頻/媒體轉(zhuǎn)換器和高通道數(shù)轉(zhuǎn)換器上。它提供每引腳約100 MHz的性能。
Blackn處理器支持SPORT,F(xiàn)PGA上可直接實現(xiàn)SPORT。SPORT一般僅用于數(shù)據(jù)傳輸,但也可以插入控制字符。
JESD204是一種JEDEC標(biāo)準(zhǔn),用于單一主機(如FPGA或ASIC等)與一個或多個數(shù)據(jù)轉(zhuǎn)換器之間的高速串行鏈路。最新規(guī)格提供每通道或每差分對最高3.125 Gbps的速度。未來的版本可能提供6.25 Gbps及更高的速度。通道采用8B/10B編碼,因而通道的有效帶寬降為理論值的80%。時鐘嵌入在數(shù)據(jù)流中,因此沒有額外的時鐘信號。多個通道可以結(jié)合在一起以提高吞吐量,數(shù)據(jù)鏈路層協(xié)議確保數(shù)據(jù)完整性。在FPGA/ASIC中,為實現(xiàn)數(shù)據(jù)幀傳輸,JESD204需要的資源遠遠多于簡單的LVDS或CMOS。它顯著降低了接線要求,不過要求使用更昂貴的FPGA,PCB布線也更加復(fù)雜。
圖1. FPGA接口中的SERDES模塊和轉(zhuǎn)換器的高速串行接口
一般建議
進行ADC與FPGA的接口設(shè)計時,下列一般建議會有所幫助。
使用接收器、FPGA或ASIC的外部電阻終端,而不要使用FPGA內(nèi)部終端,以免不匹配引起反射,致使超出時序預(yù)算。
如果系統(tǒng)使用多個ADC,請勿使用某個ADC的某個DCO。
布設(shè)連接到接收器的數(shù)字走線時,請勿采用大量“轉(zhuǎn)接”(tromboning)來使所有走線保持等長。
利用CMOS輸出端的串聯(lián)終端降低邊沿速率并限制開關(guān)噪聲。確認(rèn)所用的數(shù)據(jù)格式(二進制補碼或偏移二進制)正確。
采用單端CMOS數(shù)字信號時,邏輯電平以大約1 V/nS的速度移動,典型輸出負(fù)載為10 pF(最大值),典型充電電流為10 mA/位。應(yīng)采用盡可能小的容性負(fù)載,使充電電流最小。這可以利用盡可能短的走線僅驅(qū)動一個門來實現(xiàn),最好沒有任何過孔。在數(shù)字輸出端和輸入端使用阻尼電阻,也可以使充電電流最小。
阻尼電阻和容性負(fù)載的時間常數(shù)應(yīng)為采樣速率周期的大約10%。如果時鐘速率為100 MHz,負(fù)載為10 pF,則該時間常數(shù)應(yīng)為10 nS的10%,即1 nS。這種情況下,R應(yīng)為100 Ω。為獲得最佳信噪比(SNR)性能,1.8 V DRVDD優(yōu)于3.3 VDRVDD。然而,當(dāng)驅(qū)動大容性負(fù)載時,SNR性能會下降。CMOS輸出支持最高約200 MHz的采樣時鐘速率。如果驅(qū)動兩個輸出負(fù)載,或者走線長度大于1或2英寸,建議使用緩沖器。
圖2. 典型CMOS數(shù)字輸出驅(qū)動器
ADC數(shù)字輸出應(yīng)小心對待,因為瞬態(tài)電流可能會耦合回模擬輸入端,導(dǎo)致ADC的噪聲和失真提高。
圖2所示的典型CMOS驅(qū)動器能夠產(chǎn)生很大的瞬態(tài)電流,尤其是驅(qū)動容性負(fù)載時。對于CMOS數(shù)據(jù)輸出ADC,必須采取特別措施以使這些電流最小,不致于在ADC中產(chǎn)生額外的噪聲和失真。
典型示例
圖3. 利用串聯(lián)電阻使CMOS數(shù)字輸出的充電電流最小
圖3顯示了一個16位并行CMOS輸出ADC的情況。每路輸出有一個10pF負(fù)載,用以模擬一個門負(fù)載加上PCB寄生電容;當(dāng)驅(qū)動10 pF負(fù)載時,各驅(qū)動器產(chǎn)生10 mA的充電電流。因此,該16位ADC的總瞬態(tài)電流可能高達16 × 10 mA = 160 mA。在各數(shù)據(jù)輸出端增加一個小串聯(lián)電阻R,可以抑制這些瞬態(tài)電流。應(yīng)適當(dāng)選擇該電阻的值,使RC時間常數(shù)小于總采樣周期的10%。如果fs = 100 MSPS,則RC應(yīng)小于1 ns。C = 10 pF,因此最佳的R值約為100 Ω。選擇更大的R值可能會降低輸出數(shù)據(jù)建立時間性能,并干擾正常的數(shù)據(jù)捕捉。CMOS ADC輸出端的容性負(fù)載應(yīng)以單個門負(fù)載為限,通常是一個外部數(shù)據(jù)捕捉寄存器。任何情況下都不得將數(shù)據(jù)輸出端直接連到高噪聲數(shù)據(jù)總線,必須使用一個中間緩沖寄存器,使ADC輸出端的直接負(fù)載最小。
圖4. 典型LVDS驅(qū)動器設(shè)計
圖4顯示了CMOS中的一個標(biāo)準(zhǔn)LVDS驅(qū)動器。標(biāo)稱電流為3.5 mA,共模電壓為1.2 V。因此,當(dāng)驅(qū)動一個100 Ω差分終端電阻時,接收器各輸入的擺幅為350 mV p-p,這相當(dāng)于700 mV p-p的差分?jǐn)[幅。這些數(shù)值來源于LVDS規(guī)范。
圖5. ANSI和IEEE LVDS標(biāo)準(zhǔn)
LVDS標(biāo)準(zhǔn)有兩個:一個由ANSI制定,另一個由IEEE制定。雖然這兩個標(biāo)準(zhǔn)類似且大致兼容,但并不完全相同。圖5比較了這兩個標(biāo)準(zhǔn)的眼圖和抖動直方圖。IEEE標(biāo)準(zhǔn)LVDS的擺幅為200 mV p-p,低于ANSI標(biāo)準(zhǔn)的320 mV p-p,這有助于節(jié)省數(shù)字輸出的功耗。因此,如果IEEE標(biāo)準(zhǔn)支持目標(biāo)應(yīng)用及與接收器的連接,建議使用IEEE標(biāo)準(zhǔn)。
圖6. ANSI和IEEE LVDS標(biāo)準(zhǔn):走線超過12英寸
圖6比較了走線長度超過12英寸或30厘米情況下的ANSI和IEEE LVDS標(biāo)準(zhǔn)。兩幅圖中,驅(qū)動電流均采用ANSI版標(biāo)準(zhǔn)。右圖中,輸出電流加倍,這可以凈化眼圖并改善抖動直方圖。
圖7. FR4通道損耗的影響
圖7顯示了長走線對FR4材料的影響。左圖顯示了發(fā)送器端的理想眼圖。在距離40英寸的接收器端,眼圖幾乎閉合,接收器難以恢復(fù)數(shù)據(jù)。
故障排除技巧
ADC丟失第14位
圖8. AD9268 ADC丟失第14位
圖8中,數(shù)據(jù)位的VisualAnalog數(shù)字顯示表明,第14位從未跳變。這可能說明器件、PCB或接收器有問題,或者無符號數(shù)據(jù)不夠大,無法使最高有效位跳變。
ADC丟失第14位時的頻域曲線
圖9. AD9268 ADC丟失第14位時的頻域曲線
圖9顯示了上述數(shù)字?jǐn)?shù)據(jù)(其中第14位未跳變)的頻域視圖。該圖說明,第14位有意義,系統(tǒng)中的某個地方發(fā)生錯誤。
ADC丟失第14位時的時域曲線
圖10. AD9268 ADC丟失第14位時的時域曲線
圖10為相同數(shù)據(jù)的時域曲線。它不是一個平滑的正弦波,數(shù)據(jù)發(fā)生偏移,波形中多個點處有明顯的尖峰。
ADC的第9位和第10位短接在一起
圖11. AD9268 ADC的第9位和第10位短接在一起
圖11所示不再是丟失一位的情況,而是兩位短接在一起,因此對于這兩個引腳,接收器始終接收到相同的數(shù)據(jù)。
ADC第9位和第10位短接在一起時的頻域曲線
圖12. AD9268 ADC的第9位和第10位短接在一起時的頻域曲線
圖12顯示了兩位短接在一起時的頻域視圖。雖然基頻音非常清楚,但噪底顯著低于預(yù)期。噪底失真的程度取決于短接哪兩位。
ADC第9位和第10位短接在一起時的時域曲線
圖13. AD9268 ADC的第9位和第10位短接在一起時的時域曲線
在圖13所示的時域圖中,問題相對不明顯。雖然在波峰和波谷處損失了一些平滑度,但當(dāng)采樣速率接近波形頻率時,這是常見現(xiàn)象。
數(shù)據(jù)和時鐘時序無效時的時域曲線
圖14. AD9268數(shù)據(jù)和時鐘時序無效時的時域曲線
圖14顯示了一個因建立/保持問題而導(dǎo)致時序無效的轉(zhuǎn)換器的情況。上述錯誤一般會在數(shù)據(jù)的每個周期中出現(xiàn),而時序錯誤則不然,通常并不是持續(xù)存在。不太嚴(yán)重的時序錯誤可能是間歇性的。這些圖顯示了不符合時序要求的數(shù)據(jù)捕捉的時域和頻域曲線。注意,各周期的時域錯誤并不一致。還應(yīng)注意FFT/頻域的噪底有所提高,這通常表示有一位丟失,原因可能是時序?qū)R錯誤。
數(shù)據(jù)和時鐘時序無效時的放大時域曲線
圖15. AD9268數(shù)據(jù)和時鐘時序無效時的放大時域曲線
圖15是圖14所示時域時序誤差的放大圖。同樣應(yīng)注意,各周期的錯誤并不一致,但某些錯誤會重復(fù)。例如,該圖中有多個周期的谷底上出現(xiàn)負(fù)尖峰。
作者:ADI公司應(yīng)用工程部
評論