久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

數(shù)字頻率計

時間:2019-05-14 01:36:02下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《數(shù)字頻率計》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《數(shù)字頻率計》。

第一篇:數(shù)字頻率計

//*********************************************************************

//* 標題: 簡易數(shù)字頻率計 //* 文件: topdesign.v

//* 作者: SJ&QJY

//* 日期: 2009.06.10 //* 修改: 2009.12.20

//* 軟件: Xilinx ISE 7.1 SP4

//* 芯片: Xilinx Spartan2 FPGA(XC2S200-pq208)

//* 說明: 測頻率并用LCD顯示,從信號源接入一個信號(正弦波,三角波或者方波),經(jīng)過AD1轉(zhuǎn)換后,送入FPGA中。

//在FPGA中,使用雙值法整形,得到標準的方波,然后測出頻率,并送入1602中顯示。經(jīng)測試,其測頻誤差小于0.5%,其測頻范圍為10Hz-10MHz。

//********************************************************************* //* 注意: 輸入信號電壓峰峰值不要超過AD輸入范圍,即4V。

//*********************************************************************

//---------------module topdesign(clk, rst, lcd_rs, lcd_rw, lcd_en, lcd_d, ad1_clk, ad1_d);

input clk;

//時鐘信號40MHz input rst;

//全局復位信號

output lcd_rs;//LCD數(shù)據(jù)/命令選擇信號,'1'表示數(shù)據(jù)輸入,'0'表示命令輸入

output lcd_rw;

//LCD讀/寫信號,'1'表示讀,'0'表示寫

output reg lcd_en;

//LCD使能信號,'1'有效

output[7:0] lcd_d;

//LCD數(shù)據(jù)總線(8位)

output ad1_clk;

//AD時鐘信號

input[11:0] ad1_d;

//AD9224,12位AD輸入

//LCD時序常量信號

parameter[10:0] IDLE = 11'b00000000000;

//初始化

parameter[10:0] CLEAR = 11'b00000000001;

//清屏

parameter[10:0] RETURNCURSOR = 11'b00000000010;//歸位

parameter[10:0] SETMODE = 11'b00000000100;

//設置輸入模式。此狀態(tài)為完成一個字符碼傳送后,AC自動減1,顯示不發(fā)生移位

parameter[10:0] SWITCHMODE = 11'b00000001000;//顯示開關(guān)控制

parameter[10:0] SHIFT = 11'b00000010000;//光標或顯示移位

parameter[10:0] SETFUNCTION = 11'b00000100000;//功能設置:數(shù)據(jù)總線選8位還是4位

parameter[10:0] SETCGRAM = 11'b00001000000;//CGRAM的地址設置

parameter[10:0] SETDDRAM = 11'b00010000000;

//DDRAM地址設置

parameter[10:0] READFLAG = 11'b00100000000;//讀忙標志BF和AC

parameter[10:0] WRITERAM = 11'b01000000000;

//寫數(shù)據(jù)到CGRAM或DDRAM

parameter[10:0] READRAM = 11'b10000000000;

parameter cur_inc = 1'b1;

parameter cur_dec = 1'b0;

parameter cur_shift = 1'b1;

parameter cur_noshift = 1'b0;

parameter open_display = 1'b1;

parameter open_cur = 1'b0;

parameter blank_cur = 1'b0;

parameter shift_display = 1'b1;

parameter shift_cur = 1'b0;

parameter right_shift = 1'b1;

parameter left_shift = 1'b0;

parameter datawidth8 = 1'b1;

parameter datawidth4 = 1'b0;

parameter twoline = 1'b1;

parameter oneline = 1'b0;

parameter font5x10 = 1'b1;

parameter font5x7 = 1'b0;

reg[10:0] state;

//時序信號

reg[5:0] counter;

reg[3:0] div_counter;

reg flag;

//輔助時序信號

parameter DIVSS = 4'd15;

reg[5:0] char_addr;

reg[7:0] data_in;

//延遲參量信號

reg clk_int;

reg[19:0] clkcnt;

parameter[19:0] divcnt = 20'b***00000;

reg clkdiv;

wire tc_clkcnt;

//測頻部分

parameter[15:0] ad_d_chankao1 = 16'b***1;

parameter[15:0] ad_d_chankao2 = 16'b***1;

reg[15:0] ad1_d_r;

//計數(shù)部分

reg[25:0] yimiao;

//用來計數(shù)

reg rukou;

//整形方波

reg[3:0] odata7;

//記錄數(shù)據(jù)

reg[3:0] odata6;

reg[3:0] odata5;

reg[3:0] odata4;

reg[3:0] odata3;

reg[3:0] odata2;

//將近-25mV //將近25mV

reg[3:0] odata1;

reg[3:0] odata0;

reg[7:0] data7;

reg[7:0] data6;

reg[7:0] data5;

reg[7:0] data4;

reg[7:0] data3;

reg[7:0] data2;

reg[7:0] data1;

reg[7:0] data0;

reg yimiao_rst;

//將記錄的數(shù)據(jù)轉(zhuǎn)換成ASCII碼,以便顯示

//數(shù)據(jù)清零信號

//主程序

assign ad1_clk = clk;

always @(posedge clk)

begin

