HDL(Verilog)课程设计报告(自动售货机)_第1页
HDL(Verilog)课程设计报告(自动售货机)_第2页
HDL(Verilog)课程设计报告(自动售货机)_第3页
HDL(Verilog)课程设计报告(自动售货机)_第4页
HDL(Verilog)课程设计报告(自动售货机)_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

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

文档简介

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

2、,对应商品 LED 灯亮。若所投钱币不足所选商品价格,对应警告钱币不足的 LED 灯亮。关键字:FPGAVerilogHDL、自动售货机、QuartusHAbstractThisdesignisanauto-vendingmachinebasedonfieldprogrammablelogicdevices(FPGA).WeuseQuartusntowriteprocedureinverilogHDLwhichisalanguagetodescribehardware.Theprocedurewillrealizethefunctionofauto-vendingmachine.Thisdes

3、ignismainlyaboutprocedure.Forthehardware,weuseexperimentalbox.Weallocateallvariablequantitiesintheproceduretothefeetinexperimentalbox.Weuseeightswitchrespectivelyrepresentcommoditypricesandthrowmoneypriceandconfirmpaymentchangeoperation.Whenchoosinggoodcommoditiesandcoin,digitalpipedisplayselectedco

4、mmoditypricesandmoneyprice.Whenpressingconfirmpaymentswitch,digitalpipedisplayshouldfindhowmuchmoney,buzzersounded,correspondingcommodityLEDlights.Ifthrowmoneyshortageselectedcommodityprices,correspondingwarningmoneyshortageofLEDlights.Keywords:FPGA、VerilogHDL、auto-vendingmachine、Quartus 口目录摘要I第一章系统

5、设计11.1系统设计 11.2系统设计方案比较 11.2.1设计方案比较 1第二章详细设计24.1自动售货机状态描述 24.2详细状态描述 34.2.1初始状态 34.2.2选商品状态 34.2.3投币状态 34.2.4找零状态 3第三章软件设计33.1程序总流程图 33.2程序 4第四章结果与讨论7实验调试 7调试步骤 7实验现象 7结果与分析 8总结8参考文献8附录9第一章系统设计系统设计(1)(1)用四个发光二极管分别模拟售出价值为 5 5 角、1 1 元、1.51.5 元和 2 2 元的小商品,购买者可以通过开关选择任意一种标价中的小商品。(2)(2)灯亮时表示该小商品售出。1.2.1

6、总体设计 1(3)(3)用开关分别模拟 5 5 角、1 1 元硬币和 5 5 元纸币投入,可以用几只发光二极管(或数码管)分别代表找回剩余的硬币。(4)(4)每次只能售出一种小商品,当所投硬币达到或超过购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态;(5)(5)当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初始状态。系统设计方案比较总体设计采用 FPGFPG 林设计的原理图如图 1.11.1 所示.它由控制输入电路、FPGAFPGA 显示电路电路组成图 1.1 采用 FPG 破计的自动售货机原理方框图控制输入电路主要是为用户设计的,起到一个输入控制的作用。FPGFPG 册

7、现场可编程逻辑器件,也是本设计方案的核心内容,它是实现自动售货机运作的主要控制模块。将编写好的 HDHDL L程序烧制到现场可编程逻辑器件 FPG9FPG9,然后通过控制输入电路把信号输入到 FPGAFPGA 由八个开关控制输入信号即消费者选择商品和消费者投币及确认消费,动态数码管显示输出信号即找零环节和所选择的商品、消费者投币。1.2.2设计方案比较本设计可以通过多种方案来实现,下面就主要的三种方案进行阐述和比较。采用数字逻辑电路制作,用 ICIC 器件连接焊接外围电路实现,这种电路很直观,简单方便。但应用数字逻辑电路制作,使用的器件较多,连接复杂,体积大,功耗大。电路中焊点和线路较多会,使

