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

上传人:b****6 文档编号:16082057 上传时间:2022-11-18 格式:DOCX 页数:13 大小:494.24KB
下载 相关 举报
eda课程设计自动售货机的设计文档格式.docx_第1页
第1页 / 共13页
eda课程设计自动售货机的设计文档格式.docx_第2页
第2页 / 共13页
eda课程设计自动售货机的设计文档格式.docx_第3页
第3页 / 共13页
eda课程设计自动售货机的设计文档格式.docx_第4页
第4页 / 共13页
eda课程设计自动售货机的设计文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

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

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

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

(提示:

钱数以5角为单位。

任务要求

①根据设计题目要求编写相应程序代码

②对编写的VHDL程序代码进行编译和仿真

③总结设计内容,完成课程设计说明书

参考文献

[1] 焦素敏.EDA课程设计指导书.郑州:

河南工业大学,2008

[2] 潘松,黄继业.EDA技术实用教程.北京:

科学出版社,2002

[3] 王国栋,潘松等.VHDL实用教程.成都:

电子科技大学出版社,2000

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

电子工业出版社,2003

[5]中国电子制作网网站

审查意见

指导教师签字

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

一.设计说明

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

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

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

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

流程说明

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

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

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

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

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

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

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

各模块说明

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

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

总控模块:

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

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

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

二进制译码模块:

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

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

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

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

BCD码译码模块:

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

程序设计

主控模块完整程序如下:

Libraryieee;

useshouhuojiis

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;

usecode1is

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"

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

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1