基于FPGA的數(shù)據(jù)采集系統(tǒng)設(shè)計
掃描二維碼
隨時隨地手機(jī)看文章
摘要:提出一種基于FPGA技術(shù)的多路模擬量、數(shù)字量采集與處理系統(tǒng)的設(shè)計方案,分析整個系統(tǒng)的結(jié)構(gòu),并討論FPGA內(nèi)部硬件資源的劃分和軟件的設(shè)計方案等。本設(shè)計方案外部電路結(jié)構(gòu)簡單可靠,特別適用于多路檢測系統(tǒng)中,而且可以根據(jù)需要容易地對系統(tǒng)進(jìn)行擴(kuò)展,對于檢測系統(tǒng)來講具有一定的通用性。
關(guān)鍵詞:FPGA;A/D采集;數(shù)字量采集;Verilog HDL語言設(shè)計
0 引言
在電氣測控系統(tǒng)中,常常需要采集各種模擬量信號、數(shù)字量信號,并對它們進(jìn)行相應(yīng)的處理。一般情況下,測控系統(tǒng)中用普通MCU(如51、196等單片機(jī)或控制型DSP)就可以完成系統(tǒng)任務(wù),但當(dāng)系統(tǒng)中要采集的信號量特別多時(特別是各種信號量、狀態(tài)量),僅僅靠用普通MCU的資源就往往難以完成任務(wù)。本文所提出的一種基于FPGA技術(shù)的模擬量、數(shù)字量采集與處理系統(tǒng),利用FPGA的I/O端口多,且可以自由編程支配、定義其功能的特點,能很好地解決采集的信號路數(shù)多的問題。
1 系統(tǒng)組成
本系統(tǒng)中的外圍電路設(shè)計相對簡單、可靠,且鑒于FPGA自身的特點,系統(tǒng)具有較好的擴(kuò)展性,在監(jiān)測和控制系統(tǒng)中也具有一定的通用性。系統(tǒng)主要包括:FPGA芯片區(qū)、多路選擇與A/D采樣電路、時鐘電源區(qū)、PROM代碼下載電路等幾部分。結(jié)構(gòu)示意如圖1所示。
2 FPGA芯片特點分析及資源分配
本系統(tǒng)中的FPGA是采用Altera公司的EP1C20F400。該系列的內(nèi)核采用1.5 V供電,I/O端口供電電壓為3.3V。
FPGA內(nèi)部資源劃分為四大部分,如圖2所示。
(1)FPGA邏輯運(yùn)算中心。用來接收其他各部分的數(shù)據(jù),并按照程序中設(shè)定的方案對所收到的數(shù)據(jù)進(jìn)行相應(yīng)的分析和處理。包括:對從MCU接收來的數(shù)據(jù)指令進(jìn)行分析,并按其指令要求進(jìn)行相應(yīng)操作;接收A/D采樣來的數(shù)據(jù),對數(shù)據(jù)進(jìn)行處理,存儲等工作。
(2)A/D控制單元。主要負(fù)責(zé)控制外部A/D芯片和多路開關(guān)的選通時序,以及實現(xiàn)對A/D采要過程的合理控制,利用FPGA實現(xiàn)A/D自動采集與數(shù)據(jù)存儲。
(3)數(shù)字量監(jiān)測控制單元。負(fù)責(zé)所有要監(jiān)視和控制的數(shù)字量的狀態(tài)數(shù)據(jù)的采集和控制命令的輸出。這一部分主要實現(xiàn)數(shù)字量輸出的控制、數(shù)字量輸入的存儲、數(shù)字量輸入狀態(tài)變化識別(中斷輸入)。
(4)FPGA接口邏輯控制單元。在FPGA內(nèi)部設(shè)計了FPGA模塊與外界MCU的接口單元,該部分主要用于同CPU的接口,使數(shù)據(jù)采集系統(tǒng)可以方便的與PCI、ISA及其他總線連接。
3 模擬量采集的控制與管理
在模擬量采集外圍電路中,A/D芯片采用的是AD公司的AD976A。多路模擬量是通過AD438的多路開關(guān)后輸入到AD976A芯片的。
A/D采樣部分可分為:寄存器組、時鐘發(fā)生模塊、采樣控制狀態(tài)機(jī)、數(shù)據(jù)存儲模塊。
3.1 寄存器組
寄存器組用于設(shè)置/讀取A/D的工作狀態(tài),包括:采樣頻率設(shè)置寄存器、工作模式選擇寄存器、工作狀態(tài)寄存器及FIFO中斷寄存器。
(1)采樣頻率設(shè)置寄存器Frereg1,F(xiàn)rereg2(R/W):兩個16位寄存器,用于設(shè)置12路A/D的采樣頻率,其位含義如下:
頻率設(shè)置如下:
為保留位。
(2)工作模式選擇寄存器modereg(R/W)。176位寄存器,用于設(shè)置A/D的工作模式和啟動、停止FPGA,各位的定義如下:
(3)FIFO中斷寄存器(fifo_int)(R):16位寄存器,用來記錄FIFO的狀態(tài),各位定義如下:
3.2 時鐘發(fā)生模塊
(1)把時鐘分頻為1 MHz時鐘,作為狀態(tài)機(jī)的工作時鐘;
(2)生成20 Hz,50 Hz,100 Hz時鐘并結(jié)合Frereg的值給出12路A/D啟動中斷信號。
3.3 采樣控制狀態(tài)機(jī)
每個A/D用一個采樣控制狀態(tài)機(jī),用于自動控制A/D的數(shù)據(jù)采集。其狀態(tài)轉(zhuǎn)換圖如圖3所示。
IDLE:空閑狀態(tài)。
READ:temp=intreg,進(jìn)入下一狀態(tài)
WAIT:等待中斷,如果中斷寄存器(intreg)不為0,進(jìn)入下一狀態(tài),否則返回READ。
SHIFT:根據(jù)temp[0]的值進(jìn)行下一步操作,若temp[0]=0則temp>>1,同時通道計數(shù)器(counter)加1;若temp[0]=1,則根據(jù)counter的值給出通道選擇信號,進(jìn)入下一狀態(tài)。
START:發(fā)出RC=0信號,進(jìn)入下一狀態(tài)。
W_BLISY:RC=1,等待A/D轉(zhuǎn)換結(jié)束信號,如果結(jié)束,temp>>1,發(fā)出寫FIFO信號,進(jìn)入下一狀態(tài)。
END:無效FIFO寫信號,若temp=0,表明已無中斷,coutnter=0,進(jìn)入WAIT;否則,counter+1,進(jìn)入SHIFT。
3.4 數(shù)據(jù)存儲模塊
用于存儲A/D轉(zhuǎn)換結(jié)果,對于每路A/D用一個FIFO。
4 數(shù)字采集模塊
數(shù)字采集模塊主要完成數(shù)字量輸入的采集與存儲,中斷信號狀態(tài)識別功能。其原理圖如圖4所示。
5 結(jié)論
本文提出了一種基于FPGA技術(shù)的多路模擬量、數(shù)字量采集與處理系統(tǒng),設(shè)計了相應(yīng)的外圍硬件電路和系統(tǒng)處理軟件。在仿真和綜合調(diào)試成功的基礎(chǔ)上,本系統(tǒng)成功用于某重點預(yù)研項目的控制系統(tǒng)試驗中。試驗結(jié)果表明,本系統(tǒng)成功地完成了對多路模擬量、數(shù)字量的采集處理任務(wù)。