《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的多通道同步實(shí)時(shí)高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
基于FPGA的多通道同步實(shí)時(shí)高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
2019年電子技術(shù)應(yīng)用第6期
易志強(qiáng),韓 賓,江 虹,張秋云
西南科技大學(xué) 信息工程學(xué)院,四川 綿陽(yáng)621010
摘要: 為了滿足精密設(shè)備監(jiān)測(cè)過(guò)程中對(duì)數(shù)據(jù)采集的精確性、實(shí)時(shí)性和同步性的嚴(yán)格要求,設(shè)計(jì)了一種基于FPGA的多通道實(shí)時(shí)同步高速數(shù)據(jù)采集系統(tǒng)。本系統(tǒng)采用Xilinx公司的Spartan6系列的FPGA作為核心控制器件,實(shí)現(xiàn)了數(shù)據(jù)采集控制、數(shù)據(jù)緩存、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)傳輸和同步時(shí)鐘控制等功能。經(jīng)測(cè)試驗(yàn)證,該方案具有精度高、速率快、可靠性好、實(shí)時(shí)性強(qiáng)、成本低等特點(diǎn)。
中圖分類(lèi)號(hào): TP274+.2
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.190460
中文引用格式: 易志強(qiáng),韓賓,江虹,等. 基于FPGA的多通道同步實(shí)時(shí)高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,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.
Design of multi-channel synchronous real-time high-speed data acquisition system based on FPGA
Yi Zhiqiang,Han Bin,Jiang Hong,Zhang Qiuyun
School of Information Engineering,Southwest University of Science and Technology,Mianyang 621010,China
Abstract: In order to meet the strict requirements of precision, real-time and synchronization of data acquisition in the process of precision equipment monitoring, a multi-channel, real-time and high-speed data acquisition system based on FPGA is designed. This system uses the Spartan6 series FPGA of Xilinx as the core control device, which realizes functions such as data acquisition control, data buffering, data processing, data storage, data transmission and synchronous clock control. The test shows that the scheme has the advantages of high precision, fast speed, good reliability, strong real-time performance and low cost.
Key words : FPGA;data acquisition;real-time;multi-channel

0 引言

    隨著科學(xué)技術(shù)的快速發(fā)展,數(shù)據(jù)采集系統(tǒng)已廣泛應(yīng)用于航天、軍事、工業(yè)、醫(yī)療等各個(gè)領(lǐng)域,尤其在高精度產(chǎn)品的檢測(cè)和監(jiān)控項(xiàng)目中發(fā)揮著至關(guān)重要的作用[1]。在實(shí)際工程應(yīng)用中,要求采集系統(tǒng)具有高速率、高精度、實(shí)時(shí)處理、系統(tǒng)穩(wěn)定性好和通道數(shù)量多等特點(diǎn)。但是,傳統(tǒng)的數(shù)據(jù)采集方案多數(shù)以ARM處理器(Advanced RISC Machine,ARM)或數(shù)字信號(hào)處理器(Digital Signal Processing,DSP)作為控制核心,并不能有效解決高速數(shù)據(jù)采集處理中實(shí)時(shí)性和同步性的技術(shù)難題[2]。

    與DSP和ARM相比,FPGA在數(shù)據(jù)采集領(lǐng)域有著極其重要的地位。FPGA具有時(shí)鐘頻率高、內(nèi)部延時(shí)小、純硬件并行控制、運(yùn)算速度快、編程配置靈活、開(kāi)發(fā)周期短、抗干擾能力強(qiáng)、內(nèi)部資源豐富等優(yōu)點(diǎn),非常適用于實(shí)時(shí)高速數(shù)據(jù)采集[3-4]

    針對(duì)上述問(wèn)題,本文設(shè)計(jì)了一種以FPGA作為主要處理器的16通道實(shí)時(shí)高速高精度的同步數(shù)據(jù)采集系統(tǒng),本方案在實(shí)際監(jiān)測(cè)工程中的采樣頻率為200 kHz,運(yùn)用FPGA合理地控制和協(xié)調(diào)數(shù)據(jù)流在各個(gè)模塊之間傳輸,進(jìn)而實(shí)現(xiàn)系統(tǒng)所需求的實(shí)時(shí)、同步和高速采集等功能。

1 系統(tǒng)總體設(shè)計(jì)

