丁永紅 劉 璐 馬鐵華
(1.中北大學 電子測試技術國家重點實驗室,山西 太原 030051;2.中北大學 儀器科學與動態測試教育部重點實驗室,山西 太原 030051)
隨著數字通信技術的逐步發展,高速數據采集系統已經逐步取代傳統的數據采集系統,其廣泛應用在眾多場合。新一代可編程邏輯器件FPGA都擁有較多的IO端口以及強大的數據處理能力,這也為高速高精度數據采集系統的研發提供了基礎條件。
本文設計的數據采集卡硬件原理框圖1如下所示。

圖1 數據采集卡硬件原理圖
如圖1所示,前端模擬電路將外界的模擬信號轉化成為ADC能夠接收到的數據格式;高速時鐘電路提供500MHz的高速時鐘,ADC在此時鐘作用下,進行ADC變換。在整個數據采集卡中,FPGA是進行采集控制,以及數據接收的核心。FPGA按照1:4的比率對將接收到的500MHz的LVDS差分數據流進行分流和降速。數據分流之后由于數據速率與USB接口數據傳輸速度不同,所以還要進行FIFO緩沖。FIFO的寫時鐘與串行收發器保持同步,當FIFO緩沖器被寫滿之后,由FPGA讀取FIFO緩沖器中的數據,并且將數據通過USB接口芯片傳輸到上位機中進行顯示或者存儲。
數據采集卡主要包括高速A/D轉換模塊、FPGA主控模塊和USB接口電路三個模塊。
ADC芯片作為模數轉換的核心,設計采用TI公司推出的ADS5463,其采用流水線型結構,最高采樣速度500MSPS,精度12位,擁有高速差分數字接口LVDS。
對于高速ADC采樣電路,模擬信號輸入接口的設計不僅要保證足夠的傳輸帶寬而且要完成將單端的輸入信號變成差分信號的功能。本設計使用射頻變壓器將單端輸入轉換為差分輸入,并通過TI公司生產的可級聯中頻放大器THS9001芯片實現中頻信號放大的功能。
在A/D轉換模塊中,采樣始終的質量非常重要。在本文的設計中,采用了鎖相環芯片CDCM61001生成采樣時鐘,并利用FPGA內部PLL資源倍頻生成采樣時鐘作為備用的采樣時鐘。本設計是用25M的時鐘倍頻20倍生成500M以LVPECL格式的差分電平形式。
高速A/D轉換模塊的原理圖如圖2所示:

圖2 高速A/D轉換模塊原理圖
FPGA是整個采集模塊的控制核心,其主要的功能是接收數據,并且對數據進行降速、分流以及緩沖,并且將數據傳通過USB接口傳輸給上位機。在本文的設計設計中,選擇Cyclone II系列的EP2C35F672C6,它屬于一款中等密度的FPGA,相比較于ASIC低得多的成本在單片機上實現復雜的數字系統。
設計使用FPGA的Bank3和Bank4接收來自ADS5463輸出的高速LVDS數據,包括DRY(數據輸出準備好)以及OVR(數據溢出位)。Bank5和Bank6用于USB接口芯片的控制,其余BANK留作擴展之用。
在FPGA主控模塊中,AD輸出信號和時鐘信號被傳輸到FPGA中的DIFFIO_RX p/n通道上。其中p表示正差分通道信號,而n表示負差分通道信號。在這部分的軟件設計中,使用altvds模塊接收ADC的輸出數字信號、始終信號,并且利用DMUX對數據流進行串行-并行轉換,以方便對輸入信號的后續操作。
數據流在DMUX模塊的仿真結果如圖3所示。

圖3 altlvds模塊的仿真波形圖
如圖3所示,Data_in是一路500MHz的數據流,而dout1,2,3,4為Data_in通過DMUX進行降速和分流之后的結果。從圖中可以看出,500MHz的高速數據流經過DMUX降速、分流之后的輸出較干凈、平滑,在高速狀態下,達到這種結果是比較理想的,對系統設計上也是很有利的。
經過DMUX降速之后的數據流已經達到了FPGA的處理要求,但是由于FPGA的處理速度和與上位機相連的USB接口速率不匹配,為此需要采用FIFO來進行緩沖。在本文的設計中,采用兩個容量為4K,寬度為32位的FIFO來來作為FPGA與USB接口之間的數據緩沖。FPGA接收高速DMUX降速后的數據流,并且寫入到FIFO中,當FIFO寫滿8K之后,啟動讀始終,將FIFO中的數據通過USB接口分批讀取到上位機中。
USB接口的主要功能是將FPGA緩沖區中的數據讀取到上位機中。在本文的設計中,USB接口電路采用CYPRESS公司CY7C68013A芯片。CY7C68013A芯片集成了串行接口引擎來方便讀取FPGA中的數據。芯片采用2MHz的時鐘信號,同時使用外部EEPROM存儲固件程序。在USB接口電路的初始化過程中,首先需要從EEPROM中讀取固件程序。FPGA通過USB接口與上位機進行數據傳送的流程圖如圖4所示。