8、成品的稳定度和精度大大降低。使用现场可编程逻辑器件(FPGAFPGA 制作,利用 VerilogHDLVerilogHDL 硬件描述语言编程进行控制,然后烧写实现。单片机现在已经达到很成熟的阶段了,它的应用也十分广泛。采用单片机来实现自动售货机, ,它的原理方框图与用 FPGAfeFPGAfe 实现的原理方框图类似, ,如图 1.21.2 所示图 1.2 采用单片机实现自动售货机的原理方框图图 1.11.1 和图 1.21.2 的基本原理都相同,唯一不同的是一个是用 FPGABFPGAB 制作,一个是用单片机来实现。采用单片机来实现自动售货机,主要的核心是单片机程序的设计。方案比较:对于自动售

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

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

11、2.1所示:详细状态描述初始状态各变量都设置为零,按下 rstrst 键后,一切恢复到初始状态。选商品状态分别有价格为0.5元、1元、1.5元和2元的商品,每次选择商品前,设置一个标志位btn_sell表示选择商品状态。此自动售货机每一次售货时只能一次选择一种商品,当同时选择两种以上时,选择商品无效,数码管显示清零,重新进行商品选择。选择商品后,数码管显示所选商品价格。投币状态当选好商品后,开始投币。同样有一标志位btn_price表示投币金额。投币口只接受三种面值的钱币0.5元、2元和5元,可以同时投入多种面值钱币。投完币后,先有一个确认买商品的过程,若投了币但又不购买商品了,就将全部投币金

12、额退回;若确认购买商品,则进入下一状态一一找零状态。图 2.1 自动售货机状态图所投的金颜小于商品价格找零状态投完币,并确认购买商品后,进入找零状态。首先要将所投的金额与所选商品的价格做比较,若所投金额小于商品价格,则退回所投钱币;若大于等于商品价格,则两者做差,得到需要找零的钱。第三章软件设计程序总流程图程序moduleauto_seller(clk,rst,dis_mony,dis_price,btn_ok,btn_mon,btn_sell,led_warn,led,beeP);inputclk,rst,btn_ok;input2:0btn_mon;选择放入的钱input3:0btn_se

13、ll;/破择商品bbt_5,gz_10,kqs_15,kl_20output3:0led;/led_5,led_10,led_15,led_20outputled_warn;钱不足,指示灯output11:0dis_mony;/做码管显示投入面值,dia_mony10:7=com位选,dis_mony7:0我码output11:0dis_price;/做码管显示价钱outputbeep;regclk_500Hz;reg3:0led;/led_5,led_10,led_15,led_20regled_warn;警告放入钱不足reg11:0dis_mony;reg11:0dis_price;reg

14、31:0counter;reg9:0price,price_all;reg1:0flag=2b00;/数码管显示标志位regbeep=0;parameterCOUNT1=25d10000;/*分频使数码管显示稳定*/always(posedgeclk)beginif(counter=0)begincounter=COUNT1;clk_500Hz=clk_500Hz;elsecounter=counter-1;endalways(negedgerstorposedgeclk)beginif(!rst)beginled=4b0000;LED灭price_all=0;/价格清零led_warn=0;

15、price=0;beep=0;endelsebegin/*三种面值共8种组合*/case(btn_mon)3b001:beginprice_all=5;end3b010:beginprice_all=10;end3b100:beginprice_all=50;end3b011:beginprice_all=15;end3b101:beginprice_all=55;end3b110:beginprice_all=60;end3b111:beginprice_all=65;enddefault:beginprice_all=0;endendcasecase(btn_sell)4b0001:beg

16、inprice=5;end4b0010:beginprice=10;end4b0100:beginprice=15;end4b1000:beginprice=20;enddefault:beginprice=0;endendcaseif(btn_ok=1)beginif(price_allprice)放入钱不足beginled_warn=1;price=0;endelsebegin/金钱足够price_all=price_all-price;beep=1;case(price)/LED灯显示货物卖出5:beginled=4b0001;end10:beginled=4b0010;end15:be

17、ginled=4b0100;end20:beginled=4b1000;endendendelsebeep=0;endend/*分频后将时钟给数码管,数码管分别显示放入钱的多少、商品价格always(posedgeclk_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

18、(price/10),1b0;flag=2b00;endendcaseend/*数码管段码表*/function6:0led7;input3:0dis_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;defaul

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

20、器响,对应0.5元商品的LED灯亮。选择1.5元的商品,投1元的金额,调试现象如下:选择1.5元的商品,对应数码管显示1.5。按下1元的投币键,对应数码管显示1。找零显示1元,退回所投的钱,表示警告的LED灯亮(交易不成功)。结果与分析调试过程中出现的问题及原因:数码管显示不正确。管脚配置不正确导致数码管显示异常。重新分配管脚后,仍为先前程序的操作结果。重新配置管脚后,未运行程序,使得烧写进去的仍为原先的程序。第五章总结VHDLVHDL 语言有限状态机设计控制电路, 可大大降低设计难度和时间, 提高设计效率和可靠性,利用语言的灵活性及功能强大的 EDAEDA 工具,可以轻松完成硬件的功能扩充与

21、升级,还可以实现更复杂的数字系统,整个设计过程相对于传统的设计方法,有较大的突破。VHDLVHDL 语言作为现代数字系统的重要设计工具,以其灵活、简洁的设计风格在电路设计中发挥着越来越重要的作用。通过本次课程设计,我对 VerilogHDLVerilogHDL 语言有了更深刻的了解,能够比较灵活地运用它来实现我们所想要要其实现的功能。在实验中,我也遇到了很多挫折,不过我都和同伴一一克服了,大家齐心协力解决了问题,使我明白了和他人共同合作的重要性。在以后的道路上我们也必须深刻认识到团队合作的精神,投入今后的发展之中。成功就是在不断摸索着前进中实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。参考文献11夏宇闻编著

温馨提示

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

评论

0/150

提交评论