1.1 系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)

    本系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)如圖1所示,該系統(tǒng)由數(shù)據(jù)前采集前端處理、數(shù)據(jù)存儲(chǔ)系統(tǒng)、選通開(kāi)關(guān)控制系統(tǒng)和FPGA核心控制系統(tǒng)四部分構(gòu)成。采集前端處理主要對(duì)輸入測(cè)量系統(tǒng)的模擬信號(hào)進(jìn)行濾波處理和幅值控制,以保證輸入采集芯片的模擬信號(hào)更加穩(wěn)定;FPGA核心控制系統(tǒng)通過(guò)使用FPGA作為核心控制器件,實(shí)現(xiàn)了數(shù)據(jù)同步處理、實(shí)時(shí)采集、數(shù)據(jù)緩存、時(shí)序約束、端口控制、數(shù)據(jù)判讀數(shù)、據(jù)存儲(chǔ)等功能;數(shù)據(jù)存儲(chǔ)系統(tǒng)的功能是將判讀后的數(shù)據(jù)實(shí)時(shí)存儲(chǔ)到Flash中;選通開(kāi)關(guān)控系統(tǒng)則是利用1選8多路復(fù)用開(kāi)關(guān)ADG1408和固態(tài)繼電器G3FD-X03SN實(shí)現(xiàn)被測(cè)設(shè)備的輸入信號(hào)選通和電源通斷控制,使被測(cè)設(shè)備能安全快速地進(jìn)入到監(jiān)測(cè)狀態(tài)。本系統(tǒng)需要對(duì)8個(gè)被測(cè)設(shè)備進(jìn)行同步實(shí)時(shí)循環(huán)測(cè)量與控制,并對(duì)測(cè)量數(shù)據(jù)進(jìn)行記錄判讀、傳輸與存儲(chǔ)。主要包括:供電管理與電源控制、直流電壓電流實(shí)時(shí)監(jiān)測(cè)、模擬信號(hào)通道切換、射頻信號(hào)切換、數(shù)據(jù)存儲(chǔ)等功能。

ck1-t1.gif

1.2 系統(tǒng)工作原理

    系統(tǒng)上電后,等待FPGA初始化完成,進(jìn)入等待連接狀態(tài)。當(dāng)外部輸入相關(guān)命令參數(shù)后,由FPGA接收并解析命令。先控制系統(tǒng)內(nèi)部選通開(kāi)關(guān)工作,將被選中的設(shè)備信號(hào)接入采集系統(tǒng)中。然后向被測(cè)設(shè)備發(fā)出控制信息,同時(shí)采集系統(tǒng)實(shí)時(shí)監(jiān)控被測(cè)設(shè)備的供電情況,隨后,將采集的數(shù)據(jù)緩存到FPGA內(nèi)部隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM)中等待處理。最后將采集到的數(shù)據(jù)通過(guò)FPGA片上先進(jìn)先出隊(duì)列(First Input First Output,F(xiàn)IFO)回傳到外部監(jiān)視器上進(jìn)行實(shí)時(shí)顯示,按照相應(yīng)規(guī)則進(jìn)行判決并存儲(chǔ),形成測(cè)試數(shù)據(jù)報(bào)表。

2 部分硬件電路設(shè)計(jì)

2.1 信號(hào)調(diào)理電路設(shè)計(jì)

    由于輸入系統(tǒng)的被測(cè)信號(hào)的電壓幅值為27 V,無(wú)法直接對(duì)被測(cè)信號(hào)進(jìn)行采集處理,因此本系統(tǒng)設(shè)計(jì)了信號(hào)調(diào)理電路對(duì)輸入系統(tǒng)的模擬信號(hào)進(jìn)行濾波處理和幅值控制。該電路通過(guò)采用可編程放大器AD8065設(shè)計(jì)了一個(gè)具有較平坦通帶的二階有源巴特沃斯低通濾波器,對(duì)前端輸入模擬電壓信號(hào)進(jìn)行濾波處理。隨后,利用芯片MAX4080將模擬電流信號(hào)轉(zhuǎn)換成模擬電壓信號(hào)。然后,使用高精度的電阻網(wǎng)絡(luò)分壓方式對(duì)被測(cè)模擬電壓進(jìn)行比例降壓,再經(jīng)過(guò)高性能運(yùn)放AD8276進(jìn)行模擬電壓調(diào)理。最后,傳送到模擬數(shù)字轉(zhuǎn)換器(Analog-to-Digital Converter,ADC)進(jìn)行采樣。經(jīng)過(guò)該硬件調(diào)理后,可以保障輸入采集芯片的模擬電壓信號(hào)具有平滑、穩(wěn)定的特性。

