?

基于FPGA 的高速模數轉換器評估系統

2024-03-20 04:31陳旻琦鄧嵐清楊琳韻
電子技術應用 2024年2期
關鍵詞:時序以太網數據包

陳旻琦,鄧嵐清,楊琳韻

(中科芯集成電路有限公司,江蘇 無錫 214000)

0 引言

在通信與信息系統中,處理器對信號進行計算和處理,達成系統設計的功能。目前多數的電子計算機器基于二進制工作,以數字運算的方式對信息進行處理。在自然界中的信號是連續的模擬量,這意味著要處理模擬信號要對模擬量進行量化,轉換為電子計算機可以處理的數字信息[1]。將模擬信號轉換成數字信號的電路稱為模數轉換器(ADC)。根據奈奎斯特定律[2],ADC 轉換信號的速率越快,可以轉換的信號頻率越高,因此,高速ADC 廣泛應用于射頻、通信、雷達、電子戰等高頻信號場景,對高速ADC 的測試和評估在工程應用中尤為重要。

本文提出了一種基于現場可編程邏輯陣列(FPGA)的高速ADC 評估系統,設計了FPGA 邏輯和上位機程序,在實驗室環境下搭建并驗證了其對高速ADC 的測試效果。經實驗,該系統可以完成高速ADC 的評估和測試,準確反映出ADC 的關鍵性能參數。

1 系統架構

ADC 測試通常以FPGA、數字信號處理器(DSP)分別完成ADC 的控制采集和處理傳輸,外掛大容量的內存芯片(DDR)來存儲FPGA 從高速ADC 采集到的數據流[3]。例如亞德諾半導體公司的ADS7-V2EBZ 通用驅動板卡,其架構如圖1 所示,硬件上使用Xillinx 公司的可編程邏輯陣列XC7VX330T-3FFG1157E 完成數據采集,使用亞德諾公司的微處理器ADSP-BF527KBCZ-6A進行數據處理和與上位機通信,外掛了兩顆4 GB 容量的DDR3 用來進行ADC 數據的緩存和讀出[4]。

圖1 常見ADC 測試架構

由于其數據處理速度快,數據容量大,該架構在高速ADC 的評估系統中應用廣泛,缺點是此系統硬件結構較為復雜,各個子模塊之間存在多級數據鏈路,信號走線復雜,且需要對FPGA、DSP、上位機程序分別開發軟件,對于硬件設計、軟件開發和電路板制造有很高的要求,實現的成本較高。

本文提出一種架構,選用FPGA 作為主要控制芯片,在FPGA 中集成ADC 的控制、高速數據流的采集存儲、以太網通信等功能,將數據處理等功能轉移到了電腦端,圍繞FPGA 設計硬件,將軟件開發集中到FPGA 端和上位機端,簡化了系統結構,如圖2 所示。

圖2 高速ADC 評估系統架構

在本系統中,FPGA 通過以太網接口直接與電腦上位機通信,接收到控制指令后控制ADC 采樣并將ADC發送的數據存儲到FPGA 內部的分布式存儲器(Block RAM)中,FPGA 再根據指令從RAM 中讀出數據發送給電腦,在電腦端完成數據的處理和用戶界面功能。這種系統結構簡化了硬件板卡端的數據處理和存儲等功能,降低了硬件復雜度和軟件開發難度。

2 ADC 關鍵參數

表征ADC 性能指標的參數可分為動態參數和靜態參數,分別表示ADC 采樣變化信號的能力和自身對模擬量轉換的內部工作特性。動態參數主要有信噪比(SNR)、信納比(SIAND)、總諧波失真(THD)、無雜散動態范圍(SFDR)和有效位數(ENOB,可由SNR 換算得到)等;動態參數主要由微分非線性(DNL)和積分非線性(INL)表征。

