自动售饮料机逻辑电路的设计和仿真doc.docx
《自动售饮料机逻辑电路的设计和仿真doc.docx》由会员分享,可在线阅读,更多相关《自动售饮料机逻辑电路的设计和仿真doc.docx(13页珍藏版)》请在冰豆网上搜索。
自动售饮料机逻辑电路的设计和仿真doc
引言…………………………………………………………………………………
(1)
1设计要求的提出和功能的构思…………………………………………………
(1)
2分析设计要求并画出原始状态图………………………………………………
(1)
3程序设计…………………………………………………………………………(3)
4时序仿真…………………………………………………………………………(6)
创建VHDL源文件………………………………………………………………(6)
选择适合的器件………………………………………………………………(7)
编译程序………………………………………………………………………(7)
仿真波形………………………………………………………………………(7)
仿真波形分析…………………………………………………………………(8)
终止语………………………………………………………………………………(9)
参考文献……………………………………………………………………………(10)
英文摘要……………………………………………………………………………(10)
致谢…………………………………………………………………………………(10)
自动售饮料机逻辑电路的设计和仿真
摘要:
本文基于VHDL语言对自动售饮料机的逻辑电路进行了逻辑设计和仿真。
该电路可识别1元和5角硬币,实现购买3种不同价钱的饮料而且具有找零功能。
本设计在MAX+PLUSⅡ中实现了逻辑仿真并给出正确的仿真波形图。
关键词:
MAX+PLUSⅡ;VHDL;自动售饮料机
引言
随着集成电路技术的快速进展,EDA(ElectronicDesignAutomation电子设计自动化)技术已经成为电路系统分析和设计的有力工具。
EDA技术使得硬件电路设计尤其是数字电路系统的设计变得犹如软件设计一样方便快捷、易于修改。
本文采纳具有很强硬件描述能力的VHDL语言,对自动售饮料机的逻辑电路进行了设计,并在MAX+PlusⅡ软件中仿真实现。
1设计要求的提出和功能的构思[1][2]
1该饮料性能识别元和元两种硬币;
2售出3种不同价钱的饮料,饮料价钱别离为元、元和元;
3具有找零功能;
4购买者能自主选择所购买的饮料;
5饮料机在每卖出一次饮料后能自动复位。
因为饮料的价钱最高为元,因此设计饮料机最多可同意元的硬币。
2分析设计要求并画出原始状态图
该自动售饮料机设有一个投币孔,通过传感器来识别两种硬币,给出两个不同的信号。
在此用half_dollar和one_dollar别离表示投入元和元硬币后电路接收到的两个信号;三个饮料选择按键choose01表示选择价钱为元的饮料,choose10表示选择价钱为元的饮料,choose11表示选择价钱为元的饮料;rest表示复位按键;有2个输出口别离为饮料出口dispense和找零出口out1;用s0表示初始状态,s1表示投入元硬币时的状态,s2表示投入元硬币时的状态,s3表示投入元硬币时的状态,s4表示投入元时的状态;clk表示时钟信号;机械最多同意的钱币为元。
当投入的钱币抵达元或高于元机会械处于出售饮料的状态。
当抵达元时若是选择购买元的饮料(choose01)那么系统给出一个饮料,即dispense为高电平一次。
若是投入的钱币抵达元而且选择购买元的饮料那么系统显示给出一个饮料并找出1枚元的硬币,即dispense为高电平一次out1为高电平一次。
若是选择购买元的饮料(choose10),那么系统显示给出一个元的饮料,即饮料输出信号dispense为高电平一次。
依次类推。
图为本次设计所构思的状态图。
图状态图
3程序设计[3][4]
VHDL(VeryHighSpeedHardwareDescriptionLanguage高速硬件描述语言)是硬件描述语言中应用最普遍的一种。
是由美国国防部于1983年创建,由IEEE进一步进展并在1987年定为“IEEE1076/1987标准版本”。
由于VHDL支持硬件设计、综合、仿真和测试,在电子设计领域取得普遍的应用和普及。
IEEE又于1993年从头对VHDL进行修订,形成了新的标准,即IEEESTD1067-1993。
VHDL具有一系列的优势:
①VHDL具有很强的硬件描述能力,能够从多个层次对数字系统进行建模,从高层次的行为描述到低层次的RTL描述和门结构描述都能实现,尤其是系统级的描述能力是其他硬件描述语言无法比拟的。
②良好的通用性,用VHDL设计的电路不受硬件电路元件的支配,与开发软件平台无关,具有很强的通用性。
③支持多种设计方式,能够采纳自顶向下、自底向上和混合方式三种形式,尤其是自顶向下的设计方式是VHDL特有的。
④便于更新。
⑤结构易读、易懂。
因此这次程序的编写采纳VHDL来完成。
依照上述对自动售饮料机逻辑状态的分析,编写程序如下:
libraryieee;
usestmch1is
port(clk,rst,half_dollar,one_dollar:
instd_logic;
choose:
instd_logic_vector(1downto0);
out1,dispense:
outstd_logic);
endstmch1;
architecturebehaveofstmch1is
typestate_valuesis(s2,s0,s1,s3,s4);
signalstate,next_state:
state_values;
begin
process(clk,rst)
begin
ifrst='1'then
state<=s0;
elsif(clk’eventandclk='1')then
state<=next_state;
endif;
endprocess;
process(state,half_dollar,one_dollar,choose)
begin
out1<='0';dispense<='0';
next_state<=s0;
casestateis
whens0=>
if(half_dollar='1')then
next_state<=s1;
elsif(one_dollar='1')then
next_state<=s2;
elsenext_state<=s0;
endif;
whens1=>
if(half_dollar='1')then
next_state<=s2;
elsif(one_dollar='1')then
next_state<=s3;
elsenext_state<=s1;
endif;
whens2=>
if(half_dollar='1')then
if(choose="01")then
dispense<='1';
elsenext_state<=s3;
endif;
elsif(one_dollar='1')then
if(choose="10")then
dispense<='1';
elsenext_state<=s4;
endif;
elsenext_state<=s2;
endif;
whens3=>
if(choose="01")thendispense<='1';
elsif(choose="10")then
if(half_dollar='1')then
dispense<='1';
elsif(one_dollar='1')then
dispense<=’1’;
out1<=’1’;
elsenext_state<=s3;
endif;
elsif(choose="11")then
if(half_dollar='1')then
next_state<=s4;
elsif(one_dollar='1')then
dispense<='1';
elsenext_state<=s3;
endif;
else
next_state<=s3;
endif;
whens4=>
if(choose="01")then
dispense<='1';
out1<='1';
elsif(choose="10")then
dispense<='1';
elsif(choose="11")then
if(half_dollar='1')then
dispense<='1';
elsif(one_dollar='1')then
out1<='1';
dispense<='1';
endif;
elsenext_state<=s4;
endif;
endcase;
endprocess;
endbehave;
4时序仿真
创建VHDL源文件[5]
先打开MAX+PlusⅡ,进入项目治理界面后,打开“File”→“New”,会弹出一个“NEW”的对话框,选择成立源文件类型。
因为本设计采纳VHDL语言来实现,因此选择“TextEditorFile”选项,按“OK”键,进入文本编辑窗口。
在文本编辑窗口中,输入上面的源文件。
再以存盘。
存盘后点击“File”→“Project”下选择“SetProjecttoCurrentFile”使得题目的名称变成当前的工程名。
如下图。
图使标落款成为当前工程名
选择适合的器件
设置完工程名后,下一步确实是选择适合的器件编译。
选择“Assign”→“Device”,打开如以下图所示的窗口,在DeviceFamily对话框当选择FLEX10K,然后选择EPF10K10LC84-4器件。
如下图。
图所选择的器件
编译程序
在语言的设计当中,往往会显现一些错误,编译时会显现一些错误提示。
有时尽管只有一、二个小错,但会显现大量的错误信息。
因此在编译时应在编辑窗口中找到第一次犯错的提示,并用鼠标拖黑,然后单击上面的“Locate”错误定位键,就能够够在显现的文本编译窗口中闪动的光标周围找到错误所在。
纠正后再编译,直至排除错误。
仿真波形
选中“MAX+PLUSⅡ”→“WaveformEditor”并单击,弹出波形编辑窗口。
选中“Node”→“EnterNodeFormSNF”,弹出一个对话框。
在对话框中单击“List”按钮,选中所有信号,然后,单击“=>”按钮,所选信号出此刻右边的“SelectedNodes&Groups”窗口中。
如下图。
选择“Option”→“GridSize”,能够设按时刻轴网格的大小。
选中“MAX+PlusⅡ”→“Simulator”,并单击左键,弹出一个对话框,能够设置起始和终止的时刻。
单击“Start”按钮进行仿真,仿真完成后,单击“OpenSCF”按钮,就能够够打开波形编辑器,观看、分析仿真结果。
如下图。
图波形编辑
图波形仿真
仿真波形分析
依照投币信息和购买类型的不同组合,会产生很多种输出波形。
在此仅以几种典型情形为例,给出其仿真波形。
如以下图为被选择购买元的饮料并投入两枚元的硬币时的波形。
由图能够看到当投入元时,dispense(饮料机的饮料输出端)给出高电平一次,也确实是系统给出一个价值元的饮料和out1(找零的输出端)为高电平一次,即给出元的硬币一枚。
图投两枚1元硬币购买饮料1时的波形
如以下图所示为被选择饮料2,即价钱为元的饮料时,投入两枚元的硬币时所显现的波形。
因为价钱和所投入的钱币相同,因此找零为零,只给出一个价钱为元的饮料,即dispense在上升沿到来时变成高电平一次。
图投两枚1元硬币购买饮料2时的波形
如下图为被选择饮料3时,并投入3枚元的硬币时的波形图。
在这机会械应该给出1个价钱为元的饮料的同时给出一枚元的硬币。
在图中咱们看到当投入3枚一元的硬币后的第一个上升沿到来后,dispense和out1同时显现高电平一次,即给出一个价钱为元的饮料并找出元,这与所假想的一样,说明所编写的程序是正确的。
图投3枚1元硬币购买饮料3时的波形
终止语
本文基于VHDL语言完成自动售饮料机的设计与仿真。
VHDL对设计的描述具有相对独立性,设计者能够不懂硬件的结构,也不用管最终设计的目标器件是什么,而进行独立的设计。
而且VHDL具有丰硕的仿真语句和库函数,使得在任何的设计初期,就能够查验设计系统的可行性,随时可对系统进行仿真模拟,使设计者对整个工程的结构和功能可能性做出判定。
参考文献
[1]王毓银.数字电路逻辑设计(第三版)[M].北京:
高等教育出版社,—340
[2]阎石.数字电子技术基础(第三版)[M].北京:
高等教育出版社,—300
[3]潘松,黄继.EDA技术有效教程第二版[M].北京:
科学出版社,—258
[4]李中震等.数字电路与逻辑设计[M].四川:
成都电讯工程学院出版社,—45
[5]卢杰,赖毅.VHDL与数字电路设计[M].北京:
科学出版社,—187
[6]蔡明生.电子设计[M].北京:
高等教育出版社,—241
DesignandSimulationofLogicCircuitofBeverageDispenser
DepartmentofElectronics0302StudentShiHongXing
TutorWangAiZhen
Abstract:
Thispaperdescribesthedesignandthesimulationofthelogiccircuitofbeveragedispenser,whichisbasedonVHDL.Thiscircuitcanidentify1Yuanand50Centscoins,canrealizethesaleofthreekinksofdrinkandhavethefunctionofgivingchange.ThelogiccircuitofthebeveragedispenserissimulatedbyusingMAX+plusⅡ.Meanwhilethecorrectwaveformisprovidedinthispaper.
Keywords:
MAX+PLUSⅡ;VHDL;BeverageDispenser