2.2 A/D轉(zhuǎn)換電路設(shè)計(jì)

    A/D模數(shù)轉(zhuǎn)換器是數(shù)據(jù)采集的核心器件,影響著整個(gè)系統(tǒng)的采樣精度、采樣速率和數(shù)據(jù)吞吐量,所以芯片選型是采集系統(tǒng)設(shè)計(jì)中最關(guān)鍵的一步。本系統(tǒng)設(shè)計(jì)采用ADI公司的高精度、低功耗、電荷再次分配逐次逼近型模數(shù)轉(zhuǎn)換器AD7609,該產(chǎn)品是一款8通道、18位、真差分、同步采樣模數(shù)轉(zhuǎn)換芯片。本系統(tǒng)采用兩片AD7609芯片構(gòu)成了16路通道的數(shù)據(jù)采集電路。AD7609硬件電路圖如圖2所示,將并行/串行接口選擇輸入端與3.3 V電平直接相連,再將芯片引腳CONVST A和CONVST B短接在一起,并施加同一個(gè)轉(zhuǎn)換信號(hào)可以實(shí)現(xiàn)8個(gè)通道同時(shí)轉(zhuǎn)換。

ck1-t2.gif

2.3 存儲(chǔ)電路設(shè)計(jì)

    數(shù)據(jù)采集完成后,將相應(yīng)通道的采樣數(shù)據(jù)發(fā)送到監(jiān)視器進(jìn)行實(shí)時(shí)顯示和存儲(chǔ)到Flash閃存中,等待外部控制器發(fā)送讀取命令。本系統(tǒng)采用ST公司的S25FL128P Flash存儲(chǔ)器進(jìn)行實(shí)時(shí)存儲(chǔ)。該芯片存儲(chǔ)容量為128 Mbit,通過(guò)SPI接口與外部控制器建立通信,接口的時(shí)鐘頻率最大可達(dá)到104 MHz。該芯片具有設(shè)計(jì)簡(jiǎn)單、存儲(chǔ)數(shù)據(jù)穩(wěn)定和價(jià)格低廉等特點(diǎn),具有廣泛的實(shí)用性。Flash存儲(chǔ)電路如圖3所示。

ck1-t3.gif

3 系統(tǒng)軟件設(shè)計(jì)

    FPGA軟件設(shè)計(jì)主要?jiǎng)澐殖上到y(tǒng)同步時(shí)鐘、數(shù)據(jù)采集、數(shù)據(jù)緩存、數(shù)據(jù)存儲(chǔ)4個(gè)模塊,下面依次介紹各個(gè)模塊的設(shè)計(jì)。

3.1 系統(tǒng)同步時(shí)鐘模塊

    由于A/D采樣和Flash數(shù)據(jù)存儲(chǔ)時(shí)鐘均為50 MHz,而數(shù)據(jù)處理和RAM緩存讀寫(xiě)控制的時(shí)鐘均為100 MHz。因此,為了保證系統(tǒng)各模塊之間數(shù)據(jù)傳輸與處理的同步性,本系統(tǒng)采用FPGA內(nèi)部的鎖相環(huán)(Phase Locked Loop,PLL)IP核倍頻或分頻生成100 MHz和50 MHz的時(shí)鐘。通過(guò)調(diào)用鎖相環(huán)設(shè)計(jì)出一個(gè)具有低抖動(dòng)、低延遲的系統(tǒng)時(shí)鐘,保障了高速采集系統(tǒng)運(yùn)行更加穩(wěn)定[5-6]。與大多數(shù)時(shí)鐘同步方案不同,該系統(tǒng)同步時(shí)鐘模塊除了使用PLL之外,還要通過(guò)時(shí)序約束的方式來(lái)減小數(shù)據(jù)與時(shí)鐘之間偏斜,重新建立時(shí)鐘偏斜的保持時(shí)間(Time Setup,TSU)如圖4所示。通過(guò)時(shí)序約束不僅能實(shí)現(xiàn)系統(tǒng)時(shí)鐘同步,還能避免出現(xiàn)數(shù)據(jù)傳輸錯(cuò)誤。