yimiao_rst =(yimiao == 26'b***00111111111)? 1'b0 : 1'b1;//一秒時清零信號有效

end //測頻部分

always @(posedge clk)

begin

ad1_d_r <= {ad1_d, 4'b0000};

if(ad1_d_r > ad_d_chankao2)

rukou <= 1'b1;

if(ad1_d_r < ad_d_chankao1)

rukou <= 1'b0;

end //1秒鐘測頻

always @(posedge clk)

//每1秒鐘循環(huán)一次

begin

if(yimiao == 26'b***01000000000)

yimiao <= 26'b***00000000000;

else

yimiao <= yimiao + 1;

end

//計數(shù)部分

always @(posedge rukou or negedge yimiao_rst)

if(~yimiao_rst)

begin

odata0 <= 4'b0000;

odata1 <= 4'b0000;

odata2 <= 4'b0000;

odata3 <= 4'b0000;

odata4 <= 4'b0000;

odata5 <= 4'b0000;

odata6 <= 4'b0000;

odata7 <= 4'b0000;

end

else if(yimiao < 26'b***00111111111)

begin

begin

if(odata0 == 4'b1001)

begin

odata0 <= 4'b0000;

if(odata1 == 4'b1001)

begin

odata1 <= 4'b0000;

if(odata2 == 4'b1001)

begin

odata2 <= 4'b0000;

if(odata3 == 4'b1001)

begin

odata3 <= 4'b0000;

if(odata4 == 4'b1001)

begin

odata4 <= 4'b0000;

if(odata5 == 4'b1001)

begin

odata5 <= 4'b0000;

if(odata6 == 4'b1001)

begin

odata6 <= 4'b0000;

if(odata7 == 4'b1001)

begin

odata7 <= 4'b0000;

end

else

begin

odata7 <= odata7 + 1;

end

end

else

begin

odata6 <= odata6 + 1;

end

end

else

begin

odata5 <= odata5 + 1;

end

end

else

begin

odata4 <= odata4 + 1;

end

end

else

begin

odata3 <= odata3 + 1;

end

end

else

begin

odata2 <= odata2 + 1;

end

end

else

begin

odata1 <= odata1 + 1;

end

end

else

begin

odata0 <= odata0 + 1;

end

end

end

//碼制轉(zhuǎn)換

always @(posedge clk)

begin

if(yimiao == 26'b***00111110110)

begin

data7 <= {4'b0011, odata7};

//將二進制BCD碼轉(zhuǎn)換成ASCII碼,即1602可以顯示的碼值

data6 <= {4'b0011, odata6};

data5 <= {4'b0011, odata5};

data4 <= {4'b0011, odata4};

data3 <= {4'b0011, odata3};

data2 <= {4'b0011, odata2};

data1 <= {4'b0011, odata1};

data0 <= {4'b0011, odata0};

end

end

//時鐘分頻

always @(posedge clk)

begin

if(clkcnt == divcnt)

begin

clkcnt <= 20'b***00000;

end

else

begin

clkcnt <= clkcnt + 1;

end

end

assign tc_clkcnt =(clkcnt == divcnt)? 1'b1 : 1'b0;//tc_clkcnt 0.016s產(chǎn)生一次脈沖

always @(posedge tc_clkcnt)

begin

clkdiv <= ~clkdiv;

0.032s

end

always @(posedge clkdiv)

begin

clk_int <= ~clk_int;

end

//顯示界面設置

always @(negedge clkdiv)

begin

lcd_en <= ~lcd_en;

end

always @(char_addr)

begin

case(char_addr)

6'b000000 : //I

//clkdiv 0.016s翻轉(zhuǎn)一次,周期為

//clk_int 0.032s翻轉(zhuǎn)一次,周期為0.064s

begin

data_in <= 8'b01001001;

end

6'b000001 ://n

begin

data_in <= 8'b01101110;

end

6'b000010 : //p

begin

data_in <= 8'b01110000;

end

6'b000011 :

//u

begin

data_in <= 8'b01110101;

end

6'b000100 :

//t

begin

data_in <= 8'b01110100;

end

6'b000101 : //空格

begin

data_in <= 8'b00100000;

end

6'b000110 :

//F

begin

data_in <= 8'b01100110;

end

6'b000111 :

//r

begin

data_in <= 8'b01110010;

end

6'b001000 :

//e

begin

data_in <= 8'b01100101;

end

6'b001001 :

//q

begin

data_in <= 8'b01110001;

end

6'b001010 :

//u

begin

data_in <= 8'b01110101;

end

6'b001011 : //e

begin

data_in <= 8'b01100101;

end

6'b001100 : //n

begin

data_in <= 8'b01101110;

end

6'b001101 : //c

begin

data_in <= 8'b01100011;

end

6'b001110 : //y

begin

data_in <= 8'b01111001;

end

6'b001111 :

//空格

begin

data_in <= 8'b00100000;

end

6'b101000 :

//“=”

begin

data_in <= 8'b00111101;

end

6'b101001 :

//若為零則顯示空格

begin

if(data7 == 8'b00110000)

begin

data_in <= 8'b00100000;

end

else

begin

data_in <= data7;

end

end

6'b101010 : //若為零則顯示空格

begin

data_in <= data6;

if(data6 == 8'b00110000 & data7 == 8'b00110000)

begin

data_in <= 8'b00100000;

end

else

begin

data_in <= data6;

end

end

6'b101011 :

//若為零則顯示空格

begin

data_in <= data5;

if(data5 == 8'b00110000 & data6 == 8'b00110000 & data7 == 8'b00110000)

begin

data_in <= 8'b00100000;

end

else

begin

data_in <= data5;

end

end

6'b101100 : //若為零則顯示空格

begin

data_in <= data4;

if(data4 == 8'b00110000 & data5 == 8'b00110000 & data6 == 8'b00110000 & data7 == 8'b00110000)

begin

data_in <= 8'b00100000;

end

else

begin

data_in <= data4;

end

end

6'b101101 :

//若為零則顯示空格

begin

data_in <= data3;

if(data3 == 8'b00110000 & data4 == 8'b00110000 & data5 == 8'b00110000 & data6 == 8'b00110000 & data7 == 8'b00110000)

begin

data_in <= 8'b00100000;

end

else

begin

data_in <= data3;

end

end

6'b101110 :

//若為零則顯示空格

begin

data_in <= data2;

if(data2 == 8'b00110000 & data3 == 8'b00110000 & data4 == 8'b00110000 & data5 == 8'b00110000 & data6 == 8'b00110000 & data7 == 8'b00110000)

begin

data_in <= 8'b00100000;

end

else

begin

data_in <= data2;

end

end

6'b101111 :

//若為零則顯示空格

begin

data_in <= data1;

if(data1 == 8'b00110000 & data2 == 8'b00110000 & data3 == 8'b00110000 & data4 == 8'b00110000 & data5 == 8'b00110000 & data6 == 8'b00110000 & data7 == 8'b00110000)

begin

data_in <= 8'b00100000;

end

else

begin

data_in <= data1;

end

end

6'b110000 :

begin

data_in <= data0;

end

6'b110110 :

//H

begin

data_in <= 8'b01001000;

end

6'b110111 :

//z

begin

data_in <= 8'b01111010;

end

default :

begin

data_in <= 8'b00100000;

end

endcase

end

assign lcd_rs =(state == WRITERAM | state == READRAM)? 1'b1 : 1'b0;

assign lcd_rw =(state == CLEAR | state == RETURNCURSOR | state == SETMODE | state ==

SWITCHMODE | state == SHIFT | state == SETFUNCTION | state == SETCGRAM | state == SETDDRAM | state == WRITERAM)? 1'b0 : 1'b1;

assign lcd_d =(state == CLEAR)? 8'b00000001 :(state == RETURNCURSOR)? 8'b00000010 :(state == SETMODE)? {6'b000001, cur_inc, cur_noshift} :(state == SWITCHMODE)? {5'b00001, open_display, open_cur, blank_cur} :(state == SHIFT)? {4'b0001, shift_display, left_shift, 2'b00} :(state == SETFUNCTION)? {3'b001, datawidth8, twoline, font5x10, 2'b00} :(state == SETCGRAM)? 8'b01000000 :(state == SETDDRAM & counter == 0)? 8'b10000000 :(state == SETDDRAM & counter!= 0)? 8'b11000000 :(state == WRITERAM)? data_in : 8'bZZZZZZZZ;

//時序進程

always @(posedge clk_int or posedge rst)

begin

if(rst)

begin

state <= IDLE;

counter <= 0;

div_counter <= 0;

flag <= 1'b0;

char_addr <= 6'b000000;

end

else

case(state)

IDLE :

begin

if(flag == 1'b0)

begin

state <= SETFUNCTION;

flag <= 1'b1;

counter <= 0;

div_counter <= 0;

end

else

begin

if(div_counter < DIVSS)

begin

div_counter <= div_counter + 1;

state <= IDLE;

end

else

begin

div_counter <= 0;

state <= IDLE;

end

end

end

CLEAR :

begin

state <= SETMODE;

end

SETMODE :

begin

state <= WRITERAM;

end

RETURNCURSOR :

begin

state <= WRITERAM;

end

SWITCHMODE :

begin

state <= CLEAR;

end

SHIFT :

begin

state <= IDLE;

end

SETFUNCTION :

begin

state <= SWITCHMODE;

end

SETCGRAM :

begin

state <= IDLE;

end

SETDDRAM :

begin

state <= WRITERAM;

end

READFLAG :

begin

state <= IDLE;

end

WRITERAM :

//可用來修改,實現(xiàn)1602的輸出顯示

begin

if((counter >= 6'd0 & counter <= 6'd14)|(counter >= 6'd40 & counter <= 6'd54))

begin

state <= WRITERAM;

//一行同時只能顯示16個字符,第二行的首地址為40

char_addr <= char_addr + 1;

counter <= counter + 1;

end

else if(counter > 6'd14)

//換到第二行顯示

begin

state <= SETDDRAM;

counter <= 6'd40;

char_addr <= 6'b101000;

end

else

begin

state <= SHIFT;

state <= READRAM;

end

end

READRAM :

begin

state <= IDLE;

end

default :

begin

state <= IDLE;

end

endcase

end endmodule

第二篇:數(shù)字頻率計設計

數(shù)字頻率計設計 1.設計任務

設計一簡易數(shù)字頻率計,其基本要求是:

1)測量頻率范圍1Hz~10Hz,量程分為4檔,即×1,×10,×100,×1000。2)頻率測量準確度?fx??2?10?3.fx3)被測信號可以是下弦波、三角波和方波。4)顯示方式為4位十進制數(shù)顯示。5)使用EWB進行仿真。2.設計原理及方案

頻率的定義是單位時間(1s)內(nèi)周期信號的變化次數(shù)。若在一定時間間隔T內(nèi)測得周期信號的重復變化次數(shù)為N,則其頻率為

f=N/T 據(jù)此,設計方案框圖如圖1所示。

圖1 數(shù)字頻率計組成框圖

其基本原理是,被測信號ux首先經(jīng)整形電路變成計數(shù)器所要求的脈沖信號,頻率與被測信號的頻率fx相同。時鐘電路產(chǎn)生時間基準信號,分頻后控制計數(shù)與保持狀態(tài)。當其高電平時,計數(shù)器計數(shù);低電平時,計數(shù)器處于保持狀態(tài),數(shù)據(jù)送入鎖存器進行鎖存顯示。然后對計數(shù)器清零,準備下一次計數(shù)。其波形邏輯關(guān)系圖如圖2所示。3.基本電路設計 1)整形電路

整形電路是將待測信號整形變成計數(shù)器所要求的脈沖信號。電路形式采用由555定時器所構(gòu)成的施密特觸發(fā)器,電路如圖XXX所示。若待測信號為三角波,輸入整形電路,設置分析為瞬態(tài)分析,啟動電路,其輸入、輸出波形如圖XXX所示。可見輸出為方波,二者頻率相同。

2)時鐘產(chǎn)生電路

時鐘信號是控制計數(shù)器計數(shù)的標準時間信號,其精度很大程度上決定了頻率計的頻率測量精度。當要求頻率測量精度較高時,應使用晶體振蕩器通過分頻獲得。在此頻率計中,時鐘信號采用555定時器構(gòu)成的多諧振蕩器電路,產(chǎn)生頻率為1Kz的信號,然后再進行分頻。多諧振蕩器電路如圖XXX所示。由555定時器構(gòu)成多諧振蕩器的周期計算公式為

XXXXXXXXXX 取XXXXXXXXXXXXXX,則得到振蕩頻率為1Kz的負脈沖,其振蕩波形如圖XXX所示。3)分頻器電路

采用計數(shù)器構(gòu)成分頻電路,對1Kz的時鐘脈沖進行分頻,取得不同量程所需要的時間基準信號,實現(xiàn)量程控制。1Kz的時鐘脈沖,對其進行3次10分頻,每個10分頻器的輸出信號頻率分別為100Hz,10Hz,1Hz三種時間基準信號。對應于以1Kz,100Hz,10Hz,1Hz的信號作為時間基準信號時,相應的量程為×1000,×100,×10,×1。

構(gòu)成10分頻帶電路是采用十進制計數(shù)器74LS160實現(xiàn)的。具體電路及其輸入、輸出波形如圖XXX所示。

(1)T觸發(fā)器

T觸發(fā)器電路是用來將分頻帶器輸出阻抗的窄脈沖整形為方波,因為計數(shù)器需要用方波來控制其計數(shù)/保持狀態(tài)的切換。整形后方波的頻率為頻器輸出信號頻率的一半,則對應于1Kz,100Kz,10Kz,1Hz的信號,T觸發(fā)器輸出信號的高電平持續(xù)時間分別為0.001s,0.01s,0.1s,1s。T觸發(fā)器采用JK觸發(fā)器7473為實現(xiàn),其電路連接圖及其輸入、輸出波形如圖XXX所示。

(2)單穩(wěn)觸發(fā)器

單穩(wěn)觸發(fā)器用于產(chǎn)生一窄脈沖,以觸發(fā)鎖存器,使計數(shù)器在計數(shù)完畢后更新鎖存器數(shù)值。單穩(wěn)觸發(fā)器電路采用555定時器實現(xiàn),為了保證系統(tǒng)正常工作,單穩(wěn)電路產(chǎn)生的脈沖寬度不能大于該量程分頻帶器輸出信號的周期。例如,計數(shù)器的最大量程是×1000,對應分頻帶器輸出的時間基準信號頻率為1000Hz,周期是1ms。取單穩(wěn)電路輸出脈沖寬度TW=0.1ms。根據(jù)TW=1.1RC,取C=0.01Uf,則R=9.8KΩ,取標稱什為10KΩ。單穩(wěn)觸發(fā)器輸入信號是T觸發(fā)器輸出信號經(jīng)Rd、Cd組成的微分器將方波變成尖脈沖后加到555定時器的觸發(fā)器。電路圖及輸入、輸出波形如圖XXX所示。

(3)延遲反相器

延時反相器的功能是為了得到一個對計數(shù)器清零的信號。由于計數(shù)器清零是低電平有效,而且計數(shù)器清零必須在單穩(wěn)觸發(fā)信號之后,故延遲反相器是在上述單穩(wěn)電路之后,再加一級單穩(wěn)觸發(fā)電路,且在其輸出端加反相器輸出。其輸入、輸出波形如圖XXX所示。(4)計數(shù)器

計數(shù)器在T觸發(fā)器輸出信號的控制下,對經(jīng)過整形的待測信號進行脈沖計數(shù),所得結(jié)果乘以量程即為待測信號頻率。

根據(jù)精度要求,采用4個十進制計數(shù)器級聯(lián),構(gòu)成N=1000計數(shù)器。十進制計數(shù)器仍采用74LS160實現(xiàn)。其電路圖如圖XXX所示。其中計數(shù)器的清零信號由延遲反相器提供,控制信號由T觸發(fā)器提供,計數(shù)器輸出結(jié)果送入鎖存器。

(5)鎖存器和顯示

計數(shù)器的結(jié)果進入鎖存器鎖存,4個七段數(shù)碼管顯示測試信號的頻率。鎖存器使用了兩片8D集成觸發(fā)器實現(xiàn),其控制信號來自于延遲反相器,具體電路如圖XXX所示。

(6)數(shù)字頻率計的總體電路

圖XXX是數(shù)字頻率計的總體電路圖。

4.測試

搭建好以上電路以后,進行調(diào)試,首先分模塊進行調(diào)試,待每一個模塊調(diào)試正確后,不規(guī)則進行聯(lián)調(diào)。因為整個電路的分析是瞬態(tài)分析,故總體電路的分析需要較長時間。以上僅僅是學生所做綜合電路分析與設計的例子,由于EWB5.12教學版本庫元件的限制,有些電路與系統(tǒng)無法進行全部電路的仿真(例如收發(fā)信通信系統(tǒng)等),但有些局部電路也可以進行仿真,從而節(jié)省對這部分電路設計化費的時間。

第三篇:數(shù)字頻率計實驗報告

數(shù)字電路與系統(tǒng)課程設計

大連理工大學城市學院

數(shù)字電路與系統(tǒng)課程設計

設計題目:數(shù)字頻率計

學 院:電子與自動化學院 專 業(yè): 自動化 學 生: 揣智涵 同 組 人: 王曉寧 周英茹 指導教師: 于海霞 完成日期: 2012年3月26日

數(shù)字電路與系統(tǒng)課程設計

目 錄

第一章 設計任務

1.1項目名稱 1.2項目設計說明 1.2.1設計任務和要求 1.2.2進度安排 1.3項目總體功能模塊圖

第二章 需求分析

2.1問題基本描述

(要求分析得出整個系統(tǒng)流程圖)2.2系統(tǒng)模塊分解及各模塊功能的基本要求

第三章 設計原理

3.1 設計原理 3.2 MAXPLUSII介紹

第四章 系統(tǒng)功能模塊設計

4.1 FEN模塊

4.1.1 FEN模塊流程圖

4.1.2 輸入輸出引腳及其功能說明 4.1.3 程序代碼實現(xiàn) 4.2 SEL模塊

4.2.1 SEL模塊流程圖

4.2.2輸入輸出引腳及其功能說明 4.2.3程序代碼實現(xiàn)

數(shù)字電路與系統(tǒng)課程設計

4.3 CORNA模塊

4.3.1 CORNA模塊流程圖

4.3.2 輸入輸出引腳及其功能說明 4.3.3 程序代碼實現(xiàn) 4.4 LOCK模塊

4.4.1 LOCK模塊流程圖

4.4.2 輸入輸出引腳及其功能說明 4.4.3 程序代碼實現(xiàn) 4.5 CH模塊

4.5.1 輸入輸出引腳及其功能說明 4.5.2 程序代碼實現(xiàn) 4.6 DISP模塊

4.6.1 輸入輸出引腳及其功能說明 4.6.2 程序代碼實現(xiàn)

第五章調(diào)試并分析結(jié)果

5.1輸入說明 5.2預計輸出 5.3測試結(jié)果記錄 5.4測試結(jié)果分析

第六章 結(jié)論 心得體會 參考文獻

數(shù)字電路與系統(tǒng)課程設計

第一章 設計任務

1.1 項目名稱:數(shù)字頻率計 1.2 項目設計說明

1.2.1 設計任務和要求 此頻率計共分4檔: 一檔:0~9999Hz;二檔:10~99.99kHZ;三檔:100.0~999.9kHz;,四檔:1.000~999MHz;在換擋的設計方面,此程序突破了以往改變閘門時間的方法,使自動換擋的實現(xiàn)更加簡單可靠。1.2.2 進度安排

第一節(jié)課:畫出模塊及程序流程圖

第二節(jié)課:調(diào)試各模塊程序使其無誤

第三節(jié)課:連接整個程序并下載到試驗箱是數(shù)字頻率計的功能實現(xiàn)

第四節(jié)課:改進程序設計實現(xiàn)創(chuàng)新,然后完成課程設計報告

第五節(jié)課:完成答辯 1.3 項目總體功能模塊圖如下

數(shù)字電路與系統(tǒng)課程設計

圖1-1

數(shù)字電路與系統(tǒng)課程設計

第二章 需求分析

2.1 問題基本描述

所謂頻率,就是周期信號在單位時間(1秒)內(nèi)變化的次數(shù)。頻率計的測量范圍為1MHZ,為了測量精確量程分別為10KHZ,100KHZ,1000KHZ和1MHZ四個檔。即最大讀數(shù)分別為9.999KHZ,99.99KHZ,999.9KHZ,999MHZ。要求兩成自動換擋。其具體功能如下:

(1)當量程超過999時,自動增大一檔,下一次測量時量程大一檔;

(2)當超過測量范圍時,顯示溢出,報警器報警。(3)小數(shù)點位置隨量程變化自動移位。

(4)采用記憶顯示方法,在測量過程中不顯示數(shù)據(jù),在測量完成以后顯示測頻結(jié)果,并將此結(jié)果 保存到下次測量結(jié)束,顯示時間不少于1秒。

(5)根據(jù)頻率計的測頻原理,可以選擇合適的時基信號即閥門時間,對輸入信號脈沖進行計數(shù),實現(xiàn)測頻的目的。

(6)根據(jù)數(shù)字頻率計的設計原理,可以將數(shù)字頻率計設計分為五個模塊來實現(xiàn)其功能。即分頻模塊,控制模塊,計數(shù)模塊,鎖存模塊和顯示模塊。用CLDH語言進行編程。

(7)弄清什么情況下是測頻率,就是選擇合適的時基信號的問題。測頻率時以輸入信號作為時鐘信號,因為輸入信號的頻率大于頻率計的基準頻率。:

數(shù)字電路與系統(tǒng)課程設計

數(shù)字頻率計的系統(tǒng)流程圖如下

圖2-1

數(shù)字電路與系統(tǒng)課程設計

2.2 系統(tǒng)模塊分解及各模塊功能的基本要求

計數(shù)器在各個檔是被反復應用的,如果在各個檔分別設計計數(shù)器就造成資源的浪費,而且在測周期和頻率的時候,計數(shù)器的時基信號和輸入信號要進行調(diào)換,但計數(shù)功能是一樣的,所以將計數(shù)器設為單獨的模塊。七段譯碼器也是被重復使用的,也設成單獨的模塊,這樣的話就不用在重復使用的時候重復書寫譯碼電路了。總體來說數(shù)字頻率計分為五個模塊來設計,即分頻模塊計數(shù) 模塊,鎖存模塊,預測控制信號發(fā)生器,顯示模塊。

分頻模塊為計數(shù)模塊提供1秒的閥門時間。計數(shù)模塊是整個程序的核心,它完成在1秒的時間里對被測信號計數(shù)的功能,并通過選擇輸出數(shù)據(jù)實現(xiàn)自動換擋的功能。鎖存模塊在信號L的下降沿到來時將信號A4,A3,A2,A1鎖存。顯示模塊對應于數(shù)碼管片選信號,將相應的數(shù)據(jù)送出,其中檔位也通過數(shù)碼管顯示。

數(shù)字電路與系統(tǒng)課程設計

第三章 設計原理

3.1 設計原理

眾所周知,頻率信號易于傳輸,抗干擾性強,可以獲得較好的測量精度。因此,頻率檢測是電子測量領(lǐng)域最基本的測量之一。頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準時鐘,對比測量其他信號的頻率。通常情況下計算每秒內(nèi)待測信號的脈沖個數(shù),即閘門時間為1 s。閘門時間可以根據(jù)需要取值,大于或小于1 s都可以。閘門時間越長,得到的頻率值就越準確,但閘門時間越長,則每測一次頻率的間隔就越長。閘門時間越短,測得的頻率值刷新就越快,但測得的頻率精度就受影響。一般取1 s作為閘門時間。

數(shù)字頻率計的關(guān)鍵組成部分包括測頻控制信號發(fā)生器、計數(shù)器、鎖存器、譯碼驅(qū)動電路和顯示電路,其原理框圖如圖3-1所示。

圖3-1數(shù)字頻率計原理圖

3.2 MAXPLUSII介紹

MAX+PLUSⅡ(Multiple Array and Programming Logic User System)開發(fā)工具是Altera公司推出的一種EDA工具,具有靈活高效、使用便捷和易學易用等特點。Altera公司在推出各種CPLD的同時,也在不斷地升級相應的開發(fā)工具軟件,已從早起的第一代A+PLUS、第二代MAX+PLUS發(fā)展到第三代MAX+PLUSⅡ和第四代

數(shù)字電路與系統(tǒng)課程設計

Quartus。使用MAX+PLUSⅡ軟件,設計者無需精通器件內(nèi)部的復雜結(jié)構(gòu),只需用業(yè)已熟悉的設計輸入工具,如硬件描述語言、原理圖等進行輸入即可,MAX+PLUSⅡ就會自動將設計轉(zhuǎn)換成目標文件下載到器件中去。MAX+PLUSⅡ開發(fā)系統(tǒng)具有以下特點。(1)多平臺。MAX+PLUSⅡ軟件可以在基于PC機的操作系統(tǒng)如Windows95、Windows98、Windows2000、Windows NT下運行,也可以在Sun SPAC station等工作站上運行。

(2)開放的界面。MAX+PLUSⅡ提供了與其他設計輸入、綜合和校驗工具的接口,借口符合EDIF 200/300、LPM、VHDL、Verilog-HDL等標準。目前MAX+PLUSⅡ所支持的主流第三方EDA工具主要有Synopsys、Viewlogic、Mentor、Graphics、Cadence、OrCAD、Xilinx等公司提供的工具。

(3)模塊組合式工具軟件。MAX+PLUSⅡ具有一個完整的可編程邏輯設計環(huán)境,包括設計輸入、設計處理、設計校驗和下載編程4個模塊,設計者可以按設計流程選擇工作模塊。(4)與結(jié)構(gòu)無關(guān)。MAX+PLUSⅡ開發(fā)系統(tǒng)的核心——Compiler(編譯器)能夠自動完成邏輯綜合和優(yōu)化,它支持Altera的Classic、MAX7000、FLEX8000和FLEX10K等可編程器件系列,提供一個與結(jié)構(gòu)無關(guān)的PLD開發(fā)環(huán)境。

(5)支持硬件描述語言。MAX+PLUSⅡ支持各種HDL設計輸入語言,包括VHDL、Verilog-HDL和Altera的硬件描述語言AHDL。(6)豐富的設計庫。MAX+PLUSⅡ提供豐富的庫單元供設計者調(diào)用,其中包括一些基本的邏輯單元,74系列的器件和多種特定功能的宏功能模塊以及參數(shù)化的兆功能模塊。調(diào)用庫單元進行設計,可以大大減輕設計人員的工作量,縮短設計周期。

數(shù)字電路與系統(tǒng)課程設計

第四章 系統(tǒng)功能模塊

4.1 FEN 模塊

4.1.1 FEN 模塊流程圖

圖4-1

數(shù)字電路與系統(tǒng)課程設計

4.1.2輸入輸出引腳及其功能說明

模塊FEN如圖9-87所示。通過對4MHz時鐘的分頻得到0.5Hz時鐘,為模塊CORNA提供1s的閘門時間。CLK:輸入時鐘信號;Q:輸出分頻后的基準信號。程序代碼的實現(xiàn)如下

library ieee;use ieee.std_logic_1164.all;entity fen is

port(clk:in std_logic;

q: out std_logic);

end fen;architecture fen_arc of fen is begin process(clk)variable cnt: integer range 0 to 999999;variable x: std_logic;begin

if clk'event and clk = '1' then

if cnt<999999 then

cnt:=cnt+1;

else

cnt:=0;

x:= not x;

end if;

end if;

q<=x;end process;end fen_arc;

圖4-2

數(shù)字電路與系統(tǒng)課程設計

4.2 SEL模塊

4.2.1 SEL 模塊流程圖

圖4-3 4.2.2 SEL模塊輸入輸出引腳及其功能說明

CLK:基準時鐘信號; Q[2..0]:產(chǎn)生數(shù)碼管的片選信號。4.2.3 程序代碼實現(xiàn)

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sel is port(clk: in std_logic;

圖4-4 q:out std_logic_vector(2 downto 0));

end sel;

數(shù)字電路與系統(tǒng)課程設計

architecture sel_arc of sel is begin process(clk)variable cnt:std_logic_vector(2 downto 0);begin

if clk'event and clk='1' then

cnt:=cnt+1;

end if;

q<=cnt;end process;end sel_arc;4.3 模塊CORNA 4.3.1 CORNA 模塊流程圖

圖4-5 14

數(shù)字電路與系統(tǒng)課程設計

4.3.2 輸入輸出引腳及其功能說明

該模塊是整個程序的核心,它完成在1s的時間里對被測信號計數(shù)的功能,并通過選擇輸出數(shù)據(jù)實現(xiàn)自動換擋的功能輸入輸出引腳及其功能說明CLR:復位按鈕;SIG:待測頻率信號;DOOR:基準時鐘頻率;ALM:蜂鳴器;DANG[3..0]:檔位值;Q0~4[3..0]:計算后的頻率值。4.3.3程序代碼實現(xiàn)

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity corna is port(clr,sig,door : in std_logic;

alm : out std_logic;

q3,q2,q1,q0,dang : out std_logic_vector(3 downto 0));end corna;

architecture corn_arc of corna is begin process(door,sig)variable c0,c1,c2,c3,c4,c5,c6: std_logic_vector(3 downto 0);variable x:std_logic;

begin

if sig'event and sig='1' then

if door='1' then

if c0<“1001”then

c0:=c0+1;

else

c0:=“0000”;

if c1<“1001” then

c1:=c1+1;

else

c1:=“0000”;

圖4-6

數(shù)字電路與系統(tǒng)課程設計

if c2<“1001” then

c2:=c2+1;

else

c2:=“0000”;

if c3<“1001” then

c3:=c3+1;

else

end if;

end if;

end if;

end if;end if;end if;end if;else if clr = '0' then

alm <= '0';end if;c6:=“0000”;c5:=“0000”;c4:=“0000”;c3:=“0000”;c2:=“0000”;

c3:=“0000”;if c4<“1001” then c4:=c4+1;else c4:=“0000”;if c5<“1001” then

c5:=c5+1;else

c5:=“0000”;if c6<“1001” then

c6:=c6+1;else

c6:=“0000”;

alm<='1';

數(shù)字電路與系統(tǒng)課程設計

c1:=“0000”;c0:=“0000”;end if;if c6/=“0000” then q3<=c6;q2<=c5;q1<=c4;q0<=c3;dang<=“0100”;elsif c5/=“0000” then q3<=c5;q2<=c4;q1<=c3;q0<=c2;dang<=“0011”;elsif c4/=“0000” then q3<=c4;q2<=c3;q1<=c2;q0<=c1;dang<=“0010”;else q3<=c3;q2<=c2;q1<=c1;q0<=c0;dang<=“0001”;end if;end if;end process;end corn_arc;

數(shù)字電路與系統(tǒng)課程設計

4.4 模塊LOCK 4.4.1 LOCK 模塊流程圖

圖4-7 4.4.2 輸入輸出引腳及其功能說明

該模塊實現(xiàn)鎖存器的功能,在信號L的下降沿到來時信號A4、A3、A2、A1鎖存。輸入輸出引腳及其功能說明L:基準時鐘信號;A0~4[3..0]:接受計數(shù)器CORNA傳過來的值并鎖存;Q0~4[3..0]:向數(shù)據(jù)選擇器傳值。4.4.3 程序代碼實現(xiàn)

library ieee;use ieee.std_logic_1164.all;entity lock is

數(shù)字電路與系統(tǒng)課程設計

port(l: in std_logic;

a4,a3,a2,a1,a0:in std_logic_vector(3 downto 0);

q4,q3,q2,q1,q0:out std_logic_vector(3 downto 0));end lock;architecture lock_arc of lock is begin process(l)variable t4,t3,t2,t1,t0:std_logic_vector(3 downto 0);begin

if l'event and l='0' then

t4:=a4;

t3:=a3;

t2:=a2;

t1:=a1;

t0:=a0;

end if;

q4<=t4;

q3<=t3;

q2<=t2;

q1<=t1;

q0<=t0;end process;

圖4-8 end lock_arc;4.5 模塊CH

4.5.1 輸入輸出引腳及其功能說明

該模塊對應于數(shù)碼管片選信號,將相應的數(shù)據(jù)送出,其中檔位也通過數(shù)碼管顯示。輸入輸出引腳及其功能說明SEL[2..0]:接受SEL模塊傳來的數(shù)碼管片選信號;A[3..0]:接受鎖存器傳來的數(shù)碼管片選信號;DANG[3..0]:接受鎖存器傳來的檔位信號;Q[3..0]:傳出數(shù)碼管位選信號。4.5.2 程序代碼實現(xiàn)

library ieee;

數(shù)字電路與系統(tǒng)課程設計

use ieee.std_logic_1164.all;entity ch is port(sel:in std_logic_vector(2 downto 0);

a3,a2,a1,a0,dang:in std_logic_vector(3 downto 0);

q:out std_logic_vector(3 downto 0));end ch;

architecture ch_arc of ch is begin process(sel)begin

case sel is

when “110” =>q<=a0;

when “010” =>q<=a1;when “100” =>q<=a2;

圖4-9

when “000” =>q<=a3;

when “101” =>q<=dang;

when others =>q<= “1111”;end case;end process;end ch_arc;4.6 DISP模塊

4.6.1輸入輸出引腳及其功能說明

D[3..0]:接受CH傳出的數(shù)碼管位選信號;Q[6..0]:譯碼出數(shù)碼管位選信號; 4.6.2程序代碼實現(xiàn)

use ieee.std_logic_1164.all;entity disp is port(d:in std_logic_vector(3 downto 0);

q:out std_logic_vector(6 downto 0));

圖4-10 end disp;

數(shù)字電路與系統(tǒng)課程設計

architecture disp_arc of disp is

begin process(d)begin

case d is

when “0000” =>q<=“0111111”;

when “0001” =>q<=“0000110”;

when “0010” =>q<=“1011011”;

when “0011” =>q<=“1001111”;

when “0100” =>q<=“1100110”;

when “0101” =>q<=“1101101”;

when “0110” =>q<=“1111101”;

when “0111” =>q<=“0100111”;

when “1000” =>q<=“1111111”;

when “1001” =>q<=“1101111”;

when others =>q<=“0000000”;

end case;end process;end disp_arc;

數(shù)字電路與系統(tǒng)課程設計

第五章

5.1輸入說明

調(diào)試并分析結(jié)果

SIG:接1KHz頻率;CLR:接開關(guān);CLK:接4MHz頻率。

5.2預計輸出

低兩位數(shù)碼管顯示‘1’;高四位數(shù)碼管顯示‘1000’。

5.3 測試結(jié)果記錄

低兩位數(shù)碼管顯示‘1’;高四位數(shù)碼管顯示‘1000’。

5.4 測試結(jié)果分析

本頻率計滿足試驗要求,使用周期和直接測量法進行測量,這樣會減小誤差。實驗中也遇到了很多問題,在器件在線編程過程中,program各項操作無法進行,如果是首次編程,則需要設置下載端口,如果還比能進行操作,可能是芯片或者試驗箱出現(xiàn)問題,所以應該換芯片或試驗箱。在連接引腳是要特別注意,否則顯示管無法顯示。此外此試驗還有需要改進的地方,比如測量頻率的精度和靈敏度。

待測信號給的是1KHz,數(shù)碼管檔位顯示為一檔(0~9999Hz);頻率顯示為‘1000’;與預計輸出完全一樣。因為基準信號和待測信號是同一個信號源,故如此準確。也論證了上述設計的正確性。

數(shù)字電路與系統(tǒng)課程設計

圖5-1 如上圖,待測信號sig 10KHz,clk接1MHz顯示如圖,第一行和第二行為脈沖頻率,第三行為檔位,10KHz的待測信號檔位為二檔。

數(shù)字電路與系統(tǒng)課程設計

第六章 結(jié)論

心得體會

經(jīng)過這次的實驗課程設計,我學到了如何將多個程序綁在一起使用并構(gòu)成一個完整的系統(tǒng)。在老師的指導下、在我們實驗設計小組的共同努力下、在其他同學的熱情幫助下,我們完整滴完成了《數(shù)字頻率計》的設計、組裝,并做了些創(chuàng)新。

雖然實驗成功,我們同樣在實驗過程中遇到了一些問題: 1.剛開始時候的設計是每組組員做一部分,但是問題就是有些系數(shù)不能同一。因此造成了一開始實驗進展緩慢。2.在實驗過程中,器材的問題也被我們遇到了。因此也得到了些經(jīng)驗:要對自己的實驗成果由信心,不要一出問題就從程序中找問題。可能對你最大的阻礙就是你沒有考慮到的器材問題。

3.在最后仿真時候,導線的順序也是常出問題的地方。由于沒有及時發(fā)現(xiàn)問題的所在,我們小組花費了整整一節(jié)課的時間在改程序,浪費了許多寶貴時間。

參考文獻

【1】VHDL數(shù)字電路設計與應用與實踐教程 【2】第2版王振紅 主編機械工業(yè)出版社

數(shù)字電路與系統(tǒng)課程設計

第四篇:簡易數(shù)字頻率計(數(shù)字電路課程設計)

數(shù)字電路課程設計報告

1)設計題目

簡易數(shù)字頻率計

2)設計任務和要求

要求設計一個簡易的數(shù)字頻率計,測量給定信號的頻率,并用十進制數(shù)字顯示,具體指標為:

1)測量范圍:1HZ—9.999KHZ,閘門時間1s;

HZ—99.99KHZ,閘門時間0.1s;

HZ—999.9KHZ,閘門時間10ms;

KHZ—9999KHZ,閘門時間1ms;

2)顯示方式:四位十進制數(shù)

3)當被測信號的頻率超出測量范圍時,報警.3)原理電路和程序設計:

(1)整體電路

數(shù)顯式頻率計電路

(2)單元電路設計;

(a)時基電路

(b)放大邏輯電路

(c)計數(shù)、譯碼、驅(qū)動電路

(3)說明電路工作原理;

四位數(shù)字式頻率計是由一個CD4017(包含一個計數(shù)器和一個譯碼器)組成邏輯電路,一個555組成時基電路,一個9014形成放大電路,四個CD40110(在圖中是由四個74LS48、四個74LS194、四個74LS90組成)及數(shù)碼管組成。

兩個CD40110串聯(lián)成一個四位數(shù)的十進制計數(shù)器,與非門U1A、U1B構(gòu)成計數(shù)脈沖輸入電路。當被測信號從U1A輸入,經(jīng)過U1A、U1B兩級反相和整形后加至計數(shù)器U13的CP+,通過計數(shù)器的運算轉(zhuǎn)換,將輸入脈沖數(shù)轉(zhuǎn)換為相應的數(shù)碼顯示筆段,通過數(shù)碼管顯示出來,范圍是1—9。當輸入第十個脈沖,就通過CO輸入下一個CD40110的CP+,所以此四位計數(shù)器范圍為1—9999。

其中U1A與非門是一個能夠控制信號是否輸入的計數(shù)電路閘門,當一個輸入端輸入的時基信號為高電平的時候,閘門打開,信號能夠通過;否則不能通過。

時基電路555與R2、R3,R4、C3組成低頻多諧振蕩器,產(chǎn)生1HZ的秒時基脈沖,作為閘門控制信號。計數(shù)公式:來確定。

與非門U2A與CD4017組成門控電路,在測量時,當時基電路輸出第一個時基脈沖并通過U2A反相后加至CD4017的CP,CD4017的2腳輸出高電平從而使得閘門打開。1s后,時基電路送來第二個脈沖信號,CD4017的2腳變?yōu)榈碗娖剑l門關(guān)閉,測量結(jié)束。數(shù)碼管顯示即為所測頻率。當555第三個脈沖送過來的時候,電路保持間歇1S,第四個脈沖后高電平加至R,使計數(shù)器復位。為下一次計算準備。

(4)元件選擇。

標號

封裝

數(shù)量

芯片

CD40110

GK7491AG

陶瓷熔扁平

CD4017

62F2X6KE4

陶瓷熔扁平

74LS00

陶瓷熔扁平

74LS10

陶瓷熔扁平

NE555

K104G4

雙列直插型號

顯示器

七段共陰數(shù)碼管

電阻

300Ω

1KΩ

5.1KΩ

10KΩ

100KΩ

1MΩ

10KΩ(滑動)

電容

1000PF

0.1μF

100μF

二極管

1N4148

發(fā)光LED

開關(guān)

單刀雙擲

導線

導線

若干

三極管

9014

電源

12V直流電源

4)電路和程序調(diào)試過程與結(jié)果:

a)、設計邏輯流程:

b)、理論波形圖:

c)、仿真波形圖:

1)、時基電路

2)、未、已經(jīng)過施密特的波形:

d)、誤差分析:

本實驗的誤差來自多方面的原因:一、時基電路NE555的滑動變阻器調(diào)節(jié)導致誤差;二、閘門開放時間與信號輸入時間的沖突導致測量不準確;三、整體電路的阻抗、容抗對電路信號的影響。

對于第一點,先計算相關(guān)的滑動變阻器的相應阻值大小,然后可以在關(guān)閉電源的情況下用萬用表測量后才進行測量;第二點有點系統(tǒng)的偶然性;第三點可以盡量減少電路布局,從而減少相應的影響。

5)總結(jié)

這個電路多處使用了集成IC芯片,讓電路更加簡潔明了,并且提高了電路的安全性、可行性,減少了整個電路的功耗和整個電路的布線。但是此電路沒有完全地符合實驗要求:首先,整個電路沒有施密特觸發(fā)器,輸入信號放大電路,數(shù)碼管的小數(shù)點驅(qū)動,滿位報警電路。因此我首先加入以三極管9014為核心的放大電路;然后用74LS00兩個雙輸入與非門構(gòu)成施密特觸發(fā)器,對輸入信號進行整形;對于報警電路,由于集成IC沒有譯碼電路引腳,所以選擇了一個8輸入與非門和一個74LS00結(jié)成,這樣可以充分考慮到唯一性;還有就是它的計數(shù)不是直接顯示頻率,而是顯示一個數(shù)字,再與閘門的時候計算才可以得出真正的頻率。

總體來說,電路還是存在一點小問題沒有得到很好的解決,因為74LS00組成的施密特觸發(fā)器沒有很好地整形波,在示波器上出現(xiàn)脈沖波,還得于計算,可以改為以NE555組成的施密特電路。改用其他的數(shù)碼管驅(qū)動,從而驅(qū)動小數(shù)點。

通過這次實驗,讓我認識到數(shù)字電路的萬千變化,集成IC的推出,大大提高安全性和可行性。理解了科學就是力量。最主要是學習到設計電路的思想以為加強自己的焊接能力。讓自己的電子技術(shù)更上一層樓。

附錄:完整的電路PCB圖,完整的源程序名列表(不需要把源程序打印出來,作為電子文檔提交)。

附錄一:

附錄二:

第五篇:verilog簡易數(shù)字頻率計報告

一、實驗原理

根據(jù)原理圖,將計數(shù)器模塊、顯示模塊、掃描模塊、譯碼器模塊等分別做出。其原理是在1S內(nèi)用待測信號給計數(shù)器計數(shù),并在一秒結(jié)束時給計數(shù)器清零,計出來用緩存器緩存,在數(shù)碼管中顯示出來。

二、方案論證

一、通過50M的時鐘進行計數(shù)獲得精密的1HZ——計數(shù)器用Verilog HDL語言實現(xiàn)在1HZ為底電平時計數(shù)——門控電路用或門開啟——1HZ為高電平時進行數(shù)據(jù)鎖存與顯示——利用Verilog HDL語言使前面的0不顯示。

計數(shù)器用Verilog HDL語言在寫代碼時可以用復制粘貼的方法可以簡便的實現(xiàn)。通過50M的時鐘進行計數(shù)獲得精密的1HZ后只是經(jīng)過很短的時間內(nèi)進行計數(shù)器的清零及數(shù)據(jù)的瑣存,并且得到的是1HZ的精密時鐘。把鎖存的數(shù)據(jù)進行清0的轉(zhuǎn)換后利用分時掃描,后通過數(shù)碼管譯碼顯示。

說明:

Cnt9999:0000~9999計數(shù)器; Buffer:鎖存器; Scan:掃描顯示 共8個模塊

三、實驗步驟

一、計數(shù)器模塊 計數(shù)器模塊的仿真波形

二、鎖存模塊

利用32位的D觸發(fā)器進行儲存計數(shù)器送給它的數(shù)據(jù)。在時鐘為上升沿的時候觸發(fā)保存數(shù)據(jù)。鎖存模塊的源代碼:

module buffer_32(clr,clear,in,out);input

clear,clr;input[31:0] in;output[31:0] out;reg[31:0]

out;always@(posedge clear or negedge clr)

if(!clr)out<=0;

//else if(clear)out=in;

else out<=in;

endmodule

三、轉(zhuǎn)化清零模塊 波形仿真波形

module cnt9999(clr,clk,q,c);

input clr,clk;output c;output [15:0]q;reg c;reg [15:0]q;

always @(posedge clk or negedge clr)begin

if(!clr)begin q[15:0]<=0;c<=1'b0;end

else if(q[15:0]==16'H9999)begin q[15:0]<=0;c<=1'b1;end

else if(q[11:0]==12'H999)begin q[15:0]<=q[15:0]+12'H667;c<=1'b0;end

else if(q[7:0]== 8'H99)begin q[15:0]<=q[15:0]+8'H67;c<=1'b0;end

else if(q[3:0]== 4'H9)begin q[15:0]<=q[15:0]+4'H7;c<=1'b0;end

else begin q[15:0]<=q[15:0]+1'b1;c<=1'b0;end end endmodule

四、掃描顯示模塊

把存儲的數(shù)據(jù)分別分給8個數(shù)碼管,利用循環(huán)掃描即可顯示出所要顯示的數(shù)據(jù)。

掃描顯示模塊的仿真波形

module scan(clk,q);input clk;output [2:0]q;reg

[2:0]q;

always @(posedge clk)

begin

q=q+1;

end

endmodule

四、引腳分配

五、實驗總結(jié)

頻率就是信號在1s內(nèi)發(fā)生相同變化的次數(shù),簡易頻率計就是基于這個原理設計的。我們先產(chǎn)生一個低電平為1s,高電平為1/50M秒的周期信號clk,用該信號與待測信號相與作為計數(shù)器的輸入時鐘,并把clk的上升沿作為緩存器的開關(guān),把clk的高電平作為計數(shù)器的清零信號,這樣就能保證緩沖器中存放的始終是待測信號在一秒內(nèi)的跳變次數(shù),也即待測信號的頻率。

實驗的原理盡管很清楚,但真正看到實驗現(xiàn)象還是經(jīng)歷了一番波折,在寫8選1數(shù)據(jù)選擇器的時候,定義模塊端口時,由于疏忽,把四位位寬漏寫成了1位,結(jié)果在數(shù)碼管上顯示的始終只有0和1兩種數(shù)字。為了改正這個錯誤,我把程序的主要模塊都檢查了一遍,結(jié)果不管怎么改實驗現(xiàn)象都沒有出來,這讓我郁悶了很長一段時間,原理明明是對的,為什么就沒有效果呢?最后我把整個程序都打印出來,一行一行地檢查,最后終于找到了癥結(jié)所在,就是8選1數(shù)據(jù)選擇器的位寬弄錯了!經(jīng)歷了這次錯誤,讓我明白了寫程序還是不能大意,8選1數(shù)據(jù)選擇器雖然簡單,卻因為位寬這個小小的錯誤讓我浪費了很長的時間,檢查錯誤時也因為其簡單而沒有認真對待。

下載數(shù)字頻率計word格式文檔
下載數(shù)字頻率計.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔相關(guān)法律責任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    課程設計----數(shù)字頻率計(精選合集)

    電子課程設計報告 設計課題: 數(shù)字頻率計 作 者: 李成贊≦ 專 業(yè): 08信息工程 班 級: (2)班 學 號: 3081231201 日 期 2009年6月5日——2009年6月17日 指導教師: 廖......

    無線電中級數(shù)字頻率計調(diào)試步驟

    數(shù)字頻率計 一、儀器準備 1、穩(wěn)壓電源 +5V 2、低頻信號發(fā)生器接Ui輸入端 3、示波器:校正,AUTO,單蹤CH1,2V/div,0.5mS/div,接OUT輸出端 二、調(diào)試步驟 1、閘門時間的調(diào)整 低信輸出頻......

    基于FPGA的簡易數(shù)字頻率計

    EDA 簡易數(shù)字頻計 設計性實驗 2008112020327 ** 電子信息科學與技術(shù) 物電 電工電子中心2009年5月繪制 2008.6.10 湖北師范學院電工電子實驗教學省級示范中心電子版實驗報告......

    簡易數(shù)字頻率計c程序清單

    河池學院2004屆本科生畢業(yè)論文(設計) 簡易數(shù)字頻率計 附件 源程序如下: #include unsigned char data key,flag_ft,point,buffer,j,INT1_ready,couter0,couter1,bus0,bus1,cycl......

    東華大學數(shù)字電路課程設計_數(shù)字頻率計

    數(shù) 字 電 路 課 程 設 計 第一章設計指標……………………………………....……...…….... P2 設計指標…………………………………………………………….... 第二章 系統(tǒng)......

    EDA課程設計——數(shù)字頻率計(共5篇)

    燕 山 大 學 EDA課程設計報告書 題目:數(shù)字頻率計 姓名:Eric 班級:09電子x班 學號: 090104020xxxx 成績: (注:此文件應以同學學號為文件名) 一、設計題目及要求 1.輸入為矩形脈沖,頻率......

    數(shù)字頻率計的課程設計課案

    引 言近年來,在電子技術(shù)中,頻率是最基本的參數(shù)之一,并且與許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系,因此頻率的測量就顯得更為重要.在電子系統(tǒng)非常廣泛應用領(lǐng)域內(nèi)......

    單片機課程設計報告——智能數(shù)字頻率計

    單片機原理課程設計報告 題目:智能數(shù)字頻率計設計 專業(yè): 信息工程 班級:信息111 學號:*** 姓名:*** 指導教師:*** 北京工商大學計算機與信息工程學院 1、設計目的 (1)了解和掌握一個......

主站蜘蛛池模板: 久久99久久99精品中文字幕| 国产乱妇无乱码大黄aa片| 新妺妺窝人体色7777太粗| 中文字幕乱码免费视频| 九九九国产精品成人免费视频| 亚洲国产欧美日韩另类| 一区二区三区在线 | 中国| 国产成人亚洲精品无码影院bt| 国产两女互慰高潮视频在线观看| 两个黑人大战嫩白金发美女| 久久久日韩精品一区二区三区| 色777狠狠狠综合| 国产成人毛片在线视频| 中国亚洲呦女专区| 免费午夜无码视频在线观看| 免费特级毛片| 久久精品国产99久久久香蕉| 小箩莉末发育娇小性色xxxx| 日射精情感性色视频| 狠狠噜天天噜日日噜av| 亚洲精品色情app在线下载观看| 欧美视频二区欧美影视| 在线观看人成视频免费| 亚洲欧美一区二区三区在线| 韩国19禁无遮挡啪啪无码网站| 一二三四免费观看在线视频中文版| 午夜福利视频合集| 日韩人妻少妇一区二区三区| 免费无遮挡无码永久视频| 欧美精品v国产精品v日韩精品| 国产无遮挡18禁无码网站免费| 四虎成人精品无码| 亚洲国产av无码男人的天堂| 国产成人精品无码一区二区| 人妻少妇久久久久久97人妻| 久久精品国产亚洲αv忘忧草| 亚洲精品无amm毛片| 国外av片免费看一区二区三区| 日本无码一区二区三区不卡免费| 狠狠五月激情六月丁香| 秋霞午夜成人鲁丝片午夜精品|