




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)字時鐘及鬧鐘 目錄一、實驗任務(wù)2實驗?zāi)康?實驗要求2二、設(shè)計思路2硬件部分2軟件部分3三、完成情況6四、總結(jié)與收獲7具體分工7五、完整程序815一、實驗任務(wù)實驗?zāi)康?. 深入了解基于EDA工具的復(fù)雜時序邏輯電路的設(shè)計。2. 理解并熟練利用EDA工具進行綜合設(shè)計。3. 熟練掌握芯片燒錄的流程及步驟。4. 掌握Verilog HDL 語言的語法規(guī)范及時序電路描述方法。5. 掌握多個數(shù)碼管動態(tài)掃描與鍵盤掃描的顯示原理及設(shè)計方法。實驗要求設(shè)計一個帶鬧鐘功能的24 小時數(shù)字鐘,它包括以下幾個組成部分: 顯示屏,由4 個七段數(shù)碼管組成,用于顯示當(dāng)前時間(時:分)或設(shè)置的鬧鐘時間; 數(shù)字鍵 09,用于輸入
2、新的時間或新的鬧鐘時間; TIME(時間)鍵,用于確定新的時間設(shè)置; ALARM(鬧鐘)鍵,用于確定新的鬧鐘時間設(shè)置,或顯示已設(shè)置的鬧鐘時間; 揚聲器,在當(dāng)前時鐘時間與鬧鐘時間相同時,發(fā)出蜂鳴聲?;疽?1) 計時功能:這是本計時器設(shè)計的基本功能,每隔一秒計時一次,并在顯示屏上顯示當(dāng)前時間。(2) 鬧鐘功能:如果當(dāng)前時間與設(shè)置的鬧鐘時間相同,則揚聲器發(fā)出蜂鳴聲。(3) 設(shè)置新的計時器時間:用戶用數(shù)字鍵09輸入新的時間,然后按TIME鍵確認(rèn)。發(fā)揮部分(1) 設(shè)置新的鬧鐘時間:用戶用數(shù)字鍵“0”“9”輸入新的時間,然后按“ALARM”鍵確認(rèn)。(2) 顯示所設(shè)置的鬧鐘時間:在正常計時顯示狀態(tài)下,用
3、戶直接按下“ALARM”鍵,則已設(shè)置的鬧鐘時間將顯示在顯示屏上。二、設(shè)計思路硬件部分本次數(shù)字時鐘的設(shè)計主要在NC-EDA-2000C實驗箱上完成,應(yīng)用的芯片為Altara公司的EP1K10TC1003芯片。該芯片具有低內(nèi)核電壓、低功耗的特點。芯片內(nèi)門電路高達1萬門,內(nèi)部使用RAM作電路結(jié)構(gòu),速度高達幾百MHZ,其輸出可用管腳已全部開放,位于芯片的四周,用戶可以根據(jù)自己的要求和芯片本身的功能自己任意定義管腳。同時為了體現(xiàn)實驗箱的可擴展性,在芯片的兩邊各有一個34腳的IDE插口,可以通過數(shù)據(jù)排線與其它應(yīng)用模塊相連接。除了主芯片外,主要包括三大部分:八個數(shù)碼管組成的顯示部分、44鍵盤構(gòu)成的按鍵輸入部
4、分。以及其他輸入或輸出部分,如:TIME鍵、“ALARM”鍵、時鐘信號、蜂鳴器等。8位7段數(shù)碼管:采用2個進口共陰高紅7段數(shù)碼管組成,其連接管腳位選信號在數(shù)碼管的左邊由連接孔SEL0、SEL1、SEL2與其它模塊連接。數(shù)碼管顯示的設(shè)計示意圖如下:八位數(shù)碼管顯示設(shè)計示意圖44鍵盤: 44鍵盤主要是通過編程實現(xiàn)0F的輸入,也可以作為一個控制鍵。在其上方的連接孔R1、R2、R3、R4控制橫向4位;C1、C2、C3、C4縱向4位。鍵盤輸入設(shè)計示意圖如下:44鍵盤輸入設(shè)計示意圖 軟件部分軟件主要應(yīng)用軟件quartus,使用Verilog HDL語言來編寫程序。在老師所給的keyscan的基礎(chǔ)上加入計時部
5、分、設(shè)置部分(時間的設(shè)置和鬧鐘的設(shè)置)以及鬧鈴部分。a) 計時部分always(posedge clkl) /計時過程beginhour=Hour;minute=Minute;if(reset) begin hour=0;minute=0;second=0;endelseif(second=59)if(minute=59)if(hour =23) begin second=0;minute=0;hour=0;endelse begin second=0;minute=0;hour=hour+1;endelse begin second=0;minute=minute+1;endelse sec
6、ond=second+1;end其中,clkl為1Hz的時鐘信號,當(dāng)每遇到一個時鐘信號的上升沿時,秒鐘就加1秒;當(dāng)加到59時,分鐘就加1,秒鐘自動回到0重新計時;當(dāng)分鐘加到59時,時鐘就加1,然后分鐘回到0;當(dāng)計時到23:59:59時,則回到00:00:00再進入計時。reset為清零信號,高電平有效。b) 設(shè)置部分always (posedge clkh)begin if(w=1)/設(shè)置時間begin Hour=num1*10+num2; Minute=num3*10+num4; endelse if(p=1) /設(shè)置鬧鐘begin Ahour=num1*10+num2; Aminute=n
7、um3*10+num4; end end將按下的鍵值存在num1、num2、num3、num4中,再通過w和p即所謂的TIME(時間)鍵與ALARM(鬧鐘)鍵將輸入的數(shù)值賦給初始時間或鬧鐘時間。c) 鬧鈴部分 always (posedge clkh)/鬧鐘響beginif(hour=Ahour)&(minute=Aminute) ds=1; else ds=0;end當(dāng)設(shè)置的鬧鐘時間(時:分)與當(dāng)前的時間(時:分)相等時,則鬧鈴發(fā)出響聲;ds信號可以接在蜂鳴器上或者發(fā)光二極管上。本次設(shè)計的完整程序已附在報告的最后。整體程序編譯無誤。程序中涉及的變量名稱及其對應(yīng)的變量意義:引腳配置圖三、完成情
8、況在這次實驗過程中我們完成了24小時數(shù)字時鐘的設(shè)計。時鐘的顯示屏為七段數(shù)碼管。顯示出的時間格式為小時、分鐘、秒鐘(如圖1)。時鐘含有鬧鐘,可以在程序中設(shè)置鬧鐘時間,在實際時間和鬧鐘時間相吻合時蜂鳴器響。圖2中的二極管亮即可說明,在鬧鐘時間可以輸出高電平,該輸出接在蜂鳴器上即可使蜂鳴器響。本次設(shè)計的鬧鐘為響1分鐘自動關(guān)閉。圖3中二極管熄滅。圖1 時間顯示圖2 鬧鐘響(體現(xiàn)為發(fā)光二極管發(fā)光)圖3 發(fā)光二極管熄滅(本次設(shè)計的鬧鐘為響1分鐘自動關(guān)閉)四、總結(jié)與收獲在實驗設(shè)計的過程中,我們首先嘗試了樹上和老師上課時所講的例程,在熟悉軟件和設(shè)計流程后開始了數(shù)字時鐘的設(shè)計。在設(shè)計數(shù)字時鐘時,我們先分設(shè)計出來
9、時鐘的自動計數(shù)顯示,實現(xiàn)了24小時時鐘。之后實驗了4*4鍵盤,實現(xiàn)了鍵盤輸入值的掃描讀取。最后設(shè)計了鬧鐘部分,包括設(shè)置鬧鐘時間和到時間鬧鈴響。我們通過本次實驗深入了解基于EDA工具的復(fù)雜時序邏輯電路的設(shè)計,理解并熟練利用quartus進行Verilog HDL語言的設(shè)計。掌握了建立工程項目,編譯調(diào)試程序,下載程序的流程和步驟。在應(yīng)用的過程中掌握了數(shù)碼管和鍵盤掃描的原理和方法。并且對Verilog HDL語言的語法規(guī)則和幾種常用語句有了更深入的理解。實驗過程中通過合作的方式,小組成員積極討論,對不同的語句進行了對比,最終確定了本次實驗的完整程序。這次完成的數(shù)字時鐘只是EDA實驗箱中可以實現(xiàn)的眾多
10、功能之一,我們也認(rèn)識到Verilog HDL語言可以實現(xiàn)的設(shè)計還有很多,本次實驗激發(fā)了我們對Verilog HDL語言的興趣,也讓我們認(rèn)識到課堂的學(xué)習(xí)是有限的,想更加深入學(xué)習(xí)Verilog HDL語言,還要在今后的學(xué)習(xí)中多多自學(xué),勤加練習(xí)。五、完整程序module zonghe (clkl,clkh,reset,q,w,p,kr,kc,a,b,c,d,e,f,g,sa,sb,sc,ds); input clkl,clkh,reset; /計數(shù)時鐘脈沖、掃描頻率脈沖與復(fù)位信號 input q,w,p; /啟動設(shè)置的控制信號、設(shè)置時間的控制信號及設(shè)置鬧鐘的控制信號 inout 3:0kr; /4*
11、4鍵盤的行輸入/輸出信號 inout 3:0kc; /4*4鍵盤的列輸入/輸出信號 output a,b,c,d,e,f,g,sa,sb,sc,ds; /LED的7個片選信號與3個位選信號 reg a,b,c,d,e,f,g,sa,sb,sc,ds; reg 3:0kr,kc; reg 6:0 display ; reg 2:0 dcount,kcount; reg 3:0keyr,keyc; reg kflag1,kflag2; reg 6:0 buff7 ; reg 3:0 shiwei1,gewei1,shiwei2,gewei2,shiwei3,gewei3; reg5:0 hour,
12、minute,second,Ahour,Aminute,Hour,Minute; /儲存當(dāng)前時間的時分秒、鬧鐘的時分及設(shè)置的時間的時分 always(posedge clkh) /累加兩個計數(shù)值 begin dcount=dcount+1; kcount=kcount+1; end always (posedge clkh) /掃描鍵盤 begin if(kcount=0) begin kr=4b1111; kc=4b0000; end else if(kcount=1) begin keyr=kr; kr=4bZZZZ; end else if(kcount=2) begin kr=4b00
13、00; kc=4b1111; end else if(kcount=3) begin keyc=kc;kc=4bZZZZ; end end always(posedge clkh) /改變鍵的標(biāo)志位 begin if(kcount=4 & keyr=4b1111) kflag1=0; else if(kcount=4) kflag1=1; kflag2=kflag1; end always(posedge clkh) / 獲取相應(yīng)按鍵按下的結(jié)果begin if(kcount=5) if(keyr=4b1110) case (keyc) 4b1110:buff7=7b0111111; /在LED
14、上顯示0 4b1101:buff7=7b0000110; /在LED上顯示1 4b1011:buff7=7b1011011; /在LED上顯示2 4b0111:buff7=7b1001111; /在LED上顯示3 default :buff7=buff7; /無變化 endcase else if (keyr=4b1101) case (keyc) 4b1110:buff7=7b1100110; /在LED上顯示4 4b1101:buff7=7b1101101; /在LED上顯示5 4b1011:buff7=7b1111101; /在LED上顯示6 4b0111:buff7=7b0000111
15、; /在LED上顯示7 default :buff7=buff7; / 無變化 endcase else if(keyr=4b1011) case (keyc) 4b1110:buff7=7b1111111; / 在LED上顯示8 4b1101:buff7=7b1101111; / 在LED上顯示9 4b1011:buff7=7b1110111; /在LED上顯示a 4b0111:buff7=7b1111100; /在LED上顯示b default :buff7=buff7; / 無變化 endcase else if(keyr=4b0111) case (keyc) 4b1110:buff7
16、=7b0111001; /在LED上顯示c 4b1101:buff7=7b1011110; /在LED上顯示d 4b1011:buff7=7b1111001; /在LED上顯示e 4b0111:buff7=7b1110001; / 在LED上顯示f default:buff7=buff7; /無變化 endcase end always(posedge clkh) /顯示過程 begin sa=dcount0; /將dcount賦給LED的三個片選信號 sb=dcount1; sc=dcount2; shiwei1=hour/10;gewei1=hour%10;shiwei2=minute/1
17、0;gewei2=minute%10;shiwei3=second/10;gewei3=second%10;if(dcount=3b111)/判斷位選dcount的值,并將此位上的值輸出到數(shù)碼管case(shiwei1) /在第一數(shù)碼管上顯示時鐘的十位 4b0000: display = 7b0111_111;4b0001: display= 7b0000_110;4b0010: display = 7b1011_011;4b0011: display = 7b1001_111;4b0100: display = 7b1100_110;4b0101: display = 7b1101_101;
18、4b0110: display = 7b1111_101;4b0111: display = 7b0000_111;4b1000: display = 7b1111_111;4b1001: display = 7b1101_111; default: display = 7b0000_000;endcaseif(dcount=3b000) /在第二個數(shù)碼管上顯示時鐘的個位case(gewei1) 4b0000: display = 7b0111_111;4b0001: display = 7b0000_110;4b0010: display = 7b1011_011;4b0011: displ
19、ay = 7b1001_111;4b0100: display = 7b1100_110;4b0101: display = 7b1101_101;4b0110: display = 7b1111_101;4b0111: display = 7b0000_111;4b1000: display = 7b1111_111;4b1001: display = 7b1101_111; default: display = 7b0000_000;endcaseif(dcount=3b001) /在第三個數(shù)碼管上顯示分鐘的十位case(shiwei2) 4b0000: display = 7b0111_
20、111;4b0001: display = 7b0000_110;4b0010: display = 7b1011_011;4b0011: display = 7b1001_111;4b0100: display = 7b1100_110;4b0101: display = 7b1101_101;4b0110: display = 7b1111_101;4b0111: display = 7b0000_111;4b1000: display = 7b1111_111;4b1001: display = 7b1101_111; default: display = 7b0000_000;endc
21、aseif(dcount=3b010) /在第四個數(shù)碼管上顯示分鐘的個位case(gewei2) 4b0000: display = 7b0111_111;4b0001: display = 7b0000_110;4b0010: display = 7b1011_011;4b0011: display = 7b1001_111;4b0100: display = 7b1100_110;4b0101: display = 7b1101_101;4b0110: display = 7b1111_101;4b0111: display = 7b0000_111;4b1000: display = 7
22、b1111_111;4b1001: display = 7b1101_111; default: display = 7b0000_000;endcase if(dcount=3b011) /在第五個數(shù)碼管上顯示秒鐘的十位case(shiwei3) 4b0000: display = 7b0111_111;4b0001: display = 7b0000_110;4b0010: display = 7b1011_011;4b0011: display = 7b1001_111;4b0100: display = 7b1100_110;4b0101: display = 7b1101_101;4
23、b0110: display = 7b1111_101;4b0111: display = 7b0000_111;4b1000: display = 7b1111_111;4b1001: display = 7b1101_111; default: display = 7b0000_000;endcaseif(dcount=3b100) /在第六個數(shù)碼管上顯示秒鐘的個位case(gewei3) 4b0000: display = 7b0111_111;4b0001: display = 7b0000_110;4b0010: display = 7b1011_011;4b0011: displa
24、y = 7b1001_111;4b0100: display = 7b1100_110;4b0101: display = 7b1101_101;4b0110: display = 7b1111_101;4b0111: display = 7b0000_111;4b1000: display = 7b1111_111;4b1001: display = 7b1101_111; default: display = 7b0000_000;endcase if(dcount=3b101)display =7b1000_000; /在第七個數(shù)碼管上顯示“”if(dcount=3b110)displa
25、y =buff7; /在第八個數(shù)碼管上顯示按下的鍵值endalways (posedge clkh) /將display中存的值賦給LED的七個片選信號 begin a=display0; b=display1; c=display2; d=display3; e=display4; f=display5; g=display6; end always(posedge clkl) /計時過程 clkl的頻率為1Hzbeginhour=Hour;minute=Minute; /將設(shè)置的時間(時、分)賦給hour和minuteif(reset) begin hour=0;minute=0;seco
26、nd=0; end /當(dāng)reset為1時,將時間清零即為00:00:00else /正常計時if(second=59)if(minute=59)if(hour =23) begin second=0;minute=0;hour=0;endelse begin second=0;minute=0;hour=hour+1;endelse begin second=0;minute=minute+1;endelse second=second+1;endinteger i; /記錄按鍵按下的次數(shù)reg 3:0num1,num2,num3,num4; /儲存按鍵的鍵值always (posedge c
27、lkh)/儲存按下的鍵值begin if(q=1)/啟動設(shè)置 begin i=0; if(keyc!=4b1111) i=i+1; /當(dāng)有鍵按下時,i自動加1 if(i=1) /將第一個按下的按鍵值存入num1 begin case (keyr,keyc) 4b1110_1110:num1=0; 4b1110_1101:num1=1; 4b1110_1011:num1=2; 4b1110_0111:num1=3; 4b1101_1110:num1=4; 4b1101_1101:num1=5; 4b1101_1011:num1=6; 4b1101_0111:num1=7; 4b1011_1110:num1=8; 4b1011_1101:num1=9; default:num1=num1; endcase endif(i=2) /將第二個按下的按鍵值存入num2 begin case (keyr,keyc) 4b1110_1110:num2=0; 4b1110_1101:num2=1; 4b1110_1011:num2=2; 4b1110_0111:num2=3; 4b1101_1110:num2=4; 4b1101_1101:num2=5; 4b1101_1011:num2=6; 4b1101_0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 24212-2025甲基萘油
- 顱腦非腫瘤病變
- 二手房抵押合同協(xié)議書
- 銀行債權(quán)承攬協(xié)議書
- 駐場人員管理協(xié)議書
- 轉(zhuǎn)讓醬菜技術(shù)協(xié)議書
- 裝修委托代管協(xié)議書
- 項目聯(lián)合投資協(xié)議書
- 菏澤港口合作協(xié)議書
- 高齡健身免責(zé)協(xié)議書
- 杭州市2025年中考作文《勇敢自信》寫作策略與范文
- 起重機司機(限橋式)Q2特種設(shè)備作業(yè)人員資格鑒定參考試題(附答案)
- 熱點主題作文寫作指導(dǎo):古樸與時尚(審題指導(dǎo)與例文)
- 河南省洛陽市2025屆九年級下學(xué)期中考一模英語試卷(原卷)
- 成都設(shè)計咨詢集團有限公司2025年社會公開招聘(19人)筆試參考題庫附帶答案詳解
- 2025年上海市金融穩(wěn)定發(fā)展研究中心招聘考試模擬測試
- 河北開放大學(xué)2025年《醫(yī)用基礎(chǔ)化學(xué)#》形考任務(wù)4答案
- 遼寧省名校聯(lián)盟2025屆高三下學(xué)期高考模擬押題卷生物學(xué)(三)試題(有解析)
- 房屋市政工程生產(chǎn)安全重大事故隱患判定檢查表(2024版)
- 江蘇南京茉莉環(huán)境投資有限公司招聘筆試題庫2025
- 鋁屑粉塵清掃管理制度
評論
0/150
提交評論