您的当前位置:首页正文

自动售饮料机逻辑电路的设计和仿真

来源:一二三四网
目 录

引言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„(1) 1设计要求的提出和功能的构想„„„„„„„„„„„„„„„„„„„(1) 2分析设计要求并画出原始状态图„„„„„„„„„„„„„„„„„„(1) 3程序设计„„„„„„„„„„„„„„„„„„„„„„„„„„„„(3) 4时序仿真„„„„„„„„„„„„„„„„„„„„„„„„„„„„(6) 4.1创建VHDL源文件„„„„„„„„„„„„„„„„„„„„„„„„(6) 4.2 选择合适的器件„„„„„„„„„„„„„„„„„„„„„„„„(7) 4.3 编译程序„„„„„„„„„„„„„„„„„„„„„„„„„„„(7) 4.4 仿真波形„„„„„„„„„„„„„„„„„„„„„„„„„„„(7) 4.5 仿真波形分析„„„„„„„„„„„„„„„„„„„„„„„„„(8) 结束语„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„(9) 参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„„(10) 英文摘要„„„„„„„„„„„„„„„„„„„„„„„„„„„„„(10) 致谢„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„(10)

自动售饮料机逻辑电路的设计和仿真

摘要: 本文基于VHDL语言对自动售饮料机的逻辑电路进行了逻辑设计和仿真。该

电路可识别1元和5角硬币,实现购买3种不同价格的饮料并且具有找零功能。本设计在MAX+PLUSⅡ中实现了逻辑仿真并给出正确的仿真波形图。

关键词: MAX+PLUSⅡ;VHDL;自动售饮料机 引言

随着集成电路技术的快速发展,EDA(Electronic Design Automation电子设计自动化)技术已经成为电路系统分析和设计的有力工具。EDA技术使得硬件电路设计尤其是数字电路系统的设计变得如同软件设计一样方便快捷、易于修改。本文采用具有很强硬件描述能力的VHDL语言,对自动售饮料机的逻辑电路进行了设计,并在MAX+PlusⅡ软件中仿真实现。 1设计要求的提出和功能的构想[1][2]

① 该饮料机能识别0.5元和1.0元两种硬币;

② 售出3种不同价格的饮料,饮料价格分别为1.5元、2.0元和2.5元; ③ 具有找零功能;

④ 购买者能自主选择所购买的饮料; ⑤ 饮料机在每卖出一次饮料后能自动复位。

因为饮料的价格最高为2.5元,所以设计饮料机最多可接受3.0元的硬币。 2分析设计要求并画出原始状态图

该自动售饮料机设有一个投币孔,通过传感器来识别两种硬币,给出两个不同的信号。在此用half_dollar和one_dollar分别表示投入0.5元和1.0元硬币后电路接收到的两个信号;三个饮料选择按键choose01表示选择价格为1.5元的饮料,choose10表示选择价格为2.0元的饮料,choose11表示选择价格为2.5元的饮料;rest表示复位按键;有2个输出口分别为饮料出口dispense和找零出口out1;用s0表示初始状态,s1表示投入0.5元硬币时的状态,s2表示投入1.0元硬币时的状态,s3表示投入1.5元硬币时的状态,s4表示投入2.0元时的状态;clk表示时钟信号;机器最多接受的钱币为3.0元。

当投入的钱币到达1.5元或高于1.5元时机器处于出售饮料的状态。当到达1.5元时如果选择购买1.5元的饮料(choose01)则系统给出一个饮料,即dispense为高电平一次。如果投入的钱币到达2.0元并且选择购买1.5元的饮料则系统显示给出一个饮料并找出1枚0.5元的硬币,即dispense为高电平一次out1为高电平一次。如果选择购买2.0元的饮料(choose10),则系统显示给出一个2.0元的饮料,即饮料输出信号dispense为高电平一次。依次类推。

图1.1为本次设计所构想的状态图。 状态0 投入0.5元 状态1 状态2 投入1.0元 投入0.5元 投入1.0元 投入0.5元 状态4 投入1.0元 状态3 投入0.5元 投入1.0元 不购买01 购买10 不购买10 购买01 购买10 不购购买11 购买10 购买11 购买01 购买10 买10 投入0.5元 投入1.0元 购买11 购买11 图1.1 状态图 3程序设计[3][4]

