數(shù)字日歷電路的設計EDA實訓_第1頁
數(shù)字日歷電路的設計EDA實訓_第2頁
數(shù)字日歷電路的設計EDA實訓_第3頁
數(shù)字日歷電路的設計EDA實訓_第4頁
數(shù)字日歷電路的設計EDA實訓_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、成 績批閱教師日 期桂林電子科技大學 實訓報告2016-2017學年第1學期學 院 海洋信息工程學院 課 程 EDA綜合實訓 姓 名 鐘朝林 學 號 1416030218 指導老師 覃琴 日 期 2016/12/29 實訓題目:數(shù)字日歷電路的設計 1 概述1.1 設計要求1.1.1 設計任務 設計并制作一臺數(shù)字日歷。1.1.2 性能指標要求 用EDA實訓儀的I/O設備和PLD芯片實現(xiàn)數(shù)字日歷的設計。 數(shù)字日歷能夠顯示年、月、日、時、分和秒。 用EDA實訓儀上的8只八段數(shù)碼管分兩屏分別顯示年、月、日和時、分、秒,即在一定時間段內顯示年、月、日(如20080101),然后在另一時間段內顯示時、分、

2、秒(如00123625),兩個時間段能自動倒換。 數(shù)字日歷具有復位和校準年、月、日、時、分、秒的按鈕,但校年和校時同用一個按鈕,即在顯示年、月、日時用此按鈕校年,在顯示時、分、秒時則用此按鈕校時,依此類推。1.2 總體設計基本原理及框圖1.2.1 基本原理 日歷主要由年月日模塊、時分秒模塊、控制模塊、顯示模塊、校時模塊組成。采用3個公用按鈕j1、j2、和j3完成時分秒或年月日的校時,用8只七段數(shù)碼管分時完成時分秒或年月日的顯示。設計電路的計時器模塊(jsq24)用于完成一天的24小時計時;年月日模塊接收計時器模塊送來的“天”脈沖進行計數(shù),得到日月年的顯示結果,控制模塊產生控制信號k,控制數(shù)碼顯

3、示器顯示年月日,還是時分秒,或者自動輪流顯示;校時選擇模塊在k信號的控制下,選擇將j1、j2和j3這3個校時按鈕產生的信號是送到計時器模塊的校秒、校分和校時輸入端,還是送到年月日模塊的校天、校月、校年輸入端;顯示選擇模塊在k信號的控制下,選擇是將計時器模塊的時、分、秒狀態(tài)信號,還是將年月日模塊的年、月、日狀態(tài)信號送到數(shù)碼管顯示器顯示。1.2.2 總體框圖 2 系統(tǒng)軟件設計分析2.1年月日模塊module r(clrn,clk,jn,jy,jr,qn,qy,qr); /年月日模塊input clrn,clk,jn,jy,jr;output reg15:0 qn;reg 15:0 qn1;outp

4、ut reg7:0 qy,qr; reg clkn,clky; reg7:0 date; reg clkn1,clkn2,clkn3;initial begin clkn1=1;clkn2=1;clkn3=1;endinitial begin qn='h2011;qn1=2011;qy=1;qr=1;endalways (posedge (clkjr) or negedge clrn)/ 日計時模塊begin if(clrn)qr=1;else begin if(qr=date)begin qr=1; clky=1;end else begin qr=qr+1;clky=0;end i

