基于VHDL的自动售货机的设计与实现

合集下载

基于VHDL +FPGA 的自动售货机控制模块的设计与实现

基于VHDL +FPGA 的自动售货机控制模块的设计与实现

基于VHDL +FPGA 的自动售货机控制模块的设计与实现EDA 技术是以计算机为工具完成数字系统的逻辑综合、布局布线和设计仿真等工作。

电路设计者只需要完成对系统功能的描述,就可以由计算机软件进行系统处理,最后得到设计结果,并且修改设计方案如同修改软件一样方便。

利用EDA 工具可以极大地提高设计效率。

利用硬件描述语言编程来表示逻辑器件及系统硬件的功能和行为,是EDA设计方法的一个重要特征。

VHDL(Very High Speed Integrated Circuit Hardware DescripTION Language,超高速集成电路硬件描述语言)是硬件描述语言的一种,对系统硬件的描述功能很强而语法又比较简单。

VHDL 具有强大的行为描述能力,设计者可以不懂硬件的结构,只需集中精力进行电子系统的设计和性能优化;具有方便的逻辑仿真与调试功能,在设计早期就能查验系统的功能,方便地比较各种方案的可行性及其优劣。

目前,VHDL 作为IEEE 的工业标准硬件描述语言,得到众多EDA 公司的支持,在电子工程领域已经成为事实上通用硬件描述语言。

本文采用VHDL 作为工具描述了自动售货机控制模块的逻辑控制电路,并在FPGA 上实现。

该自动售货机能够根据投入硬币额度,按预定的要求在投入硬币大于规定值时送出饮料并找零。

设计方案本文所设计的简易自动售货机可销售矿泉水,假设每瓶1.5 元。

设两个投币孔,分别接收1 元和5 角两种硬币,两个输出口,分别输出购买的商品和找零。

假设每次只能投入一枚1 元或5 角硬币,投入1 元5 角硬币后机器自动给出一瓶矿泉水;投入2 元硬币后,在给出一瓶矿泉水的同时找回一枚5 角的硬币。

基于VHDL语言自动售货机设计实验报告-绝对原创

基于VHDL语言自动售货机设计实验报告-绝对原创

自动售货机设计实验报告一设计题目:g) 自动售货机设计FPGA模块模拟自动售货机的工作过程,要求如下(1)售货机有两个进币孔,可以输入硬币和纸币,售货机有两个进币孔,一个是输入硬币,一个是输入纸币,硬币的识别范围是5角和1 元的硬币,纸币的识别范围是1 元、5 元,10 元,20元,50元,100元。

乘客可以连续多次投入钱币。

(2)顾客可以选择的商品种类有16种,价格分别为1-16元,顾客可以通过输入商品的编号来实现商品的选择。

即有一个小键盘(0-9按键)来完成,比如输入15时要先输入1,再输入5。

(3)顾客选择完商品后,可以选择需要的数量。

然后可以继续选择商品及其数量,每次可以选择最多三个商品。

然后显示出所需金额。

顾客此时可以投币,并且显示已经投币的总币值。

当投币值达到或超过所需币值后,售货机出货,并扣除所需金额,并找出多余金额。

在投币期间,顾客可以按取消键取消本次操作,钱币自动退出。

二程序代码:三程序实现功能:FPGA模块模拟自动售货机:(1)售货机有两个进币孔,分别输入硬币和纸币,硬币的识别范围是5角和1 元的硬币,纸币的识别范围是1 元、5 元,10 元,20元,50元,100元。

乘客可以连续多次投入钱币。

(2)顾客可以选择的商品种类有16种,价格分别为1-16元,顾客可以通过输入商品的编号来实现商品的选择。

(3)顾客选择完商品后,可以选择需要的数量。

然后可以继续选择商品及其数量,每次最多选择最种商品,每种商品最多购买三个。

然后显示出所需金额。

顾客此时可以投币,并且显示已经投币的总币值。

当投币值达到或超过所需币值后,售货机出货,并扣除所需金额,并找出多余金额。

在投币期间,顾客可以按取消键取消本次操作,钱币自动退出。

四程序功能模块分析:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;实体说明:entity sellor isport ( clk:in std_logic; --系统时钟sel,cancel,reset: in std_logic; --选择、取消、开始(用于进入初始状态)变量定义:coin: in std_logic_vector(1 downto 0); --5角硬币、1元硬币crash:in std_logic_vector(5 downto 0); --100元、50元、20元、10元、5元、一元纸币item: in std_logic_vector(3 downto 0); --16种商品quantity:in std_logic_vector(1 downto 0); --商品数量(一次最多购买3件)change_out :out std_logic_vector(10 downto 0); --找零item_out :out std_logic_vector(3 downto 0); --是否购买了商品(1表示有商品出来、0表示没有商品出来)change :out std_logic ); --是否有找零end sellor;结构体说明:architecture behave of sellor issignal price:std_logic_vector(7 downto 0);signal counter: std_logic_vector(10 downto 0); --币数计数器signal total_price:std_logic_vector(10 downto 0); --控制系统的时钟信号type state_type is (initial_state,item1_state,quantity_state,money_state,sell_state,change_state);signal state:state_type;signal temp:std_logic_vector(1 downto 0);signal quan:std_logic_vector(3 downto 0);begincom:process(reset,sel,clk)beginif (clk'event and clk='1')thenif reset='1' then state<=initial_state;temp<="00";quan<="0000";end if;case state iswhen initial_state=>item_out<="0000"; --出票口关闭change_out<="00000000000"; --找零口关闭total_price<="00000000000"; --票价总额记录清零counter<="00000000000";--投入钱币总额记录清零change<='0';state<=item1_state; 设定initial_state选择物品程序:when item1_state=>if temp<"11" thenelse state<=money_state;end if;when quantity_state=>if(cancel='1')then --按下“取消”按钮state<=initial_state;else 取消操作程序if quantity="00" thenitem_out<="0000";change<='0';change_out<="00000000000";state<=initial_state;else 当选择0个商品total_price<=total_price+price*quantity;temp<=temp+1;quan<=quan+quantity;if (sel='1') then state<=item1_state;elsestate<=money_state;end if;end if;end if;货币识别:when money_state=>if(cancel='1')then --按下“取消”按钮state<=initial_state;end if;case crash is --纸币识别end case;case coin is --硬币识别end case;if counter>=total_price thenstate<=sell_state;--系统进入出票状态end if;购物操作程序:when sell_state =>if(cancel='1')thenitem_out<="0000";change<='1';change_out<=counter; --按下“取消”按钮state<=initial_state;elseif counter>=total_price thenitem_out<=quan; --判断是否还有找零state<=change_state; --系统进入找零状态elseitem_out<="0000";state<=initial_state;end if;end if;when change_state=>if(cancel='1')thenitem_out<="0000";change<='1';change_out<=counter; --按下“取消”按钮state<=initial_state;elseif counter>total_price thenchange<='1';change_out<=counter-total_price;item_out<=quan;elsechange<='0';change_out<="00000000000";state<=initial_state;end if;end if;end case;end if;end process;end behave;五、仿真波形六、个人总结与感想:良好的沟通与分工是十分重要的,这对程序的实现和质量具有至关重要的作用。

Verilog语言的自动售货机

Verilog语言的自动售货机

完成时间:2010/7/30word格式-可编辑-感谢下载支持一、实验目的1)设计一个自动售货机,此机能出售1元、2元、5元、10元的四种商品。

