如何設計基于FPGA和USB2.0的高精度數據采集系統?
現代電子偵查技術(shù)要求能夠對外部模擬信號進(jìn)行精確提取和分析,從而對數據采集的精度提出了很高的要求,本文提出了一種以FPGA 作為主控制器的高精度500M 數據采集系統設計方法,詳細地闡述了各硬件平臺的具體構成。最后利用QUARTUS 內部的嵌入式邏輯分析儀(SignalTap ii)可以觀(guān)察到被采集到的信號并且對數據的有效位數及性能進(jìn)行簡(jiǎn)略分析。
本文引用地址:http://dyxdggzs.com/article/201808/385071.htm0 引言
隨著(zhù)數字通信技術(shù)的逐步發(fā)展,高速數據采集系統已經(jīng)逐步取代傳統的數據采集系統,其廣泛應用在眾多場(chǎng)合。新一代可編程邏輯器件FPGA 都擁有較多的IO 端口以及強大的數據處理能力,這也為高速高精度數據采集系統的研發(fā)提供了基礎條件。
1 工作原理
本文設計的數據采集卡硬件原理框圖1 如下所示。

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

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

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

如圖4 所示,EZ-USB FX2 芯片中包含有GPIF 和SlavFIFO 兩種接口方式,可以滿(mǎn)足不同數據流速度以及用戶(hù)對數據處理實(shí)時(shí)性的要求。在CY7C68013A 芯片中,其接口時(shí)鐘與FPGA中的IFCLK 引腳連接,從而在FPGA 中的FIFO 緩沖寫(xiě)滿(mǎn)時(shí),FPGA可以控制USB 接口電路開(kāi)始從FIFO 緩沖區中讀取數據。
USB 接口的主要工作室實(shí)現對FIFO 緩沖區中數據的讀取,因此其設計的邏輯也主要是對FIFO 讀、寫(xiě)狀態(tài)機的監控,其實(shí)現的流程如下:在接收到數據讀指令之后,分成8 次讀取FIFO中的128 位數據,并且將這些數據一起存放到FPGA 控制寄存器組中;將FPGA 的FIFO 中的數據讀出,并且寫(xiě)入到EP6 端點(diǎn)緩沖區中。狀態(tài)機先由空閑狀態(tài)進(jìn)入等待狀態(tài);當EP2 不為空時(shí),進(jìn)入讀狀態(tài)EP2 ;當讀命令有效時(shí),那么就進(jìn)行數據的讀取并且發(fā)送相應的命令,之后回到空閑狀態(tài);在等待狀態(tài)下,當EP2 為空,EP6 不滿(mǎn)時(shí),開(kāi)始寫(xiě)EP6,寫(xiě)滿(mǎn)后也回到空閑狀態(tài)。
評論