VHDL(Very High Speed Hardware Description Language高速硬件描述语言)是硬件描述语言中应用最广泛的一种。是由美国国防部于1983年创建,由IEEE进一步发展并在1987年定为“IEEE1076/1987标准版本”。由于VHDL支持硬件设计、综合、仿真和测试,在电子设计领域得到广泛的应用和普及。IEEE又于1993年重新对VHDL进行修订,形成了新的标准,即IEEE STD 1067-1993。

VHDL具有一系列的优点:①VHDL具有很强的硬件描述能力,能够从多个层次对数字系统进行建模,从高层次的行为描述到低层次的RTL描述以及门结构描述都能实现,尤其是系统级的描述能力是其他硬件描述语言无法比拟的。②良好的通用性,用VHDL设计的电路不受硬件电路元件的支配,与开发软件平台无关,具有很强的通用性。③支持多种设计方法,可以采用自顶向下、自底向上和混合方法三种形式,尤其是自顶向下的设计方法是VHDL独有的。④便于更新。⑤结构易读、易懂。所以这次程序的编写采用VHDL来完成。

根据上述对自动售饮料机逻辑状态的分析,编写程序如下: library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

entity stmch1 is

port(clk , rst ,half_dollar ,one_dollar: in std_logic; choose :in std_logic_vector(1 downto 0); out1 ,dispense: out std_logic); end stmch1;

architecture behave of stmch1 is type state_values is (s2 , s0 , s1 ,s3 ,s4); signal state , next_state: state_values; begin

process (clk , rst) begin

if rst = '1' then

state <= s0;

elsif (clk’event and clk='1') then state <= next_state; end if; end process;

process (state , half_dollar ,one_dollar ,choose) begin

out1 <= '0';dispense<='0'; next_state <= s0; case state is when s0 =>

if (half_dollar='1') then next_state <= s1; elsif (one_dollar='1' )then next_state <= s2; else next_state <= s0; end if; when s1 =>

if (half_dollar='1') then next_state <= s2; elsif( one_dollar='1') then next_state <= s3; else next_state <= s1; end if; when s2 =>

if (half_dollar='1' )then

