FPGA與ADC數位資料輸出的介面

作者:ADI應用工程部


摘要

現場可編程閘陣列(FPGA)與類比數位轉換器(ADC)輸出的介面是一項常見的工程設計挑戰。本文簡要介紹各種介面協定和標準,並提供有關在高速資料轉換器實現方案使用低壓差分訊號(LVDS)的應用訣竅和技巧。

介面方式和標準

FPGA與ADC數位資料輸出的介面是一項常見的工程設計挑戰。此外,ADC使用多種多樣的數位資料樣式和標準,使這項挑戰更加複雜。對於通常在200 MHz以下的低速資料介面,單倍數據速率(SDR) CMOS非常普遍:發送器在一個時脈邊緣傳送資料,接收器在另一個時脈邊緣接收資料。這種方式可確保資料有充足的時間完成建立,然後由接收器採樣。在雙倍數據速率(DDR)CMOS中,發送器在每一個時脈邊緣都會傳送資料。因此,在相同的時間內,它傳輸的資料量是SDR的兩倍;然而,接收器正確採樣的時序更加複雜。

並行低壓差分訊號(LVDS)是高速資料轉換器的常見標準。它採用差分訊號,每一位元均有P線和N線;在最新的FPGA中,其速度可達DDR 1.6 Gbps或800 MHz。並行LVDS的功耗低於CMOS,但所需的線數則是CMOS的兩倍,因而佈線可能比較困難。LVDS常常用在具有源同步時脈系統的資料轉換器中,不過這並不是LVDS標準的一部分。在這種設定中,時脈與資料同相,並且與資料一同發送。如此,接收器就能使用該時脈更輕鬆地擷取資料,因為它知道資料傳輸何時發生。

FPGA邏輯的速度一般跟不上高速轉換器的總線速度,因此大多數FPGA具有串列器/解串器(SERDES)模組,用以將轉換器端的快速、窄頻序列介面轉換為FPGA端的慢速、寬頻平行介面。針對匯流排中的每個數據位元,此模組輸出2、4或8位元,但以1/2、1/4或1/8的時脈速率輸出,從而有效地將資料解串。資料由FPGA內部的寬匯流排處理,其速度遠低於連接到轉換器的窄匯流排。

LVDS訊號標準也用於串列鏈路,大部分是用在高速ADC上。當接腳數量比介面速度更重要時,通常使用串列LVDS。常常使用兩個時脈:資料速率時脈和幀時脈。並行LVDS部分提到的所有考慮同樣適用於串列LVDS。並行LVDS不過是由多條串列LVDS線組成。

圖1. 將ADC連接至FPGA有多種連接方法。

I2C 使用兩條線:時脈線和資料線。它支援匯流排上的大量元件,而無需額外的接腳。I2C 是一種速度相對較慢的協定,工作頻率範圍為400 kHz至1 MHz。它通常用在慢速、小尺寸元件上。 I2C 也常常用作控制介面或資料介面。

SPI使用三條或四條線:

  • 時脈
  • 資料登錄和資料輸出(4線)或者雙向資料登錄/資料輸出(3線)
  • 晶片選擇(每個非主機元件使用一條線)

可用晶片選擇的線有多少,SPI就能支援多少元件。它的速度可達約100 MHz,通常用於控制介面和資料介面。

串列PORT (SPORT)是一種基於CMOS的雙向介面,每個方向使用一個或兩個資料接腳。對於非8%解析度,其可調字長能夠提高 效率。SPORT支援時域複用(TDM),通常用在音訊/媒體轉換器和高通道數轉換器上。它提供每接腳約100 MHz的性能。 Blackfin®處理器支援SPORT,FPGA上可直接實現SPORT。SPORT一般僅用於資料傳輸,但也可以插入控制字元。