ck1-t4.gif

3.2 數(shù)據(jù)采集模塊

    FPGA對(duì)AD7609的控制主要是通過(guò)對(duì)轉(zhuǎn)換信號(hào)CONVST AB、片選信號(hào)CS、時(shí)鐘信號(hào)SCLK進(jìn)行控制,完成采樣率調(diào)整和采樣啟??刂啤H鐖D5(a)所示,本模塊通過(guò)控制AD7609在轉(zhuǎn)換期間讀取數(shù)據(jù)的方式進(jìn)行采樣。當(dāng)檢測(cè)到BUSY下降沿時(shí),則完成所有通道的數(shù)據(jù)轉(zhuǎn)換。從圖5(b)的仿真圖可以看出,通過(guò)使用系統(tǒng)同步時(shí)鐘模塊可以實(shí)現(xiàn)16路通道的同步采集功能。由于AD7609的輸出編碼方式為二進(jìn)制補(bǔ)碼,因此采集完成后可以通過(guò)ADC傳遞函數(shù)得到轉(zhuǎn)換后數(shù)字信號(hào)代表的幅值,轉(zhuǎn)換公式為:

    ck1-gs1.gif

式中,CODE為轉(zhuǎn)換后的二進(jìn)制碼,V+和V-是電源供電電壓,REF則為基準(zhǔn)電壓。 

ck1-t5.gif

3.3 數(shù)據(jù)緩存模塊

    由于系統(tǒng)為16通道同步數(shù)據(jù)采集,因此每完成一次采集會(huì)產(chǎn)生大量待處理數(shù)據(jù)。并且由于FPGA與外部處理器通信之間存在硬件差異,會(huì)導(dǎo)致其與外部處理器之間存在傳輸處理速度不匹配的問(wèn)題。因此,為了滿足系統(tǒng)所需實(shí)時(shí)存儲(chǔ)和傳輸要求,本系統(tǒng)采用了一種乒乓結(jié)構(gòu)的傳輸方式[6]進(jìn)行數(shù)據(jù)緩存。利用FPGA內(nèi)置的知識(shí)產(chǎn)權(quán)核(Intellectual Property core,IP)資源,在ISE14.7軟件操作平臺(tái)上,構(gòu)建系統(tǒng)所需18 bit位寬的塊RAM和FIFO各兩片進(jìn)行輪流讀寫(xiě)操作,實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)緩存的功能。如圖6所示,若使能信號(hào)Crl_1處于高電平,則控制RAM_1進(jìn)行存儲(chǔ)。當(dāng)RAM_1存儲(chǔ)滿后,產(chǎn)生另一個(gè)使能控制信號(hào)Crl_2并將使能信號(hào)Crl_1電平翻轉(zhuǎn),由RAM_2繼續(xù)行數(shù)據(jù)存儲(chǔ)。當(dāng)使能信號(hào)Crl_2到來(lái)時(shí),等待系統(tǒng)判讀生效后,則控制FIFO進(jìn)行數(shù)據(jù)緩存。若該控制信號(hào)處于高電平則FIFO_1進(jìn)行數(shù)據(jù)緩存。當(dāng)FIFO_1緩存滿后則將使能控制信號(hào)Crl_2的電平翻轉(zhuǎn),由FIFO_2繼續(xù)緩存,并將FIFO_1中的數(shù)據(jù)通過(guò)某種協(xié)議傳送到外部控制器進(jìn)行處理。如此周而復(fù)始,在RAM和FIFO緩存器中進(jìn)行乒乓操作,可以實(shí)現(xiàn)系統(tǒng)所需實(shí)時(shí)存儲(chǔ)和傳輸功能。

ck1-t6.gif

    如圖7數(shù)據(jù)緩存仿真圖所示,通過(guò)時(shí)序約束實(shí)現(xiàn)了兩個(gè)不同緩存器之間的同步讀寫(xiě)操作,很好地完成了乒乓式的數(shù)據(jù)緩存功能。

ck1-t7.gif

