基于Verilog的數(shù)字頻率計(jì)的設(shè)計(jì)包含代碼及仿真.doc_第1頁(yè)
基于Verilog的數(shù)字頻率計(jì)的設(shè)計(jì)包含代碼及仿真.doc_第2頁(yè)
基于Verilog的數(shù)字頻率計(jì)的設(shè)計(jì)包含代碼及仿真.doc_第3頁(yè)
基于Verilog的數(shù)字頻率計(jì)的設(shè)計(jì)包含代碼及仿真.doc_第4頁(yè)
基于Verilog的數(shù)字頻率計(jì)的設(shè)計(jì)包含代碼及仿真.doc_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一、實(shí)驗(yàn)名稱數(shù)字頻率計(jì)的設(shè)計(jì)二、實(shí)驗(yàn)地點(diǎn)211樓303三、實(shí)驗(yàn)?zāi)康暮腿蝿?wù)(1) 了解數(shù)字電路設(shè)計(jì)的基本特點(diǎn) (2) 了解數(shù)字頻率計(jì)電路的基本原理 (3) 基本掌握 ISE 軟件的使用(設(shè)計(jì)輸入、仿真、實(shí)現(xiàn)) (4) 了解可編程邏輯器件( FPGA )的一般情況 (5) 基本掌握 HDL 的使用四、實(shí)驗(yàn)內(nèi)容(1) 設(shè)計(jì)出符合設(shè)計(jì)要求的解決方案 (2) 設(shè)計(jì)出單元電路 (3) 利用 EDA 軟件對(duì)各單元電路及整體電路進(jìn)行仿真 (4)利用 EDA 軟件在 ELB 電子課程設(shè)計(jì)實(shí)驗(yàn)板實(shí)現(xiàn)設(shè)計(jì) (5) 觀察實(shí)驗(yàn)結(jié)果五、項(xiàng)目需用儀器設(shè)備名稱以及所需主要元器件PC 機(jī)、EDA教學(xué)實(shí)驗(yàn)系統(tǒng)一臺(tái),帶有(SPAR

2、TAN -3A XC3S200A芯片 ,LED 管 , 七段數(shù)碼管 等)的實(shí)驗(yàn)板一塊 , 跳線、下載電纜一根,函數(shù)發(fā)生器。六、實(shí)驗(yàn)任務(wù)與要求頻率測(cè)量范圍為10Hz10MHz,用6只數(shù)碼管以kHz為單位顯示測(cè)量結(jié)果;有三個(gè)帶鎖按鍵開關(guān)(任何時(shí)候都只會(huì)有一個(gè)被按下)用來選擇1S、0.1S和0.01S三個(gè)閘門時(shí)間中的一個(gè);有一個(gè)按鈕開關(guān)用來使頻率計(jì)復(fù)位;有兩只LED,一只用來顯示閘門的開與閉,另一只當(dāng)計(jì)數(shù)器溢出時(shí)做溢出指示。數(shù)字頻率計(jì)的相關(guān)技術(shù)指標(biāo)如下:1、位數(shù):測(cè)量頻率通過LED數(shù)碼管為六位十進(jìn)制數(shù)顯示。2、測(cè)試頻率范圍為:10HZ-10MHZ。3、計(jì)數(shù)器溢出時(shí)要有溢出標(biāo)志over。4、需要有閘門

3、標(biāo)志gate。5、顯示工作方式:a、用BCD七段共陽(yáng)極數(shù)碼管顯示讀數(shù),只有在讀數(shù)不發(fā)生跳變時(shí)才是正確的結(jié)果。b、采用記憶顯示方法,即在一次測(cè)試結(jié)束時(shí),顯示測(cè)試結(jié)果,此顯示值一直保留到下次測(cè)量顯示數(shù)到來,才將上次顯示更新。用第二次測(cè)試結(jié)果,更新顯示值。6、要求被測(cè)輸入信號(hào)應(yīng)是符合數(shù)字電路要求的脈沖波。 七、verilog設(shè)計(jì)環(huán)境介紹VerilogVerilog HDL是目前應(yīng)用最為廣泛的硬件描述語(yǔ)言Verilog HDL可以用來進(jìn)行各種層次的邏輯設(shè)計(jì),也可以進(jìn)數(shù)字系統(tǒng)的邏輯綜合,仿真驗(yàn)證和時(shí)序分析等。 Verilog HDL適合算法級(jí),寄存器級(jí),邏輯級(jí),開關(guān)級(jí)、系統(tǒng)級(jí)和版圖級(jí)等各個(gè)層次的設(shè)計(jì)和描

