《EDA綜合設計與實踐》課程設計用VerilogHDL設計電子鐘.docx_第1頁
《EDA綜合設計與實踐》課程設計用VerilogHDL設計電子鐘.docx_第2頁
《EDA綜合設計與實踐》課程設計用VerilogHDL設計電子鐘.docx_第3頁
《EDA綜合設計與實踐》課程設計用VerilogHDL設計電子鐘.docx_第4頁
《EDA綜合設計與實踐》課程設計用VerilogHDL設計電子鐘.docx_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、廣東工業(yè)大學實驗報告信息工程 學院通信工程專業(yè)04 班成績評定 _學號 3205002894姓名 張鳳珠教師簽名 _預習情況操作情況考勤情況數據處理情況實驗題目用 Verilog HDL 設計電子鐘第17 周至 第 17周一、課程設計目的和要求目的:1. 學會使用 quantus軟件(編譯、仿真等) ,并利用它進行設計一些簡單的數字電路;2. 利用實驗室提供的 GW48 SOPC系統(tǒng)主板,結合 quantus軟件實現電子鐘的功能顯示。要求:電子鐘應實現如下功能:1時鐘顯示功能:,該電子鐘正常顯示小時、分鐘、秒,各用2 位數碼管(共6 位數碼管)顯示范圍為 023 時 59 分 59 秒,分辨率

2、為 1 秒,包括啟動與停止。2校時功能:包括小時校準和分鐘校準。3跑表:包括跑表清零、啟動計時、停止及繼續(xù)計時功能。二、實驗器件實驗室提供的 GW48 SOPC系統(tǒng)主板實驗箱三、設計方案和源程序代碼首先分析電子鐘要實現的三個功能,然后確定它的基本結構,因為設計時電子鐘的三個基本功能都要用到數碼管顯示,考慮到三者為了避免競爭數碼管資源的問題,因此設計時電子鐘有 3 個主要輸入按鍵 K1、K2、K3,分別為時間顯示、校時功能、跑表的啟動,而且是當任一個按鍵按下,其余兩個鍵都無效,即此時只有按下的鍵才有效,執(zhí)行該鍵所控制功能的啟動。其次,各個功能模塊的設計。A 、對于時間顯示模塊中,涉及到的是時分秒

3、各個計數器的設計 ,“秒計數器”采用60 進制計數器,每累計60 秒,發(fā)出一個“分脈沖”信號,該信號將被送到“分計數器”。“分計數器”采用 60 進制計數器,每累計 60 分,發(fā)出一個“分脈沖”信號,該信號被送到“時計數器” ?!皶r計數器”采用 24 進制計數器,可實現 24 小時的累計計數。 B 、對于校時模塊,同樣用到了上述的時分計數器,不過只是能實現校時分鐘和小時功能,分別用K4、K5 鍵控制,做法是每按下一次鍵,對應的計數器加一。C、 最后是跑表模塊,這相對于前面兩個模塊較為復雜,它有計時復位、啟動和計時停止三個功能,分別用 K6、 K8、K7 按鍵控制,這里用到了毫秒、秒、分鐘計數器

4、,其中“毫秒計數器”采用100 進制計數器,每累計100 毫秒產生一個“秒脈沖”信號,該信號將作為“秒計數器”的時鐘脈沖,其余同A 所述。百分秒、秒和分鐘信號用七段LED顯示。而復位信號是高電平有效,可以對整個跑表同步清0;當啟動 / 停止為高電平時跑表開始計時,為低電平時停止計時,變高后在原來的數值基礎上再計數。最后,就是整體的綜合。包括每個模塊用到的時鐘設置、按鍵顯示模塊和確定輸入輸出參數;本次課程設計采用了一個輸入主時鐘源4096HZ,其余各個模塊用到的時鐘信號從此時鐘源分頻得到,因此專門設置了一個分頻小模塊。源程序代碼如下:module main(k1,k2,k3,k4,k5,k6,k

5、7,k8,clk_4096,LED1,LED2,LED3,LED4,LED5,LED6);input k1,k2,k3,k4,k5,k6,k7,k8,clk_4096;output3:0LED1,LED2,LED3,LED4,LED5,LED6;reg 3:0 LED1,LED2,LED3,LED4,LED5,LED6;reg 7:0 hour,minute,second;define hour1 hour3:0define hour2 hour7:4define min1 minute3:0define min2 minute7:4define sec1 second3:0define se

6、c2 second7:4reg 15:0 j1,j2,j3;reg clk1,clk2,clk3;always (posedge clk_4096) /輸入4096HZ時鐘源beginif(j1=40)beginj1=0;clk1=clk1;/100HZendelsej1=j1+1;if(j2=4095)beginj2=0;clk2=clk2;/1HZendelsej2=j2+1;if(j3=7)beginj3=0;clk3=clk3; /512HZendelsej3=j3+1;end/ 跑表reg 7:0 missecondrun, secondrun,miurun;reg runnings

7、,mis,sec;always(posedge clk1)beginif(k6) /begin復位missecondrun7:0=8d0;secondrun7:0=8d0;miurun7:0=8d0;runnings=0;endif(k7) /停止beginrunnings=0;endif(k8) /運行runnings=1;if(runnings)beginif(missecondrun3:0=9)/ 1/100beginif(missecondrun7:4=9)beginmissecondrun7:0=0; /mis=1;/endelsebeginmissecondrun3:0=0;/秒如