出售哪种商品可有顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格。

2)顾客投入硬币的钱数也是有1元、2元、5元、10元四种,但每次只能投入其中的一种硬币,此操作通过按动相应的一个按键来模拟,并同时用数码管将投币额显示出来。

3)顾客投币后,按一次确认键,如果投币额不足时则报警,报警时间3秒(可用点阵模拟报警)。

如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),同时多余的钱应找回,找回的钱数用数码管显示出来。

4)顾客一旦按动确认键3秒后,自动售货机即可自动恢复到初始状态,此时才允许顾客进行下一次购货操作。

5)售货机还应具有供商家使用的累加卖货额的功能,累加的钱数要用数码管显示,显示2位即可。

此累加器只有商家可以控制清零。

6)此售货机要设有一个由商家控制的整体复位控制。

二、实验原理首先应搭建识别模块,将代表每种硬币的拨码开关信号转变为BCD码进行累加。

当累加完成后,将累加结果与代表商品的BCD码相比较。

如果大于售出商品并对两个BCD码求差,求差的结果作为找钱信号;如果等于直接售出商品;小于则报警。

至于统计卖钱额,则是对售出的商品进行累加。

三、分析与设计思路可分为以下模块1)分频模块。

2)计时模块。

用于控制确认键后到恢复初始化的3秒计时。

3)识别模块。

将每种硬币、货品的拨码开关信号转变为编码。

4)清零模块。

用于销售总额的清零。

5)初始化模块6)控制模块。

用于数据读入、投币不足、交易成功状态的控制及转化。

7)显示模块四、程序代码段moduleautoseller(clk,g,m,yes,read,zero,led_dig,led_seg,led_c,led_r,led);inputclk,yes,read,zero;〃确定键,商家读取键,清零键word格式-可编辑-感谢下载支持input[3:0]g,m;//货品及投币选择键outputled_dig,led_seg,led_c,led_r,led;//数码管输出及点阵输出regf_100;〃分频时钟regf_1;reg[3:0]goods,money,led,change,g_c;integerr,a,b,a_tmp2,a_tmp1;integerret=0;〃用于控制各状态间的转换reg[9:0]count;reg[7:0]led_c,led_r,led_dig,led_seg;reg[1:0]state;integeri;regx;always@(posedgeclk)//分频模块beginif(a_tmp2==999)beginf_100=~f_100;a_tmp2<=0;endelsea_tmp2<=a_tmp2+1;endalways@(posedgeclk)beginif(a_tmp1==9999999)beginf_1=~f_1;a_tmp1<=0;endelsea_tmp1<=a_tmp1+1;endalways@(posedgef_1)beginif(ret!=0)//用于按确认键后的计时begina=a+1;endelsebegina=0;endendalways@(posedgef_100)beginif(zero==0)//清零word格式-可编辑-感谢下载支持begincount=0;endif(read!=0)//非商家读取模式(普通读写模式)begin//识别模块case(g)//表每种货品的拨码开关信号转变为编码4'b0001:begingoods=1;end4'b0010:begingoods=2;end4'b0100:begingoods=5;end4'b1000:begingoods=10;enddefault:begingoods=0;endendcasecase(m)//表每种硬币的拨码开关信号转变为编码4'b0001:beginmoney=1;end4'b0010:beginmoney=2;end4'b0100:beginmoney=5;end4'b1000:beginmoney=10;enddefault:beginmoney=0;endendcase if(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;//显示模块word格式-可编辑-感谢下载支持if(ret==1)//金额不足,数码管报警begin led_c=8'b1111_1111;led_r=8'b0000_0000;endif(ret==2)〃交易成功begincase(goods)//LED灯显示货物1:beginled=4'b0001;end2:beginled=4'b0010;end5:beginled=4'b0100;end10:beginled=4'b1000;endendcaseg_c=change;endcase(state)//显示选择的货物0:beginr=g_c%10;led_dig=8'b1111_1011;case(r)0:beginled_seg=8'b1111_1100;end1:beginled_seg=8'b0110_0000;end2:beginled_seg=8'b1101_1010;end3:beginled_seg=8'b1111_0010;end4:beginled_seg=8'b0110_0110;end5:beginled_seg=8'b1011_0110;end6:beginled_seg=8'b1011_1110;end7:beginled_seg=8'b1110_0000;end8:beginled_seg=8'b1111_1110;end9:beginled_seg=8'b1111_0110;endendcaseend1:beginr=g_c/10;led_dig=8'b0111_1111;case(r)0:beginled_seg=8'b1111_1100;end1:beginled_seg=8'b0110_0000;end2:beginled_seg=8'b1101_1010;end3:beginled_seg=8'b1111_0010;end4:beginled_seg=8'b0110_0110;end5:beginled_seg=8'b1011_0110;end6:beginled_seg=8'b1011_1110;end7:beginled_seg=8'b1110_0000;end8:beginled_seg=8'b1111_1110;end9:beginled_seg=8'b1111_0110;endendcaseend//显示投入的钱数及余额2:beginr=money%10;led_dig=8'b1110_1111;case(r)0:beginled_seg=8'b1111_1100;end1:beginled_seg=8'b0110_0000;end2:beginled_seg=8'b1101_1010;end3:beginled_seg=8'b1111_0010;end4:beginled_seg=8'b0110_0110;end5:beginled_seg=8'b1011_0110;end6:beginled_seg=8'b1011_1110;end7:beginled_seg=8'b1110_0000;end8:beginled_seg=8'b1111_1110;end9:beginled_seg=8'b1111_0110;endendcase end3:beginr=money/10;led_dig=8'b1111_0111;case(r)0:beginled_seg=8'b1111_1100;end1:beginled_seg=8'b0110_0000;end2:beginled_seg=8'b1101_1010;end3:beginled_seg=8'b1111_0010;end4:beginled_seg=8'b0110_0110;end5:beginled_seg=8'b1011_0110;end6:beginled_seg=8'b1011_1110;end7:beginled_seg=8'b1110_0000;end8:beginled_seg=8'b1111_1110;end9:beginled_seg=8'b1111_0110;endendcase endendcasestate=state+1;endif(read==O)〃商家读取模式begincase(i)//显示销售总额0:beginb=count/10;led_dig=8'b1111_1110;case(b)0:beginled_seg=8'b1111_1100;end1:beginled_seg=8'b0110_0000;end2:beginled_seg=8'b1101_1010;end3:beginled_seg=8'b1111_0010;end4:beginled_seg=8'b0110_0110;end5:beginled_seg=8'b1011_0110;end6:beginled_seg=8'b1011_1110;end7:beginled_seg=8'b1110_0000;end8:beginled_seg=8'b1111_1110;end9:beginled_seg=8'b1111_0110;endendcase end1:beginb=count%10;led_dig=8'b1111_1101;case(b)0:beginled_seg=8'b1111_1100;end1:beginled_seg=8'b0110_0000;end2:beginled_seg=8'b1101_1010;end3:beginled_seg=8'b1111_0010;end4:beginled_seg=8'b0110_0110;end5:beginled_seg=8'b1011_0110;end6:beginled_seg=8'b1011_1110;end7:beginled_seg=8'b1110_0000;end8:beginled_seg=8'b1111_1110;end9:beginled_seg=8'b1111_0110;endendcase endendcasei=i+1;if(i==2)begini=0;endendendendmodule五、对应变量的管脚配置表Named:NodeName Direction Location1/elk Input PIN732/g[o:Input PIN1873/g[i Input PIN18?4Input:PIN1905g[习Input:PIN179尸D led[3]Output PIML6S7■/led[Z Output PIN1678・/led[f Output PIN163/led[0:Output PIN160号・10・/Output PIN3111■/led.®Output PIM3012 1心5]Output PIHZ913■/ledcL4:Output PINZ814・/led15]Output PIN2415・/ledcE2:Output PDN2516・led.cLi:Output PIN2617■_Z ledc[(J]Output PIN27IS•—hdd g[7]Output PIH37四■/leddig[&]Output PIN3920■/leddig[5;Output PIM6021leddig[4;Output PIN57・222ledd g[j]Output PIN5523■_Z ledcig[2]Output PIN5624g[l"Output PIH53Z5■/leddig[a;Output PIN6136■/lecijLT]Output PIM3627・2ledjL6]Output PIN3828・1刨」囚Output PIN1029■/ledjK Output PI卜L15301曲」[割Output PIN」斗Output PINL2 31■/lecijtr32■/1罚」[1]Output PIN1^・/ledjLO]Output PINL7兰兰・/ledr[0]Output PIM1734、丄ledseg[7]Output PIM6735■_Z ledseg[6]Output PIM6536sclfieg[5'Output PIM6457■/leds亡Output PIN6338・/led£eg[5[]Output PIM6839l£dseg[2;Output PIM6940■_Z ledseg[l]Output PIM7041sd-fiegpj]Output PIM7142/rri[Ci Input PIM17743/m[l:Input FIN」764+rri[2]In叫t PIM17545E[3Input PIM174-46read Input PIM19647/yes Input PIM151书/2ero Input PIM202书。

