- 相關(guān)推薦
基于Verilog HDL設(shè)計(jì)的自動(dòng)數(shù)據(jù)采集系統(tǒng)
摘要:介紹了一種采用硬件控制的自動(dòng)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方法,包括數(shù)字系統(tǒng)自頂向下的設(shè)計(jì)思路、VerilogHDL對(duì)系統(tǒng)硬件的描述和狀態(tài)機(jī)的設(shè)計(jì)以及MAX+PLUSII開(kāi)發(fā)軟件的仿真。設(shè)計(jì)結(jié)果表明:該采集系統(tǒng)具有很高的實(shí)用價(jià)值,極大地提高了系統(tǒng)的信號(hào)處理能力。關(guān)鍵詞:可編程邏輯器件VerilogHDLFIFOFSM
隨著數(shù)字時(shí)代的到來(lái),數(shù)字技術(shù)的應(yīng)用已經(jīng)滲透到了人類(lèi)生活的各個(gè)方面。數(shù)字系統(tǒng)的發(fā)展在很大程度上得益于器件和集成技術(shù)的發(fā)展,著名的摩爾定律(Moore'sLaw)的預(yù)言也在集成電路的發(fā)展過(guò)程中被印證了,數(shù)字系統(tǒng)的設(shè)計(jì)理念和設(shè)計(jì)方法在這過(guò)程中發(fā)生了深刻的變化。從電子CAD、電子CAE到電子設(shè)計(jì)自動(dòng)化(EDA),隨著設(shè)計(jì)復(fù)雜程度的不斷增加,設(shè)計(jì)的自動(dòng)化程度越來(lái)越高。目前,EDA技術(shù)作為電子設(shè)計(jì)的通用平臺(tái),逐漸向支持系統(tǒng)級(jí)的設(shè)計(jì)發(fā)展;數(shù)字系統(tǒng)的設(shè)計(jì)也從圖形設(shè)計(jì)方案向硬件描述語(yǔ)言設(shè)計(jì)方案發(fā)展?删幊唐骷跀(shù)字系統(tǒng)設(shè)計(jì)領(lǐng)域得到廣泛應(yīng)用,不僅縮短了系統(tǒng)開(kāi)發(fā)周期,而且利用器件的現(xiàn)場(chǎng)可編程特性,可根據(jù)應(yīng)用的要求對(duì)器件進(jìn)行動(dòng)態(tài)配置或編程,簡(jiǎn)單易行地完成功能的添加和修改。
在現(xiàn)代工業(yè)的發(fā)展中,實(shí)時(shí)測(cè)控系統(tǒng)得到廣泛應(yīng)用,這就對(duì)高速數(shù)字信號(hào)處理系統(tǒng)提出了更高的要求。因?yàn)橐婕按罅康脑O(shè)計(jì),為了提高運(yùn)算速度,應(yīng)用了大量DSP器件。數(shù)字采集系統(tǒng)是整個(gè)系統(tǒng)的核心部分之一,傳統(tǒng)方法是應(yīng)用MCU或DSP通過(guò)軟件控制數(shù)據(jù)采集的模/數(shù)轉(zhuǎn)換,這樣必將頻繁中斷系統(tǒng)的運(yùn)行從而減弱系統(tǒng)的數(shù)據(jù)運(yùn)算,數(shù)據(jù)采集的速度也將受到限制。因此,DSP+CPLD的方案被認(rèn)為是數(shù)字信號(hào)處理系統(tǒng)的最優(yōu)方案之一,由硬件控制模/數(shù)轉(zhuǎn)換和數(shù)據(jù)存儲(chǔ),從而最大限度地提高系統(tǒng)的信號(hào)采集和處理能力。
1系統(tǒng)總體方案
數(shù)據(jù)采集系統(tǒng)是基于DSP的信號(hào)處理系統(tǒng)中的一部分?驁D如圖1所示。該數(shù)字信號(hào)處理系統(tǒng)用于隨機(jī)共振理論在弱信號(hào)檢測(cè)中的應(yīng)用研究中。整個(gè)系統(tǒng)由信號(hào)放大、信號(hào)濾波、信號(hào)采樣、高速數(shù)字信號(hào)處理、與主計(jì)算機(jī)的高速數(shù)據(jù)傳輸接口等部分組成。其中,信號(hào)放大是對(duì)輸入信號(hào)進(jìn)行調(diào)理以滿足采樣的要求;信號(hào)濾波是防止信號(hào)產(chǎn)生“混疊現(xiàn)象”;信號(hào)采樣是完成模擬信號(hào)的數(shù)字化;高速數(shù)字信號(hào)處理是在建立隨機(jī)共振模型的基礎(chǔ)上完成各種算法;與主計(jì)算機(jī)的高速數(shù)據(jù)傳輸接口是滿足信號(hào)檢測(cè)的實(shí)時(shí)性,將DSP處理的數(shù)據(jù)傳給計(jì)算機(jī)以進(jìn)行進(jìn)一步的處理。
基于VerilogHDL設(shè)計(jì)的自動(dòng)狀態(tài)機(jī)由硬件控制A/D轉(zhuǎn)換以及自動(dòng)向FIFO中存儲(chǔ)數(shù)據(jù),采樣頻率由DSP系統(tǒng)輸出時(shí)鐘確定,當(dāng)采樣數(shù)據(jù)達(dá)到一幀時(shí),F(xiàn)IFO向DSP申請(qǐng)中斷,DSP系統(tǒng)啟動(dòng)DMA完成數(shù)據(jù)讀取。這期間數(shù)據(jù)采集不中斷,從而實(shí)現(xiàn)連續(xù)的實(shí)時(shí)數(shù)據(jù)采集和實(shí)時(shí)數(shù)據(jù)處理。數(shù)據(jù)采集系統(tǒng)由A/D芯片MAX196、邏輯控制芯片EPM7128、FIFO芯片CY7C425組成?刂七壿嬘肰erilogHDL語(yǔ)言描述,并進(jìn)行了仿零點(diǎn)和實(shí)際驗(yàn)證。
圖2
2硬件電路設(shè)計(jì)
2.1A/D轉(zhuǎn)換芯片
系統(tǒng)A/D轉(zhuǎn)換由MAX196芯片實(shí)現(xiàn)。MAX196的特點(diǎn)為:
①12位A/D轉(zhuǎn)換精度,1/2LSB線性度;
、趩5V電源供電;
、圮浖x擇模擬量輸入范圍,分別為:±10V、±5V、0~5V、0~10V;
、6模擬量輸入通道;
、6μs轉(zhuǎn)換時(shí)間,100ksps采樣速率;
、迌(nèi)部或外部采樣控制;
、邇(nèi)部或外部時(shí)鐘控制轉(zhuǎn)換。
在MAX196的控制字中:
、貯2A1A0為通道選擇字:000~101分別代表通過(guò)0~5;
、贐IP、RNG為輸入范圍和極性選擇;
、跘CQMOD:采樣控制模式,0為內(nèi)部控制采樣,1為外部控制采樣;
、躊D1、PD0為時(shí)鐘與省電模式選擇。
內(nèi)部轉(zhuǎn)換模式時(shí)序如圖2所示。當(dāng)向MAX196寫(xiě)入包含通道選擇、量程選擇、極性選擇的控制字時(shí),完成A/D轉(zhuǎn)換的初始化。控制字的ACQMOD位用來(lái)選擇內(nèi)部轉(zhuǎn)換模式和外部轉(zhuǎn)換模式,當(dāng)寫(xiě)入ACQMOD位為0的控制字時(shí),將啟動(dòng)內(nèi)部轉(zhuǎn)換模式,這里采用內(nèi)部采樣模式,一次轉(zhuǎn)換需要12個(gè)時(shí)鐘周期,轉(zhuǎn)換周期由芯片內(nèi)部時(shí)鐘確定。寫(xiě)入一個(gè)寫(xiě)脈沖(WR+
CS)可以啟動(dòng)一次轉(zhuǎn)換。當(dāng)在A/D轉(zhuǎn)換期間寫(xiě)入新的控制字時(shí),將中止轉(zhuǎn)換并啟動(dòng)一次新的采樣周期。A/D轉(zhuǎn)換結(jié)束,輸出低電平信號(hào)INT有效,信號(hào)RD讀取A/D轉(zhuǎn)換結(jié)果并復(fù)位INT信號(hào),完整的一個(gè)轉(zhuǎn)換周期結(jié)束。
2.2數(shù)據(jù)緩存器
系統(tǒng)采集的數(shù)據(jù)常常放在數(shù)據(jù)緩存器中。數(shù)據(jù)緩存區(qū)要求既要有與A/D芯片的接口,又要有與系統(tǒng)DSP的接口以提高數(shù)據(jù)吞吐率,因此常選用雙口RAM或FIFO。由于FIFO不需要地址尋址,為了簡(jiǎn)化控制信號(hào),本模塊采用FIFO芯片CY7C425作為數(shù)據(jù)緩存區(qū)。FIFO存儲(chǔ)器允許數(shù)據(jù)寫(xiě)入和讀出不依賴(lài)于數(shù)據(jù)速率,并且總是以寫(xiě)入的順序讀出。根據(jù)Full和Empty標(biāo)志來(lái)判斷存儲(chǔ)器全滿或空。FIFO芯片可以進(jìn)行數(shù)據(jù)寬度和存儲(chǔ)深度的擴(kuò)展而不會(huì)增加額外的時(shí)間延遲。當(dāng)寫(xiě)信號(hào)(W)為低電平時(shí)發(fā)和寫(xiě)操作,當(dāng)讀信號(hào)(R)為低電平時(shí)發(fā)生讀操作。A/D轉(zhuǎn)換的結(jié)果通過(guò)寫(xiě)操作不斷存入FIFO中,當(dāng)FIFO滿時(shí),F(xiàn)ull標(biāo)志有效,向系統(tǒng)申請(qǐng)中斷,DSP響應(yīng)中斷,立即啟動(dòng)DMA讀FIFO中的數(shù)據(jù),當(dāng)讀到空時(shí),Empty標(biāo)志有效,DSP停止讀入操作。采用兩片CY7C425擴(kuò)展為18位1024字的高速異步FIFO存儲(chǔ)器,數(shù)據(jù)處理速度達(dá)到50MHz,可以實(shí)現(xiàn)數(shù)據(jù)的高速寫(xiě)入和高速讀出。FIFO異步讀寫(xiě)時(shí)序見(jiàn)圖3。
2.3狀態(tài)機(jī)模塊
狀態(tài)機(jī)(FSM)完成自動(dòng)A/D轉(zhuǎn)換和數(shù)據(jù)存儲(chǔ),控制芯片是EPM7128SQC100。該狀態(tài)機(jī)由系統(tǒng)時(shí)鐘驅(qū)動(dòng),產(chǎn)生RD、WR、INT信號(hào),狀態(tài)機(jī)能連續(xù)運(yùn)行,不斷地寫(xiě)命令字以啟動(dòng)A/D轉(zhuǎn)換,然后讀出A/D的轉(zhuǎn)換結(jié)果并同時(shí)寫(xiě)入FIFO。時(shí)序圖見(jiàn)圖4。
復(fù)位時(shí),產(chǎn)生寫(xiě)脈沖WR,芯片MAX196在WR的上升沿鎖存外部輸入的命令控制字,開(kāi)始A/D轉(zhuǎn)換。當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),芯片INT變?yōu)榈碗娖,在下一個(gè)時(shí)鐘的上升沿,RD變?yōu)榈碗娖剑瑪?shù)據(jù)總線上輸出數(shù)據(jù)。當(dāng)RD信號(hào)低電平有效時(shí),INT信號(hào)變?yōu)楦唠娖,下一個(gè)時(shí)鐘的上升沿,RD信號(hào)變?yōu)楦唠娖,在RD的上升沿?cái)?shù)據(jù)被鎖存進(jìn)FIFO。RD信號(hào)回到高電平后,WR信號(hào)變?yōu)榈碗娖剑谑怯珠_(kāi)始下一次轉(zhuǎn)換。
3系統(tǒng)的VerilogHDL描述
電子系統(tǒng)設(shè)計(jì)中一般遵循自上而下的設(shè)計(jì)思路,對(duì)系統(tǒng)進(jìn)行設(shè)計(jì)、描述與仿真?紤]到模塊的通用性和可移植性,常常使用HDL語(yǔ)言來(lái)描述數(shù)字系統(tǒng),如VerilogHDL、VHDL、AHDL語(yǔ)言等。其中VerilogHDL語(yǔ)言具有結(jié)構(gòu)清晰、文法簡(jiǎn)明、功能強(qiáng)大、高速模擬和多庫(kù)支持等優(yōu)點(diǎn),被近90%的半導(dǎo)體公司使用,成為一種強(qiáng)大的設(shè)計(jì)工具。
3.1用VerilogHDL語(yǔ)言描述MAX196
用VerilogHDL程序描述MAX196模塊,可以把模塊用于采集系統(tǒng)的仿真,以驗(yàn)證狀態(tài)機(jī)設(shè)計(jì)的正確性。該模塊主要有三個(gè)輸入信號(hào)和一個(gè)輸出信號(hào),與芯片的控制信號(hào)是一致的。程序說(shuō)明如下:
moduleadc(reset,rd_adc,wr_adc,int_adc);
inputreset,rd_adc,wr_adc;
outputint_adc;
regint_adc;
always@(posedgewr_adcornegedgerd_adcornegedgereset
begin
if(!reset)int_adc=1;
elseif(rd_adc==0)beginint_adc=1;end
elsebegin#10int_adc=0;end
end
endmodule
3.2用VerilogHDL語(yǔ)言描述自動(dòng)狀態(tài)機(jī)
自動(dòng)狀態(tài)機(jī)有三個(gè)輸入信號(hào)和兩個(gè)輸出信號(hào),輸入信號(hào)中clk由DSP系統(tǒng)輸出以控制采樣速度,reset信號(hào)復(fù)位自動(dòng)狀態(tài)機(jī),int_adc是A/D芯片轉(zhuǎn)換結(jié)束的響應(yīng)信號(hào);輸出信號(hào)rd_adc、wr_adc控制A/D芯片的轉(zhuǎn)換開(kāi)始和數(shù)據(jù)的讀出,以及控制FIFO將數(shù)據(jù)寫(xiě)入FIFO。程序說(shuō)明如下:
modulefsm(int_adc,clk,reset,rd_adc,wr_adc);
outputrd_adc,wr_adc;
inputint_adc,clk,reset;
regrd_adc,wr_adc;
reg[1:0]present;
parameterreset_ad=2'h0,start_ad=2'h1,wait_ad=2'h2,read_ad=2'h3;
always@(posedgeclkornegedgereset
if(reset)beginpresent=reset_ad;rd_adc=1;wr_adc=0;end
else
begin
case(present)
reset_ad:if(rd_adc)
beginpresent=start_ad;wr_adc=1;end
start_ad:if(int_adc)
beginpresent=wait_ad:rd_adc=0;end
wait_ad:if(rd_adc)
beginpresent=read_ad;wr_adc=0;end
read_ad:if(int_adc)
beginpresent=reset_ad:rd_adc=1;end
endcase
end
endmodule
3.3數(shù)據(jù)采集系統(tǒng)
MAX196模塊和狀態(tài)機(jī)模塊組成高層模塊——自動(dòng)采樣系統(tǒng),通過(guò)模塊實(shí)例的調(diào)用和端口映射語(yǔ)句實(shí)現(xiàn)模塊的組合。特別設(shè)定輸出信號(hào)int_adc,可使仿真波形看得更加清楚。程序說(shuō)明如下:
Modulesimuadc(clk,reset,rd_adc,wr_adc,int_adc);//系統(tǒng)模塊
Outputrd_adc,wr_adc,int_adc;
Inputclk,reset;
Regrd_adc,wr_adc,int_adc;
Adcadcmax196(reset,rd_adc,wr_adc,int_adc);//A/D芯片模塊
Fsmfsmasp(int_adc,clk,reset,rd_adc,wr_adc);//狀態(tài)機(jī)模塊
endmodule
3.4仿真圖形
圖5為采集系統(tǒng)的時(shí)序仿真圖。CLK是系統(tǒng)外部時(shí)鐘,用于控制采樣頻率;RESET接外部復(fù)位信號(hào),可以控制采樣的起始時(shí)刻;MAX196的WR_ADC、RD_ADC、INT_ADC分別與邏輯芯片EPM7128的控制引腳相連接。仿真圖表明,復(fù)位后,只要有CLK時(shí)鐘輸出,A/D轉(zhuǎn)換將連續(xù)進(jìn)行,轉(zhuǎn)換數(shù)據(jù)依次存入FIFO,當(dāng)FIFO滿時(shí),向DSP發(fā)出斷請(qǐng)求,DSP及時(shí)響應(yīng)并啟動(dòng)DMA高速讀入FIFO中的值,由于DSP讀入的速度足夠快,因此A/D轉(zhuǎn)換并不需要停頓,從而實(shí)現(xiàn)實(shí)時(shí)采樣和實(shí)時(shí)處理。
本文提出的自動(dòng)采集系統(tǒng)采用CPLD芯片,用硬件描述語(yǔ)言設(shè)計(jì)自動(dòng)狀態(tài)機(jī),實(shí)現(xiàn)硬件控制數(shù)據(jù)采集和存儲(chǔ)。目前采集系統(tǒng)應(yīng)用于DSP應(yīng)用板卡上,免去了DSP監(jiān)控A/D芯片的時(shí)間,使信號(hào)處理系統(tǒng)能高效地完成復(fù)雜的隨機(jī)共振系統(tǒng)的研究。實(shí)際應(yīng)用證明該采集系統(tǒng)工作非常穩(wěn)定,若采用更高數(shù)據(jù)轉(zhuǎn)換速度的A/D芯片、頻率更高的系統(tǒng)時(shí)鐘,可以進(jìn)一步提高系統(tǒng)的數(shù)據(jù)采集速度。
【基于Verilog HDL設(shè)計(jì)的自動(dòng)數(shù)據(jù)采集系統(tǒng)】相關(guān)文章:
基于USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)02-21
基于Verilog HDL的CMOS圖像敏感器驅(qū)動(dòng)電路設(shè)計(jì)12-05
基于Web的MCF5249數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)02-20
基于USB總線的高速數(shù)據(jù)采集系統(tǒng)02-20
基于USB總線的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)02-20
基于USB2.0的高速同步數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)02-20
基于USB2.0總線的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)02-21