JESD204是一種JEDEC標準,用於單一主機(如FPGA或ASIC等)與一個或多個資料轉換器之間的高速串列鏈路。最新規格提供每通道或每差分對最高3.125 Gbps的速度。未來的版本可能提供6.25 Gbps及更高的速度。通道採用8B/10B編碼,因而通道的有效頻寬降為理論值的80%。時脈嵌入資料流程中,因此沒有額外的時脈訊號。多個通道可以結合在一起以提高輸送量,數據連結層協定確保數據完整性。在FPGA/ASIC中,為實現數據幀傳輸,JESD204需要的資源遠遠多於簡單的LVDS或CMOS。它明顯降低了接線要求,但要求使用更昂貴的FPGA,PCB佈線也更加複雜。

圖2. FPGA介面中的SERDES模組和轉換器的高速序列介面。

一般建議

進行ADC與FPGA的介面設計時,下列一般建議會有所幫助。

  • 接收器(FPGA或ASIC)使用外部電阻端接,而不採用FPGA內部端接,以免不匹配引起反射,致使超出時序預算。
  • 如果系統使用多個ADC,請勿使用某個ADC的某個數位控制振盪器(DCO)。
  • 佈設連接到接收器的數位佈線時,請勿採用大量轉接以使所有佈線保持等長。
  • 利用CMOS輸出端的串聯終端降低邊緣速率並限制切換雜訊。確認所用的資料格式(二進位補數或偏移二進位)正確。

採用單端CMOS數位訊號時,邏輯位準以大約1 V/nS的速度移動,典型輸出負載為10 pF(最大值),典型充電電流為10 mA/位。應採用盡可能小的容性負載,使充電電流最小。這可以利用盡可能短的佈線僅驅動一個門來實現,最好沒有任何過孔。在數位輸出端和輸入端使用阻尼電阻,也可以使充電電流最小。

阻尼電阻和容性負載的時間常數應為採樣速率週期的大約10%。如果時脈速率為100 MHz,負載為10 pF,則該時間常數應為10 ns 的10%,即1 ns。這種情況下,R應為100 Ω。為獲得最佳訊號雜訊(SNR)性能,1.8 V DRVDD優於3.3 V DRVDD。然而,當驅動大容性負載時,SNR性能會下降。CMOS輸出支援最高約200 MHz的採樣時脈速率。如果驅動兩個輸出負載,或者佈線長度大於1或2英寸,建議使用緩衝器。

ADC數位輸出應小心對待,因為瞬態電流可能會耦合回類比輸入端,導致ADC的雜訊和失真提高。

圖3所示的典型CMOS驅動器能夠產生很大的瞬態電流,尤其是驅動容性負載時。對於CMOS資料輸出ADC,必須採取特別措施以使這些電流最小,不致於在ADC中產生額外的雜訊和失真。

圖3. 典型的CMOS數位輸出驅動器。

典型示例

圖4顯示了一個16位元並行CMOS輸出ADC的情況。每路輸出有一個10 pF負載,用以模擬一個門負載加上PCB寄生電容;當驅動10 pF負載時,各驅動器產生10 mA的充電電流。

圖4. 利用串聯電阻使CMOS數位輸出的充電電流最小。

因此,該16位元ADC的總瞬態電流可能高達16 × 10 mA = 160 mA。在各資料輸出端增加一個小串聯電阻R,可以抑制這些瞬態電流。應適當選擇該電阻的值,使RC時間常數小於總採樣週期的10%。如果 fS = 100 MSPS,則RC應小於1 ns。C = 10 pF,因此最佳的R值約為100 Ω。選擇更大的R值可能會降低輸出資料建立時間性能,並干擾正常的資料擷取。CMOS ADC輸出端的容性負載應以單一個門負載為限,通常是一個外部資料擷取暫存器。任何情況下都不得將資料輸出端直接連到高雜訊資料匯流排,必須使用一個中間緩衝暫存器,使ADC輸出端的直接負載最小。

圖5顯示了CMOS中的一個標準LVDS驅動器。標準電流為3.5 mA,共模電壓為1.2 V。因此,當驅動一個100 Ω差分終端電阻時,接收器各輸入的擺幅為350 mV p-p,這相當於700 mV p-p的差分擺幅。這些數值來源於LVDS規範。

