EDA课程设计_自动售货机设计.doc
- 文档编号:11525471
- 上传时间:2023-03-12
- 格式:DOC
- 页数:12
- 大小:805.50KB
EDA课程设计_自动售货机设计.doc
《EDA课程设计_自动售货机设计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计_自动售货机设计.doc(12页珍藏版)》请在冰豆网上搜索。
作者姓名EDA技术及其应用
成绩
指导教师:
日期:
《EDA技术与VHDL语言设计》
课程设计
题目:
EDA技术及其应用
——自动售货机设计
姓名:
院系:
电子信息工程学系
专业:
电子信息工程
班级:
学号:
指导教师:
2011年12月
-11-
EDA技术及其应用
——自动售货机的设计
Xxx
(电子信息工程学系指导教师:
余尤好)
摘要:
本课程设计设想采用专用集成电路芯片实现自动售货机的功能。
在本次设计中,系统开发平台为MAX+plusⅡ,硬件描述语言是VerilogHDL。
设计方案中,售货机具备硬币识别及找零功能,并能完成两种商品的出售。
依据设计方案和设计平台完成了程序编写和程序调试,通过运行程序及时序波形的仿真有效验证了设计的正确性,初步实现了设计目标.
关键词:
自动售货机;VerilogHDL;MAX+plusⅡ;
一、引言
1.1、课程背景
面对当前快速商品社会,人们的时间观念越来越重,如何才能更快的购买到顾客自己所需的商品,这都是顾客和商家共同面临的问题。
随着科技的发展及人们生活水平的提高,自动售货机市场的发展越来越呈现出多元化及个性化的需求。
其在城市商业区、写字楼大厅、风景区、车站、码头、繁华街道等公共场所的布设能够美化亮化城市环境,方便群众生活,已经成为城市各角落的一道亮丽风景线。
自动售货机已在国内普及,并成为城市现代文明程度的一种象征性标志。
自动售货机是能根据投入的钱币自动付货的机器。
自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。
是一种全新的商业零售形式,又被称为24小时营业的微型超市。
本课程设计设想采用专用集成电路实现自动售货机控制系统的功能。
1.2、EDA简介
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
EDA现已广泛用于机械、电子、通信、航空航天、化工、矿产、生物、医学和军事等众多领域的设计和制造。
二、实验环境
2.1、Max+PlusII软件
Max+PlusII是美国Altera公司开发的软件,它具有操作系统的程序界面,采用全菜单操作和鼠标操作方式,是一个完全集成化,易学易用的可编程逻辑设计环境。
它提供了功能强大,直观便捷和操作灵活的原理图输入设计功能,同时还配备了适用于各种需要的元件库,其中包含基本逻辑元件库(如与非门、反向器、触发器等),宏功能元件(包含了几乎所有74系列的器件)以及功能强大、性能良好的类似于核的兆功能块库,但更为重要的是它提供了使用方便,精度良好的时序仿真器,能够对系统中任一元件的功能进行精确的时序仿真,精度达0.1ns,非常准确。
2.2、VerilogHDL语言
VerilogHDL是作为电子设计主流硬件描述语言,VerilogHDL是一种硬件描述语言(HDL:
HardwareDiscriptionLanguage),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
VerilogHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,使用VerilogHDL语言,可以就系统的总体要求出发,自上而下地将设计内容细化,最后完成系统硬件的整体设计。
三、任务设计
3.1、设计要求
用verilogHDL语言编程,设计一个自动投币饮料售卖机的核心控制电路,饮料分为coke和water两种,价格分别为2.5元和1元,硬币可以识别0.5元和1元两种,考虑找零。
3.2、设计原理
根据设计方案的基本要求,自动售货机的问题实际上就是状态转换的问题,不同的状态对应不同的输出,具体的来说就是输入不同币值的钱后对应着不同的作用结果。
因此将此问题分为两部分来考虑,即输入和输出。
输入部分包括投币信号、饮料选择信号、复位信号。
因为币值只考虑5角和1元的情况,因此可以分别用两个输入端代替。
同样对于两种饮料的选择也可用两个输入端代替。
输出部分包括币值显示信号、输出货物信号以及找零信号。
具体如下:
输入变量:
时钟信号(clk):
每个时钟的上升沿触发系统的状态转换。
复位信号(reset):
上升沿触发,按下后自动回到初始状态。
投币信号:
5角(coin5),1元(coin10),高电平有效。
货物信号:
纯净水(water),可乐(coke),高电平有效。
撤消操作(cancel):
按下后退币,并自动回到初始状态。
输出变量:
显示信号(num):
显示投入的币额。
货物信号(g2):
对应卖出的货物。
找零信号(c3):
出币口的控制,对应找零或者是撤消操作后的退币额
3.3、模块实现
在程序的设计过程中使用case语句,且在判断出每种状态输入后直接给出了该系统的输出,因此,该自动售货机仅有一个整体模块,即包含了输入和输出。
输入和输出均为高电平有效(除了时钟信号clk),新建symboleditorfiles创建如下图1所示
图1整体模块图
3.4、状态编码:
由于此系统共有18个状态,故从状态0到状态17,用5位2进制码依次表示为00000—10001,然后对输出变量进行编码:
投币显示num:
0.00000.50011.00101.50112.01002.5101
卖出货g2:
无00water01Coke10
退币c3:
无:
0000.50011.00101.50112.01002.5101
四、自动售货机波形仿真
4.1、“5角硬币购买”仿真与分析
4.1.1、买water
投入5角硬币购买water的仿真如下图2所示:
图2投入5角硬币购买water
输入:
clk(系统时钟信号)高电平有效,从200.0ns开始到1.4us这段时间里,当依次投入5角硬币(coin5),state(状态)由0变到11(因为先是遇到找零信号,故已找零0.5元),说明投入的实际总币值为2.5元。
在投完币之后从1.4us到1.6us给出water(买水)信号。
输出:
在200.0ns到1.4us里num(投币显示)由0H变化到5H,二进制表示为0000~0101,对照状态编码可知为2.5元,恰好验证了前面state的正确性,当遇到water信号,g2(卖出货物变量)从低电平0变到高电平1,说明此时成功出售water,c3(找零信号)由1变到3,对应二进制为0001~0011,0011编码为1.5元,故找零1.5元,满足了2.5(总额)-1.0(水单价)=1.5(找零),此时state变为00初始状态。
即仿真结果符合现实中的购买过程。
4.1.2、买coke
投入5角硬币购买coke的仿真如下图3所示:
图3投入5角硬币购买coke
输入:
clk(系统时钟信号)高电平有效,从200.0ns开始到1.4us这段时间里,当依次投入5角硬币(coin5),state(状态)由0变到11(因为先是遇到找零信号,故已找零0.5元),说明投入的实际总币值为2.5元。
在投完币之后从1.4us到1.6us给出coke(买可乐)信号。
输出:
在200.0ns到1.4us里num(投币显示)由0H变化到5H,二进制表示为0000~0101,对照状态编码可知为2.5元,恰好验证了前面state的正确性,当遇到coke信号,g2(卖出货物变量)从低电平0变到高电平2,说明此时成功出售coke,c3(找零信号)由1变到0,表示不用找零。
此时满足了2.5(总额)-2.5(可乐单价)=0(找零),此时state在售出coke之后由09变为00初始状态。
此仿真结果符合现实中的购买过程。
4.1.3、取消操作
投入5角硬币取消操作的仿真如下图4所示:
图4投入5角硬币取消操作
输入:
clk(系统时钟信号)高电平有效,从200.0ns开始到1.4us这段时间里,当依次投入5角硬币(coin5),state(状态)由0变到11(因为先是遇到找零信号,故已找零0.5元),说明投入的实际总币值为2.5元。
在投完币之后从1.4us到1.6us给出cancel(取消)信号。
输出:
在200.0ns到1.4us里num(投币显示)由0H变化到5H,二进制表示为0000~0101,对照状态编码可知为2.5元,恰好验证了前面state的正确性,当遇到cancel信号,c3(找零信号)由1变到5,对应编码为0101,表示找零2.5元,也即取消操作。
此时state在遇到cancel之后由10变为00初始状态。
此仿真结果符合现实中的投币而不购买的过程。
4.2、“1元硬币购买”仿真与分析
4.2.1、买water
投入一元硬币购买water的仿真如下图5所示:
图5投入1元硬币购买water
输入:
clk(系统时钟信号)高电平有效,从100.0ns开始到800.0ns这段时间里,当依次投入1元硬币(coin10),state(状态)由0变到11(因为先是遇到找零信号,故已找零0.5元),说明投入的实际总币值为3.0-0.5=2.5元。
在投完币之后从800.0ns到1.0us给出water(买水)信号。
输出:
在00.0ns开始到800.0ns里num(投币显示)由0H变化到5H,二进制表示为0000~0101,对照状态编码可知为2.5元,恰好验证了前面state的正确性,当遇到water信号,g2(卖出货物变量)从低电平0变到高电平1,说明此时成功出售water,c3(找零信号)由1变到3,对应二进制为0001~0011,0011编码为1.5元,故找零1.5元,满足了2.5(总额)-1.0(水单价)=1.5(找零),此时state由13变为00初始状态。
即仿真结果符合现实中的购买过程。
4.2.2、买coke
投入1元硬币购买coke的仿真如下图6所示:
图6投入1元硬币购买coke
输入:
clk(系统时钟信号)高电平有效,从200.0ns开始到800.0ns这段时间里,当依次投入1元硬币(coin10),state(状态)由0变到11(因为先是遇到找零信号,故已找零0.5元),说明投入的实际总币值为2.5元。
在投完币之后从800.0ns到1.0us给出coke(买可乐)信号。
输出:
从200.0ns到800.0ns这段时间里num(投币显示)由0H变化到5H,二进制表示为0000~0101,对照状态编码可知为2.5元,恰好验证了前面state的正确性,当遇到coke信号,g2(卖出货物变量)从低电平0变到高电平2,说明此时成功出售coke,c3(找零信号)由1变到0,表示不用找零。
此时满足了2.5(总额)-2.5(可乐单价)=0(找零),此时state在售出coke之后由09变为00初始状态。
此仿真结果符合现实中的购买过程。
4.2.3、取消操作
投入1元硬币取消操作的仿真如下图7所示:
图7投入1元硬币取消操作
输入:
clk(系统时钟信号)高电平有效,从200.0ns开始到600.ns这段时间里,当依次投入1元硬币(coin10),state(状态)由0变到06,说明投入的实际总币值为2.0元。
在投完币之后从600.0ns到800.0ns给出cancel(取消)信号。
输出:
在200.0ns到600.0ns里num(投币显示)由0H变化到4H,二进制表示为0000~0100,对照状态编码可知为2.0元,恰好验证了前面state的正确性,当遇到cancel信号,c3(找零信号)由0变到4,对应编码为0100,表示找零2.0元,也即取消操作。
此仿真结果符合现实中的投币而不购买的过程。
4.3、“5角和1元硬币混合购买”仿真与分析
4.3.1、买water
投入5角硬币和1元硬币购买water的仿真如下图8所示:
图8投入5角硬币和1元硬币购买water
输入:
clk(系统时钟信号)高电平有效,从200.0ns到400.0ns这段时间,投入5角硬币(coin5),在400.0ns到600.0ns里投入1元硬币,state(状态)由0变到03,说明投入的实际总币值为1.5元。
在投完币之后从600.0ns到800.0ns给出water(买水)信号。
输出:
在200.0ns到600.0ns里num(投币显示)由0H变化到3H,二进制表示为0000~0011,对照状态编码可知为1.5元,恰好验证了前面state的正确性,当遇到water信号,g2(卖出货物变量)从低电平0变到高电平1,说明此时成功出售water,c3(找零信号)由0变到1,对应二进制为0001~0001,0001编码为0.5元,故找零0.5元,满足了1.5(总额)-1.0(水单价)=0.5(找零),此时state由05变为00初始状态。
即仿真结果符合现实中的购买过程。
4.3.2、买coke
投入5角硬币和1元硬币购买coke的仿真如下图9所示:
图9投入5角硬币和1元硬币购买coke
输入:
clk(系统时钟信号)高电平有效,从200.0ns到400.0ns这段时间,投入5角硬币(coin5),在400.0ns到800.0ns里投入1元硬币,state(状态)由0变到07,说明投入的实际总币值为2.5元。
在投完币之后从800.0ns到1.0us给出coke(买可乐)信号。
输出:
在200.0ns到800.0ns里num(投币显示)由0H变化到5H,二进制表示为0000~0101,对照状态编码可知为2.5元,恰好验证了前面state的正确性,当遇到coke信号,g2(卖出货物变量)从低电平0变到高电平2,说明此时成功出售coke,c3(找零信号)无变化,故找零0.0元,满足了2.5(总额)-2.5(可乐单价)=0.0(找零),此时state由07变为00初始状态。
即仿真结果符合现实中的购买过程。
4.3.3、取消操作
投入5角硬币和1元硬币取消操作的仿真如下图a所示:
图a投入5角硬币和1元硬币取消操作
输入:
clk(系统时钟信号)高电平有效,从200.0ns到400.0ns这段时间以及600.0ns到800.0ns里,投入5角硬币(coin5),在400.0ns到600.0ns里投入1元硬币,state(状态)由0变到06,说明投入的实际总币值为2.0元。
在投完币之后从800.0ns到1.0us给出cancel(取消)信号。
输出:
在200.0ns到800.0ns里num(投币显示)由0H变化到4H,二进制表示为0000~0100,对照状态编码可知为2.0元,恰好验证了前面state的正确性,当遇到cancel信号,c3(找零信号)由0变化到4,4对应的编码为0100,故找零2.0元,满足现实中投币而不购买的现象。
即仿真结果符合现实中的购买过程。
五、总结
本课程设计要求基于可编程逻辑器件,使用硬件描述语言VerilogHDL编写一个自动售货机芯片,并用Max+PlusII软件进行仿真。
在整个电路设计过程中遇到了很多困难,在指导老师的指引和同学的帮助下,通过不断探索学习,使问题得到了一定的解决。
当然,通过本次课程设计的学习,我从中学习到了很多东西,对可编程逻辑器件,VerilogHDL语言,Max+PlusII软件有了一定的了解,尤其是用VerilogHDL语言编程和仿真。
在本次设计中最大的收获就是发现问题,分析问题,从而成功的解决问题。
参考文献:
[1]王金明,冷自强.EDA技术与Verilog设计[M].北京:
科学出版社,2008.
[2]陆继远.自动售货机控制系统的设计与实现[J].微计算机信息,2011,08.
[3]王鹏,李云龙,丛山.基于VHDL的自动售货机控制模块[J].可编程控制器与工厂自动化,2010,10.
[4]王雯隽.基于VerilogHDL自动售货机的设计与实现[J].微型电脑应用,2005,21.
[5]潘松,黄继业.EDA技术实用教程[M].北京:
科学出版社,2002.
附录
moduleAUTOSELL(clk,num,g2,c3,reset,coke,water,cancel,coin5,coin10);
inputclk,reset,coke,water,cancel,coin5,coin10;
outputnum,g2,c3;
reg[2:
0]num;
reg[1:
0]g2;
reg[2:
0]c3;
reg[4:
0]state;
always@(posedgeclkorposedgereset)/*时钟脉冲上升沿或者复位脉冲信号的上升沿时进入*/
begin
if(reset)state=5'b00000;//reset为高电平时则清零
elsebegin
case(state)/*从状态0开始根据输入不同币值的情况跳转到不同的币值显示输出状态*/
5'b00000:
begin
if(coin5)state=5'b00001;//若输入为5角硬币则跳转到00001
elseif(coin10)state=5'b00010;//若输入是1元硬币则跳转到00010
elsestate=5'b00000;
end
5'b00001:
begin//继续状态的判定,以下类似
if(coin5)state=5'b00010;
elseif(coin10)state=5'b00011;
elseif(cancel)state=5'b01101;
elsestate=5'b00001;
end
5'b00010:
begin
if(coin5)state=5'b00011;
elseif(coin10)state=5'b00110;
elseif(water)state=5'b00100;
elseif(cancel)state=5'b01110;
elsestate=5'b00010;
end
5'b00011:
begin
if(coin5)state=5'b00110;
elseif(coin10)state=5'b00111;
elseif(water)state=5'b00101;
elseif(cancel)state=5'b01111;
elsestate=5'b00011;
end
5'b00100:
begin
state=5'b00000;
end
5'b00101:
begin
state=5'b00000;
end
5'b00110:
begin
if(coin5)state=5'b00111;
elseif(coin10)state=5'b01010;
elseif(water)state=5'b01000;
elseif(cancel)state=5'b10001;
elsestate=5'b00110;
end
5'b00111:
begin
if(coin5)state=5'b01010;
elseif(coin10)state=5'b01011;
elseif(water)state=5'b01100;
elseif(coke)state=5'b01001;
elseif(cancel)state=5'b10000;
elsestate=5'b00111;
end
5'b01000:
begin
state=5'b00000;
end
5'b01001:
begin
state=5'b00000;
end
5'b01010:
begin
if(coin5)state=5'b01010;
elseif(coin10)state=5'b01011;
elseif(water)state=5'b01100;
elseif(coke)state=5'b01001;
elseif(cancel)state=5'b10000;
elsestate=5'b01010;
end
5'b01011:
begin
if(coin5)state=5'b01010;
elseif(coin10)state=5'b01011;
elseif(water)state=5'b01100;
elseif(coke)state=5'b01001;
elseif(cancel)state=5'b10000;
elsestate=5'b01011;
end
5'b01100:
begin
state=5'b00000;
end
5'b01101:
begin
state=5'b00000;
end
5'b01110:
begin
state=5'b00000;
end
5'b01111:
begin
state=5'b00000;
end
5'b10000:
begin
state=5'b00000;
end
5'b10001:
begin
state=5'b00000;
end
5'b10010:
begin
state=5'b00000;
end
endcase
end
end//币值显示状态语句判定完毕
always@(state)//开始输出饮料信号和找零信号的状态输出判定
begin
case(state)
5'b00000:
begin
num<=3'b000;
g2<=2'b00;
c3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 自动 售货 设计