4、述 verilogHDL進(jìn)行設(shè)計(jì)最大的優(yōu)點(diǎn)是其工藝無關(guān)性這使得工程師在功能設(shè)計(jì),邏輯驗(yàn)證階段可以不必過多考慮門級(jí)及工藝實(shí)現(xiàn)的具體細(xì)節(jié),只需根據(jù)系統(tǒng)設(shè)計(jì)的要求施加不同的約束條件,即可設(shè)計(jì)出實(shí)際電路 verilogHDL是一種硬件描述語(yǔ)言(hardware description language),為了制作數(shù)字電路而用來描述ASICS和FPGA的設(shè)計(jì)之用。verilogHDL 的設(shè)計(jì)者想要以 C 編程語(yǔ)言為基礎(chǔ)設(shè)計(jì)一種語(yǔ)言,可以使工程師比較容易學(xué)習(xí)。 Verilog 是由en:Gateway Design Automation公司于大約1984年開始發(fā)展。Gateway Design Autom

5、ation公司后來被 Cadence Design Systems于1990年所購(gòu)并?,F(xiàn)在 Cadence 對(duì)于 Gateway 公司的 Verilog 和 Verilog-XL 模擬器擁有全部的財(cái)產(chǎn)權(quán)。 選擇VHDL還是verilog HDL?這是一個(gè)初學(xué)者最常見的問題。其實(shí)兩種語(yǔ)言的差別并不大,他們的描述能力也是類似的。掌握其中一種語(yǔ)言以后,可以通過短期的學(xué)習(xí),較快的學(xué)會(huì)另一種語(yǔ)言。 選擇何種語(yǔ)言主要還是看周圍人群的使用習(xí)慣,這樣可以方便日后的學(xué)習(xí)交流。當(dāng)然,如果您是專用集成電路(ASIC)設(shè)計(jì)人員,則必須首先掌握verilog,因?yàn)樵贗C設(shè)計(jì)領(lǐng)域,90%以上的公司都是采用verilog進(jìn)

6、行IC設(shè)計(jì)。對(duì)于PLD/FPGA設(shè)計(jì)者而言,兩種語(yǔ)言可以自由選擇。八、實(shí)驗(yàn)原理所謂“頻率”,就是周期性信號(hào)在單位時(shí)間(1秒)內(nèi)變化的次數(shù)。若在一定時(shí)間內(nèi)計(jì)得這個(gè)周期信號(hào)變化的次數(shù)為N,則其頻率可表達(dá)為: (1)電子技術(shù)器可以嚴(yán)格按公式(1)所表達(dá)的頻率的定義進(jìn)行測(cè)頻,其原理方框圖如圖1所示:計(jì)數(shù)器閘門放大整形門控電路時(shí)基信號(hào)發(fā)生器 圖1 測(cè)頻原理圖 首先,把被測(cè)信號(hào)(以正弦波為例)通過放大整形電路變成脈沖(實(shí)際上變成方波即可)其重復(fù)頻率等于被測(cè)頻率,然后將它加到閘門的一個(gè)輸入端。閘門通過門控信號(hào)來控制開、閉時(shí)間,只有在閘門開通時(shí)間T內(nèi),被計(jì)數(shù)的脈沖才能通過閘門,被送到十進(jìn)制電子計(jì)數(shù)器進(jìn)行計(jì)數(shù)。