3.4 數(shù)據(jù)存儲(chǔ)模塊

    利用外部處理器設(shè)定一個(gè)閾值,將緩存進(jìn)RAM中的數(shù)據(jù)與閾值比對(duì)。若大于閾值電壓,則判讀無(wú)效將被測(cè)設(shè)備電源和信號(hào)選通開(kāi)關(guān)斷開(kāi);反之,數(shù)據(jù)判讀有效,需要將采集時(shí)間、外部命令輸入以及采集數(shù)據(jù)組幀后,實(shí)時(shí)存儲(chǔ)到Flash中。本模塊利用FPGA通過(guò)SPI總線與M25P128芯片建立主從關(guān)系,實(shí)現(xiàn)了Sector擦除、Page編程、地址管理、數(shù)據(jù)讀取等功能,從而快速、準(zhǔn)確地在Flash芯片中實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě)功能。該模塊采用了摩爾狀態(tài)機(jī)實(shí)現(xiàn)狀態(tài)跳轉(zhuǎn),既消除了狀態(tài)跳轉(zhuǎn)時(shí)造成的毛刺,又很好地完成了存儲(chǔ)與讀取功能。數(shù)據(jù)存儲(chǔ)與讀取狀態(tài)圖如圖8所示。圖中地址管理除了實(shí)現(xiàn)頁(yè)面讀寫(xiě)地址轉(zhuǎn)換外,還要將第一個(gè)頁(yè)面用于存儲(chǔ)下最后一次存儲(chǔ)的地址,在斷電重啟后,能緊接著掉電前的數(shù)據(jù)繼續(xù)進(jìn)行數(shù)據(jù)存儲(chǔ)。

ck1-t8.gif

    Flash數(shù)據(jù)存儲(chǔ)仿真圖如圖9所示,數(shù)據(jù)存儲(chǔ)功能是將8 bit的并行數(shù)據(jù)通過(guò)Flash_SI引腳串行輸入到Flash芯片中實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)功能。數(shù)據(jù)讀取功能則需要?jiǎng)?chuàng)建一個(gè)8位的移位寄存器將Flash_SO引腳的串行數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù),傳輸?shù)酵獠刻幚砥鬟M(jìn)行處理。

ck1-t9.gif

4 結(jié)論

    針對(duì)傳統(tǒng)數(shù)據(jù)采集處理系統(tǒng)不能有效地實(shí)現(xiàn)數(shù)據(jù)在傳輸和存儲(chǔ)過(guò)程中的同步性、實(shí)時(shí)性問(wèn)題,本文設(shè)計(jì)了一種基于FPGA的16通道高精度同步實(shí)時(shí)高速采集系統(tǒng)。該系統(tǒng)采用FPGA控制AD7609在轉(zhuǎn)換期間讀取數(shù)據(jù)的傳輸方式,使系統(tǒng)能夠達(dá)到200 kHz采樣率。通過(guò)合理利用FPGA內(nèi)部資源,實(shí)現(xiàn)數(shù)據(jù)緩存的乒乓傳輸方式,從而完成了數(shù)據(jù)的實(shí)時(shí)傳輸和Flash的實(shí)時(shí)存儲(chǔ)功能,增強(qiáng)了數(shù)據(jù)傳輸和存儲(chǔ)的可靠性、有效性和穩(wěn)定性,極大地發(fā)揮出了FPGA的高速數(shù)據(jù)并行處理能力和時(shí)序約束能力。本系統(tǒng)已成功應(yīng)用于某實(shí)際工程監(jiān)測(cè)項(xiàng)目中,具有一定的應(yīng)用價(jià)值。

參考文獻(xiàn)

[1] 黃鴻靖.面向信號(hào)模擬的實(shí)時(shí)數(shù)據(jù)采集與塊數(shù)據(jù)傳輸技術(shù)研究[D].杭州:浙江大學(xué),2018.

[2] 趙樹(shù)磊,劉敬猛,張慧,等.基于FPGA臨空數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2018,44(12):123-126.

[3] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2005.

[4] 王建中,楊璐.高速實(shí)時(shí)系統(tǒng)數(shù)據(jù)采集與傳輸[J].計(jì)算機(jī)科學(xué),2016,43(S2):604-606.

[5] 皮代軍,張海勇,葉顯陽(yáng),等.基于FPGA的高速實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009,32(6):12-14.

[6] 張素萍,李朝強(qiáng),張建芬.一種高速實(shí)時(shí)數(shù)據(jù)采集處理系統(tǒng)設(shè)計(jì)[J].火力與指揮控制,2016,41(7):125-129.



作者信息:

易志強(qiáng),韓  賓,江  虹,張秋云

(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽(yáng)621010)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。