動態參數的測試方法是給ADC 輸入高精度的正弦波信號,對ADC 采樣轉換后的數據進行傅里葉變換,進行頻譜分析。理想ADC 模型的噪聲趨近于無窮小,但實際中由于ADC 采樣位數的限制,在對數據的截位量化中會產生量化噪聲[8],表征到頻譜的現象是在主頻附近的噪底出現裙狀的隆起,抬高整個噪底,會降低測得的信噪比,當提高傅里葉變換的點數時,量化噪聲的影響會明顯降低,因此傅里葉變換的點數越多則計算得到的值越能表征真實的頻譜特性[9]。在MATLAB 中建模仿真,70.1 MHz 理想正弦波以100 MHz 采樣率采集,以16 位(bit)的精度量化,當進行傅里葉變換的點數達到65 536 時,信號頻譜的噪底功率約為-130 dB,量化噪聲難以對計算得到動態參數產生影響;因此,本系統測試動態參數時FPGA 會存儲ADC 采集的65 536 個16 bit 數據,通過以太網傳輸給電腦處理。

靜態參數傳統的測試方法是階梯波(RAMP)測試法,給ADC 輸入高精度的遞增階梯波,對應ADC 的各碼字對應的電壓值,統計ADC 實際采樣值與理想值的誤差[10],這種測試方法符合DNL、INL 的定義,測試精度高,但是對信號源精度和測試環境噪聲的要求非常嚴苛,測試結果易受到外部影響,需要專用的測試機臺和測試場所[11],通常在實驗室環境下的ADC 評估系統不支持靜態參數的測試功能。

本系統采用的是正弦波直方圖測試法,使用信號源提供略微超出ADC 模擬輸入范圍(超出范圍是為了讓ADC 的每個碼字都可以采到)的正弦波,用統計每個碼字出現的概率與理想正弦波概率密度函數作對比,換算得出ADC 的微分非線性和積分非線性[12]。根據正弦波直方圖的統計模型,需要較大的樣本數據量以保證每個碼字出現的概率,減少隨機性對測試準確性帶來的干擾。在MATLAB 中建模以100 MS/s 的采樣率采集10 kHz的滿幅度16 bit 正弦波信號,信噪比設置為100 dB,以16 bit 的精度量化,采集數據量為1 048 576 時,該算法得出的DNL 最大 為0.15,遠小 于16 bit ADC 的DNL 典型值;經仿真驗證,采集點數減少會導致采集的各個碼字樣本數量過少,導致計算結果偏大或分布過于隨機。為了測試結果的準確性,本系統測試ADC 靜態參數時FPGA 至少需要向電腦端吞吐大于1 048 576 個16 位數據的數據量。

3 硬件設計

本文選用亞德諾半導體的ADC 芯片AD9268-105 作為該系統的測試用例,該ADC 可實現模擬信號的16 位采樣,在最高采樣速率105 MS/s 下可提供78 dB 的信噪比,有效位數達12.6 位;此芯片的采樣精度高,數據速率快,各項參數指標對于測試系統要求較高,能夠體現評估系統的準確性和高效性。

3.1 FPGA 選型

高速、高精度ADC 的數據接口多,傳輸速率快,本系統將數據存儲功能整合到了FPGA 中,因此需要選用一款有大量接口和存儲資源的FPGA。本設計選用Xillinx公司的Kintex7 系列xc7k325tffg900-2 芯片,該型FPGA具備豐富的資源,包括326 080 個邏輯單元,16 020 kb的Block RAM 資 源,10 個IO Bank,有500 個IO 端口可供使用,內部工作時鐘最高可通過內置PLL 倍頻至1 GHz,經時序約束后可完成高速、高復雜度的內部布線[6],Xillinx 公司在FPGA 設計工具Vivado 中提供大量IP 核和原語供用戶在程序開發中使用,可實現不同功能的邏輯設計,實現本系統的需求。

3.2 通信鏈路選型

本系統對靜態參數的測試需要傳輸較大的數據量,以串口通信115 200 波特率的傳輸速度會導致整個測試流程時間較長,無法滿足高效測試的需求。

