文/董衛珍 衡總 張磊磊
基于FPGA的多通道采集傳輸模塊的設計
文/董衛珍 衡總 張磊磊
由于多通道體制的聲納具有高信噪比和高精度等特性,它已經成為當前聲納的主流。因此,多通道信號的實時、高效采集尤為關鍵。本文提出了一種基于FPGA的多通道聲納采集模塊,它利用FPGA產生AD芯片的控制信號,并將采集到的串行數據轉換為并行數據,最后將采集到的數據傳至信號預處理模塊。該設計具有高精度、低噪的特點,可同時對多路信號進行AD采集、處理和傳輸,采集數據有效位數達12bit,采樣頻率可達240Ksps。
FPGA AD7690 采集
對于多通道采集系統來說,其模數轉換的多路擴展性、實時性和高精度決定著采集系統的性能。一般的信號采集系統中,常采用單片機或DSP對AD轉換進行控制,單片機一般用于低速數據的轉換中,且接口單一,靈活性差;DSP以其高速處理、強大而又靈活的接口和通信能力已應用于許多實際系統,但是DSP易受干擾。
FPGA具有硬件可定制的特點,所有功能利用硬件實現,能夠有效克服單片機和DSP的缺點。FPGA的時鐘頻率高、內部延時小、編程配置靈活等特點,使其可以集采樣控制、處理、緩存和傳輸于一個芯片內實現片上系統,從而大大提高系統的可靠性,降低了系統成本。因此,基于FPGA進行AD采集的設計已成為了近些年的主流方向。
多通道采集模塊實現對60路模擬信號的同步采集和數據轉換及傳輸。它主要由三部分組成,包括60路Ad轉換模塊、FPGA處理模塊和輸出接口模塊。其中:FPGA主要產生AD芯片工作的控制信號,進行數據串并轉化的處理;AD轉換電路是將輸入的模擬信號進行采集、量化轉換到數字域,轉換后的數據送入FPGA進行相應的處理;輸出接口電路負責將處理后數據傳至信號處理板進行進一步處理。多通道采集模塊的整體框圖如圖1所示。

圖1:多通道采集模塊的整體框圖
多通道采集模塊的FPGA芯片選用的是Xilinx公司Virtex系列的XC5VLX50T,它包含 28800個CLBs,480個I/O,2160kb BlockRam,48個DSP48E Slice;AD芯片選用的是AD7690,它是一款18位、逐次逼近型模數轉換器(ADC),它的最高采樣速率可達400Ksps,從而滿足項目240Ksps的采樣速率要求。
AD7690內置一個低功耗、高速、18位不失碼的采樣ADC、一個內部轉換時鐘和一個多功能串行接口,在CNV上升沿、AD7690對IN+與IN-引腳之間的電壓差進行采樣。這兩個引腳上的電壓擺幅為0V到REF,相位相反。基準電壓(REF)由外部提供,最高可以設置為電源電壓。
由于AD7690是采用差分輸入的方式,所以需要對輸入信號進行單端轉差分。本設計中的單端轉差分轉換器選用的是ADA4941-1,該芯片是一款低功耗、低噪聲差分驅動器。它具有寬輸入電壓范圍(當采用5V單電源時,可達0V至3.9V)、軌到軌輸出、高輸入阻抗和用戶可調增益,非常適合驅動AD7690。
AD7690芯片的控制信號不是特別復雜,具體控制信號的時序要求如圖2所示。其中信號的邏輯功能為:

圖2:AD7690的工作時序