7、門控信號(hào)的時(shí)間T是非常準(zhǔn)確的,以它作為時(shí)間基準(zhǔn),它由時(shí)基發(fā)生器提供。時(shí)基信號(hào)發(fā)生器由一個(gè)高穩(wěn)定的石英振蕩器和一系列數(shù)字分頻器組成,由它輸出的標(biāo)準(zhǔn)時(shí)間脈沖(時(shí)標(biāo))去控制門控電路形成門控信號(hào)。比如,時(shí)標(biāo)信號(hào)的重復(fù)周期為1S,則加到閘門的門控信號(hào)作用時(shí)間T及閘門時(shí)間亦準(zhǔn)確的等于1S,及閘門開通時(shí)間為1S,這時(shí)若計(jì)得10000個(gè)數(shù),則有(1)式知,被測(cè)頻率。從以上討論可知,電子計(jì)數(shù)器的測(cè)頻原理實(shí)質(zhì)上以比較法為基礎(chǔ),它將和時(shí)基信號(hào)頻率相比,兩個(gè)頻率相比的結(jié)果以數(shù)字的形式顯示出來。溢出指示燈9、 1 .原理框圖溢出信號(hào)七段譯碼管顯示數(shù)據(jù)掃描顯示系統(tǒng)門控電路分頻器石英振蕩鎖存器計(jì)數(shù)器閥門控制被測(cè)信號(hào) cle

8、arlatch時(shí)基2、各模塊功能及實(shí)現(xiàn)一.分頻模塊程序module count(rest,clk,clk_1hz,clk_10hz,clk_100hz,clk_1khz); input clk,rest; output reg clk_1hz,clk_10hz,clk_100hz,clk_1khz; reg29:0 count1,count2,count3,count4;initial begin clk_1hz=0; clk_10hz=0; clk_100hz=0; clk_1khz=0; count1=0; count2=0; count3=0; count4=0; endalways(

9、posedge clk) begin if(!rest) begin count1=0;count2=0;count3=0;count4=0; clk_1hz=0; clk_10hz=0;clk_100hz=0;clk_1khz=0; end else begin if(count1=24000000) begin count1=0;clk_1hz=clk_1hz; end else count1=count1+1; if(count2=2400000) begin count2=0;clk_10hz=clk_10hz;end else count2=count2+1; if(count3=2

10、40000) begin count3=0;clk_100hz=clk_100hz;end else count3=count3+1; if(count4=24000) begin count4=0;clk_1khz=clk_1khz;end else count4=count4+1; end endendmodule 仿真圖 仿真模塊 二,門控電路和清零,鎖存,閥門信號(hào)產(chǎn)生程序 module chose(rest,clk_10hz,clk_100hzhz,clk_1khz,key1,key10,key100,gate_out1,ff,clk_latch,clk_clear); input r

11、est ,clk_10hz,clk_100hz,clk_1khz,key1,key10,key100; output gate_out1,clk_latch,clk_clear; output reg 2:1 ff; reg gate_out1,clk_latch,clk_clear,gate; reg 4:1count; initial begin gate_out1=0;ff=0;clk_latch=0;clk_clear=0;gate=0;count=0;endalways( posedge clk_1khz) begin if(!rest) begin gate_out1=0; ff=

12、2b00;end else begin if(key1=1&key10=0&key100=0) begin gate=clk_10hz; ff=2b01;end else if(key1=0&key10=1&key100=0) begin gate=clk_100hz;ff=2b10;end else if(key1=0&key10=0&key100=1) begin gate=clk_1khz;ff=2b11;end else begin ff=0;end endend / always (posedge gate)begincount=count+1;if (count=9)begin g

13、ate_out1=1;clk_clear=0;clk_latch=0;endelse if (count=11)begin gate_out1=0;clk_clear=0;clk_latch=1;endelse if (count=13)begin gate_out1=0;clk_clear=1;clk_latch=0;count=0;endelse begin gate_out1=0;clk_clear=0;clk_latch=0;endendendmodule仿真圖仿真模塊 三, 計(jì)數(shù)器程序module counter(rest,start,clk_in,cnt1,cnt2,cnt3,cn

14、t4,cnt5,cnt6,yichu,clk_clear); input rest,start,clk_in,clk_clear; output yichu; reg yichu; output reg 4:1cnt1,cnt2,cnt3,cnt4,cnt5,cnt6; initial begin yichu=1; cnt1=4b0000;cnt2=4b0000;cnt3=4b0000;cnt4=4b0000; cnt5=4b0000; cnt6=4b0000; end always(posedge clk_in )begin if(!rest) begin cnt1=4b0000;cnt2=