自动售货机VHDL设计

自动售货机VHDL设计

型状态机设计, 设计。 例6.15: Moore型状态机设计,完成自动售货机 : 型状态机设计 完成自动售货机VHDL设计。 设计 要求:有两种硬币: 元和 元和5角 投入1元 角硬币输出货物 角硬币输出货物, 要求:有两种硬币:1元和 角,投入 元5角硬币输出货物,投入 2元硬币输出货物并找 角零钱。 元硬币输出货物并找5角零钱 元硬币输出货物并找 角零钱。 状态定义: 表示初态 表示初态, 表示投入 角硬币, 表示投入 表示投入5角硬币 表示投入1元硬 状态定义:S0表示初态,S1表示投入 角硬币,S2表示投入 元硬 表示投入1元 角硬币 角硬币, 表示投入 元硬币。 表示投入2元硬币 币,S3表示投入 元5角硬币,S4表示投入 元硬币。 表示投入 输入信号: 表示投入1元硬币 输入信号:state_input (0)表示投入 元硬币,state_input (1)表示 表示投入 元硬币, 表示 投入5角硬币 输入信号为1表示投入硬币 输入信号为0表示未 角硬币。 表示投入硬币, 投入 角硬币。输入信号为 表示投入硬币,输入信号为 表示未 投入硬币。 投入硬币。 输出信号: 表示输出货物, moore 输出信号:comb_outputs (0)表示输出货物, comb_outputs (1)表 表示输出货物 表 reset 示找5角零钱 输出信号为1表示输出货物或找钱 输入信号为0 角零钱。 表示输出货物或找钱, 示找 角零钱。输出信号为 表示输出货物或找钱,输入信号为 current state_inputs _state clk 表示不输出货物或不找钱。 表示不输出货物或不找钱。 state_inputs next_st 根据设计要求分析,得到状态转换图如图所示。状态S0、 、 根据设计要求分析,得到状态转换图如图所示。状态 、S1、

基于VHDL的自动售货机的设计和实现论文

基于VHDL的自动售货机的设计和实现论文

《计算机组成原理》课程设计报告基于VHDL的自动售货机设计与实现课程设计任务书计算机与通信工程学院网络工程专业指导教师对学生在课程设计中的评价指导教师对课程设计的评定意见基于VHDL的自动售货机设计与实现摘要:本设计运用VHDL语言编写一个自动售货机的控制系统,该系统具有货物信息存储,进程控制,硬币处理,余额计算,显示等功能。

商品的种类、单价和数量在初始化时输入,然后存储。

可以识别的币种为硬币,五毛和一元的面额。

用户投入硬币,系统累计数量,然后对比物品的单价和数量,扣除价格,最后计算余额,可以找零。

设计没有考虑硬件的实现,只进行功能的相应仿真,性质为实验性质的课程设计。