圖3:AD控制模塊的仿真波形圖
(1)CNV 轉換輸入。此輸入有多項功能:在它的上升沿,它啟動轉換過程并選擇該部分的接口模式(鏈路或者片選)。當處于片選模式時,SDO管腳在CNV為低電平時有效;當處于鏈路模式時,數據只有在CNV為高電平時才可以進行讀取。
(2)SCK串行時鐘,邏輯輸入。串行時鐘輸入提供用于訪問AD7690 中的數據的串行時鐘。此時鐘也用作轉換過程的時鐘源。
(3)SDO 串行數據輸出。轉換數據以串行數據流的方式輸出到該管腳,并且輸出數據與SCK同步。
系統的邏輯功能設計主要實現對AD芯片的控制,將采集數據進行串并轉換,并將數據進行緩存和傳輸等功能。下面將對各部分邏輯功能進行詳細介紹。
本設計中,AD7690的接口方式采用的是片選模式,即在CNV為低電平時才可以進行數據的讀取。由于芯片的數據轉換時間為(0.5~2.1us),本設計中設置CNV的高電平持續時間大于2.1us,確保采集數據的正確。
控制模塊的工作流程為:當接收到同步信號sys_start后,計數器cnt_cnv開始計數,計數周期為500個120MHz時鐘;在cnt_cnv為1~265時,將CNV信號置高(保證大于2.1us);在cnt_cnv為266~480時,給出串行時鐘SCK(選用12MHz)。該模塊的仿真波形圖見圖3。
模擬信號經AD7690轉換后得到的是串行數據,而信號處理需要的是并行數據,所以需要將64路信號進行串并轉換。AD數據處理模塊就是將60路數據信號進行串并轉換,并將數據傳入后端的數據緩存模塊,該模塊的邏輯框圖如圖4。

圖4:AD數據處理模塊的流程圖
以第一通道為例,描述下具體實現方式:
(1)在en_sck為高期間,派生以一個計數器cnt_rdad0,同時對接收到的串行數據進行移位寄存,當計數器計到18時,將移位寄存器ad_ram0的值取出,該值din_db0即為當前通道的串并轉換得到的位寬18bit的采樣數據,該數值僅在每次轉換結束后才改變(保持一個采樣周期);
(2)當AD數據讀取和串并轉換(en_ db)完成后:首先派生一個計數器en_cnt_ wr,將60路數據分別寫入不同的地址addr_ ram,當60路數據寫操作結束時,將寫使能信號en_wrram拉底。
緩存AD數據模塊的功能是將AD采集數據存入RAM,并在要求讀取數據時,及時將數據讀出。該設計中開辟了一個128×18bit的RAM,采取乒乓存儲的方式,以保證讀寫數據不沖突。其具體實現方式:
(1)派生了一個標志信號ping_pang,該標志在每次同步信號到來時,發生改變;同時利用ping_pang和ad_data模塊傳來的地址信號addr_ram,作為寫入緩存RAM的地址,實現當數據寫進地址(0~59)時,讀取地址(64~123)的數據,反之亦然。
(2)當發送模塊傳來的讀數據使能信號en_ram為高時,派生出一個讀數據計數器cnt_rdram,用于進行緩存RAM中數據的讀取。讀取的數據采用LVDS--Low Voltage Differential Signal模式傳輸至信號處理板,進行進一步的處理,圖5為數據緩存模塊的仿真波形圖。

圖5:數據緩存模塊波形圖
在ISE軟件環境下進行綜合、布局布線后,首先將程序下載到多通道采集模塊的硬件中;輸入模擬信號正弦波,使用在線邏輯分析儀ChipScope抓取串并轉換后的AD采集結果;AD采集結果畫圖后如圖6所示,可以看出采集模塊的數據采集功能是正常的。

圖6:串并轉換后的采集數據
本文通過FPGA來實現對AD7690的時序控制和數據傳輸,實現了對60路數據的同步采集。文中給出了系統部分功能的仿真,驗證了FPGA內部邏輯程序的正確性;程序在線下載的測試結果,也驗證了采集模塊的工作正常。通過仿真和測試結果,可以看出系統的正確性和合理性,該設計已應用于實際項目當中。
[1]楊大偉,楊秀芳,李大偉等.基于FPGA的高速串行AD轉換器控制設計與實驗研究[J].西安理工大學學報,2014(03):91-95.
[2]劉新瑋,韓巍,張泳等.基于FPGA的多通道AD同步采集卡設計[J].工程與試驗,2013(53):75-77.
[3]郭云飛,趙冬娥,張斌等.基于FPGA的高速AD采集設計[J].山西電子技術,2013(05):37-39.
[4]黃容蘭.基于FPGA的A/D轉換采集控制模塊設計[J].數據采集與處理,2009(10):237-240.
[5]何永泰.基于FPGA的多路A/D轉換控制接口設計[J].電子測量技術,2006(29):78-80.
[6]趙吉成,王智勇.xilinx FPGA設計與實踐教程[M].西安:西安電子科技大學出版社,2012:26-40.
[7]田耘,徐文波.xilinx FPGA開發實用教程[M].北京:清華大學出版社,2008:295-316.
作者單位上海船舶電子設備研究所 上海市 201108