基于FPGA的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
數(shù)據(jù)采集就是通過模數(shù)轉(zhuǎn)換器(A/D)將輸入的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),然后送入單片機(jī)中進(jìn)行處理,而對(duì)A/D轉(zhuǎn)換器的啟動(dòng),數(shù)據(jù)的讀取,數(shù)據(jù)的傳輸都是靠MCU(單片機(jī))執(zhí)行指令來完成的。近年來,隨著科學(xué)技術(shù)的發(fā)展,各種型號(hào)的模數(shù)轉(zhuǎn)換器的性能越來越高,而與密切相連的單片機(jī)因其時(shí)鐘頻率較低,很難滿足數(shù)據(jù)采集的實(shí)時(shí)性和同步性,因此,模數(shù)轉(zhuǎn)換器和單片機(jī)速度的不匹配,大大影響了數(shù)據(jù)采集系統(tǒng)的效率,這就要求能有一個(gè)讀取數(shù)據(jù)并且暫存數(shù)據(jù)的接口電路,來作為二者連接的橋梁,為此,基于FPGA的高速數(shù)據(jù)采集系統(tǒng)的研究顯得極為重要。
1 系統(tǒng)整體設(shè)計(jì)方案
本數(shù)據(jù)采集系統(tǒng)主要由信號(hào)調(diào)理通路、數(shù)模轉(zhuǎn)換器模塊、數(shù)據(jù)存儲(chǔ)與控制模塊組成。自行設(shè)計(jì)的硬件結(jié)構(gòu)框圖如圖1所示。
信號(hào)調(diào)理模塊是對(duì)兩路輸入信號(hào)進(jìn)行調(diào)理的電路。輸入信號(hào)1是頻率為f1的正弦交流信號(hào),先經(jīng)過整形電路,變?yōu)閿?shù)字時(shí)鐘信號(hào)CLK,送入模數(shù)轉(zhuǎn)換器MAX118,作為MAX118的外部時(shí)鐘輸入信號(hào),控制數(shù)模轉(zhuǎn)換的速率。另一路輸入信號(hào)2為采樣輸入信號(hào),可以是直流信號(hào)或是交流信號(hào)。當(dāng)作為交流信號(hào)輸入時(shí),其頻率f2是輸入信號(hào)1頻率f1的1/N倍。N值的大小就是輸入信號(hào)2在一個(gè)周期內(nèi)采樣點(diǎn)的數(shù)量。輸入信號(hào)2經(jīng)過調(diào)理電路處理后,就可以成為滿足MAX118輸入條件的信號(hào)。
將滿足MAX118輸入條件的信號(hào)2送入模數(shù)轉(zhuǎn)換器的任一輸入通道中,模數(shù)轉(zhuǎn)換器將模擬量(輸入信號(hào))轉(zhuǎn)換為數(shù)字量。
本系統(tǒng)的FPCA設(shè)計(jì)主要包括雙端口寄存器模塊和計(jì)數(shù)器模塊,以及一些與MAX118和MCU連接的邏輯控制。FPGA在電路中,一邊與MAX118接口,一邊與MCU接口,完成數(shù)據(jù)采集和數(shù)據(jù)存儲(chǔ)的工作。在轉(zhuǎn)換過程中,模數(shù)轉(zhuǎn)換器MAX118的啟動(dòng)和讀取,復(fù)位等控制功能均由FPGA完成。數(shù)據(jù)采集完畢后,F(xiàn)PGA與單片機(jī)之間的數(shù)據(jù)傳輸控制指令也是由FPGA發(fā)出并完成的。
電源部分由+9 V電源供給,F(xiàn)PGA的電源分別為3.3 V和1.5 V,是用專用電源芯片轉(zhuǎn)換得到,同時(shí)還轉(zhuǎn)換得到5 V電源供單片機(jī)和MAX118使用,電源的輸入電流最大3 A,但不應(yīng)小于2 A,因?yàn)榇笕萘康腇PGA在大負(fù)荷和資源使用較多時(shí)需要的電流較大,此電源的功率可以滿足正常使用,不會(huì)出現(xiàn)功率不夠而使芯片無法正常工作的情況。
2 核心器件工作原理分析
2.1 高速模數(shù)轉(zhuǎn)換器MAX118
MAX118是美國Maxim公司推出的低功耗、8位8通道的高速A/D轉(zhuǎn)換器,精度小于1LSB,采樣速率達(dá)到1.2 Msps。本方案采用讀模式進(jìn)行采樣,可以設(shè)計(jì)出模數(shù)轉(zhuǎn)換器工作在MODE0模式下與FPGA硬件接口電路,通過對(duì)引腳的計(jì)數(shù),來讀取數(shù)據(jù)。
2.2 現(xiàn)場可編程門陣列(FPGA)及單片機(jī)(MCU)
本系統(tǒng)的控制器件由FPGA和單片機(jī)兩部分組成,在MCU+FPGA組成的電路系統(tǒng)中,單片機(jī)主要負(fù)責(zé)控制,而FPGA主要完成數(shù)據(jù)的采集和處理,所謂的控制,一方面是單片機(jī)直接控制外部電路,另一方面是在FPGA內(nèi)部自己來寫時(shí)序電路,滿足單片機(jī)的讀寫等時(shí)序,從而實(shí)現(xiàn)單片機(jī)與FPGA聯(lián)合控制本數(shù)據(jù)采集系統(tǒng)。
現(xiàn)場可編程門陣列選用Altera的Cyclone系列的EP1C6Q240C8,與之相連接的單片機(jī)選擇使用89C52或者52以上的單片機(jī)主芯片,這主要是為了高速的串口通信考慮。
3 FPGA邏輯設(shè)計(jì)
3.1 FPGA接口電路
FPGA在整個(gè)硬件電路中負(fù)責(zé)在MAX118和MCU之間的緩沖與控制。對(duì)于A/D來說,F(xiàn)PGA的主要作用是控制模數(shù)轉(zhuǎn)換器MAX118的啟動(dòng)和轉(zhuǎn)換,并暫存采樣的數(shù)據(jù),通過其內(nèi)部設(shè)計(jì)的計(jì)數(shù)器,完成采樣信號(hào)一個(gè)周期內(nèi)采樣數(shù)量的控制。對(duì)于單片機(jī)來說,當(dāng)FPGA完成信號(hào)一個(gè)周期的采樣后,向單片機(jī)申請(qǐng)中斷,由單片機(jī)完成對(duì)數(shù)據(jù)的讀取以及對(duì)FPGA內(nèi)部計(jì)數(shù)器的復(fù)位等工作。
自行設(shè)計(jì)的硬件連接圖如圖2所示。
下面根據(jù)圖2來具體說明采樣過程。
1)MAX118工作過程
要把輸入信號(hào)送入模數(shù)轉(zhuǎn)換器MAX118,必須通過設(shè)置其A0,A1,A2 3個(gè)引腳來選擇輸入信號(hào)的通道,當(dāng)A0,A1,A2 3個(gè)引腳都為低時(shí),選中通道1,此時(shí),輸入信號(hào)被送入A/D中。并將外部時(shí)鐘信號(hào)CLK同時(shí)送入MAX118及FPGA中,保證二者同時(shí)被啟動(dòng)。MAX118的MODE引腳被置低,工作在讀模式,至此,A/D可以進(jìn)行轉(zhuǎn)換,8位數(shù)據(jù)從D0~D7引腳讀出。
2)FPGA控制過程
假設(shè)外部時(shí)鐘信號(hào)CLK的頻率f1是輸入信號(hào)頻率f2的32倍,輸入信號(hào)在一個(gè)周期內(nèi)將被采樣32個(gè)點(diǎn)。當(dāng)FPGA檢測到時(shí)鐘信號(hào)CLK的上升沿時(shí),開始從MAX118的數(shù)據(jù)輸出端口D0~D7讀數(shù)據(jù),并將數(shù)據(jù)放入FPGA的寄存器中。同時(shí),F(xiàn)PGA的計(jì)數(shù)單元開始對(duì)MAX118的計(jì)數(shù),根據(jù)對(duì)MAX118時(shí)序的分析,每進(jìn)行一次轉(zhuǎn)換,都被拉低一次,那么當(dāng)采樣完一個(gè)周期的32個(gè)點(diǎn)后,也被計(jì)數(shù)了32次。此時(shí),由FPGA給單片機(jī)一個(gè)中斷信號(hào),單片機(jī)通過FPGA內(nèi)部設(shè)置的地址譯碼器開始對(duì)其存儲(chǔ)器中的數(shù)據(jù)進(jìn)行讀取,而FPGA則處于等待狀態(tài)。當(dāng)讀取結(jié)束后,單片機(jī)通過P1.0引腳給FPGA一個(gè)復(fù)位信號(hào),將其內(nèi)部計(jì)數(shù)器清零,然后再開始讀取下一個(gè)周期的數(shù)據(jù),如此循環(huán),周而復(fù)始。
3.2 FPGA邏輯設(shè)計(jì)
本設(shè)計(jì)采用Verilog—HDL硬件描述語言進(jìn)行邏輯代碼設(shè)計(jì),在QuartusⅡ開發(fā)環(huán)境下,根據(jù)需求編寫源代碼,來完成分析綜合,適配,仿真等工作,最后將生成的pof文件下載到FPGA中。
4 系統(tǒng)調(diào)試結(jié)果分析
4.1 直流信號(hào)采集效果
首先,輸入一個(gè)直流信號(hào)進(jìn)行采集,來分析采集系統(tǒng)的正確度。
設(shè)輸入信號(hào)1頻率f1=160 kHz,經(jīng)過整形電路變?yōu)橐粋€(gè)方波信號(hào),作為模數(shù)轉(zhuǎn)換器的時(shí)鐘信號(hào)。輸入信號(hào)2為一個(gè)直流信號(hào),設(shè)其表達(dá)式為u=1 V,然后對(duì)輸入信號(hào)2進(jìn)行16個(gè)點(diǎn)的采樣,采樣數(shù)據(jù)如下表所示:
上表中的采樣值是經(jīng)過8位的模數(shù)轉(zhuǎn)換器MAX118量化編碼后輸出的,需要經(jīng)過歸一化處理后,才能用正確度公式來分析,其中表示測量的均值,x表示真實(shí)值。通過計(jì)算ε=0.03。MAX118是一個(gè)8位的模數(shù)轉(zhuǎn)換器,其基準(zhǔn)電壓為5 V,所以此模數(shù)轉(zhuǎn)換器的分辨率為5/28=0.02,也就是A/D引起的量化誤差為0.02。由此可見,系統(tǒng)誤差中,除了量化誤差外,還存在著別的誤差,這是由于電路中的噪聲干擾等因素引起的,是不可避免的。這個(gè)數(shù)據(jù)也表明,本設(shè)計(jì)的準(zhǔn)確度很高。
4.2 交流信號(hào)采集效果
現(xiàn)在,輸入一個(gè)交流信號(hào)來分析采集系統(tǒng)的精密度。精密度反映在相同條件下,對(duì)某定值做多次測量,測量值分散的程度,通過測量值的標(biāo)準(zhǔn)偏差來衡量標(biāo)準(zhǔn)差越小,表示數(shù)據(jù)越集中。
圖3是由采樣系統(tǒng)輸出的測量值畫出的波形圖,采樣數(shù)據(jù)已經(jīng)作了歸一化處理。
觀察上圖,發(fā)現(xiàn)只有少數(shù)采樣點(diǎn)偏離實(shí)際值,二者的波形形狀基本吻合,說明數(shù)據(jù)采集是成功的。
如表2所示,為輸入正弦信號(hào)在一個(gè)周期內(nèi)的32個(gè)點(diǎn)實(shí)際值和采樣值數(shù)據(jù)。其中,采樣測量值已經(jīng)進(jìn)行了歸一化的處理。
采樣數(shù)據(jù)的標(biāo)準(zhǔn)差
可以用來衡量系統(tǒng)的精密度。由計(jì)算可得:σ≈0.09,標(biāo)準(zhǔn)偏差越小,測量數(shù)據(jù)越集中,這個(gè)數(shù)據(jù)說明系統(tǒng)的測量準(zhǔn)確度也很高。
經(jīng)過以上對(duì)系統(tǒng)正確度和精密度的分析,可以得出,本設(shè)計(jì)的正確度和精密度都很高,也就是說系統(tǒng)的準(zhǔn)確度很高。以上的數(shù)據(jù)分析結(jié)果,充分說明了這個(gè)設(shè)計(jì)系統(tǒng)能夠正確的讀寫數(shù)據(jù),穩(wěn)定且可靠。
5 結(jié)束語
本設(shè)計(jì)采用在線可編程的FPGA器件作為A/D和MCU的接口控制電路,完成了模擬信號(hào)的采集,與傳統(tǒng)的基于MCU的采集系統(tǒng)相比,具體采樣靈活,硬件電路簡單,實(shí)時(shí)性和同步性高等特點(diǎn)。測試數(shù)據(jù)表明,該設(shè)計(jì)能很好完成8位8通道的數(shù)據(jù)采集工作,采樣準(zhǔn)確度高,系統(tǒng)工作穩(wěn)定。