关键词:VHDL、自动售货机、课程设计、MXAPLUSⅡ、系统仿真Abstract: This design use of VHDL language design a vending machine control system, the system have the functions to storagethe goods information, process control, coin handling, balance calculation, display and other functions. The type of goods, unit price and quantity in the initialization to be input, and then stored. Currency for the coins can be identified, fifty cents and one dollar denomination. User input coins, the system account sum, and then comparing the unit price and quantity of goods, net price, the final calculation of the balance, you can give change.Design did not consider the hardware implementation, only the corresponding functional simulation, experimental nature of the curriculum design.Keywords: VHDL, vending machines, curriculum design, MXAPLUS Ⅱ, system simulation目录1.引言 (7)1.1自动售货机系统概述 (7)1.2设计任务和主要容 (8)2.系统设计过程 (9)2.1自动售货机系统总体框图 (9)2.2系统功能模块 (9)2.3程序源代码 (11)3.系统仿真 (15)3.1系统仿真全图 (15)3.2系统分步仿真图 (16)4.总结 (20)参考文献 (21)1 引言随着现在生活节奏越来越快,自动售货机的出现大大方便了人们的日常生活。

基于VHDL的自动售货机设计_毕业设计论文

基于VHDL的自动售货机设计_毕业设计论文

本科生毕业论文(设计)基于VHDL的自动售货机设计目录中文摘要 (2)英文摘要 (3)引言……………………………………………………………………………………41.介绍及设计任务 (5)1.1EDA技术 (5)1.1.1EDA的介绍与发展 (5)1.1.2EDA的设计流程 (5)1.1.3VHDL介绍 (5)1.2自动售货机的应用与设计背景 (6)1.2.1自动售货机的应用介绍 (6)1.2.2自动售货机的设计要求 (6)2.系统分析与设计方案 (7)2.1系统分析 (7)2.2系统设计方案 (7)3.Max+PlusⅡ设计过程 (9)3.1Max+PlusⅡ的介绍 (9)3.2各模块的VHDL设计 (11)3.2.1货物信息的存储模块的设计 (12)3.2.2进程控制模块的设计 (12)3.2.3硬币处理模块的设计 (13)3.2.4余额计算模块的设计 (14)3.2.5显示功能模块的设计 (15)3.3顶层电路的设计流程 (16)3.4仿真功能与测试 (17)3.4.1 编译及仿真 (17)结束语 (21)参考文献 (22)致谢 (23)基于VHDL的自动售货机设计*****指导老师:****(****信息工程学院,*******)摘要:在当今社会随着电子技术获得了飞速发展的情况下,现在电子产品几乎渗透了社会的各个领域,有力的推动了社会生产里的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

首先EDA技术在进入21世纪后,得到了很大的发展,其基本特征是采用高级语言描述,具有系统级仿真和综合能力。

VHDL 硬件描述语言是涉及源文件可以采用类似与C语言的书写形式,并采用结构设计方法。

通过VHDL为基础设计了一种自动售货机的设计。

整个设计以两个计数器为核心,30秒计数器通过与按键联合控制整个购买过程;8秒计数控制饮料出口开关的自动开关,从而达到控制输出流量。

基于VHDL的地铁自动售票机系统设计

基于VHDL的地铁自动售票机系统设计

毕业设计说明书(论文)作者: 学号:系:专业:题目: 基于VHDL的地铁自动售票机系统设计指导者:(姓名) (专业技术职务)评阅者:(姓名) (专业技术职务)2014 年 5 月毕业设计(论文)评语学生姓名:班级、学号:题目:综合成绩:毕业设计(论文)评语毕业设计说明书(论文)中文摘要毕业设计说明书(论文)外文摘要本科毕业设计说明书(论文)第Ⅰ页共Ⅰ页目次1 引言 (1)1.1 研究意义 (1)1.2 研究背景 (1)1.3 研究任务 (2)1.4 研究内容 (2)2 理论基础 (3)2.1 FPGA (3)2.2 VHDL语言 (4)2.3 QuartusⅡ软件 (6)3 课题设计 (9)3.1 设计要求 (9)3.2 系统分析与设计方案 (9)4 程序仿真 (16)4.1 自动售票机主控模块的波形仿真 (16)4.2 车票选择模块的波形仿真 (17)4.3 纸、硬币处理模块的波形仿真 (18)4.4 自动找零、出票模块的波形仿真 (19)4.5 整个售票机系统的波形仿真图 (20)5硬件验证 (22)5.1 上箱过程 (22)5.2 上箱结果 (23)结论 (25)致谢 (26)参考文献 (27)附录 (28)1 引言自动售票机主要的控制模块可以用多种语言设计完成。

但这些语言有较大的差异,不利于后期的修改和使用者之间的交流。

而VHDL语言是一种功能强大、标准化的硬件描述语言。

用VHDL语言设计程序时可以先分块编写再合并,所以能够编写出多层次的程序,与此同时,VHDL语言编写的程序避免了其他语言只能在各自环境中使用的缺陷。

本章主要讨论了地铁的起源、发展,以及随着社会的发展,为了简化购票流程,从而设计出了自动售票机来代替人工售票等。

1.1 研究意义近年来,国民经济快速发展,城市的各项设施也越来越好,进而人们对交通的要求也不断增加。

因此,安全又快捷的地铁就出现了。

地铁的速度较快,且在行驶过程的载客数较多,这是公交所不具备的,而且它的出现增加了乘客的选择,也可以很好的缓解交通拥挤的情况。

基于Verilog HDL的自动售货机设计与仿真

基于Verilog HDL的自动售货机设计与仿真

电子技术Electronic Technology电子技术与软件工程Electronic Technology & Software Engineering 基于Verilog H D L的自动售货机设计与仿真李红科王庆春贾晓菲(安康学院电子与信息工程学院陕西省安康市725000 )摘要:本文应用Verilog H D L语言采用自顶而下的方法设计自动售货机,整个系统包括商品选择、确认、投币、找零和出货等模块。

在Modelsim平台进行功能仿真验证,经过仿真验证设计正确,符合设计要求。

关键词:Verilog H D L;自动售货机;模块设计1引言随着集成电路产业快速发展,电路集成度越来越高,以计算机辅助为基础的电子设计自动化(EDA Electronics Design Automation)技术成为集成电路设计重要工具m,Verilog HDL硬件描述语言是以文字形式描述数字系统硬件电路结构和行为的语言,只需描述电路的功能和电路模块之间的相互关系,设计者更加专注电路设计整体性能,使电路更加优化,提高设计效率|21。

