eda课程设计自动售货机的设计说明Word文档格式.docx

上传人:b****1 文档编号:5737777 上传时间:2023-05-05 格式:DOCX 页数:15 大小:133.74KB
下载 相关 举报
eda课程设计自动售货机的设计说明Word文档格式.docx_第1页
第1页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第2页
第2页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第3页
第3页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第4页
第4页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第5页
第5页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第6页
第6页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第7页
第7页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第8页
第8页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第9页
第9页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第10页
第10页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第11页
第11页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第12页
第12页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第13页
第13页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第14页
第14页 / 共15页
eda课程设计自动售货机的设计说明Word文档格式.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

eda课程设计自动售货机的设计说明Word文档格式.docx

《eda课程设计自动售货机的设计说明Word文档格式.docx》由会员分享,可在线阅读,更多相关《eda课程设计自动售货机的设计说明Word文档格式.docx(15页珍藏版)》请在冰点文库上搜索。

eda课程设计自动售货机的设计说明Word文档格式.docx

电子科技大学,2000

[4]亦华,延明.数字电路EDA入门.:

电子工业,2003

[5].ele-diy./中国电子制作网

审查意见

指导教师签字

教研室主任签字2012年2月20日

一.设计说明

根据要求可自动出售两种货物,本文设计的自动售货机可销售cola和pepsi两种饮料:

售货机可识别1元和0.5元的两种货币,在一次购买过程中,可购买一个或多个商品,系统会自动计算所需钱数和找零的钱数并自动找零。

另外有3个发光二极管、6个LCD数码管:

两个用来显示所需金额,两个用来显示已付金额,两个用来显示找零数。

1.1.1流程说明

本文设计的自动售货机当通电时,表示一次销售的开始。

顾客选择一种商品或多种商品后就进入投币状态。

若不投币,则自动返回初始状态。

投币后,系统自动计算所投钱数。

若投币够,则出货并找零。

若投币不够,如果顾客没有继续投币,则退币并回到初始状态。

本系统的投币销售流程图如图所示:

 

1.1.2各模块说明

本文设计的自动售货机总体分三个模块:

总控模块,二进制译码模块、BCD码译码模块。

总控模块:

总控模块是本系统最重要的模块,该模块大体有5个输入端口和6个输出端口。

其输入端口包括clk、coin1(投入一元货币)、coin5(投入0.5元货币)、cola(选择cola)、pepsi(选择pepsi),输出端口有paid(已投入多少钱)、needed(还需多少钱)moneyout(找零)、success(灯亮表示交易成功)、failure(灯亮表示交易失败)、showmoneyout(灯亮表示正在找零)。

该模块实现了本系统最重要的交易过程,包括选择商品、投入货币,计算剩余金额,找零出货等。

二进制译码模块:

该模块有一个输入端口和两个输出端口。

输入端口是一个8位的二进制数输出端口bcd0、bcd1是两个4位的BCD码。

该模块的主要的功能是实现将主控模块输出的二进制数(paid、needed、moneyout)转换成BCD码,以便输出到七段数码管上显示出来。

该模块的原理是将一个8位的二进制转换成2个4位的BCD码,分为高四位和低四位。

BCD码译码模块:

该模块有一个输入端口和一个输出端口

1.1.3程序设计

主控模块完整程序如下:

Libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityshouhuojiis

port(clk:

instd_logic;

coin1:

instd_logic;

coin5:

cola:

pepsi:

paid:

outstd_logic_vector(7downto0);

needed:

success:

outstd_logic;

failure:

showmoneyout:

moneyout:

outstd_logic_vector(7downto0));

endshouhuoji;

architecturebehavofshouhuojiis

typestate_typeis(qa,qb,qe,qc,qg,qd,qf);

--定义七个状态

signalcurrent_state:

state_type:

=qa;

signalq:

integerrange0to100;

begin

process(clk)

variablepaidtemp:

std_logic_vector(7downto0);

--定义变量

variableneededtemp:

variablebackmoney:

variablepricetemp:

ifclk'

eventandclk='

1'

then

casecurrent_stateis

whenqa=>

paidtemp:

="

00000000"

;

neededtemp:

backmoney:

pricetemp:

q<

=0;

showmoneyout<

='

0'

moneyout<

paid<

needed<

failure<

success<

ifcola='

orpepsi='

thencurrent_state<

=qb;

thenpricetemp:

=pricetemp+"

00001111"

neededtemp:

=pricetemp;

Else

pricetemp:

00010100"

endif;

paid<

=paidtemp;

=neededtemp;

whenqb=>

ifcoin1='

orcoin5='

ifcoin1='

thenpaidtemp:

=paidtemp+"

00001010"

else

paidtemp:

00000101"

ifpaidtemp>

