EDA基于Verilog數字秒表_第1頁
EDA基于Verilog數字秒表_第2頁
EDA基于Verilog數字秒表_第3頁
EDA基于Verilog數字秒表_第4頁
EDA基于Verilog數字秒表_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、精選優質文檔-傾情為你奉上石家莊經濟學院信息工程學院電子信息工程專業EDA技術課程設計報告題目: 數字秒表 姓 名 學 號 班 級 電子一班 指導教師 王軍芬 2015年 1 月 16日課程設計任務書班級 電子一班 姓名 學號 課程設計題目 數字秒表 課程設計起止日期 2014年12月29日 至 2015年1月16日 實習地點 實驗樓5308 課程設計內容與要求:1. 及格:計時顯示范圍059.99s,有啟動和停止兩個按鍵。2.中: 使用四位數碼管顯示,從零開始計數,前兩位顯示秒(059),后兩位顯示0.01秒(099),計滿后重新從零開始;有開始、暫停鍵、復位鍵,按開始鍵計數開始,暫停鍵計數

2、停止,復位計數清零;3.良: 具有記錄最近5次計時操作結果的功能。按暫停鍵后停止計數,再按開始鍵下一組數據開始計數,按復位全部清零;再按暫停鍵可查看已保存的數據,按開始鍵翻看每一組數據,數據存儲了幾組,查看時就只循環查看幾組。4.優: 使用AT24C04記錄5次計數操作結果。 指導教師 王軍芬 2014年 12月29日一、設計原理與技術方法:1.設計方案本電路的設計實現了中的要求,分成5個模塊進行設計,分別為:分頻模塊、數字秒表計數模塊、數碼管位選模塊,數碼管顯示模塊、按鍵消抖模塊。 (1)分頻模塊 本模塊的主要作用是將50mhz的頻率分頻為100hz和2000hz的頻率。因為秒單位后面的最小

3、單位是0.01s,所以要用到100hz的頻率為計數做準備。且數碼管位選需要一個時鐘2000hz,目的是為了讓掃描速度比較快,讓我們視覺覺得四個數碼管同時亮。(2)計數模塊 執行計時功能,計時方法為對標準時鐘脈沖計數。計時范圍是0秒-59.99秒,那么計時采用1個六進制計數器和3個十進制計數器構成,其中毫秒位、十毫秒位、秒位采用十進制計數器,十秒位采用六進制計數器。(3)數碼管位選模塊 因為該芯片用的是并口輸出,所以此處應有數碼管位選部分,此處是用一個狀態機做的,因為是共陽的,所以當哪個管子為低時,哪個管子亮,當掃描速度特別快時,利用人的視覺效果,則四個管子是同時亮的(4)數碼管顯示模塊 該芯片

4、是共陽數碼管,所以接有低電平的管段發亮。(5)按鍵消抖部分 因為計數部分有開始,暫停,復位三個按鍵,為了消除毛刺現象對實驗的影響,所以必須對三個按鍵消抖。 100HZ2. 方案設計流程圖計數模塊分頻模塊50MHZ晶振 2000HZ按鍵消抖模塊數碼管位選模塊數碼管顯示部分 圖1 設計流程圖 分頻模塊將50MHz分頻為100Hz和2000HZ的頻率,100赫茲為計數模塊計數所使用;計數模塊主要完成十秒、秒、十分妙、百分秒的計數工作;消抖模塊連接三個按鍵,此處是為了保證系統能正確識別按鍵開關,就必須對按鍵進行消抖動處理,分別實現開始,暫停,復位功能,計數模塊輸出連接到數碼管位選顯示模塊,數碼管位選模

5、塊連接到數碼管顯示模塊,2000赫茲連接消抖模塊和位選模塊,數碼管正確顯示秒表數字;3.實驗程序和原理圖3.1管腳分配圖3.2總電路連線及波形仿真圖:圖2 電路原理總圖3.3 5個模塊原理圖、波形仿真圖及源程序:(1)分頻模塊:圖3 分頻模塊原理圖 因為將50MHz的頻率分成100Hz和2000HZ的過程中涉及到到頻率范圍太大,進行波形仿真時,無法正常顯示。設計原理: 將50MHz分頻為clk1100Hz和clk2 2000HZ的頻率,先分頻到2000HZ,分頻倍數,N1=25000,所以此處用到的是偶數倍分頻,其原理如下:使用一模N1計數器模塊即可實現,即每當模N1計數器上升沿從0開始計數至

6、N1時,輸出時鐘進行翻轉,同時給計數器一復位信號使之從0開始重新計數,在把2000赫茲頻率分為100赫茲,分頻倍數為N2=20,每當模N2計數器上升沿從0開始計數至N2時,輸出時鐘進行翻轉,同時給計數器一復位信號使之從0開始重新計數,為以此循環即可。源程序:module fenpin(clk,clk1,clk2);input clk;output clk1;output clk2;reg 15:0k2;reg7:0 k1;reg clk2;reg clk1;always(posedge clk)begin if(k2<16'd12499) k2=k2+8'd1;else

7、k2=0;if(k2=16'd12499)clk2=clk2+1;/clk2=2000hzendalways (posedge clk2)beginif(k1<8'd9)k1=k1+8'd1;else k1=0;if(k1=8'd9)clk1=clk1+1;/clk1=100hzend endmodule(2)計數模塊:圖4 計數模塊原理圖 圖5 波形仿真圖設計原理:此處rst是復位鍵鍵,當其處于高電平時,全部清零,start是開始鍵,pause是暫停鍵,三個按鍵都用了 一個T觸發器,按下復位鍵,其他二個按鍵沒用,按下開始鍵計數開始,按下暫停鍵計數停止,再

