如何設(shè)計基于FPGA和USB2.0的高精度數(shù)據(jù)采集系統(tǒng)?
現(xiàn)代電子偵查技術(shù)要求能夠?qū)ν獠磕M信號進(jìn)行精確提取和分析,從而對數(shù)據(jù)采集的精度提出了很高的要求,本文提出了一種以FPGA 作為主控制器的高精度500M 數(shù)據(jù)采集系統(tǒng)設(shè)計方法,詳細(xì)地闡述了各硬件平臺的具體構(gòu)成。最后利用QUARTUS 內(nèi)部的嵌入式邏輯分析儀(SignalTap ii)可以觀察到被采集到的信號并且對數(shù)據(jù)的有效位數(shù)及性能進(jìn)行簡略分析。
本文引用地址:http://2s4d.com/article/201808/385071.htm0 引言
隨著數(shù)字通信技術(shù)的逐步發(fā)展,高速數(shù)據(jù)采集系統(tǒng)已經(jīng)逐步取代傳統(tǒng)的數(shù)據(jù)采集系統(tǒng),其廣泛應(yīng)用在眾多場合。新一代可編程邏輯器件FPGA 都擁有較多的IO 端口以及強(qiáng)大的數(shù)據(jù)處理能力,這也為高速高精度數(shù)據(jù)采集系統(tǒng)的研發(fā)提供了基礎(chǔ)條件。
1 工作原理
本文設(shè)計的數(shù)據(jù)采集卡硬件原理框圖1 如下所示。
如圖1 所示,前端模擬電路將外界的模擬信號轉(zhuǎn)化成為ADC能夠接收到的數(shù)據(jù)格式;高速時鐘電路提供500MHz 的高速時鐘,ADC 在此時鐘作用下,進(jìn)行ADC 變換。在整個數(shù)據(jù)采集卡中,FPGA 是進(jìn)行采集控制,以及數(shù)據(jù)接收的核心。FPGA 按照1 :4 的比率對將接收到的500MHz 的LVDS 差分?jǐn)?shù)據(jù)流進(jìn)行分流和降速。
數(shù)據(jù)分流之后由于數(shù)據(jù)速率與USB 接口數(shù)據(jù)傳輸速度不同,所以還要進(jìn)行FIFO 緩沖。FIFO 的寫時鐘與串行收發(fā)器保持同步,當(dāng)FIFO 緩沖器被寫滿之后,由FPGA 讀取FIFO 緩沖器中的數(shù)據(jù),并且將數(shù)據(jù)通過USB 接口芯片傳輸?shù)缴衔粰C(jī)中進(jìn)行顯示或者存儲。
2 系統(tǒng)設(shè)計
數(shù)據(jù)采集卡主要包括高速A/D 轉(zhuǎn)換模塊、FPGA 主控模塊和USB 接口電路三個模塊。
2.1 高速A/D 轉(zhuǎn)換模塊
ADC 芯片作為模數(shù)轉(zhuǎn)換的核心,設(shè)計采用TI 公司推出的ADS5463,其采用流水線型結(jié)構(gòu),最高采樣速度500MSPS,精度12位,擁有高速差分?jǐn)?shù)字接口LVDS.
對于高速ADC 采樣電路,模擬信號輸入接口的設(shè)計不僅要保證足夠的傳輸帶寬而且要完成將單端的輸入信號變成差分信號的功能。本設(shè)計使用射頻變壓器將單端輸入轉(zhuǎn)換為差分輸入,并通過TI 公司生產(chǎn)的可級聯(lián)中頻放大器THS9001 芯片實現(xiàn)中頻信號放大的功能。
在A/D 轉(zhuǎn)換模塊中,采樣始終的質(zhì)量非常重要。在本文的設(shè)計中,采用了鎖相環(huán)芯片CDCM61001 生成采樣時鐘,并利用FPGA內(nèi)部PLL 資源倍頻生成采樣時鐘作為備用的采樣時鐘。本設(shè)計是用25M 的時鐘倍頻20 倍生成500M 以LVPECL 格式的差分電平形式。
高速A/D 轉(zhuǎn)換模塊的原理圖如圖2 所示:
2.2 FPGA 主控模塊
FPGA 是整個采集模塊的控制核心,其主要的功能是接收數(shù)據(jù),并且對數(shù)據(jù)進(jìn)行降速、分流以及緩沖,并且將數(shù)據(jù)傳通過USB接口傳輸給上位機(jī)。在本文的設(shè)計設(shè)計中,選擇Cyclone II 系列的EP2C35F672C6,它屬于一款中等密度的FPGA,相比較于ASIC低得多的成本在單片機(jī)上實現(xiàn)復(fù)雜的數(shù)字系統(tǒng)。
設(shè)計使用FPGA 的Bank3 和Bank4 接收來自ADS5463 輸出的高速LVDS 數(shù)據(jù),包括DRY(數(shù)據(jù)輸出準(zhǔn)備好)以及OVR(數(shù)據(jù)溢出位)。Bank5 和Bank6 用于USB 接口芯片的控制,其余BANK 留作擴(kuò)展之用。
在FPGA 主控模塊中,AD 輸出信號和時鐘信號被傳輸?shù)紽PGA 中的DIFFIO_RX p/n 通道上。其中p 表示正差分通道信號,而n 表示負(fù)差分通道信號。在這部分的軟件設(shè)計中,使用altvds模塊接收ADC 的輸出數(shù)字信號、始終信號,并且利用DMUX 對數(shù)據(jù)流進(jìn)行串行- 并行轉(zhuǎn)換,以方便對輸入信號的后續(xù)操作。
數(shù)據(jù)流在DMUX 模塊的仿真結(jié)果如圖3 所示。
如圖3 所示,Data_in 是一路500MHz 的數(shù)據(jù)流,而dout1,2,3,4 為Data_in 通過DMUX 進(jìn)行降速和分流之后的結(jié)果。從圖中可以看出,500MHz 的高速數(shù)據(jù)流經(jīng)過DMUX 降速、分流之后的輸出較干凈、平滑,在高速狀態(tài)下,達(dá)到這種結(jié)果是比較理想的,對系統(tǒng)設(shè)計上也是很有利的。
經(jīng)過DMUX 降速之后的數(shù)據(jù)流已經(jīng)達(dá)到了FPGA 的處理要求,但是由于FPGA 的處理速度和與上位機(jī)相連的USB 接口速率不匹配,為此需要采用FIFO 來進(jìn)行緩沖。在本文的設(shè)計中,采用兩個容量為4K,寬度為32 位的FIFO 來來作為FPGA 與USB 接口之間的數(shù)據(jù)緩沖。FPGA 接收高速DMUX 降速后的數(shù)據(jù)流,并且寫入到FIFO 中,當(dāng)FIFO 寫滿8K 之后,啟動讀始終,將FIFO 中的數(shù)據(jù)通過USB 接口分批讀取到上位機(jī)中。
2.3 USB 接口電路設(shè)計
USB 接口的主要功能是將FPGA 緩沖區(qū)中的數(shù)據(jù)讀取到上位機(jī)中。在本文的設(shè)計中,USB 接口電路采用CYPRESS 公司CY7C68013A 芯片。CY7C68013A 芯片集成了串行接口引擎來方便讀取FPGA 中的數(shù)據(jù)。芯片采用2MHz 的時鐘信號,同時使用外部EEPROM 存儲固件程序。在USB 接口電路的初始化過程中,首先需要從EEPROM 中讀取固件程序。FPGA 通過USB 接口與上位機(jī)進(jìn)行數(shù)據(jù)傳送的流程圖如圖4 所示。
如圖4 所示,EZ-USB FX2 芯片中包含有GPIF 和SlavFIFO 兩種接口方式,可以滿足不同數(shù)據(jù)流速度以及用戶對數(shù)據(jù)處理實時性的要求。在CY7C68013A 芯片中,其接口時鐘與FPGA中的IFCLK 引腳連接,從而在FPGA 中的FIFO 緩沖寫滿時,F(xiàn)PGA可以控制USB 接口電路開始從FIFO 緩沖區(qū)中讀取數(shù)據(jù)。
USB 接口的主要工作室實現(xiàn)對FIFO 緩沖區(qū)中數(shù)據(jù)的讀取,因此其設(shè)計的邏輯也主要是對FIFO 讀、寫狀態(tài)機(jī)的監(jiān)控,其實現(xiàn)的流程如下:在接收到數(shù)據(jù)讀指令之后,分成8 次讀取FIFO中的128 位數(shù)據(jù),并且將這些數(shù)據(jù)一起存放到FPGA 控制寄存器組中;將FPGA 的FIFO 中的數(shù)據(jù)讀出,并且寫入到EP6 端點緩沖區(qū)中。狀態(tài)機(jī)先由空閑狀態(tài)進(jìn)入等待狀態(tài);當(dāng)EP2 不為空時,進(jìn)入讀狀態(tài)EP2 ;當(dāng)讀命令有效時,那么就進(jìn)行數(shù)據(jù)的讀取并且發(fā)送相應(yīng)的命令,之后回到空閑狀態(tài);在等待狀態(tài)下,當(dāng)EP2 為空,EP6 不滿時,開始寫EP6,寫滿后也回到空閑狀態(tài)。
評論