8、果為 99 時,轉為 0產生進位提示如果只是個位為9 時,十位加1,個位為 0missecondrun7:4=missecondrun7:4+1;endendelsemissecondrun3:0=missecondrun3:0+1; /如果個位不為0 時,個位加1,十位不變if(mis)/當進位為 1 時才進行一次加 1beginmis=0;if(secondrun3:0=9)/秒beginif(secondrun7:4=5)beginsecondrun7:0=0;/如果為 59 時,轉為 0sec=1;/產生進位提示endelsebeginsecondrun3:0=0;secondrun7

9、:4=secondrun7:4+1;/如果只是個位為9 時,十位加1,個位為 0endendelsesecondrun3:0=secondrun3:0+1; /如果個位不為0 時,個位加1,十位不變endif(sec)/beginsec=0;if(miurun3:0=9) /beginif(miurun7:4=5)當進位為分鐘1 時才進行一次加1beginmiurun7:0=0;endelsebeginmiurun3:0=0;miurun7:4=miurun7:4+1;endendelsemiurun3:0=miurun3:0+1;endendend/ 時鐘顯示reg secondin,min

10、utein;always(posedge clk2)beginif(sec2=5&sec1=9)beginsec2=0;sec1=0;secondin=1;endelsebeginif(sec1=9)beginsec1=0;sec2=sec2+1;endelse sec1=sec1+1;endif(secondin)beginsecondin=0;if(min2=5&min1=9)beginmin2=0;min1=0;minutein=1;endelsebeginif(min1=9)beginmin1=0;min2=min2+1;endelse min1=min1+1;endendif(min

11、utein)beginminutein=0;if(hour2=3&hour1=2)beginhour2=0;hour1=0;endelsebeginif(hour1=9)beginhour1=0;hour2=hour2+1;endelse hour1=hour1+1;endendif(k4)/校時分鐘beginif(minute7:4=5)beginif(minute3:0=9)beginminute7:0=0;endelseminute3:0=minute3:0+1;endelsebeginif(minute3:0=9)beginminute3:0=0;minute7:4=minute7:4

12、+1;endelseminute3:0=minute3:0+1;endendif(k5)/校時小時beginif(hour2=2)beginif(hour1=3)beginhour2=0;hour1=0;endelsehour1=hour1+1;endelsebeginif(hour1=9)beginhour1=0;hour2=hour2+1;endelsehour1=hour1+1;endendend/ 按鍵顯示模塊reg k1_rst,k2_rst,k3_rst;always(posedge clk3)beginif(k1)begink1_rst=1;k2_rst=0;k3_rst=0;e

13、ndif(k2)begink1_rst=0;k2_rst=1;k3_rst=0;endif(k3)begink1_rst=0;k2_rst=0;k3_rst=1;endif(k1_rst)/時間顯示beginLED1=second3:0;LED2=second7:4;LED3=minute3:0;LED4=minute7:4;LED5=hour3:0;LED6=hour7:4;endif(k2_rst) /begin校時LED3=minute3:0;LED4=minute7:4;LED5=hour3:0;LED6=hour7:4;endif(k3_rst) /跑表顯示beginLED1=mis

14、secondrun3:0;LED2=missecondrun7:4;LED3=secondrun3:0;LED4=secondrun7:4;LED5=miurun3:0;LED6=miurun7:4;endendendmodule四、修改后設計方案由于本課程設計用到的主時鐘源是實驗箱上的4096HZ,而真正用到的時鐘是1HZ、100HZ、512HZ,分別用于時間顯示(包含校時) 、跑表、按鍵顯示;這些時鐘都從主頻分頻得到,而從主頻 4096HZ到 1HZ,要經過 4096 次分頻,分頻計數太大,主頻與分頻后的時鐘頻率相差太大,不利于程序仿真,所以建議使用較低的主頻,如1024HZ主頻;原設計中

15、用到多個按鍵控制,而每個按鍵都只是只有一種控制功能,缺乏靈活性,所以修改后將按鍵設置為模式鍵,即每次按下鍵都實現不同功能顯示,可用狀態(tài)機來實現設計,這里只用到三個按鍵。五、實驗結果和數據處理按下按鍵 K1,電子鐘正常顯示時間,再按下鍵,停止顯示。按下按鍵 K2,進入校時狀態(tài):按下 K4鍵,進行校準分鐘,每按下一次 K4 鍵,分鐘計數器加一;按下 K5鍵,進行小時校準,每按下一次 K5 鍵,小時計數器加一;最后再若按下 K2 鍵,停止校時。按下按鍵 K3,進入跑表計時功能:按下K6 鍵,復位;按下K8 鍵,開始計時;按下K7鍵,停止計時;六、心得體會本次課程設計,我花了大概三天時間來完成(不包括

16、報告) ,雖然沒有達到教程安排的五天時間,但是我卻是所花時間在課程設計上比較多的少數人之一,不過總算也完成了作品,盡管不是很完美,功能也不是很多,但是心里還是蠻有成就感的!當然,完成一次課程設計都不是很容易的!首先確定了自己做電子鐘的設后,就開始著手寫程序;剛開始,確定實現的設計目標是多功能的電子鐘,而且還確定了每個功能用一個模塊來寫,最后編寫一個主模塊,采取調用模塊的形式調用所寫的各個功能模塊,這樣想法構思是很不錯的;但是限于自己所學知識不是很牢固,也不是很深入,寫 Verilog HDL 程序也比較少,實踐能力還不夠,所以當我好不容易編寫好各個功能模塊后,最終在編寫主程序時卻遇上了很多問題,特別是在編寫調用模塊時,出現了重重關卡,原來想法總比做的來的簡單!這期間我也有問過同學,可是由于礙于時間的問

溫馨提示

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

評論

0/150

提交評論