一、引言
傳統(tǒng)的數(shù)據(jù)采集系統(tǒng),通常采用單片機(jī)或DSP作為主要控制模塊,控制ADC、存儲(chǔ)器和其他外圍電路的工作。隨著數(shù)據(jù)采集對(duì)速度性能的要求越來(lái)越高,傳統(tǒng)采集系統(tǒng)的弊端就越來(lái)越明顯。單片機(jī)的時(shí)鐘頻率較低且需用軟件實(shí)現(xiàn)數(shù)據(jù)采集,這使得采集速度和效率降低,此外軟件運(yùn)行時(shí)間在整個(gè)采樣時(shí)間中也占很大的比例。而FPGA(現(xiàn)場(chǎng)可編程門陣列)有單片機(jī)無(wú)法比擬的優(yōu)勢(shì)。FPGA時(shí)鐘頻率高,內(nèi)部延時(shí)小,全部控制邏輯由硬件完成,速度快、效率高。在此技術(shù)基礎(chǔ)上,為了滿足數(shù)據(jù)采集對(duì)速度的要求,本文就著重介紹了一種基于FPGA,采用VHDL硬件描述語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)的高速數(shù)據(jù)采集系統(tǒng)。
二、系統(tǒng)的整體硬件設(shè)計(jì)
本數(shù)據(jù)系統(tǒng)以FPGA為中心、主要包括數(shù)據(jù)采集電路、通信接口電路、電源模塊等幾部分。其中中心控制邏輯主要負(fù)責(zé)產(chǎn)生各部分的控制信號(hào),完成對(duì)整個(gè)系統(tǒng)的邏輯控制和對(duì)來(lái)自面板的工作模式控制信號(hào)的軟件消抖,并對(duì)所采數(shù)據(jù)進(jìn)行編禎處理,電源模塊為該系統(tǒng)供電的同時(shí),也為前端傳感器提供了+9V的供電電源
系統(tǒng)采用60MHz晶振輸入,模式控制信號(hào)來(lái)自面板上的控制開關(guān),分別產(chǎn)生系統(tǒng)自檢、采集開始、及手動(dòng)復(fù)位三個(gè)控制信號(hào)。系統(tǒng)的原理框圖如圖1所示:
面板上有三個(gè)控制開關(guān),分別為“復(fù)位”開關(guān)RST, “系統(tǒng)自檢”開關(guān)S1和“采集開始”開關(guān)START。RST信號(hào)為外部的手動(dòng)復(fù)位,當(dāng)撥至高電平時(shí),對(duì)系統(tǒng)所有的計(jì)數(shù)器清零;“系統(tǒng)自檢”開關(guān)閉合時(shí)采集系統(tǒng)內(nèi)部1路預(yù)知信號(hào)完成系統(tǒng)自檢功能;“采集開始”開關(guān)有效時(shí),系統(tǒng)開始對(duì)24路模擬信號(hào)進(jìn)行采集,當(dāng)“系統(tǒng)自檢”開關(guān)和“采集開始”同時(shí)有效時(shí),對(duì)系統(tǒng)進(jìn)行復(fù)位。
1. 數(shù)據(jù)采集部
該部分主要由一片高速AD芯片和一片Altera的FPGA構(gòu)成。由于本系統(tǒng)設(shè)計(jì)采樣速度最大為50M,根據(jù)采樣定理,采樣頻率至少應(yīng)該在100M以上,所以AD芯片采用的是MAXIM公司的MAX100。該芯片轉(zhuǎn)換精度8位,1.8v電源供電,低功耗,最高工作速度為250MSPS。經(jīng)過(guò)測(cè)試可以很好的滿足系統(tǒng)測(cè)試要求。
通常在低速數(shù)據(jù)采集系統(tǒng)中常使用MCU作為CPU來(lái)控制。但在高速數(shù)據(jù)采集系統(tǒng)中,往往會(huì)受到MCU的影響,而且隨著速度的提高ADC,RAM,MCU之間的時(shí)序同步問(wèn)題也會(huì)顯示出來(lái)。因此本系統(tǒng)使用了高速、多I/O口的FPGA芯片來(lái)控制ADC和RAM等,從而很好的解決了采樣速度過(guò)高和時(shí)序同步的問(wèn)題。
FPGA(Field Programmable Gate Array)是從PAL,GAL發(fā)展而來(lái)的陣列型高密度PLO器件,具有高密度,高速度,低功耗等特點(diǎn)。特別適合實(shí)現(xiàn)復(fù)雜的組合邏輯。根據(jù)系統(tǒng)要求,本系統(tǒng)中使用的FPGA芯片型號(hào)為Altera公司的EPF10K10TC144-3。它的可用門數(shù)7000個(gè),最大用戶I/O數(shù)134,計(jì)數(shù)器的工作頻率可達(dá)200MHz。在該系統(tǒng)中FPGA實(shí)現(xiàn)的功能邏輯主要有:
(1) 完成對(duì)來(lái)自面板的工作模式控制信號(hào)的軟件消抖。
(2) 接收采集模式開關(guān)發(fā)出的開始采樣信號(hào)START,實(shí)現(xiàn)對(duì)ADC的控制,開始AD轉(zhuǎn)換;
(3) 當(dāng)FIFO存儲(chǔ)器半滿時(shí),發(fā)出一個(gè)Half Flag信號(hào),通知USB芯片可以讀數(shù),F(xiàn)IFO存儲(chǔ)器為空時(shí),發(fā)出一個(gè)Empty Flag信號(hào),提示USB芯片停止讀數(shù)。
FPGA的功能邏輯使用VHDL語(yǔ)言來(lái)實(shí)現(xiàn),這是一種硬件描述語(yǔ)言,主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。使用VHDL語(yǔ)言設(shè)計(jì)硬件電路時(shí),可以使設(shè)計(jì)者免除編寫邏輯表達(dá)式或真值表的工作。這樣使硬件電路設(shè)計(jì)的難度有了大幅度的降低,從而可以提高工作效率,縮短硬件電路的設(shè)計(jì)周期。使用VHDL語(yǔ)言實(shí)現(xiàn)的采集系統(tǒng)FPGA內(nèi)部原理圖如圖2所示。
圖中共有兩個(gè)模塊,xd模塊主要完成對(duì)輸入信號(hào)的消抖,能使系統(tǒng)工作更穩(wěn)定。Sample模塊是本系統(tǒng)的核心部分,它主要負(fù)責(zé)各部分的邏輯控制及AD采樣數(shù)據(jù)的編禎處理。
2. 通信接口部分
通用串行總線USB是一種新型的通信標(biāo)準(zhǔn),它具有使用靈活,連接方便,通信速度快,能獨(dú)立供電等特點(diǎn)。目前,越來(lái)越多的計(jì)算機(jī)外圍設(shè)備開始采用USB的通信接口。由于本系統(tǒng)采集速度高數(shù)據(jù)量大,因此,也采用了USB通信接口。
目前生產(chǎn)USB芯片的廠商很多,主要的產(chǎn)品有CYPRESS公司的EZ-USB,PHIPILIPS公司的PDUSBD12,National Semiconductor公司r的USB9604等。本設(shè)計(jì)采用的是CYPRESS公司的帶8051內(nèi)核單片機(jī)的EZ-USB系列參CY7C68013。該芯片采用改進(jìn)的8051內(nèi)核,與標(biāo)準(zhǔn)的8051指令完全兼容,除此之外內(nèi)部還集成了存儲(chǔ)器、智能USB接口引擎、USB收發(fā)模塊、串行口等。
在USB下芯片CY7C68013和EPF10K10TC144-3FPGA之間采用了FIFO(First in First out SRAM)芯片作為數(shù)據(jù)交換的緩沖連接,這樣可以使USB接口芯片和FPGA之間的最大數(shù)據(jù)交換速度超過(guò)USB總線的速度,使之不會(huì)成為數(shù)據(jù)傳輸?shù)钠款i,從而使FPGA和主機(jī)之間的數(shù)據(jù)傳輸速度只受USB協(xié)議限制。
由于CY7C68013芯片內(nèi)嵌8位8051處理器,因此使用兩片F(xiàn)IFO芯片實(shí)現(xiàn)FPGA和USB接口之間的雙向通信。FIFO芯片選用具有16K×9bits內(nèi)存的IDT7206,從FPGA傳輸?shù)臄?shù)據(jù)首先保存在FIFO中,然后再由CY7C68013帶走,這樣使數(shù)據(jù)的傳輸不會(huì)出現(xiàn)堵塞的情況。對(duì)與IDT7206只具有雙端數(shù)據(jù)總線和狀態(tài)信號(hào),沒(méi)有地址總線,所以FPGA采用I/O譯碼的方式直接訪問(wèn)FIFO。FIFO的狀態(tài)信號(hào)有空、半滿和滿,它們都是低電平有效,通過(guò)這三個(gè)信號(hào)就可以靈活的控制FIFO的讀寫。
CYPRESS公司為EZ-USB系列的芯片提供了固件程序和驅(qū)動(dòng)程序模塊和例程。固件程序與驅(qū)動(dòng)程序可以獨(dú)立的被調(diào)試,且調(diào)試方便,相對(duì)于其它USB芯片,可以提高開發(fā)速度。
三、 FPGA主要模塊的邏輯實(shí)現(xiàn)
FPGA系統(tǒng)的硬件設(shè)計(jì)模塊主要有消抖模塊、采集模塊兩部分。采集模塊又包括邏輯控制模塊、時(shí)鐘邏輯運(yùn)算模塊、時(shí)鐘生成模塊等。下面主要就消抖和FIFO控制部分進(jìn)行描述和實(shí)現(xiàn)。
1.消抖模塊設(shè)計(jì)
為了系統(tǒng)各工作狀態(tài)更穩(wěn)定,當(dāng)FPGA接受到一個(gè)工作狀態(tài)信號(hào)時(shí),啟動(dòng)一個(gè)計(jì)數(shù)器,若計(jì)數(shù)器能計(jì)到設(shè)置的最大值則認(rèn)為該工作狀態(tài)信號(hào)有效,否則認(rèn)為無(wú)效。消抖的FPGA具體實(shí)現(xiàn)方法如下所示
process(reset,fosc)
VARIABLE count : INTEGER range 0 to 50;
begin
if reset = ‘0’ then
count := 0;
outcheck 《= ‘0’;
elsif fosc‘event and fosc=’1‘ then
if incheck=’0‘ then
if count 《 50 then
count := count + 1;
outcheck 《= ’0‘;
else
count := count;
outcheck 《= ’1‘;
end if;
else
count := 0;
outcheck 《= ’0‘;
end if;
end if;
end process;
仿真結(jié)果如圖3所示:
由圖3可以看出通過(guò)此方法可以消除因工作狀態(tài)信號(hào)時(shí)抖動(dòng)而引起的誤操作,保證了系統(tǒng)工作的穩(wěn)定性
2.FIFO控制模塊設(shè)計(jì)
系統(tǒng)首先把采集到的數(shù)據(jù)緩存到FIFO里面,當(dāng)存儲(chǔ)達(dá)到用戶設(shè)定的余度時(shí),便送出一個(gè)請(qǐng)求信號(hào),通知USB芯片讀取數(shù)據(jù)。FIFO余度值的大小由用戶自己設(shè)定,但此值原則上不能過(guò)于接近FIFO的深度。因?yàn)樵赨SB芯片響應(yīng)這一請(qǐng)求信號(hào),進(jìn)行讀數(shù)處理的過(guò)程中,F(xiàn)PGA仍在進(jìn)行數(shù)據(jù)的采集和存儲(chǔ)。如果余度值過(guò)于接近FIFO深度,F(xiàn)IFO容易產(chǎn)生溢出的錯(cuò)誤。因此本系統(tǒng)中以FIFO芯片IDT7206的半滿作為設(shè)定的余度,當(dāng)IDT7206存儲(chǔ)數(shù)據(jù)達(dá)到其容量的一半時(shí),F(xiàn)PGA就會(huì)送出一個(gè)請(qǐng)求USB讀取數(shù)據(jù)的信號(hào)。FIFO控制模塊的信號(hào)有:異步清零aclr;讀寫數(shù)據(jù)q/data;讀寫使能rden/wren;空/半滿標(biāo)志ef/hf。數(shù)據(jù)data在寫使能有效的情況下按照寫時(shí)鐘往FIFO里面存儲(chǔ),在讀使能時(shí),數(shù)據(jù)按照讀時(shí)鐘的速度從q數(shù)據(jù)總線上輸出。其實(shí)現(xiàn)和仿真如圖4所示:
由圖4可以看出,讀使能rden在半滿信號(hào)下降沿到來(lái)后才有效,即數(shù)據(jù)才開始被USB芯片從FIFO中讀出,在空信號(hào)下降沿到來(lái)后讀使能rden信號(hào)無(wú)效,數(shù)據(jù)停止讀取。而整個(gè)過(guò)程FPGA都在進(jìn)行數(shù)據(jù)的采集。
四、結(jié) 論
本文完成高速、多通道的數(shù)據(jù)采集系統(tǒng)的FPGA設(shè)計(jì),該系統(tǒng)具有電路簡(jiǎn)單、體積小等優(yōu)點(diǎn)。利用EDA工具和語(yǔ)言對(duì)FPGA進(jìn)行設(shè)計(jì)、仿真和驗(yàn)證,這便于設(shè)計(jì)的修改和優(yōu)化,大大縮短了產(chǎn)品的開發(fā)設(shè)計(jì)周期。由FPGA具有在線編程的特點(diǎn)可以依據(jù)現(xiàn)場(chǎng)的具體情況,對(duì)FPGA的內(nèi)部邏輯配置進(jìn)行修改,進(jìn)一步增加了系統(tǒng)應(yīng)用的靈活性,經(jīng)測(cè)試該設(shè)計(jì)達(dá)到了滿意的效果,是一種比較理想的多通道、高速數(shù)據(jù)采集方案。
責(zé)任編輯:gt
評(píng)論