以太網的傳輸速度遠高于串口通信協議,其數據速率滿足傳輸高速ADC 數據流的需求[7]。電腦端有多種網絡工具(如Wireshark、NetAssist),在開發過程中便于對數據源地址、數據流、數據速率的監控,且以太網芯片價格普遍比較低廉,因此本系統以百兆以太網作為FPGA 和上位機之間的通信方式,選用了REALTEK 公司的RTL8201CP 實現,可支持最高100M 的用戶數據報協議(UDP)傳輸。

4 軟件設計

4.1 FPGA 邏輯設計

FPGA 在系統中作為主要底層控制芯片,負責ADC的模式配置、接口控制、數據接收保存、以太網指令接收、工作狀態切換、數據組幀等功能。

FPGA 邏輯 在Vivado 2018.4 上開發,基于VHDL 語言,通過內嵌的XSIM 仿真器對各子模塊進行邏輯仿真,并可在內嵌的CHIPSCOPE 調速器中在線調試驗證;電腦端的上位機開發基于MATLAB 完成圖形操作界面和通信運算;FPGA 與電腦端通過網線交連,實現以太網通信。

FPGA 頂層邏輯框圖如圖3 所示。

圖3 工作狀態轉換邏輯

頂層邏輯分為4 個狀態機:空閑(IDLE)、指令解碼(COMMAND_RD)、組 幀(FRAME)、應 答(ACK/NACK)。由以太網傳達電腦端的指令驅動狀態機的轉換,收到啟動指令后,判斷程序的工作模式,載入程序中預置的參數進行對應方式的組幀,在發送完畢后通過應答信號判斷該次傳輸是否正確完成。

4.1.1 存儲邏輯設計

本設計中的RAM 包括兩種存儲狀態:動態參數存儲狀態和靜態參數存儲狀態;復用同一個雙端口RAM,共計消耗5 個18 KB RAM 資 源和438 個36 KB RAM 資源。FPGA 根據接收解碼的指令控制RAM 的存儲有效標志和存儲深度,接收存儲ADC 傳輸的并行數據,ADC在配置完成后流水地向FPGA 吐出LVDS 格式的數據,經FPGA 解碼后得到信號模擬量經ADC 轉換后的量化值。

在動態參數存儲狀態中,FPGA 收到指令后,以ADC的數據隨路時鐘作為RAM 的寫入時鐘,在65 536 個時鐘周期內連續地向RAM 中寫入ADC 吐出的數據,構成一個完整的數據幀。

在靜態參數存儲狀態中,FPGA 收到指令后,產生周期性的幀信號,根據幀信號完成數據的存儲與讀取,每次幀信號拉高時向RAM 寫入65 536 個時鐘周期內ADC吐出的數據,覆蓋上一幀存儲的數據,并通過UDP 發送給上位機,總共分為16 幀發送,總計發送1 048 576 個周期的數據,符合直方圖測試法的數據量要求。

RAM 存儲工作時序如圖4 所示,在收到指令并解碼后,FPGA 產生一個觸發信號脈沖dynamic_start_ff1,進入存儲狀態,wr_cnt 和wr_en 信號控制寫入RAM 的地址和有效數據,被存儲到RAM 中的即為wr_en=1 時的一段正弦波數字信號,在存儲數據量計數器wr_cnt=65 536后,產生一個wr_done 信號觸發下一步狀態機運行,完成RAM 對一幀數據的存儲。

圖4 RAM 存儲工作時序

