版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Verilog课程设计-自动售货机一、实验目的1)设计一个自动售货机,此机能出售1元、2元、5元、10元的四种商品。出售哪种商品可有顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格。2)顾客投入硬币的钱数也是有1元、2元、5元、10元四种,但每次只能投入其中的一种硬币,此操作通过按动相应的一个按键来模拟,并同时用数码管将投币额显示出来。3)顾客投币后,按一次确认键,如果投币额不足时则报警,报警时间3秒(可用点阵模拟报警)。如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),同时多余的钱应找回,找回的钱数用数码管显示出来。4)顾客一旦按动确认键3秒后,自动售货机即
2、可自动恢复到初始状态,此时才允许顾客进行下一次购货操作。5)售货机还应具有供商家使用的累加卖货额的功能,累加的钱数要用数码管显示,显示2位即可。此累加器只有商家可以控制清零。6)此售货机要设有一个由商家控制的整体复位控制。二、实验原理首先应搭建识别模块,将代表每种硬币的拨码开关信号转变为BCD码进行累加。当累加完成后,将累加结果与代表商品的BCD码相比较。如果大于售出商品并对两个BCD码求差,求差的结果作为找钱信号;如果等于直接售出商品;小于则报警。至于统计卖钱额,则是对售出的商品进行累加。三、分析与设计思路可分为以下模块1)分频模块。2)计时模块。用于控制确认键后到恢复初始化的3秒计时。3)
3、识别模块。将每种硬币、货品的拨码开关信号转变为编码 。4)清零模块 。用于销售总额的清零。5)初始化模块6)控制模块。用于数据读入、投币不足、交易成功状态的控制及转化。7)显示模块四、程序代码段module autoseller(clk,g,m,yes,read,zero,led_dig,led_seg,led_c,led_r,led);input clk,yes,read,zero;/确定键,商家读取键,清零键input 3:0 g , m; /货品及投币选择键output led_dig,led_seg,led_c,led_r,led;/数码管输出及点阵输出reg f_100;/分频时钟
4、reg f_1;reg 3:0 goods,money,led,change,g_c;integer r,a,b, a_tmp2,a_tmp1;integer ret=0;/用于控制各状态间的转换reg 9:0count;reg 7:0 led_c,led_r,led_dig,led_seg;reg 1:0state;integer i;reg x;always (posedge clk)/分频模块beginif(a_tmp2=999)beginf_100=f_100;a_tmp2<=0;endelsea_tmp2<=a_tmp2+1; endalways (posedge clk
5、)beginif(a_tmp1=9999999)beginf_1=f_1;a_tmp1<=0;endelsea_tmp1<=a_tmp1+1; endalways (posedge f_1)beginif(ret!=0) /用于按确认键后的计时begina=a+1;endelsebegina=0;endendalways (posedge f_100)beginif(zero=0) /清零begincount=0;endif(read!=0) /非商家读取模式(普通读写模式)begin / 识别模块 case(g) /表每种货品的拨码开关信号转变为编码4'b0001:beg
6、in goods=1;end 4'b0010:begin goods=2;end4'b0100:begin goods=5;end4'b1000:begin goods=10;enddefault:begin goods=0;endendcasecase(m) /表每种硬币的拨码开关信号转变为编码4'b0001:begin money=1;end4'b0010:begin money=2;end4'b0100:begin money=5;end4'b1000:begin money=10;enddefault:begin money=0;
7、endendcaseif(a=3) /初始化beginret=0; led=4'b0000;led_c=8'b0000_0000;led_r=8'b1111_1111;x=0;endif(yes=0) /按确定键beginif(money<goods) /金钱不足beginchange=0;ret=1;endelsebegin/金钱足够change=money-goods;ret=2;if(x=0) /交易成功销售总额增加begincount=count+goods;x=1; endendendg_c=goods; /显示模块if(ret=1) /金额不足,数码管
8、报警beginled_c=8'b1111_1111;led_r=8'b0000_0000;endif(ret=2)/交易成功begincase(goods) /LED灯显示货物 1:begin led=4'b0001;end2:begin led=4'b0010;end5:begin led=4'b0100;end10:begin led=4'b1000;endendcaseg_c=change;endcase(state) /显示选择的货物0:beginr=g_c % 10;led_dig=8'b1111_1011;case(r) 0:
9、begin led_seg=8'b1111_1100;end 1:begin led_seg=8'b0110_0000;end 2:begin led_seg=8'b1101_1010;end 3:begin led_seg=8'b1111_0010;end 4:begin led_seg=8'b0110_0110;end 5:begin led_seg=8'b1011_0110;end 6:begin led_seg=8'b1011_1110;end 7:begin led_seg=8'b1110_0000;end 8:begi
10、n led_seg=8'b1111_1110;end 9:begin led_seg=8'b1111_0110;end endcase end1:beginr=g_c / 10;led_dig=8'b0111_1111;case(r) 0:begin led_seg=8'b1111_1100;end 1:begin led_seg=8'b0110_0000;end 2:begin led_seg=8'b1101_1010;end 3:begin led_seg=8'b1111_0010;end 4:begin led_seg=8'
11、b0110_0110;end 5:begin led_seg=8'b1011_0110;end 6:begin led_seg=8'b1011_1110;end 7:begin led_seg=8'b1110_0000;end 8:begin led_seg=8'b1111_1110;end 9:begin led_seg=8'b1111_0110;end endcase end/显示投入的钱数及余额2:beginr=money % 10;led_dig=8'b1110_1111;case(r) 0:begin led_seg=8'b11
12、11_1100;end 1:begin led_seg=8'b0110_0000;end 2:begin led_seg=8'b1101_1010;end 3:begin led_seg=8'b1111_0010;end 4:begin led_seg=8'b0110_0110;end 5:begin led_seg=8'b1011_0110;end 6:begin led_seg=8'b1011_1110;end 7:begin led_seg=8'b1110_0000;end 8:begin led_seg=8'b1111_1
13、110;end 9:begin led_seg=8'b1111_0110;end endcase end3:beginr=money / 10;led_dig=8'b1111_0111;case(r) 0:begin led_seg=8'b1111_1100;end 1:begin led_seg=8'b0110_0000;end 2:begin led_seg=8'b1101_1010;end 3:begin led_seg=8'b1111_0010;end 4:begin led_seg=8'b0110_0110;end 5:begi
14、n led_seg=8'b1011_0110;end 6:begin led_seg=8'b1011_1110;end 7:begin led_seg=8'b1110_0000;end 8:begin led_seg=8'b1111_1110;end 9:begin led_seg=8'b1111_0110;end endcase endendcasestate=state+1;endif(read=0)/商家读取模式begincase(i) /显示销售总额0:beginb=count/10;led_dig=8'b1111_1110;case(b
15、) 0:begin led_seg=8'b1111_1100;end 1:begin led_seg=8'b0110_0000;end 2:begin led_seg=8'b1101_1010;end 3:begin led_seg=8'b1111_0010;end 4:begin led_seg=8'b0110_0110;end 5:begin led_seg=8'b1011_0110;end 6:begin led_seg=8'b1011_1110;end 7:begin led_seg=8'b1110_0000;end 8:
16、begin led_seg=8'b1111_1110;end 9:begin led_seg=8'b1111_0110;end endcase end1:begin b=count%10;led_dig=8'b1111_1101; case(b) 0:begin led_seg=8'b1111_1100;end 1:begin led_seg=8'b0110_0000;end 2:begin led_seg=8'b1101_1010;end 3:begin led_seg=8'b1111_0010;end 4:begin led_seg=8'b0110_0110;end 5:be
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脚轮制作工班组管理水平考核试卷含答案
- 园林养护工岗前理论综合技能考核试卷含答案
- 表面活性剂制造工岗位行业发展考核试卷含答案
- 电商店铺推广效果综合评价表
- 制齿工操作管理知识考核试卷含答案
- 动物疫病防治员安全实践竞赛考核试卷含答案
- 润滑脂装置操作工技术综合模拟考核试卷含答案
- 粪便清运工工作标准化测试考核试卷含答案
- 贵金属首饰制作工岗位安全责任制强化考核试卷含答案
- 汽车销售经理销售策略绩效分析评估表
- 国有企业领导人员廉洁从业规定知识测试题及答案
- 2026年摩托车考试科目一、科目四题库(含详细答案解析)
- 2026年江苏公务员行测(真题)带答案
- 侵袭性真菌感染护理查房
- 2026年技能培训专题电力安全工器具使用培训
- 《周长与面积的变化》教案(2课时)-2026-2027学年苏教版(新教材)小学数学四年级上册
- 农机修理工职业技能等级认定考试复习题库(附答案)
- 雨课堂学堂在线学堂云《实验室安全教育(西南石油)》单元测试考核答案
- 2026年包头铁道职业技术学院单招职业技能测试题库附答案详解(满分必刷)
- 2025-2030中国硼矿行业营销模式及竞争格局分析研究报告
- 江西省2018-2024年中考满分作文121篇
评论
0/150
提交评论