根據Verilog的數字頻率計的設計(包含代碼及仿真)_第1頁
根據Verilog的數字頻率計的設計(包含代碼及仿真)_第2頁
根據Verilog的數字頻率計的設計(包含代碼及仿真)_第3頁
根據Verilog的數字頻率計的設計(包含代碼及仿真)_第4頁
根據Verilog的數字頻率計的設計(包含代碼及仿真)_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一、實驗名稱數字頻率計的設計二、實驗地點211樓303三、實驗目的和任務(1)了解數字電路設計的基本特點(2)了解數字頻率計電路的基本原理(3)基本掌握ISE軟件的使用(設計輸入、仿真、實現)(4)了解可編程邏輯器件(FPGA)的一般情況(5)基本掌握HDL的使用四、實驗內容(1)設計出符合設計要求的解決方案(2)設計出單元電路(3)利用EDA軟件對各單元電路及整體電路進行仿真(4)利用EDA軟件在ELB電子課程設計實驗板實現設計(5)觀察實驗結果五、項目需用儀器設備名稱以及所需主要元器件PC機、EDA教學實驗系統一臺,帶有(SPARTAN-3AXC3S200A芯片,LED管,七段數碼管等)的實驗板一塊,跳線、下載電纜一根,函數發生器。六、實驗任務與要求頻率測量范圍為10Hz~10MHz,用6只數碼管以kHz為單位顯示測量結果;有三個帶鎖按鍵開關(任何時候都只會有一個被按下)用來選擇1S、0.1S和0.01S三個閘門時間中的一個;有一個按鈕開關用來使頻率計復位;有兩只LED,一只用來顯示閘門的開與閉,另一只當計數器溢出時做溢出指示。數字頻率計的相關技術指標如下:1、位數:測量頻率通過LED數碼管為六位十進制數顯示。2、測試頻率范圍為:10HZ-10MHZ。3、計數器溢出時要有溢出標志over。4、需要有閘門標志gate。5、顯示工作方式:a、用BCD七段共陽極數碼管顯示讀數,只有在讀數不發生跳變時才是正確的結果。b、采用記憶顯示方法,即在一次測試結束時,顯示測試結果,此顯示值一直保留到下次測量顯示數到來,才將上次顯示更新。用第二次測試結果,更新顯示值。6、要求被測輸入信號應是符合數字電路要求的脈沖波。七、verilog設計環境介紹VerilogVerilogHDL是目前應用最為廣泛的硬件描述語言.VerilogHDL可以用來進行各種層次的邏輯設計,也可以進數字系統的邏輯綜合,仿真驗證和時序分析等。VerilogHDL適合算法級,寄存器級,邏輯級,開關級、系統級和版圖級等各個層次的設計和描述.verilogHDL進行設計最大的優點是其工藝無關性.這使得工程師在功能設計,邏輯驗證階段可以不必過多考慮門級及工藝實現的具體細節,只需根據系統設計的要求施加不同的約束條件,即可設計出實際電路.verilogHDL是一種硬件描述語言(hardwaredescriptionlanguage),為了制作數字電路而用來描述ASICS和FPGA的設計之用。verilogHDL的設計者想要以C編程語言為基礎設計一種語言,可以使工程師比較容易學習。Verilog是由en:GatewayDesignAutomation公司于大約1984年開始發展。GatewayDesignAutomation公司后來被CadenceDesignSystems于1990年所購并。現在Cadence對于Gateway公司的Verilog和Verilog-XL模擬器擁有全部的財產權。選擇VHDL還是verilogHDL?這是一個初學者最常見的問題。其實兩種語言的差別并不大,他們的描述能力也是類似的。掌握其中一種語言以后,可以通過短期的學習,較快的學會另一種語言。選擇何種語言主要還是看周圍人群的使用習慣,這樣可以方便日后的學習交流。當然,如果您是專用集成電路(ASIC)設計人員,則必須首先掌握verilog,因為在IC設計領域,90%以上的公司都是采用verilog進行IC設計。對于PLD/FPGA設計者而言,兩種語言可以自由選擇。八、實驗原理所謂“頻率”,就是周期性信號在單位時間(1秒)內變化的次數。若在一定時間內計得這個周期信號變化的次數為N,則其頻率可表達為:(1)電子技術器可以嚴格按公式(1)所表達的頻率的定義進行測頻,其原理方框圖如圖1所示:計數器閘門放大整形=1\*GB3① =2\*GB3② =5\*GB3⑤計數器閘門放大整形門控電路時基信號發生器 門控電路時基信號發生器 =4\*GB3④ =3\*GB3③圖1測頻原理圖首先,把被測信號=1\*GB3①(以正弦波為例)通過放大整形電路變成脈沖=2\*GB3②(實際上變成方波即可)其重復頻率等于被測頻率,然后將它加到閘門的一個輸入端。閘門通過門控信號=4\*GB3④來控制開、閉時間,只有在閘門開通時間T內,被計數的脈沖=5\*GB3⑤才能通過閘門,被送到十進制電子計數器進行計數。門控信號的時間T是非常準確的,以它作為時間基準,它由時基發生器提供。時基信號發生器由一個高穩定的石英振蕩器和一系列數字分頻器組成,由它輸出的標準時間脈沖(時標)去控制門控電路形成門控信號。比如,時標信號的重復周期為1S,則加到閘門的門控信號作用時間T及閘門時間亦準確的等于1S,及閘門開通時間為1S,這時若計得10000個數,則有(1)式知,被測頻率。從以上討論可知,電子計數器的測頻原理實質上以比較法為基礎,它將和時基信號頻率相比,兩個頻率相比的結果以數字的形式顯示出來。溢出指示燈1.原理框圖 溢出信號溢出指示燈七段譯碼管顯示數據掃描顯示系統門控電路分頻器石英振蕩鎖存器計數器閥門控制被測信號七段譯碼管顯示數據掃描顯示系統門控電路分頻器石英振蕩鎖存器計數器閥門控制被測信號 clear latch 時基2、各模塊功能及實現一.分頻模塊程序modulecount(rest,clk,clk_1hz,clk_10hz,clk_100hz,clk_1khz);inputclk,rest;outputregclk_1hz,clk_10hz,clk_100hz,clk_1khz;reg[29:0]count1,count2,count3,count4; initialbegin clk_1hz=0; clk_10hz=0; clk_100hz=0; clk_1khz=0; count1=0; count2=0; count3=0; count4=0; endalways@(posedgeclk)beginif(!rest)begincount1<=0;count2<=0;count3<=0;count4<=0;clk_1hz<=0;clk_10hz<=0;clk_100hz<=0;clk_1khz<=0;endelsebeginif(count1==24000000)begincount1<=0;clk_1hz<=~clk_1hz;endelsecount1<=count1+1;if(count2==2400000)begincount2<=0;clk_10hz<=~clk_10hz;endelsecount2<=count2+1;if(count3==240000)begincount3<=0;clk_100hz<=~clk_100hz;endelsecount3<=count3+1;if(count4==24000)begincount4<=0;clk_1khz<=~clk_1khz;endelsecount4<=count4+1;endendendmodule仿真圖仿真模塊二,門控電路和清零,鎖存,閥門信號產生程序modulechose(rest,clk_10hz,clk_100hzhz,clk_1khz,key1,key10,key100,gate_out1,ff,clk_latch,clk_clear);inputrest,clk_10hz,clk_100hz,clk_1khz,key1,key10,key100;outputgate_out1,clk_latch,clk_clear;outputreg[2:1]ff;reggate_out1,clk_latch,clk_clear,gate;reg[4:1]count; initialbegingate_out1=0;ff=0;clk_latch=0;clk_clear=0;gate=0;count=0;endalways@(posedgeclk_1khz)beginif(!rest)begingate_out1<=0;ff<=2'b00;endelsebeginif(key1==1&&key10==0&&key100==0)begingate<=clk_10hz;ff<=2'b01;endelseif(key1==0&&key10==1&&key100==0)begingate<=clk_100hz;ff<=2'b10;endelseif(key1==0&&key10==0&&key100==1)begingate<=clk_1khz;ff<=2'b11;endelsebeginff<=0;endendend////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////always@(posedgegate) begin count<=count+1; if(count<=9) begingate_out1<=1;clk_clear<=0;clk_latch<=0;end elseif(count==11) begingate_out1<=0;clk_clear<=0;clk_latch<=1;end elseif(count==13) begingate_out1<=0;clk_clear<=1;clk_latch<=0;count<=0;end else begingate_out1<=0;clk_clear<=0;clk_latch<=0;end endendmodule仿真圖仿真模塊三,計數器程序modulecounter(rest,start,clk_in,cnt1,cnt2,cnt3,cnt4,cnt5,cnt6,yichu,clk_clear);inputrest,start,clk_in,clk_clear;outputyichu;regyichu;outputreg[4:1]cnt1,cnt2,cnt3,cnt4,cnt5,cnt6; initialbegin yichu=1; cnt1<=4'b0000;cnt2<=4'b0000;cnt3<=4'b0000;cnt4<=4'b0000;cnt5<=4'b0000; cnt6<=4'b0000;endalways@(posedgeclk_in)beginif(!rest)begincnt1<=4'b0000;cnt2<=4'b0000;cnt3<=4'b0000;cnt4<=4'b0000;cnt5<=4'b0000;cnt6<=4'b0000;endelsebeginif(clk_clear==1)begincnt1<=4'b0000;cnt2<=4'b0000;cnt3<=4'b0000;cnt4<=4'b0000;cnt5<=4'b0000;cnt6<=4'b0000;yichu<=1; endelseif(start==1)begin if((cnt6==4'b1001)&&(cnt5==4'b1001)&&(cnt4==4'b1001)&&(cnt3==4'b1001)&&(cnt2==4'b1001)&&(cnt1==4'b1001))begincnt1<=4'b0000;cnt2<=4'b0000; cnt3<=4'b0000;cnt4<=4'b0000;cnt5<=4'b0000;cnt6<=4'b0000; yichu<=0; end elseif((cnt5==4'b1001)&&(cnt4==4'b1001)&&(cnt3==4'b1001)&&(cnt2==4'b1001)&&(cnt1==4'b1001))begin cnt1<=4'b0000;cnt2<=4'b0000;cnt3<=4'b0000;cnt4<=4'b0000; cnt5<=4'b0001;cnt6<=cnt6+4'b0001;endelseif((cnt4==4'b1001)&&(cnt3==4'b1001)&&(cnt2==4'b1001)&&(cnt1==4'b1001))begin cnt1<=4'b0000;cnt2<=4'b0000;cnt3<=4'b0000; cnt4<=4'b0000;cnt5<=cnt5+4'b0001;cnt6<=cnt6;endelseif((cnt3==4'b1001)&&(cnt2==4'b1001)&&(cnt1==4'b1001))begin cnt1<=4'b0000;cnt2<=4'b0000;cnt3<=4'b0000; cnt4<=cnt4+4'b0001;cnt5<=cnt5;cnt6<=cnt6; end elseif((cnt2==4'b1001)&&(cnt1==4'b1001))begincnt1<=4'b0000;cnt2<=4'b0000;cnt3<=cnt3+4'b0001;cnt4<=cnt4;cnt5<=cnt5;cnt6<=cnt6; endelseif((cnt1==4'b1001)) begin cnt1<=4'b0000;cnt2<=cnt2+4'b0001;cnt3<=cnt3; cnt4<=cnt4;cnt5<=cnt5;cnt6<=cnt6; endelsebegin cnt1<=cnt1+4'b0001;cnt2<=cnt2;cnt3<=cnt3; cnt4<=cnt4;cnt5<=cnt5;cnt6<=cnt6; end endendendendmodule仿真圖模塊仿真圖四,鎖存以及譯碼掃描顯示程序modulev138(rest,clk_1khz,se,in1,in2,in3,in4,in5,in6,segs,ff,dp,led,en,clk_latch);input[4:1]in1,in2,in3,in4,in5,in6;inputclk_1khz,rest;input[2:1]ff; inputclk_latch;outputregdp,led,en;outputreg[4:1]se;reg[3:1]count,dig;outputreg[7:1]segs;reg[4:1]sign_out4;reg[4:1]latch1,latch2,latch3,latch4,latch5,latch6; initialbegincount<=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@(posedgeclk_latch)beginlatch1<=in1;latch2<=in2;latch3<=in3;latch4<=in4;latch5<=in5;latch6<=in6;end /////////////////////////////////////////////////////////////////////////////////鎖存器。 always@(posedgeclk_1khz)begincount<=count+1;end/////////////////////////////////////////////////////////////////////////////////位選自加always@(posedgeclk_1khz)begin if(!rest)beginled<=1;endelsebegincase(count)0:beginsign_out4<=latch1;se<=count;end1:beginsign_out4<=latch2;se<=count;end 2:begin sign_out4<=latch3;se<=count;end 3:beginsign_out4<=latch4;se<=count;end 4:begin sign_out4<=latch5;se<=count;end5:begin sign_out4<=latch6;se<=count;enddefault:sign_out4<=4'b1111;endcase endend ////////////////////////////////////////////////////////////////////////////////////////////將數據依次譯碼always@(posedgeclk_1khz)begin if(ff==2'b01&&se==3)begindp<=0;endelseif(ff==2'b10&&se==2)begindp<=0;endelseif(ff==2'b11&&se==1)begindp<=0;endelsebegindp<=1;endend//////////////////////////////////////////////////////////////////////////////////檔位選擇always@(sign_out4)beginif(!rest)beginsegs<=0;endelsebegincase(sign_out4)0:segs<=7'b0000001;1:segs<=7'b1001111;2:segs<=7'b0010010;3:segs<=7'b0000110;4:segs<=7'b1001100;5:segs<=7'b0100100;6:segs<=7'b1100000;7:segs<=7'b0001111;8:segs<=7'b0000000;9:segs<=7'b0000100;default:segs<=7'b1111111;endcaseendend//////////////////////////////////////////////////////////////////////////////////////譯碼顯示endmodule仿真圖模塊仿真圖五,頂層電路程序moduletop(rest,clk,key1,key2,key3,clk_in,se,segs,led,dp,en,yichu);inputrest,clk,clk_in,key1,key2,key3;outputdp,led,en,yichu;output[3:1]se;output[7:1]segs;wire[4:1]out1,out2,out3,out4,out5,out6;wire[2:1]ff;wiregate_out1;countcount(.clk(clk),.rest(rest),.clk_10hz(clk_10hz),.clk_100hz(clk_100hz),.clk_1khz(clk_1khz));///////////////////////////////////////////////////////////////////////分頻器chosechose(.rest(rest),.clk_1khz(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));/////////////////////////////////////時基選擇模塊countercounter(.start(gate_out1),.rest(rest),.clk_in(clk_in),.cnt1(out1),.yichu(yichu),.cnt2(out2),.cnt3(out3),.cnt4(out4),.cnt5(out5),.cnt6(out6),.clk_clear(clk_clear));////////////////////////////////////計數器器v138v138(.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///////////////////////////////////////////////////譯碼顯示頂層電路圖生成的各個模塊按要求連線,形成頂層原理圖,如下3分配引腳和下載實現根據《XC3S200AI/O口對應管腳參考》分配引腳。引腳分配完畢后雙擊“Generateprogramming”對所有程序進行綜合,改正綜合過程中提示的錯誤和警告,然后運行“ConfigureDevice”把程序下載到

溫馨提示

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

評論

0/150

提交評論