數字頻率計實驗報告

2022-03-05 11:03:16 字數 4899 閱讀 6996

數字頻率計設計

計雙0102 雷昊 2001011830786

一、課程設計內容及要求

本次課程設計要求設計並用fpga實現乙個數字頻率計,具體設計要求如下:

測量頻率範圍: 10hz~100khz 精度: δf / f ≤ ±2 %

系統外部時鐘: 1024hz 測量波形: 方波 vp-p = 3~5 v

硬體裝置:altera flex10k10 五位數碼管 led發光二極體

程式語言:verilog hdl / vhdl

二、系統總體設計

輸入待測訊號頻率自動選擇量程,並在超過最大量程時顯示過量程,當復位脈衝到來時,系統復位,重新開始計數顯示頻率。基於上述要求,可以將系統基本劃分為四個模組,分別為分頻、計數、鎖存和控制,並可以確定基本的連線和反饋,如上圖所示。

三、系統及模組設計與說明

如左圖所示為數字頻率計測量頻率的原理圖。已知給定標準時鐘脈衝高電平時間,將此高電平訊號作為計數器閘門電平,通過計數器得到時間內待測脈衝的個數n,則有。由圖示可以看出,乙個閘門電平時間內計數的最大誤差為n±1,為保證誤差要求取n≥100。

經計算,四檔的閘門電平時間分別為10s、1s、0.1s和0.01s。

僅對計數器計數值n進行簡單的移位即可得到結果。產生閘門電平的工作由分頻器完成。

分頻器採用計數分頻的方法,產生計數閘門電平和一系列控制脈衝,並接受計數器和控制器的反饋。控制器主要用來判斷計數器計數是否有效,從而控制檔位轉換,鎖存器開啟、關閉和設定值。計數器在分頻器和控制器的作用下對輸入待測訊號計數,並把計數值輸出,在計數溢位時向控制器和分頻器傳送溢位脈衝。

鎖存器用來儲存有效計數值,以穩定輸出。

四、系統及模組具體實現與說明

系統總體結構圖見附圖1,下面對每乙個模組的具體功能、引腳分配和verilog hdl語言程式設計實現進行詳細說明。

在分模組介紹之前先說明兩個重要的暫存器狀態stat[1..0]和latch_stat[1..0]。

stat[1..0]

用來儲存當前檔位資訊,stat[1..0]等於0則為第一檔,等於1則為第二檔,依此類推,共可標記四檔,它位於控制模組中,也是輸出,這樣其他模組可以通過訪問它得到當前檔位資訊,而控制模組可以修改它從而調整檔位(注:在系統總圖中由於所有與stat[1..

0]相連的線路均為對應順序連線,故沒有才用max+plus ii中預設的匯流排連線,而是採用單根線)。

latch_stat[1..0]

用來儲存鎖存器狀態資訊,latch_stat[1..0]=0時,鎖存器在clk作用下開啟關閉。latch_stat[1..

0]=1時,鎖存器強制置零,clk無效。latch_stat[1..0]= 2時,鎖存器強制置1ffff,clk無效。

它也在控制器中,這樣可以通過對其改變量值達到控制鎖存器鎖存、復位和顯示過量程的功能。

計數器counter

計數器設計圖見附圖1右上部分,由四個十進位制計數器級聯。四個輸入埠:時鐘脈衝clk、使能端en、清零端clrn、檔位狀態端stat[1..

0]。五個輸出埠:四個四位十進位制bcd碼輸出out1[3..

0]~out4[3..0]、過量程溢位of。功能表見下:

** 1十進位制計數器功能表

每個十進位制計數器用verilog hdl語言程式設計實現。源程式如下:

module counter_10(clk, en, clrn, cr, out);

//clk:時鐘脈衝,上公升沿觸發 en: 使能端,高電平有效

//clrn:清零端,上公升沿,高電平有效

input clk, en, clrn;

//cr: 進製端

output cr;

reg cr;

//四位十進位制bcd碼輸出

output[3:0] out;

reg[3:0] out;

always @(posedge clk or posedge clrn)

begin

//clrn 上公升沿、高電平清零

if(clrn) begin

out <= 0;

cr <= 0;

endelse begin

en為高,模十加一計數,en為低,計數保持

if(en) begin

if(out < 9) begin

out <= out + 1;

cr <= 0;

endelse if(out == 9) begin

out <= 0;

cr <= 1;

endelse begin

out <= 0;

cr <= 0;

end end

else begin

out <= out;

cr <= 0;

endendendendmodule

分頻器分頻器是本系統最重要的功能部件之一,由它產生閘門電平和控制器、計數器的控制脈衝。它有四個輸入:標準時鐘脈衝輸入clk1024、溢位處理觸發trigger、復位觸發reset和檔位狀態stat[1..

0]。三個輸出:計數閘門電平fgate、控制器工作脈衝ftrigger、計數器控制器清零脈衝fclr。

其組成圖見附圖2右上部分。

