ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:234.30KB ,
资源ID:16505757      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16505757.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(HDLVerilog课程设计报告自动售货机Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

HDLVerilog课程设计报告自动售货机Word下载.docx

1、4个开关分别代表投入0.5元,1元,2元,5元,统计投入总额。投入总额与商品价格做比较,如果总额=商品价格,则继续执行下面的程序。找零=总额-商品价格,数码管显示找零金额。状态图如图2.1所示:2.2 详细状态描述2.2.1 初始状态各变量都设置为零,按下rst键后,一切恢复到初始状态。 2.2.2 选商品状态分别有价格为0.5元、1元、1.5元和2元的商品,每次选择商品前,设置一个标志位btn_sell表示选择商品状态。此自动售货机每一次售货时只能一次选择一种商品,当同时选择两种以上时,选择商品无效,数码管显示清零,重新进行商品选择。选择商品后,数码管显示所选商品价格。 2.2.3 投币状态

2、当选好商品后,开始投币。同样有一标志位btn_price表示投币金额。投币口只接受三种面值的钱币0.5元、1元和5元,能够同时投入多种面值钱币。投完币后,先有一个确认买商品的过程,若投了币但又不购买商品了,就将全部投币金额退回;若确认购买商品,则进入下一状态找零状态。 2.2.4 找零状态投完币,并确认购买商品后,进入找零状态。首先要将所投的金额与所选商品的价格做比较,若所投金额小于商品价格,则退回所投钱币;若大于等于商品价格,则两者做差,得到需要找零的钱。第三章 软件设计3.1 程序总流程图3.2 程序module seller(clk,rst,dis_mony,btn_ok,btn_mon

3、,btn_sell,led_warn,led,beep);input clk,rst,btn_ok;input 2:0 btn_mon;/选择放入的钱input 3:0 btn_sell;/选择商品bbt_5,gz_10,kqs_15,kl_20output 3:0 led;/led_5,led_10,led_15,led_20output led_warn;/钱不足,指示灯output 10:0 dis_mony;/数码管显示投入面值,dia_mony10:8=com位选,dis_mony7:0=段码output beep;integer r;reg clk_500Hz;reg 3:reg

4、led_warn;/警告放入钱不足reg 10:reg 31:0 counter;reg 9:0 price,price_all;reg 1:0 flag = 2b00;/数码管显示标志位reg beep=0;parameter COUNT1 = 25d10000;/*分频使数码管显示稳定*/always (posedge clk) begin if(counter= 0) begin counter = COUNT1; clk_500Hz = clk_500Hz; end else= counter-1; end always (negedge rst or posedge clk) beg

5、in if (rst=0) led = 4b0000;/LED灭 price_all = 0;/价格清零 led_warn = 0; price = 0; beep = 0; else begin/*三种面值共8种组合*/ case(btn_mon) 3b001:begin price_all = 5;endb010:begin price_all = 10;b100:begin price_all = 50;b011:begin price_all = 15;b101:begin price_all = 55;b110:begin price_all = 60;b111:begin pric

6、e_all = 65; default:begin price_all = 0; endcase case(btn_sell) 4b0001:begin price = 5; end b0010:begin price = 10; endb0100:begin price = 15;b1000:begin price = 20;begin price = 0; if(btn_ok = 1) begin if(price_all price) /放入钱不足 led_warn = 1; price = 0; begin /金钱足够 price_all = price_all-price; beep

7、 = 1; case(price) /LED灯显示货物卖出 5: begin led = 4b0001;end 10:begin led = 4b0010;15:b0100;20:b1000;end endcase end beep = 0;/*分频后将时钟给数码管,数码管分别显示放入钱的多少、商品价格*/always (posedge clk_500Hz)begin case(flag) 2b00: r=price_all%10; case(r) 0:begin dis_mony=11b111_0011_1111; 1:b111_0000_0110; 2:b111_0101_1011; 3:

8、b111_0100_1111; 4:b111_0110_0110; 5:b111_0110_1101; 6:b111_0111_1101; 7:b111_0000_0111; 8:b111_0111_1111; 9:b111_0110_1111; endcase flag = 2b01;b01: r=price_all/10; 0:b110_1011_1111;b110_1000_0110;b110_1101_1011;b110_1100_1111;b110_1110_0110;b110_1110_1101;b110_1111_1101;b110_1000_0111;b110_1111_111

9、1;b110_1110_1111; endcase/*数码管段码表*/function 7:0 led7;0 dis_input; case (dis_input)0 : led7 = 8b0011_1111;1 :b0000_0110;2 :b0101_1011;3 :b0100_1111;4 :b0110_0110;5 :b0110_1101;6 :b0111_1101;7 :b0000_0111;8 :b0111_1111;9 :b0110_1111;default :endfunctionendmodule第四章 结果与讨论4.1 实验调试 4.1.1 调试步骤运行Quartus II

10、软件,新建工程。建立文本文件Verilog HDL File。在文件中写入程序。保存,编译。分配管脚。将生成的.sof文件写入FPGA试验箱中。根据要求选择几种买东西的可能情况,在实验箱上实验,观察记录结果。 4.1.2 实验现象选择买0.5元的商品,投5元的金额,调试现象如下:选择0.5元商品数码管显示0.5,再选择一种商品,数码管显示清零,重新进行商品选择。按下5元投币键,对应数码管显示5.0。按下确认购买开关,找零时,对应数码管显示4.5,蜂鸣器响,对应0.5元商品的LED灯亮。选择1.5元的商品,投1元的金额,调试现象如下:选择1.5元的商品,对应数码管显示1.5。按下1元的投币键,对

11、应数码管显示1。找零显示1元,退回所投的钱,表示警告的LED灯亮(交易不成功)。4.2 结果与分析 调试过程中出现的问题及原因:(1) 本程序 定义了函数,注意函数结构的定义以及函数的调用(函数不能作为单独的语句进行调用)。(2) 在编写完程序之后,编译运行成功后,注意数码管管脚的连接,参考实验指导书。(3) 后面一切正常后,可是依然出不了正确的结果,经过和同学的相互讨论,才发现按钮按下是0,悬空是1。最后及时发现并得出了正确的实验结果。第五章 总结 经过几次实验,让我对Verilog HDL有了很深刻的认识,从刚开始接触EDA到现在的Verilog HDL的学习,让我对这些硬件描述语言有了进一步的理解。这些语言和c+,java软件编程语言比起来都简单的多,因此也很容易上手。 实验刚开始,老师首先让我们自己经过输入书上的源程序来熟悉Verilog HDL,后面就慢慢加大难度,逐渐深入的了解Verilog HDL。我刚开始选择了出租车计价器,后来由于时间原因,没有成功。后来和同学讨论做自动售货机,这个题目相对简单,没有很复杂的模块设计,甚至没有多模块设计,只需要调用函数和使用过程赋值语句就行了。经过不断的试终于在实验结束前做完了。 感谢几节课的实验让我对Verilog HDL有了深入的理解!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1