自动售货机是一种常见的智能自动化设备,由于不受人直接参与,所以广泛应用在办公楼、操场、高速服务K等场所,大大降低时间、地点的限制,在节省人力资源方面有着明显优势。

2自动售货机设计思路有限状态机(FSM Finite-state Machine)是•种用来进行对象行为建模的工具,其作用是表示有限个状态以及这些状态之间相互转移和动作等行为的数学模型。

有限状态机广泛应用于建模行为、硬件电路设计、软件工程和网络协议等的设计。

在数字系统设计中,当某一事物发生连续变化时,可以采用有限状态机设计思路提高设计效率,增加程序可读性,降低错误概率,有限状态机设计思路是数字系统中最常用的设计方法之一 [3]。

2.1自动售货机系统总体设计该售货机电路设计要求:(1)每次只能出售一种商品。

(2)所售商品种类:售货机只售4种商品,所售商品编号分 别用四位二进制数从右向左表示为0001、0010、0100、1000,对应价格分别为2元、3元、4元、5元。

自动售货机控制模块VHDL程序设计及FPGA实现

自动售货机控制模块VHDL程序设计及FPGA实现

作 EE 的 tr公 Au o to , 子 设 计 自动 化 )技 术 其 优 劣 。 目前 ,VHDL 为 I E 工 A l e a 司 的 最 新 可 编 程 逻 辑 器 件 t ma i n 电 a U I 8 0 r 成 为 电 子 设 计 工 程 师 的 新 宠 。 ED A 业 标 准 硬 件 描 述 语 言 ,得 到 众 多EDA 开 发 工 具 Qu t S I . , 实 现 芯 tr公 0 技术 以计算机 为 工具 完成 数字 系统 的 公司 的支持 ,在 电子 工程领域 已经成 片 选 用 Ale a 司 FLEX1K系 列 的 逻 辑综 合 、布 局布线 和设 计仿真 等工 为事 实上 通 用 硬 件 描 述 语 言 。 作 。 电路 设 计 者 只 需 要 完 成 对 系 统 功
需 集 中精 力进 行电子 系统 的设计和 性 的硬 币 。另外 设置一 复位 按钮 , 当复 状 态机的VHDL 表述丰 富多样 ,程 序
母嚣奄寻
21鼎{ 9{ 舟
47
层 次 分 明 , 构 清 晰 ,易 读 易 懂 ;在 结
c mb o

o t us u p t表示。c mb o t us0 o _ up t() s t<= 0 一 异 步 复 位 te S; 一 a
EPFIK1LC8 — ;首先 在计算机上 O 0 44
本 文 采 用 VHDL 为 工 具 描 述 了 完成程 序设 计 、编译及 时序 仿真 ,然 作
能 的 描述 , 可 以 由计 算机 软 件进 行 就
自动 售 货 机 控 制 模 块 的 逻 辑 控 制 电 后 将 经 过 验 证 的 设 计文 件 下 载 到 选 择
可 以 避 免 这 些 烦 琐 的 过 程 ,直 接 利 用

基于VHDL的自动售货机系统设计

基于VHDL的自动售货机系统设计

基于VHDL的自动售货机系统设计赵杰【摘要】采用自顶向下的设计原则和模块化的设计思想,将自动售货机系统划分为分频、主控、译码和显示等模块.各模块均采用硬件描述语言VHDL(超高速集成电路硬件描述语言)设计,用电路原理图实现各模块之间的连接关系,完成顶层设计实体.主控模块使用有限状态机完成,将基本功能的实现转换为状态的转移.最终完成的模拟自动售货机系统具有商品选择、投币处理、出货找零、异常退币等主要功能.在Quartus Ⅱ软件平台上完成工程设计,对各模块分别进行仿真,最后对顶层设计实体进行仿真验证.【期刊名称】《系统仿真技术》【年(卷),期】2015(011)002【总页数】5页(P167-171)【关键词】自动售货机;硬件描述语言;模块化【作者】赵杰【作者单位】商洛学院电子信息与电气工程学院,陕西商洛726000【正文语种】中文【中图分类】TP3911 引言自动售货机是能按照投入的货币自动售货的机器,它是贸易自动化的常用设备,受时间、地点的限制少,能节约人力、便利交易,是一种全新的贸易零售方式,又被称为24小时业务的小型超市[1]。

在自动售货机的控制方面,常采用单片机或PLC(可编程逻辑控制器)作为控制核心,完成整个系统的基本功能[2-5]。

然而,实际中主控芯片需和众多外围芯片或接口相连,或者需要进行功能扩展[6]。

用传统方式来应对日益复杂的要求显得力不从心。

而使用硬件描述语言在FPGA(现场可编程门阵列)上实现电路系统的现代EDA(电子设计自动化)技术,具有明显的优势[7-8]。

本文主要利用VHDL硬件描述语言编写程序代码,用状态机实现功能转换,以Quartus II软件作为运行平台,实现一个能够实现货物选择、投币、找零、多次购买等功能的自动售货机。

自动售货机采用模块化设计,可以对各模块实行独自设计、修订和调试,最终通过模拟仿真进行验证。

2 自动售货机设计为方便起见,设定自动售货机可以出售两种商品,标价分别为2元和3元。

自动售货机控制系统的VHDL实现(1)

自动售货机控制系统的VHDL实现(1)

目录一、概述 (1)二、自动售货机控制系统的实现............. 错误!未定义书签。

1、自动售货机功能描述及控制系统组成... 错误!未定义书签。

2、自动售货机控制功能的状态描述....... 错误!未定义书签。

3、自动售货机功能控制模块的VHDL实现 (3)4、投币输入信号电路的设计与实现 (4)5、自动售货机控制系统功能仿真 (5)三、结束语 (6)四、参考文献 (7)自动售货机控制系统的VHDL实现一、概述有限状态机FSM(Finite State Machine)及其设计技术是实用数字系统设计中实现高效率、高可靠逻辑控制的重要途径。

传统的状态机设计方法需进行繁琐的状态分配、绘制状态表、化简次态方程等,而利用VHDL可以避免这些繁琐的过程,直接利用状态转换图进行状态机的描述,所有的状态均可表达为CASE_WHEN结构中的一条CASE语句,而状态的转移则通过IF_THEN_ELsE语句实现。

此外,与VHDL的其它描述方式相比,状态机的VHDL表述丰富多样,程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的特点。

二、自动售货机控制系统的实现1、自动售货机功能描述及控制系统组成设计一个自动售货机的逻辑控制电路。

它有两个投币口分别为一元投币口和五角投币口,假设每次只能投入一枚一元或五角硬币,投入一元五角硬币后机器自动给出一瓶饮料,投入两元硬币后,在给出一瓶饮料的同时找回一枚五角的硬币。

图1为自动售货机控制系统方框图,由投币信号处理模块和功能控制模块组成。

投币找钱信号出货图1 自动售货机控制系统2、自动售货机控制功能的状态描述取投币信号为输入逻辑变量,投入一枚一元硬币时用A=1表示,未投入时A=0。

投入一枚五角硬币用B=1表示,未投入时B=0。

给出饮料和找钱为两个输出变量,分别用Z和Y 表示,给出饮料时Z=1,不给时Z=0,找回一枚五角硬币时Y=1,不找时Y=0。

根据上面的功能描述,可用三个状态S0,S1,S2表示,未投币前的初始状态为S0,投入五角硬币以后为S1,投入一元硬币后(包括投入一枚一元硬币和投入两枚五角硬币的情况)为S2,再投入一枚五角硬币后电路返回S0,同时输出为Z=1,Y=0;如果投入的是一枚一元硬币,则电路也应能返回S0,同时输出为Z=1,Y=1。

基于vhdl自动售货机的设计说明书

基于vhdl自动售货机的设计说明书

自动售货机的设计与实现摘要:本文介绍了VHDL的特点和应用,以自动售货机为例,详细说明了其实现过程。

本系统使用VHDL语言编写,用状态基来实现各功能,使用MAXPLUSⅡ进行仿真,模拟各模块的实现。

本文详细介绍如何运用VHDL语言及MAXPLUSⅡ进行仿真,本文设计的自动售货机实现了选择货物,投币,找零,显示,多次交易,在一次购买中选择多个货物等自动售货机的基本功能。

本文给出了各个模块的源程序、各模块的连接图以及各个模块的仿真图,并做出了详细的分析。

关键词:VHDL语言,MAXPLUSⅡ,自动售货机Design and implementation of vendingmachineElectronics and Information Science and Technology Candidate:JiangHuiAdvisor:CaiJianhuaAbstract: This article introduces the characteristics and application of VHDL, with a example of designing vending machines, describes detailedly the implementation process. The system uses the VHDL language, realizing every function uses state machines, applying MAXPLUS Ⅱto simulate in order to realize the function every modules.This article describes the use of VHDL language and MAXPLUS Ⅱsimulation, to achieve the vending machine's basic functions , as choose good, coin, give change, buy good more than one time, choose more than one good in one time, display, and so on. This article gives the original program of every modules and the simulating diagram of every modules and the combination of all of the modules, gives detail analyse of every simulating diagram as well.Keywords:VHDL language,MAXPLUSⅡ,Vending machine引言随着科技的发展和社会的进步,自动化商业机械有了越来越广泛的应用,自动售货机作为自动化商业机械的代表被广泛用于公共场所自动售货,给人们的生活带来了极大的方便。

HDL(Verilog)课程设计报告(自动售货机)

HDL(Verilog)课程设计报告(自动售货机)

Verilog HDL课程设计报告实验名称:基于Verilog HDL的自动售货机指导老师:xx冠军班级:信科12-1姓名:xx学号:第一章系统设计1.1系统设计(1)用四个发光二极管分别模拟售出价值为5角、1元、1.5元和2元的小商品,购买者可以通过开关选择任意一种标价中的小商品。

(2)灯亮时表示该小商品售出。

(3)用开关分别模拟5角、1元硬币和5元纸币投入,可以用几只发光二极管(或数码管)分别代表找回剩余的硬币。

(4)每次只能售出一种小商品,当所投硬币达到或超过购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态;(5)当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初始状态。

第二章详细设计2.1自动售货机状态描述判断开关被按下的个数N。

若N>=2表示所选本次选择无效,返回初始状态;若N=1则显示所选商品,并继续执行下面的流程。

3个开关分别代表三种商品。

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投币状态当选好商品后,开始投币。

同样有一标志位btn_price表示投币金额。

投币口只接受三种面值的钱币0.5元、1元和5元,可以同时投入多种面值钱币。

投完币后,先有一个确认买商品的过程,若投了币但又不购买商品了,就将全部投币金额退回;若确认购买商品,则进入下一状态——找零状态。

自动售货机控制系统VHDL有限状态机实现

自动售货机控制系统VHDL有限状态机实现

自动售货机控制系统VHDL有限状态机实现1 引言有限状态机FSM(Finite State Machine)及其设计技术是实用数字系统设计中实现高效率、高可靠逻辑控制的重要途径。

传统的状态机设计方法需进行繁琐的状态分配、绘制状态表、化简次态方程等,而利用VHDL可以避免这些繁琐的过程,直接利用状态转换图进行状态机的描述,所有的状态均可表达为CASE_WHEN结构中的一条CASE语句,而状态的转移则通过IF_THEN_ELsE语句实现。

此外,与VHDL的其它描述方式相比,状态机的VHDL表述丰富多样,程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的特点。

2 自动售货机控制系统的实现2.1 自动售货机功能描述及控制系统组成设计一个自动售货机的逻辑控制电路。

它有两个投币口分别为一元投币口和五角投币口,假设每次只能投入一枚一元或五角硬币,投入一元五角硬币后机器自动给出一瓶矿泉水,投入两元硬币后,在给出一瓶矿泉水的同时找回一枚五角的硬币。

图1为自动售货机控制系统方框图,由投币信号处理模块和功能控制模块组成。

2.2 自动售货机控制功能的状态描述取投币信号为输入逻辑变量,投入一枚一元硬币时用A=1表示,未投入时A=0。

投入一枚五角硬币用B=1表示,未投入时B=0。

给出矿泉水和找钱为两个输出变量,分别用Z和Y表示,给出矿泉水时Z=1,不给时Z=0,找回一枚五角硬币时Y=1,不找时Y=0。

根据上面的功能描述,可用三个状态S0,S1,S2表示,未投币前的初始状态为S0,投入五角硬币以后为S1,投入一元硬币后(包括投入一枚一元硬币和投入两枚五角硬币的情况)为S2,再投入一枚五角硬币后电路返回S0,同时输出为Z=1,Y=0;如果投入的是一枚一元硬币,则电路也应能返回S0,同时输出为Z=1,Y=1。

根据上面的分析可得到状态转换图如图2所示。

2.3 自动售货机功能控制模块的VHDL实现根据图2所示的状态转换图,用VHDL语言中的CASE_WHEN结构和IF_THEN_ELSE语句实现控制功能,源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shj_ctrl ISPORT(A,B:IN STD_LOGIC;clk:IN STD_LOGIC;Z,Y:OUT STD_LOGIC);END shj_ctrlARCHITECTURE beha OF shi_ctrl ISTYPE states IS(S0,S1,S2);SIGNAL state:states;SIGNAL X:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINX<=A&B;PROCESS(x,state)BEGINIF rising_edge(clk) THENCASE state ISWHEN S0=>Z<='0';Y<='0';IF(X="01")THENstate<=s1;ELSIF(X="10")THENstate<=s2;ELSEstate<=s0;END IF;WHEN S1=>Z<='0';Y<='0';IF(X="01")THENstate<=s2;ELSIF(X="10")THENstate<=S0;Z<='1';Y<='0';ELSEstate<=s1;END IF;WHEN S2=>Z<='0';Y<='0';IF(X="01")THENstate<=S0;Z<='1';Y<='0';ELSIF(X="10")THENstate<=s0;Z<='1';Y<='1';ELSEstate<=s2;END IF;END CASE;END IF;END PROCESS;END beha;c上面程序中,A、B分别为一元硬币和五角硬币驱动信号,Z为矿泉水输出信号,Y为找钱输出信号。

基于VHDL的自动售货机的设计与实现

基于VHDL的自动售货机的设计与实现

自动售货机实验报告一、设计任务设计一个自动售货饮料机,设每瓶饮料元,投币口有两个,1元硬币(one)或5角硬币(half),每个时刻可以输入其中一种硬币,自动售货机有找零钱功能,oute为出货,outm 为找零。

二、设计过程1.设计思路:状态定义:s0表示初态,s1表示投入5角,s2表示投入1元,s3表示投入1元5角,s4表示投入2元,s5表示投入2元5角,s6表示投入3元。

输入信号:state_outputs(0)表示输入货物,comb_outputs(1)表示找5角硬币,输入信号为1 表示投入硬币,输入信号为1表示未投入硬币。

输出信号:comb_outputs(0)表示输出货物,comb_outputs(1)表示找5角零钱,输出信号为1表示输出货物或找零,输入信号为0表示不输出货物或找零。

根据设计要求分析,得到状态转化图如下图所示,其中状态为s0、S1、S2、S3、S4、S5、S6;输入为state_inputs(0,1);输出为comb_outouts(0,1);输入仅与状态有关,因此将输入写在状态圈内部。

002.设计步骤:(1)创建工程。

打开QuartusII,创建一个新的工程并命名。

根据实验室条件,选择的芯片为cyclone系列中的EP1C6Q240C8芯片。

输入VHDL文本文件。

新建文本文件VHDL file。

输入程序并保存。

程序如下:library ieee;use autosell isport(clk,reset :in std_logic;state_inputs:in std_logic_vector(0 to 1);comb_outputs:out std_logic_vector(0 to 1)); end autosell;architecture be of autosell istype fsm_st is(s0,s1,s2,s3,s4,s5,s6);signal current_state,next_state:fsm_st;beginreg:process(reset,clk)beginif reset='1'then current_state<=s0;elsif rising_edge(clk)thencurrent_state<=next_state;end if;end process;com:process(current_state,state_inputs)begincase current_state iswhen s0=>comb_outputs<="00";ifstate_inputs="00" then next_state<=s0;elsif state_inputs="01" then next_state<=s1;elsif state_inputs="10" then next_state<=s2; end if;when s1=>comb_outputs<="00";ifstate_inputs="00" then next_state<=s1;elsif state_inputs="01" then next_state<=s2;elsif state_inputs="10" then next_state<=s3; end if;when s2=>comb_outputs<="00";ifstate_inputs="00" then next_state<=s2;elsif state_inputs="01" then next_state<=s3;elsif state_inputs="10" then next_state<=s4; end if;when s3=>comb_outputs<="00";ifstate_inputs="00" then next_state<=s3;elsif state_inputs="01" then next_state<=s4;elsif state_inputs="10" then next_state<=s5; end if;when s4=>comb_outputs<="00";ifstate_inputs="00" then next_state<=s4;elsif state_inputs="01" then next_state<=s5;elsif state_inputs="10" then next_state<=s6;end if;when s5=>comb_outputs<="10";ifstate_inputs="00" then next_state<=s0;elsif state_inputs="01" then next_state<=s1;elsif state_inputs="10" then next_state<=s2;end if;when s6=>comb_outputs<="11";ifstate_inputs="00" then next_state<=s0;elsif state_inputs="01" then next_state<=s1;elsif state_inputs="10" then next_state<=s2;end if;end case;end process;end be;(2)编程序。

基于VerilogHDL的自动售货机设计

基于VerilogHDL的自动售货机设计

基于V e r i l o g H D L的自动售货机设计Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】密级:NANCHANG UNIVERSITY学士学位论文THESIS OF BACHELOR(2012 —2016年)题目基于Verilog HDL的自动售货机设计学院:信息工程学院系电子信息工程系专业班级:学生姓名:学号:指导教师:职称:教授起讫日期:基于Verilog HDL的自动售货机设计学生姓名:田启泽指导教师:陶凌摘要自动售货机是商业自动化的常用设备,它不受地点和时间的限制,能够支持线上,线下多种支付方式,出货迅速,并且操作简单方便,因此受到了社会各群体的欢迎。

现目前自动售货机多为单片机设计,常出现因功能单一不能满足顾客需求,性能不稳定带来各种售货出错等现象。

本文将论述采用EDA方法,以QuartusⅡ为软件开发平台,使用Verilog HDL 语言设计,经过仿真后,在FPGA器件中实现自动售货机系统的详细流程。

经过仿真验证设计可以实现投币计次,两种售价均为两元的商品选择,购物操作无条件取消,按键消抖,以及投币退币数量显示功能。

硬件电路用一个按键电路实现投币功能,以led的点亮的数量指示投币的数量和商品出货情况,并以七段数码管显示退币的数量。

关键词:自动售货机;Verilog HDL;FPGA;EDA;Quartus ⅡDesign of Vending Machine Based on VHDLAbstractVending machines are commonly used as commercial automated equipment, it is not restricted some trouble aspects,such as place,time and so on. It support online, offline payment methods, fast shipping, and easy operation, therefore has been welcomed by all social groups. Vending machines are currently a mostly single-chip design, often due to a single function can not meet customer needs, bring a variety of sales performance problems due to unstable capability.This article will discusses the selling process of the vending machine by using QuartusⅡas software development platform, with the EDA method and through Verilog HDL language designing, after simulating, complying vending machine system in FPGA devices. After simulation designed it can be achieved coin metering and selection of commodities both are priced at two yuan, unconditionally canceled, key debounce and coin-coin number display. Hardware circuit using a function key circuits replays coin-operated,the number of led lights indicates the number of shipments of goods and coin, and using seven-segment LED to display the number of coin return.Keywords: vending machine;Verilog HDL;FPGA;EDA;Quartus Ⅱ目录14683 4 5 6第一章绪论自动售货机研究背景中国产业调研网发布的2016年版中国自动售货机市场现状调研与发展趋势趋势分析报告认为,居民收入水平显步攀升,自动售货机的迅猛发展得益于消费群体追逐灵活、智能、高效以及自助式服务。

基于vhdl售货机设计说明书

基于vhdl售货机设计说明书

基于VHDL的自动售货机的设计姓名班级:学号:指导老师:摘要:1)EDA:EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

现在对EDA的概念或范畴用得很宽。

包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。

目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。

2)售货机简介:一般的自动售货机由钱币装置、指示装置、贮藏售货装置等组成。