在分析動態參數時,如果出現數據點的遺漏或錯誤,均會導致時域信號的相位不連續,傅里葉變換后頻譜發生畸變,影響測試結果,因此動態存儲狀態下的數據需要在一段時間內連續采集并存儲完成;而在分析靜態參數時,直方圖測試法是對數據點出現的概率進行統計,因此可以允許數據之間存在斷點,不要求數據在時域上的連續性,可以允許每幀存儲的數據之間沒有連續時間關系,此測試方法的關鍵在于大數據量的存儲和傳輸,雖然xc7k325tffg900-2 的總RAM 資源可以滿足本設計的存儲量要求,但在資源利用較多時,布線面積大、走線長帶來的時序不確定性會限制時序邏輯的工作時鐘,并帶來實際工作時的時序錯誤,對FPGA 綜合后的邏輯布線和時序約束有較高要求[13],本設計中的ADC、RAM、以太網的工作時鐘均為快時鐘(>25 MHz),受到時序不確定的影響較大[14]。因此,本系統在靜態參數測試模式中采取逐幀存儲-讀取-覆蓋的方式復用RAM,盡可能節約硬件資源,提高邏輯的穩定性,減少邏輯設計難度。

4.1.2 通信協議設計

本設計的以太網通信通過UDP 實現FPGA 到上位機的數據交互,以數據包的形式進行數據的發送與接收,UDP 對單包發送的數據長度有大小限制,相鄰數據包的傳輸之間需要短暫的時間恢復并為下一包數據的接收做準備,在100M 以太網中通常將最大長度限制為1 500 字節,兩包之間至少間隔960 ns,過長的數據包和過高的發包頻率均會導致丟包、亂碼等現象[15],為了避免UDP 傳輸時的錯誤對本系統產生影響,將RAM 中儲存的數據幀,共65 536×16 bit,拆解成多個數據包,以固定的時間間隔組成以太網數據包發送;在動態模式下只需要發送一個數據幀,在靜態模式下需要發送16 個數據幀。

在組幀(FRAME)狀態下,FPGA 會根據指令切換進入兩種工作模式的狀態機,動態參數測試模式下的FRAME 狀態轉換如圖5 所示,靜態參數測試模式如圖6所示。

圖5 動態參數測試模式下狀態機轉換

圖6 靜態參數測試模式下狀態機轉換

在兩種工作模式下RAM 中一次性存儲的數據均為ADC 在一段時間內連續采樣的數據,區別是動態參數模式只需要完成一次數據幀的存儲-傳輸,通過一幀內接收數據包的數量確保數據的連續性,而靜態參數模式在每次發送完數據時,確認包數的同時會確認當前幀數,判斷是否觸發下一次存儲-讀取-覆蓋。由于UDP 是面向事務的不可靠信息傳送,無法得知數據包是否完整到達目的地[16],為了保證ADC 采樣的數據不發生丟包,本設計在數據包中加入包頭信息,指示當前數據包的包號、幀號以及當前數據點的編號,在接收端校驗其連續性判斷是否發生丟包現象,決定是否觸發復位重傳;在數據包尾附加校驗碼,保證在數據包中的數據正確性。UDP 的傳輸速度較快,在數據包中增加冗余信息以確保數據傳輸的準確性是可行的。

在FPGA 邏輯中以RAM 的存儲完成標識wr_done 信號觸發第一個數據包的組包發送(pkg_start),一個完整數據包格式包含前導碼、幀頭、數據、校驗等;其中包含源IP、目的IP、MAC 地址、包號、幀號、數據編號、校驗和等信息,發送請求信號tx_req 每次上升沿觸發對RAM一個地址數據的讀取,如圖7 時序所示。

圖7 以太網組包工作時序

單包數據讀取到RAM 存儲最大深度的地址后產生pkg_done 信號,表示當前RAM 中存儲的數據已全部讀取完成,等待延時后觸發下一個數據包的組包發送,圖8是多個數據包發送的時序圖,當eth_tx_en=1 時,表示正在發送RAM 中的數據,將多個數據包發送的r_bram_rdata 數據拼接后即可恢復出ADC 采樣得到的連續的正弦波數據。

圖8 多數據包發送時序

4.2 上位機程序設計

本設計的電腦端上位機主要功能為UDP 指令控制、數據包接收、數據計算分析、結果顯示等,基于MatlabR2019b 的Appdesigner 工具設計了用戶操作界面,可生成獨立的可執行文件,工作流程如圖9 所示。

