自动售货机 verilog
基于FPGA的自动售货机设计
基于FPGA的自动售货机设计
自动售货机最基本的功能就是为顾客提供可供选择的物品并接受付款,然后交付所选物品。自动售货机还需要具备一些其他的功能,例如在货品数量低于设定值时警报,更新商家的库存信息等。
基于FPGA的自动售货机设计包括以下步骤:
1. 确定自动售货机的物品种类和数量,并选择相应的电机、传感器和显示器等组件。
2. 设计自动售货机的控制电路,包括接口电路、逻辑电路和中央处理器(CPU)等。其中,FPGA可以作为逻辑电路的核心部件,负责控制整个自动售货机的操作流程。
3. 利用Verilog HDL编写FPGA的逻辑设计,并通过仿真和测试确保正确性和可靠性。FPGA的逻辑设计应该能够控制电机的旋转、传感器的检测和显示器的显示等操作。
4. 将FPGA的逻辑设计下载到实验板上并测试它的功能和性能。在测试过程中需要注意电机的工作效率、传感器的准确性和显示器的清晰度等方面的问题。
5. 将整个自动售货机装在一个外壳中,并测试整个系统的可靠性和用户友好性。在测试过程中需要关注售货机的操作流程、货品存储和取出的方便程度以及付款方式的安全性等方面的问题。
综上所述,基于FPGA的自动售货机设计需要充分考虑到售货机的各个方面,包括物品种类、控制电路、逻辑设计和用户体验等,以提供高质量和可靠性的售货机。
基于FPGA的自动售货控制系统设计
基于FPGA的自动售货控制系统设计概述
本文介绍了一个基于FPGA的自动售货控制系统的设计。该系统包括一个电子标签读写器、一个货道控制器和一个运营管理系统。读写器用于读写货物的信息,货道控制器用于控制货道的状态,运营管理系统用于监控和管理整个系统。
硬件设计
电子标签读写器采用HF RFID技术,能够读取和写入RFID标签中的数据。货道控制器采用了FPGA芯片,通过IIC总线控制电机的转动,实现货道的开关。运营管理系统采用了嵌入式系统,通过与FPGA芯片的通信,实现对货道控制器的监控和管理。
软件设计
电子标签读写器的软件采用C语言编写,通过串口通信将读取到的数据发送到FPGA芯片。货道控制器的软件采用Verilog HDL语言编写,实现IIC总线的接口和电机的控制。运营管理系统的软件采用Python编写,通过FPGA芯片的通信接口与货道控制器进行通信,实现对货道的状态监控和管理。
应用场景
该自动售货控制系统可以应用于各种场景,如超市、自助售卖机、自动售货机等。系统支持多种货物类型,可以灵活满足不同需求。同时,运营管理系统可以实时监控货道的状态,管理货道的补货和维护,提高售货效率和用户体验。
结论
基于FPGA芯片的自动售货控制系统,通过电子标签读写器、货道控制器和运营管理系统的设计,实现了对售货过程的自动控制和管理。该系统具有高效、灵活等特点,在实际应用中具有广泛的应用前景。
自动投币售货机的控制系统设计verilog
工学院
二级项目报告
二级项目题目:自动投币售货机的控制系统设计指导教师:
系别:电子工程系专业:通信工程
完成时间:2017年9月
目录
1. 项目内容与要求 (3)
2. 画出投币售货机的控制系统的状态表,状态图,和状态编码方式 (4)
3. 用Verilog实现售货机的控制系统描述,并进行仿真 (5)
3.1 time.v (5)
3.2 state.v (7)
3.3 仿真 (10)
4. 用C/C++语言实现售货机的有限状态机,并进行测试和仿真 (11)
4.1 gcov代码 (11)
4.2 仿真 (14)
1. 项目内容与要求
投币售货机的接收中国的硬币1元和5角,当售货机收到1.5元时出货,无法找零。(1.5元可以是3个5角,或是1个1元和1个5角)项目以仿真形式完成。
1.画出投币售货机的控制系统的状态表,状态图,和状态编码方式。
2.用Verilog实现售货机的控制系统描述,并进行仿真。
要求仿真测试中给出Code Coverage数据,Code Coverage概念可见PDF 文档。
3.用C/C++语言实现售货机的有限状态机,并进行测试和仿真。
同样要求有测试的Code Coverage数据,具体的工具可用gcc自带的gcov或者是VC的coverage工具
4.秋季学期开学前,每个小组需提交一份项目的报告,并作PPT陈述。
2.画出投币售货机的控制系统的状态表,状态图,和状态编
码方式
3.用Verilog实现售货机的控制系统描述,并进行仿真3.1 time.v
`timescale 1ns/1ns
module times;
(仅供参考)自动售饮料机销售verilog设计
//时钟、复位信号 //输入 //输出
reg current_state;
//现态寄存器
parameter
S0=3`b000; S1=3`b001; S2=3`b011; S3=3`b010; S4=3`b110; S5=3`b111; S6=3`b101;
//状态编码
always @(posedge clk or posedge reset)
always @(posedge clk) begin if(reset)
begin sell=0; wjout=0;D=S0;end case(D) S0: //0yuan
if(wjin) D=S1; else if(yyin) D=S2; S1: //0.5yuan if(wjin) D=S2; else if(yyin) D=S3; S2: //1yuan if(wjin) D=S3; else if(yyin) D=S4; S3: //1.5yuan if(wjin) D=S4; else if(yyin) begin D=S0; sell=1; wjout=0; end S4: //2yuan if(wjin) begin sell=1; wjout=0;D=S0; end else if(yyin) begin D=S0;sell=1; wjout=1; end default: //其他状态 begin sell=0;wjout=0;D=S0;end endcase end endmodule
verilog设计 自动售货机
自动售货机
1、设计说明
本设计是以现场可编程逻辑器件(FPGA)为核心的自动售货机,利用Modesim 软件编写verilog硬件描述语言程序以实现自动售货功能。
1.1、系统设计描述
(1)用四个发光二极管分别模拟售出价值为2元、5元、7元和10元的商品,购买者可以通过开关选择任意一种标价中的小商品;
(2)灯亮时表示该小商品售出;
(3)用开关分别模拟1元、5元,10元和20元货币投入,用四支发光二极管代表投入的货币的面值;
(4)每次只能售出一种小商品,当所投硬币达到或超过购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态;
(5)当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初始状态。系统框图如图1.1所示:
图1.1 系统框图
2、详细状态描述
2.1 初始状态
rst为复位键,低电平有效,实现系统复位。
2.2 选商品状态
分别有价格为2元、5元、7元和10元的商品,每次选择商品前,设置一个标志位btn_sel_goods表示选择商品状态。此自动售货机每一次售货时只能一次选择一种商品,当同时选择两种以上时,选择商品无效,数码管显示清零,重新进行商品选择。选择商品后,数码管显示所选商品价格。
2.3 投币状态
当选好商品后,开始投币。同样有一标志位btn_price表示投币金额。投币口只接受面值为1元、5元10元和20元的货币,可以同时投入多种面值钱币。投完币后,先有一个确认买商品的过程,若投了币但又不购买商品了,就将全部投币金额退回;若确认购买商品,则进入下一状态。
2.4 找零状态
自动售货机fpga与verilog代码
深圳大学课程论文题目设计一个自动售货机成绩专业课程名称、代码年级姓名
学号时间年月
设计一个自动售货机
基本要求:可以对3种不同种类的货物进行自动售货,价格分别为A=1.00, B=1.50, C=1.60。售货机可以接受1元,5角,1角三种硬币(即有三种输入信号IY,IWJ,IYJ),并且在7段数码管(二位代表元,一位代表角)显示已投入的总钱数,选择货物的输入信号Ia,Ib,Ic,输出指示信号为Sa, Sb ,Sc 分别表示售出相应的货物,同时输出的信号yuan, jiao代表找零,并显示在7段数码管上。
规格说明:
1.按一下button1按钮,表示购买货物A,第一个LED灯亮;按两下button1按钮,表示
购买货物B,第二个LED灯亮;按三下button1按钮,表示购买货物C,第三个LED灯亮。
2.LED灯亮后,开始输入硬币。button2按一下,输入1元,按两下,输入两元,以此类
推;Button3按一下输入5角,按两下代表1元,以此类推;button4按一下输入1角,按两下输入2角,以此类推。7段数码管显示已投入的总钱数,再次按下button1键,7段数码管显示找零数目,同时指示货物的LED灯熄灭。
3.本实验使用FPGA板:Sparant6XC6SLX16CSG324C(建project时,需要选择该芯片的
型号)。
论文要求:
1.论文的格式采用标准的深圳大学以论文、报告等形式考核专用答题纸;
2.论文中应完包括ASM图, 以及VerilogHDL代码,并且代码应该与ASM图相一致.
3.论文应包括该电路的VerilogHDL仿真.
Verilog语言的自动售货机
自动售货机
完成时间:2010/7/30
一、实验目的
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)初始化模块
SOC设计实验报告
西北工业大学《SOC设计实践》实验报告学院:软件与微电子学院
学号:
姓名:
专业:
时间:
实验地点:
实验一、编写一个自动售货机Verilog HDL模型
实验二、设计PCM30基群帧同步电路
SOC设计实验报告
西北工业大学《SOC设计实践》实验报告学院:软件与微电子学院
学号:
姓名:
专业:
时间:
实验地点:
实验一、编写一个自动售货机Verilog HDL模型
实验二、设计PCM30基群帧同步电路
且达到4次
SOC设计实验报告
西北工业大学《SOC设计实践》实验报告
学院:软件与微电子学院
学号:
姓名:
专业:
时间:
实验地点:
实验一、编写一个自动售货机Verilog HDL模型
#10
$stop;
end
AUTOSEL AUTOSEL(five_cents,ten_cents,clk,rst_n,soda_out);
Endmodule
测试波形图如下所示:
Autosel-vcs仿真波形
最下边一行代表的是投5分,倒数第二行代表的是复位信号,第三行是时钟信号,第二行是投10分,由图可知,在投3个5分,1个5分、1个10分,两个10分,1个10分、1个5分,2个5分、1个10分都可使输出信号为1,满足题意要求。
4)使用Synopsys DC进行综合。
答:autosel.con约束文件如下:
##################Constrain######################
#reset_design
create_clock -period 490.2 [get_ports clk]
#创建频率为2.04MHz的时钟信号
set_clock_latency -source -max 10 [get_clocks clk]
set_clock_latency -max 10 [get_clocks clk]
set_clock_uncertainty -setup 20 [get_clocks clk]
set_clock_transition 10 [get_clocks clk]
set_input_delay -max 60 -clock clk [get_ports ten]
简单自动售货机VerilogHDL程序
自动售货机VerilogHDL程序
一个简单的自动售卖饮料机的程序.该机器具有投币,显示余额,购买六种饮料,退钱等功能,为了更具实用性,增添了饮料选择允许提示和投币允许提示的功能。具体形容,可投入一元、五元、十元和二十元面值的钱币,显示出当前的余额,并根据当前的余额提示能购买哪些饮料,选择某种饮料,则输出选定的饮料,同时余额减去相应的金钱.若选择退钱,机器就退出所有的钱,余额清零.
下图为功能示意图:
程序的状态表:
程序中包含了一个状态机,定义了一个任务(task)和函数(function),用该任务调用了该函数,使用若干分支语句,详见附后源程序和测试程序。
附上程序编译仿真图:
源程序如下:
`define one 3'b001
`define five 3'b010
`define ten 3'b011
`define twenty 3’b100
module automart(money,state,moneyout,coinable,adrkable,bdrkable,
cdrkable,drkout1,drkout2,drkout3,drkout4,drkout5,
drkout6,coin,clk,reset,moneyback,choice1,choice2,
choice3,choice4,choice5,choice6);
input[2:0]coin;//投币输入,分为1、5、10、20元四种输入
input clk,reset,moneyback,choice1,choice2,choice3,choice4,
基于Verilog HDL自动售货机系统设计
De i n o n i g M a h n y t m s d o rl g HDL n u g sg fVe d n c i e S se Ba e n Ve i o La g a e
ZHANG . r Ke e
( ol eo l t c l n ier g L n D n nvr t , ig a g7 5 0 G nu C l g E e r a gn ei , o g o g U i s y Q n y n 4 0 0, a s ) e f ci E n ei
1 el 硬件描述语言的简单介绍 Vr g i o
Vr g D 是一种硬件描述语言, el L i H o 用于从算法级、 门级 到开关级的 多种抽象设计层次的 数字系统建模. 被建模的数 字系统对象的 复杂性可以介于简单的门和完整的电子数字 系 之间 数 系统 按 描述, 在相同 述中 统 . 字 能够 层次 并可 描 显 式地进行时序建模. 它是在C 语言基础上发展起来的一种硬 件描述语言, 它是由GA Gt aDsn umt ) 后被 D (awy egAt a n ( e i o i o Cd c收购) a ne e 公司的Pi ob于 1 3 h o y 9 年创建的, l r M 8 最初只 设计了一个仿真与 验证工具, 之后又陆续开发了 相关的故障 模拟与时序分析工具.90 Cd c公司成立OIOe 1 年,a ne 9 e V(p n
基于Verilog语言的简单自动售货机
EDA设计基础实验课程论文
题目基于Verilog语言的简单自动售货机
学院通信学院
专业班级通信111班
学生大彬哥
指导教师大力会
2013年 6月 12日
摘要
本设计是以现场可编程逻辑器件(FPGA)为核心的自动售货机,利用QuartusⅡ软件编写Verilog HDL硬件描述语言程序以实现自动售货功能。
本设计主要以程序为主,硬件方面则使用实验箱,将程序各变量端口与实验箱管脚进行相应的配置,用八个开关分别代表商品价格、所投钱币价格与确认付款找零操作。当选择好商品并投币后,数码管显示所选商品价格与投入钱币价格;按下确认付款开关,数码管显示应该找多少钱,蜂鸣器响,对应商品LED灯亮。若所投钱币不足所选商品价格,对应警告钱币不足的LED灯亮。
关键字:现场可编程逻辑器件 Verilog HDL 自动售货机 QuartusⅡ
Abstract
This 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 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 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 selected commodity prices, corresponding warning money shortage of LED lights.
用verilog编写16位加法器乘法器自动售货机
Verilog课程实验报告
实验1十六位超前进位加法器
1.1系统设计要求
用超前进位加法器实现一个有符号位的16位加法器,并且考虑溢出的情况
2.1详细设计
根据超前进位加法器的原理Co = G | ( P & Ci ) S = P ^ Ci 设计出4位加法器的子模块,然后通过4个4位加法器的相连来得到十六位的加法器。原理如下图所示。溢出用flag=0表示。
3.1程序
//-------------16位超前进位加法器-----------------
module cla16(a,b,s,flag); //含有a ,b ,输出s ,进位flag 的模块 input [15:0] a,b;//输入a ,b output [16:0] s; //输出 s output reg flag; //进位
FA FA FA FA
P 0
G 1
P 0G 1
P 2G 2
P 3G 3
C o,3
C o,2
C o,1
C o,0
C i,0
FA FA FA FA
P 0G 1
P 0
G 1
P 2G 2
P 3G 3
C o,2
C o,1
C o,0
C i,0
C o,3
M u l t i p l e x e r
BP=P o P 1P 2P 3
Idea: If (P0 and P1 and P2 and P3 = 1)then C o3 = C 0, else “kill” or “generate”.
wire pp4,pp3,pp2,pp1;
wire gg4,gg3,gg2,gg1;
wire [15:0] Cp;
wire [15:0] p,g;
SOC设计实验报告
西北工业大学《SOC设计实践》实验报告
学院:软件与微电子学院
学号:
姓名:
专业:
时间:实验地点:
实验一、编写一个自动售货机Verilog HDL模型
#2 five_cents=0;
#10 ten_cents=1;
#2 ten_cents=0;
#10
$stop;
end
AUTOSEL AUTOSEL(five_cents,ten_cents,clk,rst_n,soda_out);
Endmodule
测试波形图如下所示:
Autosel-vcs仿真波形
最下边一行代表的是投5分,倒数第二行代表的是复位信号,第三行是时钟信号,第二行是投10分,由图可知,在投3个5分,1个5分、1个10分,两个10分,1个10分、1个5分,2个5分、1个10分都可使输出信号为1,满足题意要求。
4)使用Synopsys DC进行综合。
答:autosel.con约束文件如下:
##################Constrain######################
#reset_design
总的面积为25.75um2。
最终的综合电路图:
Autosel dc 综合电路
三、实验报告要求
1)设计思路,状态定义,转台转换图。
2)使用Verilog HDL完成设计。
3)编写testbench。
4)VCS完成仿真,对仿真结果进行分析。
5)编写Synopsys DC综合脚本文件dc.tcl以及约束文件autosel.con。
6)使用Synopsys DC进行综合,给出综合后的报告,包括rc.rpt,rt.rpt,ra.rpt,并做必要说明。
自动售饮料机 Verilog语言
自动售饮料机 Verilog语言
(1)分频模块(实现1s灯变换一次)
module half_clk(
input clk_in,
input rst,
output reg clk_out
);
reg [24:0]count;
always @(posedge clk_in or posedge rst )
if(rst) begin clk_out<=0; count<=0; end
else begin
if(count==24999999) begin clk_out<= ~clk_out; count<=0; end
else count<=count+1;
end
endmodule
(2)实现模块
module toubi(rst,clk,K1,K2,K5,L0,L1,L2,L3,L4) input rst,clk,K1,K2,K5; output reg L0,L1,L2,L3,L4;
reg [2:0]state;
parameter
s0=3'b000;
s1=3'b001;
s2=3'b010;
s3=3'b011;
s4=3'b100;
always @(posedge clk or posedge rst)
if(rst) begin state<=s0;L0<=0;L1<=0;L2<=0;L3<=0;L4<=0; end else case(state)
s0:if(k1==1) begin
state<=s1;L0<=0;L1<=0;L2<=0;L3<=0;L4<=0; end
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SOPC及EDA技术课程结业报告题目:基于状态机的自动售货机设计
院(系)电气工程及其自动化
姓名
学号
班号
基于状态机的自动售货机设计
一.实验目的
1. 学习FPGA入门知识,了解FPGA的编程形式;
2. 掌握Quartus II的使用步骤;
3. 掌握基于状态机原理的自动售货机设计过程。
二.实验原理
自动售货机是可完成无人自动售货,集光、机、电一体化的商业自动化设备。自动售货机不受任何场地限制,方便快捷,可以每天24小时售货,因此深受上班族的欢迎,很多城市的公共场所里面都放置有自动售货机,出售的商品五花八门,从饮料、零食、香烟、糖果,到牙刷、方便面、自动照相机。近年来,我国的自动售货机行业突飞猛进:在汽车总站、商厦、医院、小区、学校等地区纷纷涌现出自动售货机的踪迹。这种方便快捷的购物方式越来越受到人们的青睐,同时也是现代化城市配套设施的需求。
因为自动售货机作为社会上完成商品零售和综合服务的独立设施,所以必须要求它的结构可靠、稳定而且执行效率高。传统的自动售货机控制系统采用单片机作为控制核心,这样不仅会在输入输出接口上做大量的工作,而且系统的抗干扰性也比较差。可编程控制器(Programmable Logical Controller,简称PLC)是综合了计算机技术、自动控制技术和通讯技术而发展起来的一种新型的工业控制装置,它具有可靠性高、编程简单、维护方便等优点,已在工业控制领域得到广泛地应用。 PLC是以CPU为核心, 综合了计算机技术和通信技术发展起来的一种通用的工业自动控制装置, 是现代工业控制的三大支柱(PLC、机器人和CAD/CAM) 之一。PLC的工作原理与计算机的工作原理基本是一致的, 可以简单地表述为在系统程序的管理下, 通过运行应用程序完成用户任务。但是PLC也有它自己的特点, PLC在确定了工作任务, 装入了专用程序后成为一种专用机, 它采用循环扫描工作方式, 系统工作任务管理及应用程序执行都是用循环扫描方式完成的。目前,可编程控制器在国内外已广泛应用于钢铁、石油、化工、电力、建材、机械制造、汽车、轻纺、交通运输、环保等各行各业。
自动售货机以其新奇、文明、高档、灵活方便等优点深受广大市民青睐。自动售货机最基本的功能是对投入的货币进行运算,并根据所投入的货币数值判断是否能够购买某种商品, 并做出相应的反映。因此, 售货机应能够辨识机内包含的商品, 能够对所投入的币值进行累计, 并提供所要购买的商品。当按下选择商
品的按钮时,自动售货机根据投入的币值, 起动电机, 提取商品到出货口, 顾客取出商品,完成此次交易。
在实际生活中,我们见到的售货机可以销售一些简单的日用品,如饮料、常用药品和小的生活保健用品等。售货机的基本功能就是对投入的货币进行运算,并根据货币数值判断是否能够购买某种商品,并做出相应的反应。举一个简单的例子来说明。例如:售货机中有8种商品,其中01号商品(代表第一种商品)价格为1.50元,02商品为2.50元,其余类推。现投入1个1元硬币,当投入的货币超过01商品的价格时,01商品的选择按钮处应有变化,提示可以购买,其他商品同比。当按下选择01商品的价格时,售货机进行减法运算,从投入的货币总值中减去01商品的价格同时启动相应的电机,提取01号商品到出货口。此时售货机继续进行等待外部命令,如继续交易,则同上,如果此时不再购买而按下退币按钮,售货机则要进行退币操作,退回相应的货币,并在程序中清零,完成此次交易。由此看来,售货机一次交易要涉及加法运算、减法运算以及在退币时的除法运算,这是它的内部功能。还要有货币识别系统和货币的传动来实现完整的售货、退币功能。
为简单计,本次实验只要求设计一个简单的自动售货机逻辑电路。它的投币口每次只能投入一枚五角或一元的硬币。投入一元五角钱硬币后机器自动给出一杯饮料;投入两元(两枚一元)硬币后,在给出饮料的同时找回一枚五角的硬币,投币时只能一个一个地投。
三.实验步骤及实验结果
1.电路变量分析
根据设计要求,共有七个变量。
clk:时钟输入;
reset:系统复位信号;
half_dollar:代表投入五角硬币;
one_dollar:代表投入一元硬币;
half_out:售货机找回一枚五角硬币信号;
dispense:机器售出一瓶饮料;
collect:提示投币者取走饮料。
2.状态转换图的确定
该电路一共用3个状态就可以完成设计要求。状态idle,表示为投入任何硬币状态;状态half,表示投入五角钱的状态;状态one,表示投入一元钱的状态。当投入一元五角钱时,给出一杯饮料并转到状态idle;投入两元(两枚一
元)硬币后,在给出饮料的同时找回一枚五角的硬币并转到状态idle,状态装换图如下图1所示:
图 1 自动售货机状态图
图1中如果当前状态为idle(即未投入硬币),则投入五角钱即输入为01则状态转到half,在状态half下再投入五角钱则转到one;在idle状态投入一元钱即输入为10则直接转到状态one,在one状态下如果再投入五角钱,则输出dispense为1、half_out为0,表示机器售出一瓶饮料,售货机不找回五角硬币。
3.利用Quartus II软件仿真实现
3.1新建工程machine_sell
选择File>New Project Wizard,新建工程文件,输入工程名为machine_sell (注意此处工程名与工程的顶层实体名必须一致)。在Available devices列表中选择FPGA型号EP2C70F896C6(本实验为仿真实验,此处不作硬性要求)。
3.2设计输入
在当前工程下,选择File>New菜单,接着选择Verilog HDL File,单击OK,打开Text Editor。选择File>Save as菜单,将文件保存到工程下,文件名为machine_sell,保存类型为Verilog HDL File,则生成machine_sell.v文件。
3.3Verilog语言描述
利用Verilog HDL语言编写的源程序如下:
module machine_sell(one_dollar,half_dollar,collect,half_out, dispense,reset,clk);
parameter idle=2'b00, half=2'b01, one=2'b10; //代表投入币值
的几种情况 input one_dollar,half_dollar,reset,clk;
output collect,half_out,dispense;
reg collect,half_out,dispense;
reg[1:0] D;
always@(posedge clk)