自动售货机设计_第1页
自动售货机设计_第2页
自动售货机设计_第3页
自动售货机设计_第4页
自动售货机设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HDL(Verilog)课程设计报告(自动售货机) 2011-03-02 21:51:23| 分类: 电子、课程设计类 | 标签:fpga verilog hdl 自动售货机 quartus |字号大中小 订阅 摘 要 本设计是以现场可编程逻辑器件(FPGA)为核心的自动售货机,利用Quartus软件编写verilog HDL硬件描述语言程序以实现自动售货功能。本设计主要以程序为主,硬件方面则使用实验箱,将程序各变量端口与实验箱管脚进行相应的配置,用八个开关分别代表商品价格、所投钱币价格及确认付款找零操作。当选择好商品并投币后,数码管显示所选商品价格及投入钱币价格;按下确认付款开关,数码管显示

2、应找多少钱,蜂鸣器响,对应商品LED灯亮。若所投钱币不足所选商品价格,对应警告钱币不足的LED灯亮。关键字:FPGA、Verilog HDL、自动售货机、Quartus AbstractThis design is an auto-vending machine based on field programmable logic devices (FPGA) . We use Quartus to write procedure in verilog HDL which is a language to describe hardware. The procedure will realize

3、 the function of auto-vending machine.This design is mainly about procedure. For the hardware, we use experimental box. We allocate all variable quantities in the procedure to the feet in experimental box. We use eight switch respectively represent commodity prices and throw money price and confirm

4、payment change operation. When choosing good commodities and coin, digital pipe display selected commodity prices and money price. When pressing confirm payment switch, digital pipe display should find how much money, buzzer sounded, corresponding commodity LED lights. If throw money shortage select

5、ed commodity prices, corresponding warning money shortage of LED lights.Keywords: FPGA、Verilog HDL、auto-vending machine、Quartus目 录摘要 I第一章系统设计 11.1系统设计 11.2系统设计方案比较 11.2.1总体设计 11.2.1设计方案比较 1第二章详细设计 22.1自动售货机状态描述 22.2详细状态描述 32.2.1 初始状态 32.2.2 选商品状态 32.2.3 投币状态 32.2.4 找零状态 3第三章软件设计 33.1程序总流程图 33.2程序 4第

6、四章结果与讨论 74.1 实验调试 74.1.1 调试步骤 74.1.2 实验现象 74.2 结果与分析 8总结 8参考文献 8附录 9第一章 系统设计1.1 系统设计(1)用四个发光二极管分别模拟售出价值为5角、1元、1.5元和2元的小商品,购买者可以通过开关选择任意一种标价中的小商品。(2)灯亮时表示该小商品售出。(3)用开关分别模拟5角、1元硬币和5元纸币投入,可以用几只发光二极管(或数码管)分别代表找回剩余的硬币。(4)每次只能售出一种小商品,当所投硬币达到或超过购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态;(5)当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初

7、始状态。1.2 系统设计方案比较1.2.1 总体设计采用FPGA来设计的原理图如图1.1所示.它由控制输入电路、FPGA、显示电路电路组成。图1.1 采用FPGA设计的自动售货机原理方框图控制输入电路主要是为用户设计的,起到一个输入控制的作用。FPGA是现场可编程逻辑器件,也是本设计方案的核心内容,它是实现自动售货机运作的主要控制模块。将编写好的HDL程序烧制到现场可编程逻辑器件FPGA中,然后通过控制输入电路把信号输入到FPGA,由八个开关控制输入信号即消费者选择商品和消费者投币及确认消费,动态数码管显示输出信号即找零环节和所选择的商品、消费者投币。1.2.2 设计方案比较本设计可以通过多种

8、方案来实现,下面就主要的三种方案进行阐述和比较。方案一:采用数字逻辑电路制作,用IC 器件连接焊接外围电路实现,这种电路很直观,简单方便。但应用数字逻辑电路制作,使用的器件较多,连接复杂,体积大,功耗大。电路中焊点和线路较多会,使成品的稳定度和精度大大降低。方案二:使用现场可编程逻辑器件(FPGA)制作,利用Verilog HDL硬件描述语言编程进行控制,然后烧写实现。方案三:单片机现在已经达到很成熟的阶段了,它的应用也十分广泛。采用单片机来实现自动售货机,它的原理方框图与用FPGA来实现的原理方框图类似,如图1.2所示。图1.2 采用单片机实现自动售货机的原理方框图图1.1和图1.2的基本原

9、理都相同,唯一不同的是一个是用FPGA来制作,一个是用单片机来实现。采用单片机来实现自动售货机,主要的核心是单片机程序的设计。方案比较:对于自动售货机的设计,三个方案均可以实现,但是第一个方案中采用的是数字逻辑电路来制作,该电路硬件所需的器材多,体积庞大,比较复杂,而且精度和稳定度都不是很高。第二个方案采用的是现场可编程逻辑器件来实现, 它的优点是所有电路集成在一块芯片上,此方案所需的外围电路简单,这样它的体积就减少了,同时还提高了系统的稳定度。还可以用软件Quartus软件进行仿真和调试等。可以充分利用HDL硬件描述语言方便的编程,提高开发效率,缩短研发周期,降低研发成本;而且易于进行功能的