分頻器採用計數分頻的辦法,即使用一內部暫存器,在時鐘脈衝上公升沿加一計數,當計到一定值時就改變fgate的狀態,從而達到分頻的目的。由於輸入標準時鐘脈衝為1024hz,要得到0.1s的fgate計數值相當小,約為20,誤差很大,故在實際設計中把第四檔閘門電平時間調整為0.

1s,這樣第

三、四檔公用乙個閘門電平,同時在計數和鎖存時要做相應的移位,因為測量第四檔頻率時有4位有效數字。要得到10s、1s、0.1s三個fgate,分別要計數到10240、1024和103。

從組成圖中也可以看出分頻器由這三種計數器併聯組成,通過3個4選1選擇器(乙個74ls153和乙個4_1mux),由stat[1..0]選擇使用的fgate、fclr和ftrigger。

輸出fgate送計數器en作為計數器使能閘門電平。ftrigger送控制器trigger作為控制器工作脈衝。fclr送計數器clrn作為每次計數開始前的清零訊號,送控制器clr作為控制器內部觸發訊號。

這三個訊號的時序圖如下:

由圖可以看出fgate由高變低,即計數結束時,ftrigger訊號才產生,這時控制器開始工作,判斷計數是否有效,然後發出一系列指令直到fclr訊號到來,計數器清零,準備進入下一次計數。採用這樣的像cpu時鐘一樣的訊號的原因,一方面,處理計數資料只用了很短的時間,兩次測量之間時間很短,加快了頻率計的響應速度;另一方面,解決了非同步時序邏輯的競爭,使系統工作在非同步時序狀態下,既保持了很高的響應速度,又有很高的穩定性。為了解決在第一檔向第二檔轉換時等待時間過長的問題,分頻器由trigger埠接收乙個計數器的溢位脈衝,當計數器溢位時,在脈衝上公升沿將內部計數器置為fgate結束高電平的最後乙個計數器值。

這樣,由於控制器此時溢位已被置位,馬上就能進入一次換檔處理,保證了換檔的快速。另外,reset訊號上公升沿到來時,計數器被置為零,這樣就可以馬上重新開始計數,實現了復位的效果。分頻器單元freqcer_10240的源程式如下(其他兩個單元僅計數值不相同,其他均一樣,故不列在此,見附錄):

module freqcer_10240(clk, trigger, reset, out_gate, out_clr, out_trigger);

input clk, trigger, reset;

output out_gate, out_clr, out_trigger;

reg out_gate, out_clr, out_trigger;

reg[13:0] counter;

always @(posedge clk or posedge trigger or posedge reset)

begin

//計數器溢位,準備進入換檔狀態

if(trigger) begin

counter <= 10239;

end//復位

else if(reset) begin

清零,準備開始計數

counter <= 10239;

out_trigger <= 0;

out_clr <= 0;

out_gate <= 0;

end//非對稱式分頻

else if(counter <= 10239) begin

out_trigger <= 0;

out_gate <= 1;

out_clr <= 0;

counter <= counter + 1;

end//連續輸出3個trigger和乙個clr

else if((counter >= 10240) && (counter <= 10247)) begin

if((counter == 10241) || (counter == 10243) || (counter == 10245))

out_trigger <= 1;

else if(counter == 10247)

out_clr <= 1;

else begin

out_clr <= 0;

out_trigger <= 0;

endout_gate <= 0;

counter <= counter + 1;

endelse if(counter == 10248) begin

counter <= 0;

out_gate <= 0;

out_trigger <= 0;

out_clr <= 0;

endendendmodule

鎖存器鎖存器有八個輸入:時鐘脈衝clk,置位端set,復位端reset,4個4bit十進位制bcd輸入in1[3..0]~in4[3..

0],檔位狀態stat[1..0]。五個輸出:

5個5bit十進位制bcd輸出。組成圖見附圖2左上部分。由一橋接器bridge和4個latch_4_16、1個latch_4_1鎖存器組成。

數字頻率計

實驗報告 課程名稱 電子電路綜合設計指導老師 沈紅成績 實驗名稱 數字頻率計實驗型別同組學生姓名 一 設計任務 設計並製作乙個簡易數字頻率計電路。分三個頻段 1 10hz 100hz 99hz 2 100hz 1khz 999hz 3 1khz 10khz 9.9khz 當訊號頻率超過規定頻段的上限...

VHDL數字頻率計設計報告

電子科技大學 學生姓名 學號 指導教師 一 實驗室名稱 二 實驗專案名稱 數字及頻率計的設計及實現 三 實驗原理 1 測頻原理 若某一訊號在t秒時間裡重複變化了n 次,則根據頻率的定義可知該訊號的頻率fs 為 fs n t 通常測量時間t取1秒或它的十進位制時間。頻率計方框圖如下 1 時基t 產生電...

數字頻率計課程設計

數字電子技術課程設計報告 題目 數字頻率計 學院專業 班級姓名 指導教師 2009年 12月14 日 1 會運用電子技術課程所學到的理論知識,獨立完成設計課題。2 學會將單元電路組成系統電路的方法。3 熟悉中規模積體電路和半導體顯示器件的使用方法。4 通過查閱手冊和文獻資料,培養獨立分析和解決實際問...