文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190460
中文引用格式: 易志強,韓賓,,江虹,,等. 基于FPGA的多通道同步實時高速數(shù)據(jù)采集系統(tǒng)設計[J].電子技術應用,2019,,45(6):70-74.
英文引用格式: Yi Zhiqiang,,Han Bin,Jiang Hong,,et al. Design of multi-channel synchronous real-time high-speed data acquisition system based on FPGA[J]. Application of Electronic Technique,,2019,45(6):70-74.
0 引言
隨著科學技術的快速發(fā)展,,數(shù)據(jù)采集系統(tǒng)已廣泛應用于航天,、軍事,、工業(yè)、醫(yī)療等各個領域,,尤其在高精度產(chǎn)品的檢測和監(jiān)控項目中發(fā)揮著至關重要的作用[1],。在實際工程應用中,要求采集系統(tǒng)具有高速率,、高精度,、實時處理、系統(tǒng)穩(wěn)定性好和通道數(shù)量多等特點,。但是,,傳統(tǒng)的數(shù)據(jù)采集方案多數(shù)以ARM處理器(Advanced RISC Machine,ARM)或數(shù)字信號處理器(Digital Signal Processing,,DSP)作為控制核心,,并不能有效解決高速數(shù)據(jù)采集處理中實時性和同步性的技術難題[2]。
與DSP和ARM相比,,FPGA在數(shù)據(jù)采集領域有著極其重要的地位,。FPGA具有時鐘頻率高、內(nèi)部延時小,、純硬件并行控制,、運算速度快、編程配置靈活,、開發(fā)周期短,、抗干擾能力強、內(nèi)部資源豐富等優(yōu)點,,非常適用于實時高速數(shù)據(jù)采集[3-4],。
針對上述問題,本文設計了一種以FPGA作為主要處理器的16通道實時高速高精度的同步數(shù)據(jù)采集系統(tǒng),,本方案在實際監(jiān)測工程中的采樣頻率為200 kHz,,運用FPGA合理地控制和協(xié)調數(shù)據(jù)流在各個模塊之間傳輸,進而實現(xiàn)系統(tǒng)所需求的實時,、同步和高速采集等功能,。
1 系統(tǒng)總體設計
1.1 系統(tǒng)總體設計結構
本系統(tǒng)的總體結構設計如圖1所示,該系統(tǒng)由數(shù)據(jù)前采集前端處理,、數(shù)據(jù)存儲系統(tǒng),、選通開關控制系統(tǒng)和FPGA核心控制系統(tǒng)四部分構成。采集前端處理主要對輸入測量系統(tǒng)的模擬信號進行濾波處理和幅值控制,,以保證輸入采集芯片的模擬信號更加穩(wěn)定,;FPGA核心控制系統(tǒng)通過使用FPGA作為核心控制器件,實現(xiàn)了數(shù)據(jù)同步處理,、實時采集,、數(shù)據(jù)緩存,、時序約束、端口控制,、數(shù)據(jù)判讀數(shù)、據(jù)存儲等功能,;數(shù)據(jù)存儲系統(tǒng)的功能是將判讀后的數(shù)據(jù)實時存儲到Flash中,;選通開關控系統(tǒng)則是利用1選8多路復用開關ADG1408和固態(tài)繼電器G3FD-X03SN實現(xiàn)被測設備的輸入信號選通和電源通斷控制,使被測設備能安全快速地進入到監(jiān)測狀態(tài),。本系統(tǒng)需要對8個被測設備進行同步實時循環(huán)測量與控制,,并對測量數(shù)據(jù)進行記錄判讀、傳輸與存儲,。主要包括:供電管理與電源控制,、直流電壓電流實時監(jiān)測、模擬信號通道切換,、射頻信號切換,、數(shù)據(jù)存儲等功能。
1.2 系統(tǒng)工作原理
系統(tǒng)上電后,,等待FPGA初始化完成,,進入等待連接狀態(tài)。當外部輸入相關命令參數(shù)后,,由FPGA接收并解析命令,。先控制系統(tǒng)內(nèi)部選通開關工作,將被選中的設備信號接入采集系統(tǒng)中,。然后向被測設備發(fā)出控制信息,,同時采集系統(tǒng)實時監(jiān)控被測設備的供電情況,隨后,,將采集的數(shù)據(jù)緩存到FPGA內(nèi)部隨機存取存儲器(Random Access Memory,,RAM)中等待處理。最后將采集到的數(shù)據(jù)通過FPGA片上先進先出隊列(First Input First Output,,F(xiàn)IFO)回傳到外部監(jiān)視器上進行實時顯示,,按照相應規(guī)則進行判決并存儲,形成測試數(shù)據(jù)報表,。
2 部分硬件電路設計
2.1 信號調理電路設計
由于輸入系統(tǒng)的被測信號的電壓幅值為27 V,,無法直接對被測信號進行采集處理,因此本系統(tǒng)設計了信號調理電路對輸入系統(tǒng)的模擬信號進行濾波處理和幅值控制,。該電路通過采用可編程放大器AD8065設計了一個具有較平坦通帶的二階有源巴特沃斯低通濾波器,,對前端輸入模擬電壓信號進行濾波處理。隨后,,利用芯片MAX4080將模擬電流信號轉換成模擬電壓信號,。然后,,使用高精度的電阻網(wǎng)絡分壓方式對被測模擬電壓進行比例降壓,再經(jīng)過高性能運放AD8276進行模擬電壓調理,。最后,,傳送到模擬數(shù)字轉換器(Analog-to-Digital Converter,ADC)進行采樣,。經(jīng)過該硬件調理后,,可以保障輸入采集芯片的模擬電壓信號具有平滑、穩(wěn)定的特性,。
2.2 A/D轉換電路設計
A/D模數(shù)轉換器是數(shù)據(jù)采集的核心器件,,影響著整個系統(tǒng)的采樣精度、采樣速率和數(shù)據(jù)吞吐量,,所以芯片選型是采集系統(tǒng)設計中最關鍵的一步,。本系統(tǒng)設計采用ADI公司的高精度、低功耗,、電荷再次分配逐次逼近型模數(shù)轉換器AD7609,,該產(chǎn)品是一款8通道、18位,、真差分,、同步采樣模數(shù)轉換芯片。本系統(tǒng)采用兩片AD7609芯片構成了16路通道的數(shù)據(jù)采集電路,。AD7609硬件電路圖如圖2所示,,將并行/串行接口選擇輸入端與3.3 V電平直接相連,再將芯片引腳CONVST A和CONVST B短接在一起,,并施加同一個轉換信號可以實現(xiàn)8個通道同時轉換,。
2.3 存儲電路設計
數(shù)據(jù)采集完成后,將相應通道的采樣數(shù)據(jù)發(fā)送到監(jiān)視器進行實時顯示和存儲到Flash閃存中,,等待外部控制器發(fā)送讀取命令,。本系統(tǒng)采用ST公司的S25FL128P Flash存儲器進行實時存儲。該芯片存儲容量為128 Mbit,,通過SPI接口與外部控制器建立通信,,接口的時鐘頻率最大可達到104 MHz。該芯片具有設計簡單,、存儲數(shù)據(jù)穩(wěn)定和價格低廉等特點,,具有廣泛的實用性。Flash存儲電路如圖3所示,。
3 系統(tǒng)軟件設計
FPGA軟件設計主要劃分成系統(tǒng)同步時鐘,、數(shù)據(jù)采集、數(shù)據(jù)緩存、數(shù)據(jù)存儲4個模塊,,下面依次介紹各個模塊的設計,。
3.1 系統(tǒng)同步時鐘模塊
由于A/D采樣和Flash數(shù)據(jù)存儲時鐘均為50 MHz,而數(shù)據(jù)處理和RAM緩存讀寫控制的時鐘均為100 MHz,。因此,,為了保證系統(tǒng)各模塊之間數(shù)據(jù)傳輸與處理的同步性,本系統(tǒng)采用FPGA內(nèi)部的鎖相環(huán)(Phase Locked Loop,,PLL)IP核倍頻或分頻生成100 MHz和50 MHz的時鐘,。通過調用鎖相環(huán)設計出一個具有低抖動、低延遲的系統(tǒng)時鐘,,保障了高速采集系統(tǒng)運行更加穩(wěn)定[5-6],。與大多數(shù)時鐘同步方案不同,,該系統(tǒng)同步時鐘模塊除了使用PLL之外,,還要通過時序約束的方式來減小數(shù)據(jù)與時鐘之間偏斜,重新建立時鐘偏斜的保持時間(Time Setup,,TSU)如圖4所示,。通過時序約束不僅能實現(xiàn)系統(tǒng)時鐘同步,還能避免出現(xiàn)數(shù)據(jù)傳輸錯誤,。
3.2 數(shù)據(jù)采集模塊
FPGA對AD7609的控制主要是通過對轉換信號CONVST AB,、片選信號CS、時鐘信號SCLK進行控制,,完成采樣率調整和采樣啟??刂啤H鐖D5(a)所示,,本模塊通過控制AD7609在轉換期間讀取數(shù)據(jù)的方式進行采樣,。當檢測到BUSY下降沿時,則完成所有通道的數(shù)據(jù)轉換,。從圖5(b)的仿真圖可以看出,,通過使用系統(tǒng)同步時鐘模塊可以實現(xiàn)16路通道的同步采集功能。由于AD7609的輸出編碼方式為二進制補碼,,因此采集完成后可以通過ADC傳遞函數(shù)得到轉換后數(shù)字信號代表的幅值,,轉換公式為:
式中,CODE為轉換后的二進制碼,,V+和V-是電源供電電壓,,REF則為基準電壓。
3.3 數(shù)據(jù)緩存模塊
由于系統(tǒng)為16通道同步數(shù)據(jù)采集,,因此每完成一次采集會產(chǎn)生大量待處理數(shù)據(jù),。并且由于FPGA與外部處理器通信之間存在硬件差異,會導致其與外部處理器之間存在傳輸處理速度不匹配的問題,。因此,,為了滿足系統(tǒng)所需實時存儲和傳輸要求,,本系統(tǒng)采用了一種乒乓結構的傳輸方式[6]進行數(shù)據(jù)緩存。利用FPGA內(nèi)置的知識產(chǎn)權核(Intellectual Property core,,IP)資源,,在ISE14.7軟件操作平臺上,構建系統(tǒng)所需18 bit位寬的塊RAM和FIFO各兩片進行輪流讀寫操作,,實現(xiàn)數(shù)據(jù)實時緩存的功能,。如圖6所示,若使能信號Crl_1處于高電平,,則控制RAM_1進行存儲,。當RAM_1存儲滿后,產(chǎn)生另一個使能控制信號Crl_2并將使能信號Crl_1電平翻轉,,由RAM_2繼續(xù)行數(shù)據(jù)存儲,。當使能信號Crl_2到來時,等待系統(tǒng)判讀生效后,,則控制FIFO進行數(shù)據(jù)緩存,。若該控制信號處于高電平則FIFO_1進行數(shù)據(jù)緩存。當FIFO_1緩存滿后則將使能控制信號Crl_2的電平翻轉,,由FIFO_2繼續(xù)緩存,,并將FIFO_1中的數(shù)據(jù)通過某種協(xié)議傳送到外部控制器進行處理。如此周而復始,,在RAM和FIFO緩存器中進行乒乓操作,,可以實現(xiàn)系統(tǒng)所需實時存儲和傳輸功能。
如圖7數(shù)據(jù)緩存仿真圖所示,,通過時序約束實現(xiàn)了兩個不同緩存器之間的同步讀寫操作,,很好地完成了乒乓式的數(shù)據(jù)緩存功能。
3.4 數(shù)據(jù)存儲模塊
利用外部處理器設定一個閾值,,將緩存進RAM中的數(shù)據(jù)與閾值比對,。若大于閾值電壓,則判讀無效將被測設備電源和信號選通開關斷開,;反之,,數(shù)據(jù)判讀有效,需要將采集時間,、外部命令輸入以及采集數(shù)據(jù)組幀后,,實時存儲到Flash中。本模塊利用FPGA通過SPI總線與M25P128芯片建立主從關系,,實現(xiàn)了Sector擦除,、Page編程、地址管理、數(shù)據(jù)讀取等功能,,從而快速,、準確地在Flash芯片中實現(xiàn)數(shù)據(jù)讀寫功能。該模塊采用了摩爾狀態(tài)機實現(xiàn)狀態(tài)跳轉,,既消除了狀態(tài)跳轉時造成的毛刺,,又很好地完成了存儲與讀取功能。數(shù)據(jù)存儲與讀取狀態(tài)圖如圖8所示,。圖中地址管理除了實現(xiàn)頁面讀寫地址轉換外,,還要將第一個頁面用于存儲下最后一次存儲的地址,在斷電重啟后,,能緊接著掉電前的數(shù)據(jù)繼續(xù)進行數(shù)據(jù)存儲,。
Flash數(shù)據(jù)存儲仿真圖如圖9所示,數(shù)據(jù)存儲功能是將8 bit的并行數(shù)據(jù)通過Flash_SI引腳串行輸入到Flash芯片中實現(xiàn)數(shù)據(jù)存儲功能,。數(shù)據(jù)讀取功能則需要創(chuàng)建一個8位的移位寄存器將Flash_SO引腳的串行數(shù)據(jù)轉為并行數(shù)據(jù),,傳輸?shù)酵獠刻幚砥鬟M行處理。
4 結論
針對傳統(tǒng)數(shù)據(jù)采集處理系統(tǒng)不能有效地實現(xiàn)數(shù)據(jù)在傳輸和存儲過程中的同步性,、實時性問題,,本文設計了一種基于FPGA的16通道高精度同步實時高速采集系統(tǒng),。該系統(tǒng)采用FPGA控制AD7609在轉換期間讀取數(shù)據(jù)的傳輸方式,,使系統(tǒng)能夠達到200 kHz采樣率。通過合理利用FPGA內(nèi)部資源,,實現(xiàn)數(shù)據(jù)緩存的乒乓傳輸方式,,從而完成了數(shù)據(jù)的實時傳輸和Flash的實時存儲功能,增強了數(shù)據(jù)傳輸和存儲的可靠性,、有效性和穩(wěn)定性,,極大地發(fā)揮出了FPGA的高速數(shù)據(jù)并行處理能力和時序約束能力。本系統(tǒng)已成功應用于某實際工程監(jiān)測項目中,,具有一定的應用價值,。
參考文獻
[1] 黃鴻靖.面向信號模擬的實時數(shù)據(jù)采集與塊數(shù)據(jù)傳輸技術研究[D].杭州:浙江大學,2018.
[2] 趙樹磊,,劉敬猛,,張慧,等.基于FPGA臨空數(shù)據(jù)采集系統(tǒng)的設計[J].電子技術應用,,2018,,44(12):123-126.
[3] 夏宇聞.Verilog數(shù)字系統(tǒng)設計教程[M].北京:北京航空航天大學出版社,2005.
[4] 王建中,,楊璐.高速實時系統(tǒng)數(shù)據(jù)采集與傳輸[J].計算機科學,,2016,43(S2):604-606.
[5] 皮代軍,張海勇,,葉顯陽,,等.基于FPGA的高速實時數(shù)據(jù)采集系統(tǒng)設計[J].現(xiàn)代電子技術,2009,,32(6):12-14.
[6] 張素萍,,李朝強,張建芬.一種高速實時數(shù)據(jù)采集處理系統(tǒng)設計[J].火力與指揮控制,,2016,,41(7):125-129.
作者信息:
易志強,韓 賓,,江 虹,,張秋云
(西南科技大學 信息工程學院,四川 綿陽621010)