圖5. 典型的LVDS驅動器設計。

LVDS標準有兩個:一個由ANSI制定,另一個由IEEE制定。雖然這兩個標準類似且大致相容,但並不完全相同。圖6比較了這兩個標準的眼圖和抖動長條圖。IEEE標準LVDS的擺幅為200 mVp-p,低於ANSI標準的320 mV p-p,這有助於節省數位輸出的功耗。因此,如果IEEE標準支援目標應用及與接收器的連接,建議使用IEEE標準。

圖6. ANSI和IEEE LVDS標準。

圖7比較了佈線長度超過12英寸或30釐米情況下的ANSI和IEEELVDS標準。兩幅圖中,驅動電流均採用ANSI版標準。右圖中,輸出電流加倍,這可以淨化眼圖並改善抖動長條圖。

圖7. ANSI和IEEE LVDS標準:佈線超過12英寸。"

圖8顯示了在FR4材料上長佈線的影響。左圖顯示了發送器端的理想眼圖。在距離40英寸的接收器端,眼圖幾乎閉合,接收器難以恢復資料。

圖8. FR-4通道損耗的影響。

圖9中,資料位元的 Visual Analog® 數字顯示,第14位元從未跳變。這可能說明元件、PCB或接收器有問題,或者無符號資料不夠大,無法使最高有效位元跳變。

圖9. AD9268 ADC丟失第14位元。

圖10顯示了上述數位資料(其中第14位元未跳變)的頻域視圖。該圖說明,第14位元有意義,系統中的某個地方發生錯誤。

圖10. AD9268 ADC丟失第14位元時的頻域曲線。

圖11為相同資料的時域曲線。它不是一個平滑的正弦波,資料發生偏移,波形中多個點處有明顯的尖峰。

圖11. AD9268 ADC丟失第14位元時的時域曲線。

圖12所示不再是丟失一位元的情況,而是兩位元短接在一起,因此對於這兩個接腳,接收器始終接收到相同的資料。

圖12. AD9268 ADC的第9位元和第10位元短接在一起。

圖13顯示了兩位元短接在一起時的頻域視圖。雖然基頻非常清楚,但雜訊基底明顯高於預期。雜訊基底失真的程度取決於短接了哪兩個位元。

圖13. AD9268 ADC第9位元和第10位元短接在一起時的頻域曲線。

在圖14所示的時域圖中,問題相對不明顯。雖然在波峰和波谷處損失了一些平滑度,但當採樣速率接近波形頻率時,這是常見現象。

圖14. AD9268 ADC第9位元和第10位元短接在一起時的時域曲線。

圖15顯示了一個因建立/保持問題而導致時序無效的轉換器的情況。上述錯誤一般會在資料的每個週期中出現,而時序錯誤則不然,通常並不是持續存在。不太嚴重的時序錯誤可能是間歇性的。這些圖顯示了不符合時序要求的資料擷取的時域和頻域曲線。注意,各週期的時域錯誤並不一致。還應注意FFT/頻域的雜訊基底有所提高,這通常表示有一位丟失,原因可能是時序對齊錯誤。

圖15. AD9268資料和時脈時序無效時的時域曲線。

圖16是圖15所示時域時序誤差的放大圖。同樣應注意,各週期的錯誤並不一致,但某些錯誤會重複。例如,該圖中有多個週期的谷底上出現負尖峰。

圖16. AD9268資料和時脈時序無效時的放大時域曲線。

結論

本文探討了用於連接FPGA和ADC的標準介面,包括SPI、 I2C、SPORT、LVDS和JESD204A。隨著資料速率進一步提高,FPGA與ADC的介面仍舊是一項常見的挑戰。JESD204B支援12.5 Gbps,JESD204C則支援32 Gbps,實現這些高資料速率需要進行精心設計。