15、4b0000;cnt3=4b0000; cnt4=4b0000;cnt5=4b0000;cnt6=4b0000; end else begin if(clk_clear=1) begin cnt1=4b0000;cnt2=4b0000;cnt3=4b0000; cnt4=4b0000;cnt5=4b0000;cnt6=4b0000;yichu=1; end else if(start=1) begin if(cnt6=4b1001)&(cnt5=4b1001)&(cnt4=4b1001)&(cnt3=4b1001)&(cnt2=4b1001)&(cnt1=4b1001) begin cnt1=

16、4b0000;cnt2=4b0000;cnt3=4b0000;cnt4=4b0000; cnt5=4b0000;cnt6=4b0000;yichu=0;end else if(cnt5=4b1001)&(cnt4=4b1001)&(cnt3=4b1001)&(cnt2=4b1001)&(cnt1=4b1001) begin cnt1=4b0000;cnt2=4b0000; cnt3=4b0000;cnt4=4b0000; cnt5=4b0001;cnt6=cnt6+4b0001; endelse if(cnt4=4b1001)&(cnt3=4b1001)&(cnt2=4b1001)&(cnt1

17、=4b1001) begin cnt1=4b0000;cnt2=4b0000;cnt3=4b0000; cnt4=4b0000;cnt5=cnt5+4b0001;cnt6=cnt6; end else if(cnt3=4b1001)&(cnt2=4b1001)&(cnt1=4b1001) begin cnt1=4b0000;cnt2=4b0000;cnt3=4b0000; cnt4=cnt4+4b0001;cnt5=cnt5;cnt6=cnt6; end else if(cnt2=4b1001)&(cnt1=4b1001) begin cnt1=4b0000;cnt2=4b0000; cnt3

18、=cnt3+4b0001;cnt4=cnt4;cnt5=cnt5;cnt6=cnt6; endelse if(cnt1=4b1001)begincnt1=4b0000;cnt2=cnt2+4b0001;cnt3=cnt3;cnt4=cnt4;cnt5=cnt5;cnt6=cnt6;endelse begin cnt1=cnt1+4b0001;cnt2=cnt2;cnt3=cnt3; cnt4=cnt4;cnt5=cnt5;cnt6=cnt6; end end end endendmodule仿真圖模塊仿真圖四,鎖存以及譯碼掃描顯示程序module v138(rest,clk_1khz,se,i

19、n1,in2,in3,in4,in5,in6,segs,ff,dp,led,en,clk_latch); input 4:1 in1,in2,in3,in4,in5,in6; input clk_1khz,rest; input 2:1ff; input clk_latch; output reg dp, led,en; output reg 4:1 se; reg 3:1 count,dig; output reg 7:1 segs; reg 4:1 sign_out4; reg 4:1 latch1,latch2,latch3,latch4,latch5,latch6; initial b

20、egin count=0; dp=1 ;segs=0; se=0;sign_out4=0;led=0;en=0; latch1=0;latch2=0;latch3=0; latch4=0;latch5=0;latch6=0; end/always( posedge clk_latch ) begin latch1=in1;latch2=in2;latch3=in3; latch4=in4;latch5=in5;latch6=in6; end /鎖存器。 always(posedge clk_1khz)begin count=count+1;end/位選自加always(posedge clk_

21、1khz ) begin if(!rest) begin led=1; end else begin case(count) 0: begin sign_out4=latch1; se=count;end 1: begin sign_out4=latch2; se=count;end 2: begin sign_out4=latch3; se=count;end 3: begin sign_out4=latch4; se=count;end 4: begin sign_out4=latch5; se=count;end 5: begin sign_out4=latch6; se=count;e