8、按開始鍵計數開始。其計數部分由一個六進制的計數器和三個十進制的計數器組成,首先是百分秒位msl開始從零計數,當其計數到九時,向十分秒位msh進一,同時將百分秒位清零;當十分位計數到九時,向秒位sl進一,同時將十分妙位和百分秒位清零;當秒位計數到九時,向十秒位sh進一,同時將秒位、十分秒位和百分秒位清零;當十秒位計數到五時,將所有位清零。源程序:module cout(clk,start,pause,msh,msl,sh,sl,rst); input clk; input start,pause,rst; output 3:0msh,msl,sh,sl; reg3:0 msh,msl,sh,sl

9、; reg cn1; reg start1=1,pause1=1,rst1=0; always (posedge start) start1=start1; always (posedge pause) pause1=pause1; always (posedge rst) rst1=rst1+1'b1; always (posedge clk or negedge rst1 ) begin if(!rst1) beginmsh,msl<=8'h00; cn1<=0; end else if(pause1start1) begin if(msl=9) begin m

10、sl<=0; if(msh=9) begin msh<=0; cn1<=1; end else msh<=msh+1'h1; end else begin msl<=msl+1'h1; cn1<=0; end end end always (posedge cn1 or negedge rst1 ) begin if(!rst1) beginsh,sl<=8'h00; end else if(start1pause1) begin if(sl=9) begin sl<=0; if(sh=5) sh<=0; else

11、sh<=sh+1'h1; end else begin sl<=sl+1'h1; end endendendmodule(3)按鍵消抖模塊:圖6 消抖模塊原理圖設計原理: 這是一種去除雙邊沿抖動或毛刺的電路設計,它的主要原理分別用二個計數器對輸入信號的高電平和低電平的持續時間(脈寬)進行計數(在時間上同時但在計數上獨立)。只有當高電平的計數時間大于某個值,則判為遇到正常信號,若低電平的計數時間大于某值則輸出為0.,此處是為了保證系統能正確識別按鍵開關,就必須對按鍵進行消抖動處理 源程序:module xiaodou(clk,kin,kout);/按鍵消抖 input

12、 clk,kin; output kout; reg kout; reg 3:0kh,kl; always(posedge clk) begin if(!kin) kl<=kl+1'b1; else kl<=4'b0000; end always(posedge clk) begin if(kin) kh<=kh+1'b1; else kh<=4'b0000; end always(posedge clk) begin if(kh>4'b1100) kout<=1'b1; else if(kl>4'

13、;b0111) kout<=1'b0; end endmodule (4)數碼管位選模塊: 圖 7 數碼管位選掃描模塊原理圖設計原理 此處設計用了一個狀態機,輸入了四個數據當現態c_st為s0=0時,選擇第一個管子亮,且顯示的是第一個是shi_h數據,當現態c_st為s1=1時,選擇第二個管子亮,且顯示的是第二位shi_l數據,當現態c_st為s2=2時,選擇第3個管子亮,且顯示的是第3位fen_h數據,當現態c_st為s3=3時,選擇第4個管子亮,且顯示的是第4位shi_l數據,且4個管子為共陽,當wei3.0對應的數據為低電平時則哪個管子亮。源程序module wei_cho

14、ose(clk,wei,shi_h,shi_l,fen_h,fen_l,duan);input 3:0shi_h,shi_l,fen_h,fen_l;input clk;output 3:0duan;output 3:0wei;reg 3:0duan;reg 3:0wei;parameter s0=0,s1=1,s2=2,s3=3;reg 3:0c_st,n_st;always(posedge clk)beginc_st<=n_st;endalways*begincase(c_st)s0:begin n_st=s1;wei<=4'b0111;duan<=shi_h;

15、ends1:begin n_st=s2;wei<=4'b1011;duan<=shi_l; ends2:begin n_st=s3;wei<=4'b1101;duan<=fen_h; ends3:begin n_st=s0;wei<=4'b1110;duan<=fen_l; enddefault:begin n_st=s1;wei<=4'b0111;duan<=shi_h; endendcaseendendmodule(5)數碼管顯示模塊 圖8 數碼管顯示模塊原理圖設計原理: 設輸入的a3:04位碼輸出控制7段共陽

16、數碼管的LED7S6:0,輸出信號LED7S6:0的7位分別接共陽數碼管的7個段,高位在左,低位在右,接有低電平的段發亮源程序:module decl7s (a,led7s); input3:0a; output6:0led7s; reg6:0led7s;always(a) case(a) 4'b0000 : led7s<=7'b; 4'b0001 : led7s<=7'b; 4'b0010 : led7s<=7'b; 4'b0011 : led7s<=7'b; 4'b0100 : led7s<

17、;=7'b; 4'b0101 : led7s<=7'b; 4'b0110 : led7s<=7'b; 4'b0111 : led7s<=7'b; 4'b1000 : led7s<=7'b; 4'b1001 : led7s<=7'b; 4'b1010 : led7s<=7'b; 4'b1011 : led7s<=7'b; 4'b1100 : led7s<=7'b; 4'b1101 : led7s<=7

18、'b; 4'b1110 : led7s<=7'b; 4'b1111 : led7s<=7'b; default : led7s<=7'b; endcase endmodule 課程設計成果展示圖 9 成果展示圖一圖 10 成果展示圖二圖 11 成果展示圖三 圖12 成果展示圖4二、課程設計工作記錄:1 設計步驟與時間安排:12月28號 確定設計題目,查找相關資料;12月29號 查找學習開發板的相關內容;12月30號到31號 編程、設計模塊并進行仿真驗證以及下載實現單個模塊功能; 1月4號到5號 編程、設計模塊并進行仿真驗證以及下載實現單個模塊功能; 1月6號到7號 編程、設計模塊

溫馨提示

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

評論

0/150

提交評論