




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 设计一个自动售饮料机,设饮料售价2.5元,可运用5角和一元硬币,有找零功能。8 8币值显示取饮料找零投币孔1元5角n 设计思绪n 引入有限形状机,利用5个形状表示投入币值的数目变化情况。【例9.38】自动售饮料机/* 信号定义clk: 时钟输入reset: 系统复位信号half_dollar: 投入5角硬币one_dollar: 投入1元硬币half_out: 找零信号dispense: 机器售出饮料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 设计一个多功能数字钟,具有计时、定时与闹钟、校时和整点报时功能。功能控制按键基准时钟扬声器时间显示产生闹铃和报时音校时时、分、秒计时【例9.39】多功能数字钟/* 信号定义clk 4Hz规范时钟clk_1k 1KHz闹铃报时时钟mode 功能选择:0计时,1闹钟,2校时,接按键turn 手动校时,选择调整小时还是分钟,接按键; 长时间按住,清零秒钟change 手动调整,每按
5、1次,计数器加1,接按键; 长时间按住,延续快速加1hour, min, sec 时、分、秒显示信号, BCD码,驱动数码管alert 驱动扬声器,产生闹铃和报时音; 闹铃音为20s急促音,按change可屏蔽; 整点报时音为四短一长音LD_alert 指示能否设置闹钟LD_hour 指示当前调整的是小时,接发光二极管LD_min 指示当前调整的是分钟,接发光二极管 */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决议整点报时的长短音beginclk_2Hz = clk_2Hz;if( sound = 3 )beginsound = 0;ear = 1;endelsebeginsound = sound + 1;ear = 0;endendalways ( posedge clk_2Hz ) / 产生1Hz的时基信号clk_1Hz = clk_1Hz;always ( posedge mode ) / mo
8、de信号选择功能beginif( m = 2 )m = 0;elsem = m + 1;endalways ( negedge turn ) / 选择调整小时还是分钟fm = fm;always / 产生count1,count2,counta,countb信号begin case( m )2: / 校时beginif( fm ) / 调整分钟begincount1 = change; LD_min, LD_hour = 2;endelse / 调整小时begincounta = change; LD_min, LD_hour = 1;endend1: / 闹钟beginif( fm ) /
9、调整分钟begincount2 = change; LD_min, LD_hour = 2;endelse / 调整小时begincountb = change; LD_min, LD_hour = 1;endenddefault: / 计时 count1,count2,counta,countb,LD_min,LD_hour = 0; endcaseendalways ( negedge clk ) / 长按change,闹钟分钟延续加1begin if( count2 )beginif( loop1 = 3 ) num1 = 1; / 生成num1信号elsebeginloop1 = lo
10、op1 + 1;num1 = 0;endend elsebeginloop1 = 0;num1 = 0;endendalways ( negedge clk ) / 长按change,闹钟小时延续加1begin if( countb )beginif( loop2 = 3 ) num2 = 1; / 生成num2信号elsebeginloop2 = loop2 + 1;num2 = 0;endend elsebeginloop2 = 0;num2 = 0;endendalways ( negedge clk ) / 长按change,校时分钟延续加1begin if( count1 )begi
11、nif( loop3 = 3 ) num3 = 1; / 生成num3信号elsebeginloop3 = loop3 + 1;num3 = 0;endend elsebeginloop3 = 0;num3 = 0;endendalways ( negedge clk ) / 长按change,校时小时延续加1begin if( counta )beginif( loop4 = 3 ) num4 = 1; / 生成num4信号elsebeginloop4 = loop4 + 1;num4 = 0;endend elsebeginloop4 = 0;num4 = 0;endend/ ct1用于计
12、时、校时中的分钟计数assign ct1 = ( num3 & clk ) | ( !num3 & m_clk ); / ct2用于闹钟定时中的分钟调理assign ct2 = ( num1 & clk ) | ( !num1 & count2 );/ cta用于计时、校时中的小时计数assign cta = ( num4 & clk ) | ( !num4 & h_clk );/ ctb用于闹钟定时中的小时调理assign ctb = ( num2 & clk ) | ( !num2 & countb );assign m_cl
13、k = minclk | count1;assign h_clk = hclk | counta;always ( posedge clk_1Hz ) / 秒计时和秒调整beginif( !( sec1 8h59 ) | turn & ( !m ) ) / 长按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 ) / 小时计时和小时调整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 ) / 闹钟定时中的分钟调理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 ) / 闹钟定时中的小时调理beginif( ahour = 8h23 ) ahour = 0;elseif(ahour3:0 = 4b1001)beginahour3:0 = 4b0000;ahour7:4 = ahour7:4 + 1;endelseahour3:0 = ahour3:0 + 1;endalways / 闹铃begin / 假设按住change不放,可屏蔽闹铃音if( ( min1 = amin ) &a
16、mp; ( hour = ahour ) & ( amin | ahour ) & ( change ) )if( sec1 8h20 )alert1 = 1; / 闹铃时间elsealert1=0;elsealert1 = 0;endalways / 时、分、秒的显示控制begincase( m )2b00: / 计时形状beginhour = hour1;min = min1;sec = sec1;end2b01: / 定时形状beginhour = ahour;min = amin;sec = 8hzz;end2b10: / 计时形状beginhour = hour1;m
17、in = min1;sec 8h54 ) | ( ! ( min1 | sec1 ) ) )if( sec1 8h54 )alert2 = ear & clk_1k; / 产生短音elsealert2 = !ear & clk_1k; / 产生长音 else alert2 = 0;endendmodule多功能数字钟端口图按键去抖电路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 设计一个IC卡计费器,能显示卡值余额,根据话务种类扣除话费。计费器卡插入信号接通讯号时钟话务种类卡值余额写卡信号通话时间读卡信号告警信号切断通话n 功能要求n 卡值余额每分钟更新一次n 计时与计费数据以十进制显示n 话务分为三类:市话每分钟3角,长话每分钟6角,特话免费n 卡上余额缺乏告警,几秒后切断通话【例9.40】计费器/* 信号定义clk时钟信号,1
19、Hzcard卡插入信号state接通讯号decide话务种类:01市话,10长话,11特话dispmoney显示卡内余额,单位为角,最大50元disptime显示通话时间write下降沿写卡read上升沿读卡warn余额过少告警,市话3角,长话6角cut自动切断通话信号 */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; / 分时钟reg set, reset_ena;integer num1, temp;assign dispmoney = card ? money : 0;assign disptime = dtime;assign read = card ? 1 : 0;/* 产生分时钟 */always ( posedge clk )beginif( num1 = 59 )begin num1 = 0; t1m
21、 = 1; endelsebeginif( state ) num1 = num1 + 1;else num1 = 0;t1m = 0;endend/* 计费 */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 ) / 市话计费 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 ) / 通话计时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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- YY/T 1949-2024人工智能医疗器械数据集专用要求:糖尿病视网膜病变眼底彩照
- 度合同制速记服务与保密全文
- 水产养殖合同范本专业版
- 租赁合同范本:车辆租赁协议
- 建筑设计服务合同样本版
- 生态林地保护承包合同书样本
- 企业贷款合同、利息计算标准
- 企业风险控制反担保合同模板
- 公租房解除合同范本
- 化工原料采购合同范本大全
- DLT 5630-2021 输变电工程防灾减灾设计规程-PDF解密
- 2024年新疆维吾尔自治区专升本考试大学政治测试题含解析
- 边坡喷锚施工工艺
- 2016-2023年娄底职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 海鲜酒楼营销策划方案
- 电能计量装置配置规范
- 有偿义工招募方案
- 冬春季节传染病防控(流感)
- 潜在供应商审核报告模版13-02
- 《临床疾病概论》课件
- 安全生产费用使用台账
评论
0/150
提交评论