5、f(qr3:0='ha)begin qr3:0=0;qr7:4=qr7:4+1;end endendalways (posedge (clkyjy) or negedge clrn)/月計時模塊 begin if(clrn) qy=1; else begin if(qy='h12) begin qy=1;clkn=1;end else begin qy=qy+1;clkn=0;endif(qy3:0='ha)beginqy3:0=0;qy7:4=qy7:4+1;end end end always begin case(qy) 'h01:date='h3

6、1; 'h02:begin if(qn1%4=0)&(qn1%100 != 0)|(qn1%400=0)date='h29; else date='h28;end 'h03:date='h31; 'h04:date='h30; 'h05:date='h31; 'h06:date='h30; 'h07:date='h31; 'h08:date='h31; 'h09:date='h30; 'h10:date='h31; 'h11:d

7、ate='h30; 'h12:date='h31; default: date='h30; endcase endalways ( posedge (clknjn) or negedge clrn) /年計時模塊 begin if(clrn)begin qn3:0=1;qn1=2011;end else begin if(qn3:0=9)qn3:0=0; else begin qn3:0=qn3:0+1;qn1=qn1+1;end if(qn3:0=9)clkn1=0; else clkn1=1;end endalways (posedge clkn1 or n

8、egedge clrn) begin if(clrn)qn7:4=1; else begin if(qn7:4=9) qn7:4=0; else qn7:4=qn7:4+1; if(qn7:4=9) clkn2=0; else clkn2=1;end endalways (posedge clkn2 or negedge clrn) begin if(clrn)qn11:8=0; else begin if(qn11:8=9) qn11:8=0; else qn11:8=qn7:4+1; if(qn11:8=9) clkn3=0; else clkn3=1;end endalways (pos

9、edge clkn3 or negedge clrn) begin if(clrn)qn15:12=2; else if(qn15:12=9) qn15:12=0; else qn15:12=qn15:12+1; endendmodule 2.2時分秒模塊module cnt60(clk,clrn,j,q,cout);/分和秒計時input clk,clrn,j;output reg7:0 q;output reg cout;always (posedge clkj or negedge clrn ) begin if (clrn) q=0; else begin if (q='h59

10、) begin q=0;cout=1;end else begin q=q+1;cout=0;end if (q3:0='ha) begin q3:0=0;q7:4=q7:4+1;end end end endmodulemodule cnt24(clk,clrn,j,q,cout);/小時計時input clk,clrn,j;output reg7:0 q;output reg cout;always (posedge clkj or negedge clrn ) begin if (clrn) q=0; else begin if (q='h23) begin q=0;co

11、ut=1;end else begin q=q+1;cout=0;end if (q3:0='ha) begin q3:0=0;q7:4=q7:4+1;end end end endmodule2.3控制模塊module contr(clk,k1,k2,k); input clk,k1,k2; output reg k; reg 3:0 qc; reg rc;always (posedge clk) begin qc=qc+1; if (qc<8) rc=0; else rc=1; case (k1,k2) 0:k=rc; /八秒顯示年月日八秒顯示時分秒的自由轉換 1:k=0;/

12、顯示并且校準時分秒 2:k=1; /顯示并且校準年月日3:k=rc;endcase end endmodule 2.4顯示模塊module mux_16(k,qm,qf,qs,qr,qy,qn,q); input k; input 7:0qm,qf,qs,qr,qy; input 15:0 qn; output reg 31:0q;always begin if (k=0) begin q31:24=0;q23:0=qs,qf,qm;end else q=qn,qy,qr; endendmodule 2.5校時模塊module mux_4(k,jm,jf,js,jr,jy,jn,j1,j2,j

13、3);input k,j1,j2,j3;output reg jm,jf,js,jr,jy,jn;always begin if (k=0) jm,jf,js=j1,j2,j3; else jr,jy,jn=j1,j2,j3; endendmodule2.6鬧鐘模塊module naozhong(qs,qf,led,zt);input zt;input7:0 qs,qf;output led;reg led;always beginif (qs='h06&&qf='h01) /6:01鬧鐘開始閃爍 led=1; else led=0; if(zt=1) led=

14、0; / 在任意時刻都可以關掉鬧鐘 endendmodule 2.7分頻器模塊module FENP(clk,newclk);input clk;output reg newclk;reg24:0 cnter;always (posedge clk) begin if(cnter<20000000) cnter=cnter+1; else cnter=0; if (cnter<10000000) newclk=1;else newclk=0; end endmodule3 系統(tǒng)測試(調試)3.1 測試儀器與設備 計算機,EDA實訓儀。3.2 性能指標測試 k1、k2控制分屏顯示,當

15、k1k2為00或11時是自動顯示,控制數(shù)碼顯示用8秒時間顯示年、月、日,另外8秒時間顯示時、分、秒;當k1k2為01時,僅顯示時、分、秒,同時j1、j2和j3校秒、校分和校時,當k1k2為10時,僅顯示年、月、日,同時j1、j2和j3校年、月、日。clkn清零功能。3.3 結果分析各個功能的實現(xiàn)分開設計。對于時分秒,則采用24進制和60進制,對于年月日的設計復雜點。特別是日,因為每個月的日子都不一樣。閏年的更加特殊,測試的時候經常出現(xiàn)2月有30天,后來發(fā)現(xiàn)是程序出的問題,反復修改,最后總算行了。4 波形發(fā)生器的設計4.1 設計原理框圖4.2 測試與仿真5 實訓總結 通過這次EDA綜合實訓,我把課堂上學習的知識又鞏固了一遍,也更加熟悉了對quartusII這款軟件的使用,本次實訓我們小組選擇了數(shù)字日歷電路設計這個題目,實驗過程中出現(xiàn)了很多問題,比如不顯示數(shù)字;小時到日期無法進位;閏年2月日期不對等等問題,這主要是我們對程序的不熟悉還有課堂的知識學得不夠造成的,也明白了書本上的程序不一定是對的,錯誤真的一大堆,后來在同學的幫助下,明白了錯誤所在。我們實驗的創(chuàng)新點在于鬧鐘模塊,可以實現(xiàn)鬧鐘的功能。這次實驗通過小組之間的分工合作,把大家的思路整合在一起,大家一起討論問題所在,對程序的認識更深了。EDA的功能真的很強大,去除了傳統(tǒng)算法的復雜,而且程序簡單化,幾個語句就可以實現(xiàn)想要

溫馨提示

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

評論

0/150

提交評論