基于verilog的數(shù)字時鐘設(shè)計_第1頁
基于verilog的數(shù)字時鐘設(shè)計_第2頁
基于verilog的數(shù)字時鐘設(shè)計_第3頁
基于verilog的數(shù)字時鐘設(shè)計_第4頁
基于verilog的數(shù)字時鐘設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于verilog hdl的數(shù)字秒表設(shè)計系別:物理與電氣工程學院 專業(yè):微電子學 班級:2班 成員:目錄一前言3二、實驗目的3三、功能設(shè)計3四、用verilog描述電路44.1時鐘調(diào)校及計時模塊44.2整數(shù)分頻模塊84.3時鐘信號選擇模塊84.4七段:s示置114.4.1 bcd碼顯示模塊114.4.2二位七段顯示模塊124.4.3 一位七段顯示模塊124.5頂層模塊實現(xiàn)14五、模擬與仿真15六、邏輯綜合16七、下載到硬件電路16八、雌18九、心得體會18十、參考文獻19一、前目隨著微電子技術(shù)的的飛速發(fā)展,人規(guī)??删幊唐骷拿芏群托阅懿粩嗵岣撸瑪?shù)字 系統(tǒng)的設(shè)計方法、設(shè)計過程也發(fā)生了重大改變,傳

2、統(tǒng)的設(shè)計方法已經(jīng)逐漸被電子 設(shè)計自動化eda (electronic design automation)工具所取代??删幊唐骷梢?通過硬件描述語言(如verilog hdl)的形式根據(jù)實際設(shè)計的需要靈活地嵌入規(guī) 模化的數(shù)字單元,大大地縮短了產(chǎn)品的設(shè)計周期。以可編程邏輯器件為核心的設(shè) 計在數(shù)字系統(tǒng)設(shè)計領(lǐng)域?qū)⒄紦?jù)越來越重要的作用,因此,作為硬件設(shè)計者掌握 eda設(shè)計方法和工具是必須的。二、實驗目的(1) 通過本次課程設(shè)計加深對verilog語言課程的全面認識、復習和掌握。(2) 掌握定時器、外部中斷的設(shè)置和編程原理。(3) 通過此次課程設(shè)計能夠?qū)④浻布Y(jié)合起來,對程序進行編輯、調(diào)試。使其能 夠

3、通過電腦下載到芯片,正常工作。(4) 實際操作quartus ii軟件,復習鞏固以前所學知識。三、功能設(shè)計數(shù)字鐘是一個常用的數(shù)字系統(tǒng),其主要功能是計時和顯示時間。這里通過 一個數(shù)字鐘表的模塊化設(shè)計方法,說明自頂向下的模塊化設(shè)計方法和實現(xiàn)一個項 目的設(shè)計步驟。這里實現(xiàn)的電子表具有顯示和調(diào)時的基本功能,可以顯示時、分 秒和毫秒,并通過按鍵進行工作模式選擇,工作模式有4種,分別是正常計時模 式、調(diào)時模式、調(diào)分模式、調(diào)秒模式。構(gòu)成電子表的基木基木模塊有四個,分別是時鐘調(diào)校及計時模塊myclock、 整數(shù)分頻模塊int_div、吋鐘信號選擇模塊clkgen和七段顯示模塊disp_dec。四、用veril

4、og實現(xiàn)電路4.1時鐘調(diào)校及計時模塊時鐘調(diào)校及計時模塊myclock實現(xiàn)的功能是根據(jù)當前的工作狀態(tài)進行時、分、秒 的調(diào)整或正常的計時。代碼端口說明如下:輸入信號:rstn一一復位信號clk一一100hz吋鐘信號flag1:o一一工作模式控制信號,模式定義為. 00表示正常顯示,01表示調(diào) 時,10表小*調(diào)分,11表7k調(diào)秒;up一調(diào)校模式時以加1方式調(diào)節(jié)信號;dn一一調(diào)校模式時以減1方式調(diào)節(jié)信號。輸出信號:h7:0-"時數(shù)據(jù)(十六進制);m7:0一一"分數(shù)據(jù)(十六進制);s7:0"秒"數(shù)據(jù)(十六進制);ms7:0"b分秒數(shù)據(jù)(十六進制)。該模塊

5、的設(shè)計思路是,當復位信號rstn有效吋,時、分、秒信號清零,否則 工作模式控制信號flag的值決定當前的工作狀態(tài)。當flag=2'boo時,電子表工 作在正常計時狀態(tài),對輸入的100hz的時鐘信號elk進行計數(shù),修改當前的百分 秒(ms)、秒(s)、分(m)和時(h)的計數(shù)值;當flag信號=2'b01時,電子 表工作在“時校正狀態(tài),若此時up信號有效則h加1,若此時dn信號有效則 h減1,;當flag信號=1七10吋,電子表工作在"分"校正狀態(tài),若此時up信號 有效則m加1,若此時dn信號有效則m減1;當flag=2'bll時,電子表工作 在&qu