钱币装置是售货机的核心分选钱币的种类,计算金额。

如果投入的金额达到购买物品的数值即发出售货信号,并找出余钱。

指示装置用以指示顾客所选商品的品种。

3)现状及发展趋势:从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。

大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。

从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。

从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自动售货机实验报告
一、设计任务
设计一个自动售货饮料机,设每瓶饮料2.5元,投币口有两个,1元硬币(one)或5角硬币(half),每个时刻可以输入其中一种硬币,自动售货机有找零钱功能,oute为出货,outm为找零。

二、设计过程
1.设计思路:
状态定义:s0表示初态,s1表示投入5角,s2表示投入1元,s3表示投入1元5角,s4表示投入2元,s5表示投入2元5角,s6表示投入3元。

输入信号:state_outputs(0)表示输入货物,comb_outputs(1)表示找5角硬币,输入信号为1 表示投入硬币,输入信号为1表示未投入硬币。

输出信号:comb_outputs(0)表示输出货物,comb_outputs(1)表示找5角零钱,输出信号为1表示输出货物或找零,输入信号为0表示不输出货物或找零。

根据设计要求分析,得到状态转化图如下图所示,其中状态为s0、S1、S2、S3、S4、S5、S6;输入为state_inputs(0,1);输出为comb_outouts(0,1);输入仅与状态有关,因此将输入写在状态圈内部。

