版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 設(shè)計(jì)一個(gè)自動(dòng)售飲料機(jī),設(shè)飲料售價(jià)2.5元,可運(yùn)用5角和一元硬幣,有找零功能。8 8幣值顯示取飲料找零投幣孔1元5角n 設(shè)計(jì)思緒n 引入有限形狀機(jī),利用5個(gè)形狀表示投入幣值的數(shù)目變化情況。【例9.38】自動(dòng)售飲料機(jī)/* 信號(hào)定義clk: 時(shí)鐘輸入reset: 系統(tǒng)復(fù)位信號(hào)half_dollar: 投入5角硬幣one_dollar: 投入1元硬幣half_out: 找零信號(hào)dispense: 機(jī)器售出飲料collect: 提示取走飲料 */module sell( one_dollar, half_dollar, collect, half_out, dispense, reset, clk )
2、;parameter idle=0, half=1, one=2, two=3, three=4; / 幣值情況input one_dollar, half_dollar, reset, clk;output collect, half_out, dispense;reg collect, half_out, dispense;reg2:0 D; / 形狀量always ( posedge clk )beginif( reset )begindispense = 0;collect = 0;endcase( D )idle:if( half_dollar ) D = half;else if(
3、 one_dollar ) D = one;half:if( half_dollar ) D = one;else if( one_dollar ) D = two;one:if( half_dollar ) D = two;else if( one_dollar ) D = three;two:if( half_dollar ) D = three;else if( one_dollar )begindispense = 1; / 售出飲料collect = 1;D = idle;endthree: if( half_dollar )begin dispense = 1;collect =
4、1;D = idle;endelse if( one_dollar )begindispense = 1;collect = 1;half_out = 1; D = idle;endendcaseendendmodule 設(shè)計(jì)一個(gè)多功能數(shù)字鐘,具有計(jì)時(shí)、定時(shí)與鬧鐘、校時(shí)和整點(diǎn)報(bào)時(shí)功能。功能控制按鍵基準(zhǔn)時(shí)鐘揚(yáng)聲器時(shí)間顯示產(chǎn)生鬧鈴和報(bào)時(shí)音校時(shí)時(shí)、分、秒計(jì)時(shí)【例9.39】多功能數(shù)字鐘/* 信號(hào)定義clk 4Hz規(guī)范時(shí)鐘clk_1k 1KHz鬧鈴報(bào)時(shí)時(shí)鐘mode 功能選擇:0計(jì)時(shí),1鬧鐘,2校時(shí),接按鍵turn 手動(dòng)校時(shí),選擇調(diào)整小時(shí)還是分鐘,接按鍵; 長(zhǎng)時(shí)間按住,清零秒鐘change 手動(dòng)調(diào)整,每按
5、1次,計(jì)數(shù)器加1,接按鍵; 長(zhǎng)時(shí)間按住,延續(xù)快速加1hour, min, sec 時(shí)、分、秒顯示信號(hào), BCD碼,驅(qū)動(dòng)數(shù)碼管alert 驅(qū)動(dòng)揚(yáng)聲器,產(chǎn)生鬧鈴和報(bào)時(shí)音; 鬧鈴音為20s急促音,按change可屏蔽; 整點(diǎn)報(bào)時(shí)音為四短一長(zhǎng)音LD_alert 指示能否設(shè)置鬧鐘LD_hour 指示當(dāng)前調(diào)整的是小時(shí),接發(fā)光二極管LD_min 指示當(dāng)前調(diào)整的是分鐘,接發(fā)光二極管 */module clock( clk, clk_1k, mode, change, turn, alert, hour, min, sec, LD_alert, LD_hour, LD_min );input clk, clk_
6、1k, mode, change, turn;output alert, LD_alert, LD_hour, LD_min;output7:0 hour, min, sec;reg7:0 hour, min, sec, hour1, min1, sec1, ahour, amin;reg1:0 m, fm, num1, num2, num3, num4;reg1:0 loop1, loop2, loop3, loop4, sound;reg LD_hour, LD_min;reg clk_1Hz, clk_2Hz, minclk, hclk;reg alert1, alert2, ear;r
7、eg count1, count2, counta, countb;wire ct1, ct2, cta, ctb, m_clk, h_clk;always ( posedge clk ) / ear決議整點(diǎn)報(bào)時(shí)的長(zhǎng)短音beginclk_2Hz = clk_2Hz;if( sound = 3 )beginsound = 0;ear = 1;endelsebeginsound = sound + 1;ear = 0;endendalways ( posedge clk_2Hz ) / 產(chǎn)生1Hz的時(shí)基信號(hào)clk_1Hz = clk_1Hz;always ( posedge mode ) / mo
8、de信號(hào)選擇功能beginif( m = 2 )m = 0;elsem = m + 1;endalways ( negedge turn ) / 選擇調(diào)整小時(shí)還是分鐘fm = fm;always / 產(chǎn)生count1,count2,counta,countb信號(hào)begin case( m )2: / 校時(shí)beginif( fm ) / 調(diào)整分鐘begincount1 = change; LD_min, LD_hour = 2;endelse / 調(diào)整小時(shí)begincounta = change; LD_min, LD_hour = 1;endend1: / 鬧鐘beginif( fm ) /
9、調(diào)整分鐘begincount2 = change; LD_min, LD_hour = 2;endelse / 調(diào)整小時(shí)begincountb = change; LD_min, LD_hour = 1;endenddefault: / 計(jì)時(shí) count1,count2,counta,countb,LD_min,LD_hour = 0; endcaseendalways ( negedge clk ) / 長(zhǎng)按change,鬧鐘分鐘延續(xù)加1begin if( count2 )beginif( loop1 = 3 ) num1 = 1; / 生成num1信號(hào)elsebeginloop1 = lo
10、op1 + 1;num1 = 0;endend elsebeginloop1 = 0;num1 = 0;endendalways ( negedge clk ) / 長(zhǎng)按change,鬧鐘小時(shí)延續(xù)加1begin if( countb )beginif( loop2 = 3 ) num2 = 1; / 生成num2信號(hào)elsebeginloop2 = loop2 + 1;num2 = 0;endend elsebeginloop2 = 0;num2 = 0;endendalways ( negedge clk ) / 長(zhǎng)按change,校時(shí)分鐘延續(xù)加1begin if( count1 )begi
11、nif( loop3 = 3 ) num3 = 1; / 生成num3信號(hào)elsebeginloop3 = loop3 + 1;num3 = 0;endend elsebeginloop3 = 0;num3 = 0;endendalways ( negedge clk ) / 長(zhǎng)按change,校時(shí)小時(shí)延續(xù)加1begin if( counta )beginif( loop4 = 3 ) num4 = 1; / 生成num4信號(hào)elsebeginloop4 = loop4 + 1;num4 = 0;endend elsebeginloop4 = 0;num4 = 0;endend/ ct1用于計(jì)
12、時(shí)、校時(shí)中的分鐘計(jì)數(shù)assign ct1 = ( num3 & clk ) | ( !num3 & m_clk ); / ct2用于鬧鐘定時(shí)中的分鐘調(diào)理assign ct2 = ( num1 & clk ) | ( !num1 & count2 );/ cta用于計(jì)時(shí)、校時(shí)中的小時(shí)計(jì)數(shù)assign cta = ( num4 & clk ) | ( !num4 & h_clk );/ ctb用于鬧鐘定時(shí)中的小時(shí)調(diào)理assign ctb = ( num2 & clk ) | ( !num2 & countb );assign m_cl
13、k = minclk | count1;assign h_clk = hclk | counta;always ( posedge clk_1Hz ) / 秒計(jì)時(shí)和秒調(diào)整beginif( !( sec1 8h59 ) | turn & ( !m ) ) / 長(zhǎng)按turn,清零秒beginsec1 = 0;if( !( turn & ( !m ) ) ) minclk = 1;endelsebeginif( sec13:0 = 4b1001 )beginsec13:0 = 4b0000;sec17:4 = sec17:4 + 1;endelsesec13:0 = sec13:0
14、+ 1;minclk = 0;endendalways ( posedge cta ) / 小時(shí)計(jì)時(shí)和小時(shí)調(diào)整beginif( hour1 = 8h23 ) hour1 = 0;elseif( hour13:0 = 4b1001 )beginhour13:0 = 4b0000;hour17:4 = hour17:4 + 1;endelsehour13:0 = hour13:0 + 1;endalways ( posedge ct2 ) / 鬧鐘定時(shí)中的分鐘調(diào)理beginif( amin = 8h59 )amin = 0;elseif( amin3:0 = 4b1001 )beginamin3:
15、0 = 4b0000;amin7:4 = amin7:4 + 1;endelseamin3:0 = amin3:0 + 1;endalways ( posedge ctb ) / 鬧鐘定時(shí)中的小時(shí)調(diào)理beginif( ahour = 8h23 ) ahour = 0;elseif(ahour3:0 = 4b1001)beginahour3:0 = 4b0000;ahour7:4 = ahour7:4 + 1;endelseahour3:0 = ahour3:0 + 1;endalways / 鬧鈴begin / 假設(shè)按住change不放,可屏蔽鬧鈴音if( ( min1 = amin ) &a
16、mp; ( hour = ahour ) & ( amin | ahour ) & ( change ) )if( sec1 8h20 )alert1 = 1; / 鬧鈴時(shí)間elsealert1=0;elsealert1 = 0;endalways / 時(shí)、分、秒的顯示控制begincase( m )2b00: / 計(jì)時(shí)形狀beginhour = hour1;min = min1;sec = sec1;end2b01: / 定時(shí)形狀beginhour = ahour;min = amin;sec = 8hzz;end2b10: / 計(jì)時(shí)形狀beginhour = hour1;m
17、in = min1;sec 8h54 ) | ( ! ( min1 | sec1 ) ) )if( sec1 8h54 )alert2 = ear & clk_1k; / 產(chǎn)生短音elsealert2 = !ear & clk_1k; / 產(chǎn)生長(zhǎng)音 else alert2 = 0;endendmodule多功能數(shù)字鐘端口圖按鍵去抖電路module keystab( keyout, keyin, clk1k );output keyout;input keyin;input clk1k;reg3:0 delay;reg keyout;always ( posedge clk1k
18、)beginif( !keyin )beginif( delay = 15) keyout = 1b0;delay = delay + 1;endelsebegindelay = 0;keyout = 1b1;endendendmodule 設(shè)計(jì)一個(gè)IC卡計(jì)費(fèi)器,能顯示卡值余額,根據(jù)話務(wù)種類扣除話費(fèi)。計(jì)費(fèi)器卡插入信號(hào)接通訊號(hào)時(shí)鐘話務(wù)種類卡值余額寫(xiě)卡信號(hào)通話時(shí)間讀卡信號(hào)告警信號(hào)切斷通話n 功能要求n 卡值余額每分鐘更新一次n 計(jì)時(shí)與計(jì)費(fèi)數(shù)據(jù)以十進(jìn)制顯示n 話務(wù)分為三類:市話每分鐘3角,長(zhǎng)話每分鐘6角,特話免費(fèi)n 卡上余額缺乏告警,幾秒后切斷通話【例9.40】計(jì)費(fèi)器/* 信號(hào)定義clk時(shí)鐘信號(hào),1
19、Hzcard卡插入信號(hào)state接通訊號(hào)decide話務(wù)種類:01市話,10長(zhǎng)話,11特話dispmoney顯示卡內(nèi)余額,單位為角,最大50元disptime顯示通話時(shí)間write下降沿寫(xiě)卡read上升沿讀卡warn余額過(guò)少告警,市話3角,長(zhǎng)話6角cut自動(dòng)切斷通話信號(hào) */module account( state, clk, card, decide, disptime,dispmoney, write, read, warn, cut );output write, read, warn, cut;input state, clk, card;input2:1 decide;output
20、10:0 dispmoney;output8:0 disptime;reg10:0 money; / 余額,BCD碼reg8:0 dtime;reg warn, cut, write, t1m; / 分時(shí)鐘reg set, reset_ena;integer num1, temp;assign dispmoney = card ? money : 0;assign disptime = dtime;assign read = card ? 1 : 0;/* 產(chǎn)生分時(shí)鐘 */always ( posedge clk )beginif( num1 = 59 )begin num1 = 0; t1m
21、 = 1; endelsebeginif( state ) num1 = num1 + 1;else num1 = 0;t1m = 0;endend/* 計(jì)費(fèi) */always ( negedge clk )begin if( !set )begin money = 11h500; set = 1; end if( card & state )if( t1m ) case( state, decide )3b101: / 市話if( money 3 )beginwarn = 1;write = 0;reset_ena = 1;endelse beginif( money3:0 4b00
22、11 ) / 市話計(jì)費(fèi) beginmoney3:0 = money3:0 + 7;if( money7:4 != 0 ) money7:4 = money7:4 - 1;else beginmoney7:4 = 9;money10:8 = money10:8 - 1; end endelse money3:0 = money3:0 - 3; if( dtime3:0 = 9 ) / 通話計(jì)時(shí)begindtime3:0 = 0;if( dtime7:4 = 9 )begindtime7:4 = 0;dtime8 = dtime8 + 1; endelsedtime7:4 = dtime7:4 + 1; end elsedtime3:0 = dtime3:0 + 1; write = 1; warn = 0; reset
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小班小雪節(jié)氣國(guó)旗下講話稿范文(9篇)
- 開(kāi)學(xué)典禮致辭(15篇)
- 初級(jí)會(huì)計(jì)經(jīng)濟(jì)法基礎(chǔ)-初級(jí)會(huì)計(jì)《經(jīng)濟(jì)法基礎(chǔ)》模擬試卷335
- RRD硅油填充術(shù)后繼發(fā)高眼壓的眼前節(jié)相關(guān)影響因素分析及中醫(yī)體質(zhì)類型研究
- 建筑與市政工程質(zhì)量安全巡查的第三方解決方案
- 【醫(yī)學(xué)課件】加強(qiáng)防范醫(yī)療事故(83p)
- 2025版食堂食材采購(gòu)合同及食品安全培訓(xùn)服務(wù)協(xié)議3篇
- 養(yǎng)魚(yú)店銷售員工作總結(jié)
- 酒店廚房管理規(guī)范制定
- 2025版行政上訴狀補(bǔ)充范文:權(quán)威解讀與實(shí)戰(zhàn)演練3篇
- 2025-2030年中國(guó)陶瓷電容器行業(yè)運(yùn)營(yíng)狀況與發(fā)展前景分析報(bào)告
- 2025年山西國(guó)際能源集團(tuán)限公司所屬企業(yè)招聘43人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 二零二五年倉(cāng)儲(chǔ)配送中心物業(yè)管理與優(yōu)化升級(jí)合同3篇
- 2025屆廈門(mén)高三1月質(zhì)檢期末聯(lián)考數(shù)學(xué)答案
- 音樂(lè)作品錄制許可
- 青海省海北藏族自治州(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版隨堂測(cè)試(上學(xué)期)試卷及答案
- 江蘇省無(wú)錫市2023-2024學(xué)年高三上學(xué)期期終教學(xué)質(zhì)量調(diào)研測(cè)試語(yǔ)文試題(解析版)
- 拉薩市2025屆高三第一次聯(lián)考(一模)英語(yǔ)試卷(含答案解析)
- 開(kāi)題報(bào)告:AIGC背景下大學(xué)英語(yǔ)教學(xué)設(shè)計(jì)重構(gòu)研究
- 《民航安全檢查(安檢技能實(shí)操)》課件-第一章 民航安全檢查員職業(yè)道德
- 師德標(biāo)兵先進(jìn)事跡材料師德標(biāo)兵個(gè)人主要事跡
評(píng)論
0/150
提交評(píng)論