摘要: 介紹了一種采用硬件控制的自動數據采集系統的設計方法,包括數字系統自頂向下的設計思路、Verilog HDL對系統硬件的描述和狀態機的設計以及MAX+PLUSII開發軟件的仿真。設計結果表明:該采集系統具有很高的實用價值,極大地提高了系統的信號處理能力。
關鍵詞: 可編程邏輯器件 Verilog HDL FIFO FSM
隨著數字時代的到來,數字技術的應用已經滲透到了人類生活的各個方面。數字系統的發展在很大程度上得益于器件和集成技術的發展,著名的摩爾定律(Moore's Law)的預言也在集成電路的發展過程中被印證了,數字系統的設計理念和設計方法在這過程中發生了深刻的變化。從電子CAD、電子CAE到電子設計自動化(EDA),隨著設計復雜程度的不斷增加,設計的自動化程度越來越高。目前,EDA技術作為電子設計的通用平臺,逐漸向支持系統級的設計發展;數字系統的設計也從圖形設計方案向硬件描述語言設計方案發展。可編程器件在數字系統設計領域得到廣泛應用,不僅縮短了系統開發周期,而且利用器件的現場可編程特性,可根據應用的要求對器件進行動態配置或編程,簡單易行地完成功能的添加和修改。
在現代工業的發展中,實時測控系統得到廣泛應用,這就對高速數字信號處理系統提出了更高的要求。因為要涉及大量的設計,為了提高運算速度,應用了大量DSP器件。數字采集系統是整個系統的核心部分之一,傳統方法是應用MCU或DSP通過軟件控制數據采集的模/數轉換,這樣必將頻繁中斷系統的運行從而減弱系統的數據運算,數據采集的速度也將受到限制。因此,DSP+CPLD的方案被認為是數字信號處理系統的最優方案之一,由硬件控制模/數轉換和數據存儲,從而最大限度地提高系統的信號采集和處理能力。
1 系統總體方案
數據采集系統是基于DSP的信號處理系統中的一部分。框圖如圖1所示。該數字信號處理系統用于隨機共振理論在弱信號檢測中的應用研究中。整個系統由信號放大、信號濾波、信號采樣、高速數字信號處理、與主計算機的高速數據傳輸接口等部分組成。其中,信號放大是對輸入信號進行調理 以滿足采樣的要求;信號濾波是防止信號產生“混疊現象”;信號采樣是完成模擬信號的數字化;高速數字信號處理是在建立隨機共振模型的基礎上完成各種算法;與主計算機的高速數據傳輸接口是滿足信號檢測的實時性,將DSP處理的數據傳給計算機以進行進一步的處理。
基于Verilog HDL設計的自動狀態機由硬件控制A/D轉換以及自動向FIFO中存儲數據,采樣頻率由DSP系統輸出時鐘確定,當采樣數據達到一幀時,FIFO向DSP申請中斷,DSP系統啟動DMA完成數據讀取。這期間數據采集不中斷,從而實現連續的實時數據采集和實時數據處理。數據采集系統由A/D芯片MAX196、邏輯控制芯片EPM7128、FIFO芯片CY7C425組成。控制邏輯用Verilog HDL語言描述,并進行了仿零點和實際驗證。
圖2
2 硬件電路設計
2.1 A/D轉換芯片
系統A/D轉換由MAX196芯片實現。MAX196的特點為:
①12位A/D轉換精度,1/2 LSB線性度;
③軟件選擇模擬量輸入范圍,分別為:±10V、±5V、0~5V、0~10V;
④6模擬量輸入通道;
⑤6μs轉換時間,100ksps采樣速率;
⑥內部或外部采樣控制;
⑦內部或外部時鐘控制轉換。
在MAX196的控制字中:
①A2A1A0為通道選擇字:000~101分別代表通過0~5;
②BIP、RNG為輸入范圍和極性選擇;
③ACQMOD:采樣控制模式,0為內部控制采樣,1為外部控制采樣;
④PD1、PD0為時鐘與省電模式選擇。
內部轉換模式時序如圖2所示。當向MAX196寫入包含通道選擇、量程選擇、極性選擇的控制字時,完成A/D轉換的初始化。控制字的ACQMOD位用來選擇內部轉換模式和外部轉換模式,當寫入ACQMOD位為0的控制字時,將啟動內部轉換模式,這里采用內部采樣模式,一次轉換需要12個時鐘周期,轉換周期由芯片內部時鐘確定。寫入一個寫脈沖(WR+CS)可以啟動一次轉換。當在A/D轉換期間寫入新的控制字時,將中止轉換并啟動一次新的采樣周期。A/D轉換結束,輸出低電平信號INT有效,信號RD讀取A/D轉換結果并復位INT信號,完整的一個轉換周期結束。
2.2 數據緩存器
系統采集的數據常常放在數據緩存器中。數據緩存區要求既要有與A/D芯片的接口,又要有與系統DSP的接口以提高數據吞吐率,因此常選用雙口RAM或FIFO。由于FIFO不需要地址尋址,為了簡化控制信號,本模塊采用FIFO芯片CY7C425作為數據緩存區。FIFO存儲器允許數據寫入和讀出不依賴于數據速率,并且總是以寫入的順序讀出。根據Full和Empty標志來判斷存儲器全滿或空。FIFO芯片可以進行數據寬度和存儲深度的擴展而不會增加額外的時間延遲。當寫信號(W)為低電平時發和寫操作,當讀信號(R)為低電平時發生讀操作。A/D轉換的結果通過寫操作不斷存入FIFO中,當FIFO滿時,Full標志有效,向系統申請中斷,DSP響應中斷,立即啟動DMA讀FIFO中的數據,當讀到空時,Empty標志有效,DSP停止讀入操作。采用兩片CY7C425擴展為18位1024字的高速異步FIFO存儲器,數據處理速度達到50MHz,可以實現數據的高速寫入和高速讀出。FIFO異步讀寫時序見圖3。
2.3 狀態機模塊
狀態機(FSM)完成自動A/D轉換和數據存儲,控制芯片是EPM7128SQC100。該狀態機由系統時鐘驅動,產生RD、WR、INT信號,狀態機能連續運行,不斷地寫命令字以啟動A/D轉換,然后讀出A/D的轉換結果并同時寫入FIFO。時序圖見圖4。
復位時,產生寫脈沖WR,芯片MAX196在WR的上升沿鎖存外部輸入的命令控制字,開始A/D轉換。當A/D轉換結束時,芯片INT變為低電平,在下一個時鐘的上升沿,RD變為低電平,數據總線上輸出數據。當RD信號低電平有效時,INT信號變為高電平,下一個時鐘的上升沿,RD信號變為高電平,在RD的上升沿數據被鎖存進FIFO。RD信號回到高電平后,WR信號變為低電平,于是又開始下一次轉換。
3 系統的Verilog HDL描述
電子系統設計中一般遵循自上而下的設計思路,對系統進行設計、描述與仿真。考慮到模塊的通用性和可移植性,常常使用HDL語言來描述數字系統,如Verilog HDL、VHDL、AHDL語言等。其中Verilog HDL語言具有結構清晰、文法簡明、功能強大、高速模擬和多庫支持等優點,被近90%的半導體公司使用,成為一種強大的設計工具。
3.1 用Verilog HDL語言描述MAX196
用Verilog HDL程序描述MAX196模塊,可以把模塊用于采集系統的仿真,以驗證狀態機設計的正確性。該模塊主要有三個輸入信號和一個輸出信號,與芯片的控制信號是一致的。程序說明如下:
module adc(reset,rd_adc,wr_adc,int_adc);
input reset,rd_adc,wr_adc;
output int_adc;
reg int_adc;
always @(posedge wr_adc or negedge rd_adc or negedge reset)
begin
if(!reset)int_adc=1;
else if(rd_adc==0)begin int_adc=1;end
else begin #10 int_adc=0;end
end
endmodule
3.2 用Verilog HDL語言描述自動狀態機
自動狀態機有三個輸入信號和兩個輸出信號,輸入信號中clk由DSP系統輸出以控制采樣速度,reset信號復位自動狀態機,int_adc是A/D芯片轉換結束的響應信號;輸出信號rd_adc、wr_adc控制A/D芯片的轉換開始和數據的讀出,以及控制FIFO將數據寫入FIFO。程序說明如下:
module fsm(int_adc,clk,reset,rd_adc,wr_adc);
output rd_adc,wr_adc;
input int_adc,clk,reset;
reg rd_adc,wr_adc;
reg[1:0]present;
parameter reset_ad=2'h0,start_ad=2'h1,wait_ad=2'h2,read_ad=2'h3;
always @(posedge clk or negedge reset)
if(reset)begin present=reset_ad;rd_adc=1;wr_adc=0;end
else
begin
case(present)
reset_ad:if(rd_adc)
begin present=start_ad;wr_adc=1;end
start_ad:if(int_adc)
begin present=wait_ad:rd_adc=0;end
wait_ad:if(rd_adc)
begin present=read_ad;wr_adc=0;end
read_ad:if(int_adc)
begin present=reset_ad:rd_adc=1;end
endcase
end
endmodule
3.3 數據采集系統
MAX196模塊和狀態機模塊組成高層模塊——自動采樣系統,通過模塊實例的調用和端口映射語句實現模塊的組合。特別設定輸出信號int_adc,可使仿真波形看得更加清楚。程序說明如下:
Module simuadc(clk,reset,rd_adc,wr_adc,int_adc);//系統模塊
Output rd_adc,wr_adc,int_adc;
Input clk,reset;
Reg rd_adc,wr_adc,int_adc;
Adc adcmax196(reset,rd_adc,wr_adc,int_adc);//A/D芯片模塊
Fsm fsmasp(int_adc,clk,reset,rd_adc,wr_adc);//狀態機模塊
endmodule
3.4 仿真圖形
圖5為采集系統的時序仿真圖。CLK是系統外部時鐘,用于控制采樣頻率;RESET接外部復位信號,可以控制采樣的起始時刻;MAX196的WR_ADC、RD_ADC、INT_ADC分別與邏輯芯片EPM7128的控制引腳相連接。仿真圖表明,復位后,只要有CLK時鐘輸出,A/D轉換將連續進行,轉換數據依次存入FIFO,當FIFO滿時,向DSP發出斷請求,DSP及時響應并啟動DMA高速讀入FIFO中的值,由于DSP讀入的速度足夠快,因此A/D轉換并不需要停頓,從而實現實時采樣和實時處理。
本文提出的自動采集系統采用CPLD芯片,用硬件描述語言設計自動狀態機,實現硬件控制數據采集和存儲。目前采集系統應用于DSP應用板卡上,免去了DSP監控A/D芯片的時間,使信號處理系統能高效地完成復雜的隨機共振系統的研究。實際應用證明該采集系統工作非常穩定,若采用更高數據轉換速度的A/D芯片、頻率更高的系統時鐘,可以進一步提高系統的數據采集速度。
評論
查看更多