=pricetempthenbackmoney:

=paidtemp-pricetemp;

current_state<

=qd;

elseneededtemp:

=pricetemp-paidtemp;

backmoney:

current_state<

=qc;

ifq<

8thenq<

=q+1;

thenq<

=neededtemp+"

elsecurrent_state<

=qe;

whenqe=>

4thenq<

whenqc=>

=pricetempthen

ifcoin1/='

andcoin5/='

10thenq<

=qg;

elseq<

whenqg=>

=qf;

success<

whenqd=>

ifbackmoney>

"

thenshowmoneyout<

moneyout<

=backmoney;

whenqf=>

ifq<

endcase;

endprocess;

endbehav;

BCD译码模块完整程序如下:

Libraryieee;

entitycode1is

port(

b:

instd_logic_vector(7downto0);

bcd0:

outstd_logic_vector(3downto0);

bcd1:

outstd_logic_vector(3downto0)

);

endcode1;

architectureoneofcode1is

begin

process(b)

begin

casebis

when"

=>

bcd0<

0000"

bcd1<

--译码“0”;

00000001"

0001"

--译码“1”;

00000010"

0010"

--译码“2”;

00000011"

0011"

--译码“3”;

00000100"

0100"

--译码“4”;

0101"

--译码“5”;

00000110"

0110"

00000111"

0111"

00001000"

1000"

00001001"

1001"

00001011"

00001100"

00001101"

00001110"

00010000"

00010001"

00010010"

00010011"

译码“20”

whenothers=>

null;

endcase;

endprocess;

endone;

顶层模块完整程序如下:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entitytopis

Port(clk1:

C1,C5,P1_5,P2:

paid_lcd0,paid_lcd1,needed_lcd0,needed_lcd1,Mout_lcd0,Mout_lcd1:

out

std_logic_vector(3downto0);

s,f,showout:

outstd_logic);

endtop;

architectureoneoftopis

componentshouhuoji

port(clk:

outstd_logic_vector(7downto0)

);

endcomponent;

componentcode1

instd_logic_vector(7downto0);

);

signalp,n,mo:

std_logic_vector(7downto0);

--signals1,s2,s3,s4,s5,s6:

std_logic_vector(3downto0);

u0:

shouhuoji--各模块连接

portmap(clk=>

clk1,coin1=>

C1,coin5=>

C5,cola=>

P1_5,pepsi=>

P2,

success=>

s,failure=>

f,showmoneyout=>

showout,paid=>

p,needed=>

n,moneyout=>

mo);

u1:

code1portmap(b=>

p,bcd0=>

paid_lcd0,bcd1=>

paid_lcd1);

u2:

n,bcd0=>

needed_lcd0,bcd1=>

needed_lcd1);

u3:

mo,bcd0=>

Mout_lcd0,bcd1=>

Mout_lcd1);

1.1.4各模块的连接

各模块的连接如图所示:

售货机主控系统和译码器模块图

售货机顶层模块

2、1主控模块的仿真

上图表示顾客选择了pepsi饮料后,且投了2个一元的硬币。

Success为高电平,代表售货机有饮料售出。

且余额为0.

上图表示顾客选择了pepsi饮料后,且投1个一元的硬币和一个0.5元的硬币。

failure为高电平,代表售货机无饮料售出。

且余额为已投的金额,将钱退还给顾客。

.

2.BCD码译码的仿真

上图表示自动售货机的译码系统,上图表示将8位数字转换成4位BCD码。

3.TOP文件的仿真

Failure 为高电平,代表售货机无饮料售出。

Showout为退币指示灯。

.Mout_lcd0和Mout_lcd1,显示退币的金额。

Paided_lcd0和Paided_lcd1needed_lcd0和needed_lcd1分别显示已付金额和还需要的金额数。

3.下载验证

在无数次的调试与修改中,下载验证能够实现题目的要求

4.参考文献:

5.心得体会

自动售货机系统的设计经过一个星期的设计已经全部完成,能按预期的效果进行多次购买、找零出货、并且在数码管上显示出已投货币的金额、还需金额、找零,同时有指示灯提示交易成功、交易失败、正在找零。

在自动售货机系统的3个模块中,最主要的是主控模块,其次的还有二进制译码模块和BCD码译码模块。

各模块完成后,将它们组合成完整的自动售货机系统。

在设计过程中还需改进的是。

本文所用的VHDL语言虽然语法规则与其他计算机高级语言如C语言在很多方面很类似,但它毕竟是硬件描述语言,其本质作用在于描述硬件,因而会受硬件环境的限制。

因此,为了达到设计的预期效果,在代码编写前,应做到对硬件电路心中有数,不能一味的追求代码的完美,而应该已实现的硬件电路的性能优劣为标准。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2