6、ot;秒校正狀態(tài),其up和dn的控制過程與"時、"分類似 代碼:module myclock(rstn,clk,flag,up,dn,h,m,s,ms);input rstn,clk,up,dn;output 7:0 h,m,s;output 7:0 ms;inputl:0 flag;reg 5:0 m_h,m_m,m_s; reg 6:0 m一ms;assign h=m_h; assign m=m_m; assign s=m_s; assign ms=m_ms;/復位狀態(tài)always (posedge clk) if(rstn)beginm_h<=8'd23

7、; m_m<=8*d52; m_s<=8'bo; m ms<=8,bo;endelse if(flag=2'b01) beginif(up)beginif(m_h=8'd23)m_h<=8'do;elsem h=m h+l*bl; endelse if(dn)beginif(m_h=8'h00)m_h<=8*d23;elsem h<=m h-l'bl;endendelse if(flag=2'blo) beginif(up)jf(m_m=8,d59)m_m<=8*do;elsem_m<=m_

8、m+l'bl; else if(dn)if(m_m=8,h00)m_m<=8'd59;elsem m<=m m-lbl; endelse if(flag=2'bll) beginif(up)jf(m_s=8'd59)m_s<=8'bo;elsem s<=m s+l'bl; else if(dn)/調(diào)時狀態(tài)/調(diào)分狀態(tài)/調(diào)秒狀態(tài)if(m_s=8'h00)m_s<=8'd59;elsem s<=m s<=m s-l'bl; endelsebegin/正常計時狀態(tài)if(m_ms=8'

9、;d99)beginm_ms<=8*do;if(m_s=8*d59)beginm_s<=8'do;if(m_m=8'd59)beginm_m<=8*do;if(m_h=8'd23)m_h<=0;elsem h<=m h+l'bl;endelsem m<=m m+8'dl;endelsem_s<=m_s+l'bl;endelsem_ms<=m_ms+l'bl;endendmodule4.2整數(shù)分頻模塊由于數(shù)字系統(tǒng)提供的基準時鐘信號頻率往往較高,因此需要分頻模塊產(chǎn)生所 需頻率的失蹤信號,例如上面

10、時鐘校正及計時模塊所需的100hz的時鐘信號。 整數(shù)分頻模塊int_div可以實現(xiàn)對輸入時鐘clock進行f_div分頻后輸出clk_out。 f div分頻系數(shù)范圍為12an (n=f div width),若要&變分頻系數(shù),改;參數(shù)f_drf_div_width到相應范圍即可。若分頻系數(shù)為偶數(shù),則輸出時鐘占空比 為50%;若分&系數(shù)為奇數(shù),則輸出的時鐘占空比取決于輸入的吋鐘占空比和分 頻系數(shù)(當輸入為50%時,輸出也是50%)。代碼:/分頻系數(shù) /分頻計數(shù)器寬度module int_div(clock,clk_out); parameter f_div=48000000;

11、parameter f_div_width=32;input clock;/輸入時鐘output clk_out;/輸出時鐘reg clk_p_r;reg clk_n_r;regf_div_width-l:o count_p; regf_div_width-l:o count_n;wire full_div_p; wire half_div_p; wire full_div_n; wire half_div_n;/上升沿計數(shù)滿標志/上升沿計數(shù)半滿標志 /卜降沿計數(shù)滿標志 /下降沿計數(shù)半滿標志/判斷計數(shù)標志位置位與否assign full_div_p=(count_p<f_div-l);a

12、ssign half_div_p=(count_p<(f_div»l)-l); assign full_div_n=(count_n<f_div-l); assign half_div_n=(count_n<(f_div»l)-l);/吋鐘輸出assign clk_out=(f_div=l)?clock:(f_div0?(clk_p_r&clk_n_r):clk_p_r);always (posedge clock)/上升沿脈沖計數(shù)beginif(full_div_p)begincount_p<=count_p+lbl;if(half_div

13、_p)clk_p_r<=l'bo;elseclk_p_r<=l'bl;endelsebegincount_p<=0;clk_p_r<=l'bo;endendalways (negedge clock)/下降沿脈沖計數(shù)beginif(full_div_n)begincount_n<=count_n+l'bl;if(half_div_n)elk n r<=lfbo; elseclk_n_r=l*bl;endelsebegincount_n<=0; elk n r<=l'bo;endendendmodule4.3

14、時鐘信號選擇模塊時鐘信號選擇模塊clkgen實際上時一個二選一電路,用于提供時鐘調(diào)校及 計時時模塊所需的時鐘脈沖。當電子表工作在正常計時狀態(tài)時選擇100hz時鐘信 號;當電子表工作在調(diào)時、調(diào)分、調(diào)秒是那種設(shè)置模式時,如果采用100hz時鐘 信號,那么手動一次按鍵可能引起設(shè)置數(shù)據(jù)的一串跳變,因此為了方便按鍵吋動 作對時間的設(shè)置,這里采用2hz的時鐘信號。其端口說明如下:flag一一時鐘選擇輸入信號;clk_100hz輸入100hz的時鐘信號;clk_2hz一一輸入2hz的時鐘信號;clkout輸出吋鐘信號。代碼:module clkgen(flag,clk_100hz,clk_2hz,clkou

15、t);inputl:0 flag;/若 flag=o 則 clkout=100hz,否則 clkout=2hzinput clk_100hz,clk_2hz; output clkout;assign clkout=(flag=2'b00)?clk_100hz:clk_2hz; endmodule4.4七段顯示設(shè)置為了對吋鐘吋、分、秒和毫秒數(shù)據(jù)輸出顯示,需要將時、分、秒和毫秒的二進制轉(zhuǎn)換為十進制數(shù)。由于時、分、秒最大到60,毫秒最大到99,所以十進制 數(shù)選擇2位就能滿足要求。為了在七段數(shù)碼管輸出時間數(shù)據(jù),還需要將顯示的十 進制數(shù)轉(zhuǎn)化為七段段碼。以上功能分別由bcd碼顯示模塊和七段譯碼管

16、模塊來 實現(xiàn)。4.4.1 bcd碼顯示模塊bcd碼顯示模塊的功能是將8位二進制數(shù)轉(zhuǎn)化為2位十進制數(shù)后,進行七段段譯 碼顯示。為了實現(xiàn)顯示功能,在其內(nèi)部調(diào)用了 dual_hex 2位七段顯示模塊。其 端口說明如下:輸入信號:hex2位8421bcd碼輸入。輸出信號:dispout一一2位8421碼對應的七段數(shù)碼管段碼。代碼:module disp_dec(hex,dispout); input7:0 hex; output15:0 dispout; reg7:0 dec;always (hex) begindec7:4=hex/4'dl0;dec3:0=hex%4'dl0;end

17、dual_hex ul(rb0,dec,dispout); endmodule/八位二進制輸入數(shù)據(jù) /2位十進制的七段段碼顯示數(shù)據(jù)/8位二進制數(shù)轉(zhuǎn)化為2位bcd碼/調(diào)用2位共陽極七段顯示模塊4.4.2二位七段顯示模塊二位七段顯示模塊的功能是將2進制或十六進制數(shù)轉(zhuǎn)化為對應的七段段碼, 內(nèi)部調(diào)用了一位七段譯碼模塊seg_decodero代碼:/共陰或共陽輸出選擇 /2位的十進制或十六進制數(shù)據(jù) /2個七段段碼數(shù)據(jù)module dual_hex(iflag,datain,dispout); input iflag; input7:0 datain; output15:0 dispout;seg_dec

18、oder ul(iflag,datain7:4,dispout15:8); seg_decoder u2(iflag,datain3:0,dispout7:0);endmodule4.4.3 位七段譯碼模塊一位七段譯碼模塊的功能是將4位二進制數(shù)轉(zhuǎn)化為對應的共陰或共陽七段 段碼。代碼:/共陰或井陽輸出選擇 /4位二進制數(shù)據(jù) /七段段碼顯示數(shù)據(jù)module seg_decoder(iflag,ia,oy); input iflag; input3:o ia; output reg7:0 oy;always (iflagja) begincase(ia)/共陰級七段輸山4*b0000:oy=8

19、9;h3f;4七0001:0丫=8七06;4*b0010:o 丫=8'h5b;4'b0011:oy=8'h4f;4'b0100:oy=8'h66;4*b0101:oy=8'h6d;4'b0110:oy=8'h7d;4*b0111:o 丫=8'h27;4'bl000:oy=8'h7f;4'bl001:oy=8'h6f;4七1010:0丫=8177;41011:0 丫=8*h7c;4*bll00:oy=8*h58;4*bll01:oy=8*h5e;4'blllo:oy=8'h79

20、;4七1111:0丫=8171;endcaseif(!iflag)oy=oy;/共陽極七段輸出endendmodule4.5、頂層模塊的實現(xiàn)頂層模塊是將各功能模塊連接起來,實現(xiàn)電子表的完整功能。其端口信號說 明如下:輸入信號:iclk5050mhz 時鐘信號;rstn一一復位信號;flag一一工作模式控制信號,模式定義為:00表示正常顯示,01表示調(diào)吋,10表小*調(diào)分,11表不調(diào)秒;up一調(diào)校模式時以加1方式調(diào)節(jié)信號;dn一一調(diào)校模式時以減1方式調(diào)節(jié)信號。輸出信號:h_dis一一"小時數(shù)據(jù)的七段數(shù)碼管數(shù)據(jù);m_dis一一"分鐘數(shù)據(jù)的七段數(shù)碼管數(shù)據(jù);s_dis一一"

21、秒數(shù)據(jù)的七段譯碼管數(shù)據(jù);ms_dis一一"百分秒數(shù)據(jù)的七段譯碼管數(shù)據(jù);mode工作模式輸出;h一"時數(shù)據(jù)(十六進制);m"分數(shù)據(jù)(十六進制);s一一"秒"數(shù)據(jù)(十六進制);ms"h分秒數(shù)據(jù)(十六進制)。代碼:module clock(iclk_50,rstn,flag,up,dn,h_dis,m_dis,s_dis,ms_dis,mode,h,m,s); input iclk一50; input rstn,up,dn; input 1:0 flag; output 1:0 mode;output 15:0 h_dis,m_dis,s_

22、dis,ms_dis; output 7:0 h,m,s;wire 7:0 ms; wire clk_100hz,clk_2hz; wire elk;assign mode=flag;int一div #(500000,32) nclkl00(iclk_50/clk_100hz); int_div #(50000000,32) nclk2(iclk_50,clk_2hz); clkgen u0(flag,clk_100ha,clk_2hz,clk); myclock ul(rstn,clk,flag,up,dn,h,m,s,ms); disp_dec hour(h,h_dis);disp_dec

23、 minute(m,m_dis); disp_dec second(s,s_dis); disp_dec hour(ms,ms_dis);endmodule五、模擬與仿真在quartus ii中利用仿真波形進行功能或時序仿真的基本步驟如下:(1)創(chuàng)建新的矢量波形文件(*.vwf).(2)添加輸入、輸出節(jié)點。(3)編譯輸入節(jié)點的波形。(4)完成矢量波形文件的創(chuàng)迷之后,用戶即可以對設(shè)計進行功能或時序仿真。(5)仿真啟動后,狀態(tài)窗口會同時自動打開,在狀態(tài)窗口中顯示仿真進度及所 用時間。(6)默認情況下,仿真器報告窗口內(nèi)在仿真過程中會顯示仿真波形部分,其中 還包括當前仿真器的設(shè)置信息和仿真信息等。23

24、05mporter8400ut'8»98ut$(mendn «1*0cuvil1廠0霣v 1田ruev i0田k10田vi13xh田bsw :»x99x01*32xstaw0*33q sv i«x1*42wv irn<i nj計時狀態(tài)仿真波形六、邏輯綜合完成項目創(chuàng)建和設(shè)計輸入后,用quartus ii的編譯器(compiler)對設(shè)計進 行檢查和邏輯綜合,并生成用于配置可編程邏輯器件的下載文件。quartus ii編 譯器屮的analysis & synthesis模塊將分析設(shè)計文件并建立工程數(shù)據(jù)庫。該模塊 使用quartus ii

25、內(nèi)置綜合器,綜合verilog hdl設(shè)計文件(.v)。編譯器件選項設(shè)置。引腳分配。編譯設(shè)計。查看適配結(jié)果。七、下載到硬件電路在設(shè)計(工程)編譯成功后,便可以對所選的(altera) fi標器件進行編程和配 quartus ii編譯器的assembler模塊將會對工程的各個組件轉(zhuǎn)換成編程文件,也拈編譯器對象文件(*.pof)和sram對象文件(.sof)。quartus ii編譯器 (progrsmmer)可以使用這些編程文件與altera編程硬件配合,對quartus ii軟 件所支持的altera器件進行編程和配置。3nkiniiurinnnaniiiiiiiuihhih秒顯示,jggl讀h碧 >3 i 園*00分顯示八、總結(jié)在quartusll幵發(fā)環(huán)境下,采用自頂向下的設(shè)計方法有利于在早期發(fā)現(xiàn)結(jié)構(gòu) 設(shè)計中的錯誤,避免不必要的重復設(shè)計。再結(jié)合基于fpga的“在系統(tǒng)

溫馨提示

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

評論

0/150

提交評論