圖9 上位機工作流程

程序初始化以后對工作區的變量進行復位,根據當前切換的選項卡選擇工作模式,調用對應參數和函數,生成指令通過UDP 發送到FPGA 端,調用MATLAB 提供的udp 回調函數實現多包數據的接收和存儲,為了避免udp 協議的不可靠性帶來的丟包,函數中對接收到的數據總量和數據包編號進行校驗,校驗錯誤重新發送指令觸發數據重傳。確定數據接收無誤后,對參數進行計算,將測試結果和圖像顯示到用戶界面上。

5 實驗驗證

高速ADC 評估系統的全套實驗環境包括ADC 評估板卡以及FPGA 主控板卡套件、直流穩壓源、高精度信號源、音頻信號發生器和個人筆記本電腦,如圖10 所示。

圖10 實驗平臺

測試ADC 動態參數的輸入信號為頻率2.5 MHz、70.1 MHz、140.1 MHz 和201.1 MHz 的正弦波,功率設定為-3 dBm,由高精度射頻信號源提供,采樣頻率設定為100 MHz,根據奈奎斯特定律采樣得到的頻率理論值依次為2.5 MHz、29.9 MHz、40.1 MHz、1.1 MHz,接收的數據總量應為262 144 字節,使用網絡助手Wireshark 抓取接收到256 個1 024 字節的包,數據包頭編號連續,數據未發生丟包。

以70.1 MHz 的輸入條件為例,時域波形為了美觀和清晰截取其中500 個點進行顯示,頻譜分析顯示第一奈奎斯特域。經FFT 處理后計算得到的動態參數顯示到參數區域:SNR=77.6 dB,SIAND=77.1 dB,THD=-90.7 dBc,SFDR=94.2 dB,如圖11 所示。動態參數測試過程總耗時為0.8 s。

圖11 70.1 MHz 動態參數測試結果

對所有頻點的測試結果如表1 所示。

表1 動態參數測試結果

測試ADC 靜態參數的輸入信號為頻率10 kHz、功率峰峰值Vpp=2.5 V 的正弦波,由音頻信號發生器提供,采樣頻率設定為100 MHz,用Wireshark 抓取得到4 096 個1 024 字節的包,共計4.2 MB 的數據,數據包頭編號連續,在大數據量下未發生丟包。

完成數據接收和校對后根據直方圖算法得到各個碼字點的DNL 和INL 曲線,取最大值顯示到參數區域,得到ADC 的靜態參數:DNL=1.0 LSB,INL=1.4 LSB,如圖12 所示。

圖12 靜態參數測試結果

靜態參數測試過程總計耗時11.2 s,其中數據傳輸過程耗時3.1 s,數據處理過程耗時8.1 s,優化電腦硬件可以大幅提升數據處理速度。經過對照,測試得到的各項參數指標均與ADC 典型值接近,多次測試結果穩定,系統處理速度快。

6 結論

綜上實驗結果,高速ADC 評估系統能夠實現高速模數轉換器的性能參數評估,測試結果中各項指標均滿足示例ADC 的典型值,工作穩定,測試效率高,本設計的數據處理與采集存儲分別由電腦和FPGA 來實現,底層硬件運行邏輯由FPGA 確定后,電腦端的數據處理算法可以根據實際需求進行升級和修改,軟件設計具有很強的可擴展性。

猜你喜歡
時序以太網數據包
基于時序Sentinel-2數據的馬鈴薯遙感識別研究
基于Sentinel-2時序NDVI的麥冬識別研究
基于1500以太網養豬場的智能飼喂控制系統的設計與實現
SmartSniff
談實時以太網EtherCAT技術在變電站自動化中的應用
一種毫米波放大器時序直流電源的設計
一種90W高功率以太網供電系統的設計
淺談EPON與工業以太網在貴遵高速公路中的應用
DPBUS時序及其設定方法
視覺注意的數據包優先級排序策略研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合