圖4 USB接口電路

圖5 數據采樣結果圖
如圖4所示,EZ-USB FX2芯片中包含有GPIF和Slav FIFO兩種接口方式,可以滿足不同數據流速度以及用戶對數據處理實時性的要求。在CY7C68013A芯片中,其接口時鐘與FPGA中的IFCLK引腳連接,從而在FPGA中的FIFO緩沖寫滿時,FPGA可以控制USB接口電路開始從FIFO緩沖區中讀取數據。
USB接口的主要工作室實現對FIFO緩沖區中數據的讀取,因此其設計的邏輯也主要是對FIFO讀、寫狀態機的監控,其實現的流程如下:在接收到數據讀指令之后,分成8次讀取FIFO中的128位數據,并且將這些數據一起存放到FPGA控制寄存器組中;將FPGA的FIFO中的數據讀出,并且寫入到EP6端點緩沖區中。狀態機先由空閑狀態進入等待狀態;當EP2不為空時,進入讀狀態EP2;當讀命令有效時,那么就進行數據的讀取并且發送相應的命令,之后回到空閑狀態;在等待狀態下,當EP2為空,EP6不滿時,開始寫EP6,寫滿后也回到空閑狀態。
采用以產生頻率為20MHz的高頻信號發生器,峰值為2.36Vpp的正弦波作為模擬輸入。系統的測試采用SignalTapII來獲取兩路數據采樣數據,并且模擬轉后后存入到FIFO中的數據和信號。采樣數據的模擬波形圖如圖5所示。
從圖5可以看出,由于兩路輸入的信號存在一定的增益和偏移誤差,從而導致所收集數據的信號增幅值之間,產生了不一致現象。采用快速傅里葉變化分析法,首先在輸入的輸入信號上采集N個點做快速傅里葉變換,假設信號譜線在K和N-K-1之間,那么就可以得到信噪諧波比SINAD:

為避免信號頻譜泄露,要求波形的采樣率fs和輸入信號頻率f0,滿足其f0=fs*M/N,其中M為一個合適的正整數。
根據公式

此方法可以進行ADC的有效位數的測試,實驗ENOB,將其取6次得到的平均結果約為6.2。后面還要將采集到的數據進行進一步的分析,來檢驗通道間的不匹配對系統性能的影響。
介紹了一種基于FPGA基于FPGA和USB2.0的高精度數據采集系統,通過FPGA對AD的工作方式,進行合理的配置,并充分利用其內部自帶的邏輯資源,實現對數據的緩存,避免使用其他微處理器進行的數據處理,本設計可以很好的減少芯片數和空間體積,更有利于FPGA的發揮,具有簡單、靈活、功能多樣的特點。
[1]沈蘭蓀.高速數據采集系統的原理與應用[M].北京:人民郵電出版社,1995.(101-102)
[2]楊文利,楊耕,趙明國.一種基于USB接口的移動機器人運動控制系統 [J].微計算機信息,2007,(5—2):223—225.
[3]張立,王麗,藍翱華.高速雙通道采樣芯片AT84AD001B及其應用電子元器件應用[J].2009,11(5)
[4]冼友倫.基于FPGA的數字濾波器設計與高速數據傳輸[D].西安:西安電子科技大學,2009.
[5]錢峰,EZ-USB FX2單片機原理、編程及應用[M].北京航空航天大學出版社,2006,3.
[6]王學梅.基于FPGA的有限沖激相應數字濾波器的研究及實現[D].長沙:中南大學,2004.
[7]EDA先鋒工作室.Altera FPGA/CPLD設計(基礎篇)[M].北京:人民郵電出版,2008.
[8]兆坤,王偉,馬云等.一種新的高分辨率ADC有效位數測試方法[J].國防科技大學學報,2008,26(4)
[9]沈蘭蓀.高速數據采集系統的原理與應用[M].北京:人民郵電出版社,2009.7.1-20
[10]張偉,韓一明,吳新玲.基于FPGA的高速數據采集系統的設計[J]電力情報,2010,(03)
[11]段吉海,黃智偉.基于CPLD/FPGA的數字通訊系統建模與設計[M].北京:電子工業出版社,2009.09.123-145
[12]胡曉軍,張愛成.USB接口開發技術[J].西安:西安電子科技大學出版社,2005.
[13]何道君,譚明.FPGA的設計與應用[J].清華大學出版社,2006.09.1-15