22、nd default:sign_out4=4b1111; endcase endend / 將數(shù)據(jù)依次譯碼 always(posedge clk_1khz) begin if(ff=2b01&se=3)begin dp=0;end else if(ff=2b10&se=2)begin dp=0;end else if(ff=2b11&se=1)begin dp=0;end else begin dp=1;endend/檔位選擇always ( sign_out4)beginif(!rest) begin segs=0;endelse begin case(sign_out4) 0:segs=7

23、b0000001; 1:segs=7b1001111; 2:segs=7b0010010; 3:segs=7b0000110; 4:segs=7b1001100; 5:segs=7b0100100; 6:segs=7b1100000; 7:segs=7b0001111; 8:segs=7b0000000; 9:segs=7b0000100; default:segs=7b1111111; endcase endend/譯碼顯示endmodule仿真圖模塊仿真圖五,頂層電路程序module top(rest,clk,key1,key2,key3,clk_in,se,segs,led,dp,en,

24、yichu); input rest,clk,clk_in,key1,key2,key3; output dp,led,en,yichu; output 3:1 se ; output7:1 segs; wire 4:1out1,out2,out3,out4,out5,out6; wire 2:1ff; wire gate_out1;count count(.clk(clk),.rest(rest),.clk_10hz(clk_10hz),.clk_100hz(clk_100hz),.clk_1khz(clk_1khz);/分頻器 chose chose(.rest(rest),.clk_1k

25、hz(clk_1khz),.clk_10hz(clk_10hz),.clk_100hz(clk_100hz),.ky1(key1),.key10(key2),.key100(key3), .gate_out1(gate_out1),.ff(ff),.clk_latch(clk_latch),.clk_cear(clk_clear);/時(shí)基選擇模塊 counter counter(.start(gate_out1),.rest(rest),.clk_in(clk_in),.cnt1(out1), .yichu(yichu) ,.cnt2(out2),.cnt3(out3),.cnt4(out4)

26、,.cnt5(out5),.cnt6(out6),.clk_clear(clk_clear);/計(jì)數(shù)器器 v138 v138(.rest(rest),.clk_1khz(clk_1khz),.se(se), .led(led),.in1(out1),.in2(out2),.in3(out3),.in4(out4), .in5(out5),.in6(out6),.segs(segs),.ff(ff),.en(en),.dp(dp),.clk_latch(clk_latch);endmodule/譯碼顯示頂層電路圖生成的各個(gè)模塊按要求連線,形成頂層原理圖,如下3 分配引腳和下載實(shí)現(xiàn)根據(jù)XC3S20

27、0A I/O口對(duì)應(yīng)管腳參考分配引腳。引腳分配完畢后雙擊“Generate programming”對(duì)所有程序進(jìn)行綜合,改正綜合過程中提示的錯(cuò)誤和警告,然后運(yùn)行“Configure Device”把程序下載到電路板上。4 結(jié)果測(cè)試在成功下載并運(yùn)行后,評(píng)估該設(shè)計(jì)系統(tǒng)的實(shí)際測(cè)量效果,作對(duì)比試驗(yàn),選用頻率可調(diào)的函數(shù)發(fā)生器生成測(cè)試信號(hào)。當(dāng)閘門時(shí)間為1s時(shí),測(cè)得結(jié)果如下:序號(hào)輸入(Hz)輸出(KHz)11000.001210000.010 31000000.100410000001.000 5100000010.0006100000100.0007200000200.0008300000300.0009400000400.00010500000500.00011600000600.00012700000700.00013800000800.00014900000899.99515920000919.99416960000959.995171000000999.996181000008999.999191000017溢出十、誤差分析由上表可以看出實(shí)驗(yàn)測(cè)量中存在誤差,誤差一方面來源于閘門時(shí)間T,另一方面來源于計(jì)數(shù)器計(jì)得的數(shù)。由計(jì)數(shù)器頻率計(jì)算公式fx=N/T以及誤差合成方法可得: (2)其中,第一項(xiàng)是數(shù)字化儀器所特有的誤差,而第二項(xiàng)是閘門時(shí)間的相對(duì)誤差,這項(xiàng)誤差決定于石英振

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論