2.设计步骤:
(1)创建工程。

打开QuartusII ,创建一个新的工程并命名。

根据实验室条件,选择的芯片为cyclone 系列中的EP1C6Q240C8芯片。

00
输入VHDL文本文件。

新建文本文件VHDL file。

输入程序并保存。

程序如下:library ieee;
use ieee.std_logic_1164.all;
entity autosell is
port(clk,reset :in std_logic;
state_inputs:in std_logic_vector(0 to 1);
comb_outputs:out std_logic_vector(0 to 1));
end autosell;
architecture be of autosell is
type fsm_st is(s0,s1,s2,s3,s4,s5,s6);
signal current_state,next_state:fsm_st;
begin
reg:process(reset,clk)
begin
if reset='1'then current_state<=s0;
elsif rising_edge(clk)then
current_state<=next_state;
end if;
end process;
com:process(current_state,state_inputs)
begin
case current_state is
when s0=>comb_outputs<="00";
if
state_inputs="00" then next_state<=s0;
elsif state_inputs="01" then next_state<=s1;
elsif state_inputs="10" then next_state<=s2; end if;
when s1=>comb_outputs<="00";
if
state_inputs="00" then next_state<=s1;
elsif state_inputs="01" then next_state<=s2;
elsif state_inputs="10" then next_state<=s3; end if;
when s2=>comb_outputs<="00";
if
state_inputs="00" then next_state<=s2;
elsif state_inputs="01" then next_state<=s3;
elsif state_inputs="10" then next_state<=s4; end if;
when s3=>comb_outputs<="00";
if
state_inputs="00" then next_state<=s3;
elsif state_inputs="01" then next_state<=s4;
elsif state_inputs="10" then next_state<=s5; end if;
when s4=>comb_outputs<="00";
if
state_inputs="00" then next_state<=s4;
elsif state_inputs="01" then next_state<=s5;
elsif state_inputs="10" then next_state<=s6;
end if;
when s5=>comb_outputs<="10";
if
state_inputs="00" then next_state<=s0;
elsif state_inputs="01" then next_state<=s1;
elsif state_inputs="10" then next_state<=s2;
end if;
when s6=>comb_outputs<="11";
if
state_inputs="00" then next_state<=s0;
elsif state_inputs="01" then next_state<=s1;
elsif state_inputs="10" then next_state<=s2; end if;
end case;
end process;
end be;
(2)编程序。