10、扩展,实现方法灵活,调试方便,修改容易.方案三也有它的优点,但同时也存在缺点。它对设计者的要求比较高,设计者对软硬件必须十分熟悉2。和方案二来比它的实验仿真没有方案二简单直观,调试也有一定的难度。在外界环境相同的条件下,方案三设计出来的产品精度和稳定度要比方案二稍微差一些。因此,自动售货机的设计我们选择方案二来实现。第二章 详细设计2.1 自动售货机状态描述判断开关被按下的个数N。若N=2表示所选本次选择无效,返回初始状态;若N=1则显示所选商品,并继续执行下面的流程。3个开关分别代表三种商品。4个开关分别代表投入0.5元,1元,2元,5元,统计投入总额。投入总额与商品价格做比较,如果总额=商

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

12、接受三种面值的钱币0.5元、2元和5元,可以同时投入多种面值钱币。投完币后,先有一个确认买商品的过程,若投了币但又不购买商品了,就将全部投币金额退回;若确认购买商品,则进入下一状态找零状态。2.2.4 找零状态投完币,并确认购买商品后,进入找零状态。首先要将所投的金额与所选商品的价格做比较,若所投金额小于商品价格,则退回所投钱币;若大于等于商品价格,则两者做差,得到需要找零的钱。第三章 软件设计3.1 程序总流程图3.2 程序module auto_seller(clk,rst,dis_mony,dis_price,btn_ok,btn_mon,btn_sell,led_warn,led,be

13、ep);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 11:0 dis_mony;/数码管显示投入面值,dia_mony10:7=com位选,dis_mony7:0=段码output 11:0 dis_price;/数码管显示价钱output beep;reg clk_500Hz;reg 3:0 led;/le

14、d_5,led_10,led_15,led_20reg led_warn;/警告放入钱不足reg 11:0 dis_mony;reg 11:0 dis_price; reg 31:0 counter;reg 9:0 price,price_all;reg 1:0 flag = 2b00;/数码管显示标志位reg beep=0;parameter COUNT1 = 25d10000;/*分频使数码管显示稳定*/always (posedge clk)beginif(counter= 0)begin counter = COUNT1;clk_500Hz = clk_500Hz;endelsecou

15、nter = counter-1;endalways (negedge rst or posedge clk)beginif(!rst)beginled = 4b0000;/LED灭price_all = 0;/价格清零led_warn = 0;price = 0;beep = 0;endelsebegin/*三种面值共8种组合*/case(btn_mon)3b001:begin price_all = 5;end3b010:begin price_all = 10;end3b100:begin price_all = 50;end3b011:begin price_all = 15;end3

16、b101:begin price_all = 55;end3b110:begin price_all = 60;end3b111:begin price_all = 65;enddefault:begin price_all = 0;endendcasecase(btn_sell)4b0001:begin price = 5;end 4b0010:begin price = 10;end4b0100:begin price = 15;end4b1000:begin price = 20;enddefault:begin price = 0;endendcaseif(btn_ok = 1)beg

17、in if(price_all price) /放入钱不足 beginled_warn = 1;price = 0; end else begin /金钱足够 price_all = price_all-price; beep = 1; case(price) /LED灯显示货物卖出 5: begin led = 4b0001;end10:begin led = 4b0010;end15:begin led = 4b0100;end20:begin led = 4b1000;end endcase endendelsebeep = 0;endend/*分频后将时钟给数码管,数码管分别显示放入钱

18、的多少、商品价格*/always (posedge clk_500Hz)begincase(flag)2b00:begindis_mony = 4b1110,led7(price_all%10),1b1;dis_price = 4b1110,led7(price%10),1b1;flag = 2b01;end2b01:begindis_mony = 4b1101,led7(price_all/10),1b0;dis_price = 4b1101,led7(price/10),1b0;flag = 2b00;endendcaseend/*数码管段码表*/function 6:0 led7; in

19、put 3:0 dis_input;begincase (dis_input)0 : led7 = 7b111_1110;1 : led7 = 7b011_0000;2 : led7 = 7b110_1101;3 : led7 = 7b111_1001;4 : led7 = 7b011_0011;5 : led7 = 7b101_1011;6 : led7 = 7b101_1111;7 : led7 = 7b111_0000;8 : led7 = 7b111_1111;9 : led7 = 7b111_0011;default : led7 = 7b111_1111;endcaseendend

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

21、LED灯亮。选择1.5元的商品,投1元的金额,调试现象如下:选择1.5元的商品,对应数码管显示1.5。按下1元的投币键,对应数码管显示1。找零显示1元,退回所投的钱,表示警告的LED灯亮(交易不成功)。4.2 结果与分析调试过程中出现的问题及原因: 数码管显示不正确。管脚配置不正确导致数码管显示异常。 重新分配管脚后,仍为先前程序的操作结果。重新配置管脚后,未运行程序,使得烧写进去的仍为原先的程序。第五章 总结VHDL语言有限状态机设计控制电路,可大大降低设计难度和时间,提高设计效率和可靠性,利用语言的灵活性及功能强大的EDA工具,可以轻松完成硬件的功能扩充与升级,还可以实现更复杂的数字系统,整个设计过程相对于传统的设计方法,有较大的突破。VHDL语言作为现代数字系统的重要设计工具,以其灵活、简洁的设计风格在电路设计中发挥着越来越重要的作用。通过本次课程设计,我对Verilog HDL语言有了更深刻的了解,能够比较灵活地运用它来实现我们所想要要其实现的功能。在实验中,我也遇到了很多挫折,不过我都和同伴一一克服了,大家齐心协力解决了问题,使我明白了和他人共同合作的重要性。在以后的道路上我们也必须深刻认识到团队合作的精神,投入今后的发展之中。成功就是在不断摸索着前进中实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论