if (choose=\"01\") then dispense<='1'; else next_state <= s3; end if;

elsif( one_dollar='1')then if(choose=\"10\") then dispense<='1'; else next_state <= s4; end if; else next_state <= s2; end if; when s3 =>

if (choose=\"01\") then dispense<='1'; elsif (choose=\"10\") then if (half_dollar='1')then dispense<='1'; elsif(one_dollar='1')then dispense<=’1’; out1<=’1’; else next_state<=s3; end if; elsif (choose=\"11\")then if (half_dollar='1')then next_state <= s4; elsif(one_dollar='1')then dispense<='1'; else next_state<=s3; end if; else

next_state <= s3; end if; when s4 =>

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'; end if;

else next_state <= s4; end if; end case; end process; end behave; 4时序仿真

4.1创建VHDL源文件[5]

先打开MAX+PlusⅡ,进入项目管理界面后,打开“File”→“New”,会弹出一个“NEW”的对话框,选择建立源文件类型。因为本设计采用VHDL语言来实现,所以选择“Text Editor File”选项,按“OK”键,进入文本编辑窗口。在文本编辑窗口中,输入上面的源文件。再以stmch1.vhd存盘。存盘后点击“File”→“Project”下选择“Set Project to Current File”使得标题的名称变成当前的工程名。如图4.1所示。

图4.1 使标题名成为当前工程名

4.2 选择合适的器件

设置完工程名后,下一步就是选择合适的器件编译。选择“Assign”→“Device”,打开如下图所示的窗口,在Device Family对话框中选择FLEX10K,然后选择EPF10K10LC84-4器件。如图4.2所示。

图4.2 所选择的器件

4.3 编译程序

在语言的设计当中,往往会出现一些错误,编译时会出现一些错误提示。有时尽管只有一、二个小错,但会出现大量的错误信息。所以在编译时应在编辑窗口中找到第一次出错的提示,并用鼠标拖黑,然后单击上面的“Locate”错误定位键,就可以在出现的文本编译窗口中闪动的光标附近找到错误所在。纠正后再编译,直至排除错误。 4.4 仿真波形

选中“MAX+PLUS Ⅱ”→“Waveform Editor”并单击,弹出波形编辑窗口。选中“Node”→“Enter Node Form SNF”,弹出一个对话框。在对话框中单击“List” 按钮,选中所有信号,然后,单击“=>”按钮,所选信号出现在右边的“Selected Nodes & Groups”窗口中。如图4.3所示。

选择“Option”→“Grid Size”,可以设定时间轴网格的大小。选中“MAX+Plus Ⅱ”→“Simulator”,并单击左键,弹出一个对话框,可以设置起始和结束的时间。单击“Start”按钮进行仿真,仿真完成后,单击“Open SCF”按钮,就可以打开波形编辑器,观察、分析仿真结果。如图4.4所示。

图4.3 波形编辑

图4.4 波形仿真

4.5 仿真波形分析

根据投币信息和购买类型的不同组合,会产生很多种输出波形。在此仅以几种典型情况为例,给出其仿真波形。如下图4.5为当选择购买1.5元的饮料并投入两枚1.0元的硬币时的波形。

由图可以看到当投入2.0元时,dispense(饮料机的饮料输出端)给出高电平一次,也就是系统给出一个价值1.5元的饮料和out1(找零的输出端)为高电平一次,即给出0.5元的硬币一枚。

图4.5 投两枚1元硬币购买饮料1时的波形

如下图4.6所示为当选择饮料2,即价格为2.0元的饮料时,投入两枚1.0元的硬币时所出现的波形。因为价格和所投入的钱币相同,所以找零为零,只给出一个价格为2.0元的饮料,即dispense在上升沿到来时变为高电平一次。

图4.6 投两枚1元硬币购买饮料2时的波形

如图4.7所示为当选择饮料3时,并投入3枚1.0元的硬币时的波形图。在这时机器应该给出1个价格为2.5元的饮料的同时给出一枚0.5元的硬币。

在图中我们看到当投入3枚一元的硬币后的第一个上升沿到来后,dispense和out1同时出现高电平一次,即给出一个价格为2.5元的饮料并找出0.5元,这与所设想的一样,说明所编写的程序是正确的。

图4.7 投3枚1元硬币购买饮料3时的波形

结束语

本文基于VHDL语言完成自动售饮料机的设计与仿真。VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不用管最终设计的目标器件是什么,而进行独立的设计。而且VHDL具有丰富的仿真语句和库函数,使得在任何的设计早期,就能查验设计系统的可行性,随时可对系统进行仿真模拟,使设计者对整个工程的结构和功能可能性做出判断。

参考文献

[1] 王毓银.数字电路逻辑设计(第三版)[M].北京:高等教育出版社,2001.178—340 [2] 阎石.数字电子技术基础(第三版)[M].北京:高等教育出版社,1989.224—300 [3] 潘松,黄继.EDA技术实用教程第二版[M].北京:科学出版社,2002.45—258 [4] 李中震等.数字电路与逻辑设计[M].四川:成都电讯工程学院出版社,1989.33—45 [5] 卢杰,赖毅.VHDL与数字电路设计[M].北京:科学出版社,2002.44—187 [6] 蔡明生.电子设计[M].北京:高等教育出版社,2004.102—241

Design and Simulation of Logic Circuit of Beverage

Dispenser

Department of Electronics 0302 Student Shi Hong Xing

Tutor Wang Ai Zhen

Abstract: This paper describes the design and the simulation of the logic circuit of beverage dispenser, which is based on VHDL. This circuit can identify 1 Yuan and 50 Cents coins, can realize the sale of three kinks of drink and have the function of giving change. The logic circuit of the beverage dispenser is simulated by using MAX+plusⅡ. Meanwhile the correct waveform is provided in this paper. Key words:MAX+PLUSⅡ;VHDL; Beverage Dispenser

10

因篇幅问题不能全部显示,请点此查看更多更全内容

Top