新建VHDL file。

输入程序并保存。

(3)编译程序,进行检验,纠错等。

(4)制作仿真波形,进行仿真,检查是否有错,功能是否能够实现。

(5)下载至芯片。

三、实验结论
仿真波形如下图所示:
四、实验体会
经过这次对自动饮料售货机系统的设计,让我对EDA设计有了更一步的认识,同时也对EDA这门课程有了更深入的了解。

这次设计让我了解了关于自动饮料售货机的原理与设计理念。

对Quartus Ⅱ软件的运用更加熟练。

在摸索该如何设计程序使之当然这个设计存在许多的不足,比如这个设计不能识别纸币,且只能卖一种饮料,数码显示时不能显示当前所投钱的总数而是只显示0、0.5和1元,所以这个设计还需要进一步的修改与完善,在此设计的基础上我们可以加一个键盘让售货机卖更多种类的饮料。

另外,我们还更加充分的认识到,EDA这门课程在科学发展中的至关重要性。

查阅参考书的独立思考的能力以及培养非常重要,我们在设计电路时,遇到很多不理解的
东西,有的我们通过查阅参考书弄明白,有的通过网络查到,但由于时间和资料有限我们更多的还是独立思考。

相互讨论共同研究也是很重要的,经常出现一些问题,经过和同组同学讨论和资料的查询最终得到了解决。

锻炼了我们的团队合作精神及分工合作的能力。

相关文档
最新文档