Xuzhou Institute of Technology
可编程器件及应用 课程设计报告
设计名称: 自动售货机控制系统
学 院: 信电工程学院 专业班级: 13电信
学生姓名: 学 号: 指导教师:
贾燕玲
2016 年 6 月 30 日
目 录
一、前言 ........................................................................................................................................ 2 二、设计项目及要求.................................................................................................................. 1 三、设计流程 ............................................................................................................................... 3
(一)设计说明 . .................................................................................................................. 3 (二)流程说明 . .................................................................................................................. 3 四、软件设计 ............................................................................................................................... 4
(一)顶层电路图 .............................................................................................................. 4 (一)状态转换 . .................................................................................................................. 4 (二)模块组成 . .................................................................................................................. 5
1、总控模块.................................................................................................................. 5 2、译码模块.................................................................................................................. 9 3、显示模块................................................................................................................ 10 五、各模块软件仿真及分析 .......................................................................................... 12 (一)顶层电路仿真 . ....................................................................................................... 12 (二)主控模块仿真 . ....................................................................................................... 1(三)显示模块仿真...........................................................................................................1(四)译码模块仿真.................................................................,........................................1 六、总结 ...................................................................................................................................... 15 附录 ............................................................................................................................................... 16
1、初始状态实物图 . ......................................................................................................... 16 2、购买状态实物图 . ......................................................................................................... 16
3、合作分工..........................................................................................................................17
一、前言
随着科技的发展和社会的进步,自动化商业机械有了越来越广泛的的应用,自动售货机作为自动化商业机械的代表被广泛用于公共场所自动售货,给人们的生活带来了极大的方便。特别在发达的国家,自动售货机已经十分普及,自动售货机可售出各种成型包装的小商品,各种袋装,盒装,软瓶装等小商品。因其无需专人值守而可以每天24 小时售货,被称为“无人小超市”。在我国,由于多种原因,自动售货机的市场推广缓慢,随着商品市场的不断繁荣,自动售货机和自动服务设施必将逐步得到广泛的应用。
本文设计研究自动售货机的主要功能模块,主要包括货币处理模块、余额计算模块、显示模块,延时和时控模块。相应的功能有选择货物,多次购买,出货找零。
本文是通过使用VHDL 语言,基于KX GW48FPGA 芯片,并通过使用QUARTUS II软件进行程序设计,模拟仿真,功能验证,以更好的来理解和掌握自动售货机控制系统的工作原理和设计方法,以及学习和掌握基于EDA 的电子产品设计方法,进一步加深对VHDL 语言以及QUARTUS II 软件、FPGA 可编程芯片的认识与了解。
FPGA 是现场可编程门阵列(Field programmable gates array) 的英文简称。是有可编程逻辑模块组成的数字集成电路(IC)。这些逻辑模块之间用可配置的互联资源。设计者可以对这些器件进行编程来完成各种各样的任务
二、设计项目及要求
设计一个自动售货机,它能够完成对货物信息的存储,硬币处理,余额计算和显示等功能。
(1)自动售货机可以出售四种货物,每种商品的数量和单价在初始化时设定,并存储在存储器中。
(2)采用模拟开关分别模拟5角和1元的硬币来进行购物,并通过按键来选择商品。 (3)系统能够根据用户输入的硬币,判断钱币是否够,当所投硬币达到或超过购物者所选面值时,则根据顾客的要求自动售货,并找回剩余的硬币,然后回到初始状态。当所投硬币不够时,则给出提示,并通过一个复位键退回所投硬币,然后回到初始状态。
(一)设计说明
本文设计的自动售货机可销售四种货物,售货机可识别1元和0.5元的两种货币,在一次购买过程中,可购买一个或多个商品,系统会自动计算所需钱数和找零的钱数并自动找零。另外有3个发光二极管、6个LCD 数码管:两个用来显示所需金额,两个用来显示已付金额,两个用来显示找零数。
(二)流程说明
本文设计的自动售货机当通电时,表示一次销售的开始。顾客选择一种商品或多种商品后就进入投币状态。若不投币,则自动返回初始状态。投币后,系统自动计算所投钱数。若投币够,则出货并找零。若投币不够,如果顾客没有继续投币,则退币并回到初始状态。本系统的投币销售流程图如图1所示。
图1 投币销售流程图
(一)顶层电路图
(二) 状态转换
本文所设计的自动售货机进程可以分为7个状态:a,b,c,d,e,f,g.a 为开始状态,当有商品选择键按下时即进入b 状态(投币状态)。当有货币投入,但投币不够时,即进入c 状态(继续投币),若投币够了,即进入d 状态(出货找零),之后进入f 状态(延时)后返回a(状态) 。
(三)模块组成
1、总控模块
(1)模块说明
总控模块是本系统最重要的模块,该模块大体有5个输入端口和6个输出端口,如图1-1所示。其输入端口包括clk 、coin1(投入一元货币)、coin5(投入0.5元货币)、
good1
(选择货物一)、good2(选择货物二)、good3(选择货物三)、good4(选择货物四),输出端口有paid (已投入多少钱)、needed (还需多少钱)moneyout (找零)、success (灯亮表示交易成功)、failure (灯亮表示交易失败)、showmoneyout (灯亮表示正在找零)。该模块实现了本系统最重要的交易过程,包括选择商品、投入货币,计算剩余金额,找零出货等。
(2)模块源程序
Library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity shouhuoji is
port(clk1: in std_logic; coin1:in std_logic; coin5:in std_logic; gd1:in std_logic; gd2:in std_logic; gd3:in std_logic; gd4:in std_logic;
paid:out std_logic_vector(7 downto 0); needed:out std_logic_vector(7 downto 0); success:out std_logic; failure:out std_logic;
showmoneyout:out std_logic;
moneyout:out std_logic_vector(7 downto 0)); end shouhuoji;
architecture behav of shouhuoji is
type state_type is (qa,qb,qe,qc,qg,qd,qf);--定义七个状态 signal current_state :state_type:=qa; signal q:integer range 0 to 100; begin
process(clk1)
variable paidtemp:std_logic_vector(7 downto 0);--定义变量 variable neededtemp:std_logic_vector(7 downto 0); variable backmoney:std_logic_vector(7 downto 0); variable pricetemp:std_logic_vector(7 downto 0); begin
if clk1'event and clk1='1' then case current_state is
when qa=>paidtemp:="00000000";neededtemp:="00000000"; backmoney:="00000000";pricetemp:="00000000";q
showmoneyout
if gd1='1' or gd2='1' or gd3='1' or gd4='1' then current_state
neededtemp:=pricetemp;
Elsif gd2='1' then pricetemp:=pricetemp+"00001010"; neededtemp:=pricetemp;
Elsif gd3='1' then pricetemp:=pricetemp+"00010100"; neededtemp:=pricetemp;
Elsif gd4='1' then pricetemp:=pricetemp+"00011001"; neededtemp:=pricetemp; end if; end if;
paid
when qb=> if coin1='1' or coin5='1' then
if coin1='1' then paidtemp:=paidtemp+"00001010"; else
paidtemp:=paidtemp+"00000101"; end if; end if;
if paidtemp>=pricetemp then backmoney:=paidtemp-pricetemp; neededtemp:="00000000";current_state
else neededtemp:=pricetemp-paidtemp;backmoney:="00000000"; current_state
paid
if gd1='1' or gd2='1' or gd3='1' or gd4='1'then q
Elsif gd2='1' then pricetemp:=pricetemp+"00000101"; neededtemp:=pricetemp;
Elsif gd3='1' then pricetemp:=pricetemp+"00010100"; neededtemp:=pricetemp;
Elsif gd4='1' then pricetemp:=pricetemp+"00011001"; neededtemp:=pricetemp; end if; end if;
paid
else current_state
when qe=>failure
else current_state
when qc=>if coin1='1' or coin5='1' then
if coin1='1'then paidtemp:=paidtemp+"00001010"; else
paidtemp:=paidtemp+"00000101"; end if;
if paidtemp>=pricetemp then backmoney:=paidtemp-pricetemp;
neededtemp:="00000000";current_state
else neededtemp:=pricetemp-paidtemp;backmoney:="00000000"; current_state
paid
if coin1/='1'and coin5/='1' then if q
else current_state
when qg=>failure
showmoneyout
when qd=>success
if backmoney>"00000000"then showmoneyout
current_stateif q
end process; end behav;
(3)总控模块封装电路图
图1-1 总控模块封装电路图
2、译码模块
(1)模块说明
该模块有一个输入端口和两个输出端口,如图1-2所示。输入端口是一个8位的二进制数,输出端口bcd0、bcd1是两个4位的BCD 码。该模块的主要的功能是实现将主控模块输出的二进制数(paid 、needed 、moneyout )转换成BCD 码,以便输出到七段数码管上显示出来。该模块的原理是将一个8位的二进制转换成2个4位的BCD 码,分为高四位和低四位。
(2)模块源程序
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity code1 is
port(b:in std_logic_vector(7 downto 0); bcd0:out std_logic_vector(3 downto 0); bcd1:out std_logic_vector(3 downto 0)); end code1;
architecture one of code1 is begin process(b) begin case b is
when"00000000"=>bcd0bcd0bcd0bcd0bcd0bcd0bcd0
when"00000111"=>bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0
when"00010100"=>bcd0null; end case; end process; end one;
(3)二进制译码模块封装电路图
图1-2 二进制译码模块封装电路图
3、显示模块
(1)模块说明
该模块有clk2、gao1、di1、gao2、di2、gao3、di3七个输入以及控制6个数码管显示的两个输出wei 和duan ,此外6个LCD 数码管,如图1-3所示:两个用来显示所需金额,两个用来显示已付金额,两个用来显示找零数。
(2)模块源程序 library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity erjinzhiyima is
port (clk2:in std_logic;
gao1,di1,gao2,di2,gao3,di3:in std_logic_vector(3 downto
0);
wei:out std_logic_vector(2 downto 0); duan1:out std_logic_vector(7 downto 0)); end entity erjinzhiyima;
architecture behv of erjinzhiyima is
signal dout: std_logic_vector(3 downto 0); signal wei1:std_logic_vector(2 downto 0); begin
process (clk2)
variable count:std_logic_vector(2 downto 0); begin
if RISING_EDGE(clk2) then --动态扫描显示输出 if count="101" then count:="000";
else count:=count+1; end if;
case count is
when "000"=>doutdoutdoutdoutdoutdoutnull; end case; end if;
end process; process(dout) begin
case dout is
when "0000"=>duan1duan1duan1duan1duan1duan1duan1duan1duan1duan1duan1
end behv;
(3)显示模块封装电路图
图1-3 显示模块封装电
五、各模块软件仿真及分析
(一)顶层电路仿真
图 5-1 顶层电路仿真图
此仿真显实的是顾客选择购买货物三,货物三的实际价格为2元,而顾客实际投入了
1.5元,购买失败,给出一个失败信号和退钱信号。
(二)主控模块仿真
图 5-2 主控模块仿真图
此仿真实现的是顾客购买货物三,货物三的价格为2元,而顾客实际投币1.5元,所以购买失败,退回投入的1.5元。
(三)显示模块仿真
图5-3 显示模块仿真图
此仿真实现的是顾客投入了1.5元,而购买货物还需投入0.5元,数码管上显示顾客已经投币1.5元,还需投入0.5元。
(四)译码模块仿真
图5-4 译码模块仿真图
此仿真实现的是将主控模块传过来的八位BCD 码分为两个四位BCD 码。
六、总结
这个设计实现了一个简单的自动售货机的功能,程序由硬件描述语言vhdl 编写。程序中采用分块编写的方式,将一个本来复杂的体系用简单的逻辑表述出来。这样做设计显得很流畅,每个成员都不是独立存在的。
通过完成本次课程设计,使我对EDA 技术有了更进一步的了解和掌握。从上世纪末以来,数字电子技术在迅速的发展,有力的推动了社会生产力的发展和社会信息化的提高。在其推动下,数字电子技术的应用已经渗透到了人类生活的各个方面,对于我们来说,学好EDA 这门课有着至关重要的意义。在编写程序中,让我们明白很多道理。虽然自己能够编写出实现基本要求的代码,可是在代码的很多地方都出现杂乱,冗长,完全背离了代码简练,易懂的原则,让我们明白了要多参考别人优秀的程序,借鉴别人的优点,使自己的编写能力得到提到。在各个进程中,对各个进程间的信号量传递要用易懂的字符替代,这对于读懂代码有很大的帮助。虽然在编程中犯了很多错误,但是通过不断的修改,不断的请教别人和借鉴别人的经验,最终实现了成功的编写了本次课程设计的代码,并且在解决错误,明白错误中让我们获益匪浅。对于本学期EDA 这门课有了更进一步的了解,对于一个陌生的题目也知道了如何下手。
总之,只有通过自己的动手,才能真正的理解上课时的内容,才能真正的掌握EDA 这门技术。
附录
1、初始状态实物图
2、购买状态实物图
3、合作分工
Xuzhou Institute of Technology
可编程器件及应用 课程设计报告
设计名称: 自动售货机控制系统
学 院: 信电工程学院 专业班级: 13电信
学生姓名: 学 号: 指导教师:
贾燕玲
2016 年 6 月 30 日
目 录
一、前言 ........................................................................................................................................ 2 二、设计项目及要求.................................................................................................................. 1 三、设计流程 ............................................................................................................................... 3
(一)设计说明 . .................................................................................................................. 3 (二)流程说明 . .................................................................................................................. 3 四、软件设计 ............................................................................................................................... 4
(一)顶层电路图 .............................................................................................................. 4 (一)状态转换 . .................................................................................................................. 4 (二)模块组成 . .................................................................................................................. 5
1、总控模块.................................................................................................................. 5 2、译码模块.................................................................................................................. 9 3、显示模块................................................................................................................ 10 五、各模块软件仿真及分析 .......................................................................................... 12 (一)顶层电路仿真 . ....................................................................................................... 12 (二)主控模块仿真 . ....................................................................................................... 1(三)显示模块仿真...........................................................................................................1(四)译码模块仿真.................................................................,........................................1 六、总结 ...................................................................................................................................... 15 附录 ............................................................................................................................................... 16
1、初始状态实物图 . ......................................................................................................... 16 2、购买状态实物图 . ......................................................................................................... 16
3、合作分工..........................................................................................................................17
一、前言
随着科技的发展和社会的进步,自动化商业机械有了越来越广泛的的应用,自动售货机作为自动化商业机械的代表被广泛用于公共场所自动售货,给人们的生活带来了极大的方便。特别在发达的国家,自动售货机已经十分普及,自动售货机可售出各种成型包装的小商品,各种袋装,盒装,软瓶装等小商品。因其无需专人值守而可以每天24 小时售货,被称为“无人小超市”。在我国,由于多种原因,自动售货机的市场推广缓慢,随着商品市场的不断繁荣,自动售货机和自动服务设施必将逐步得到广泛的应用。
本文设计研究自动售货机的主要功能模块,主要包括货币处理模块、余额计算模块、显示模块,延时和时控模块。相应的功能有选择货物,多次购买,出货找零。
本文是通过使用VHDL 语言,基于KX GW48FPGA 芯片,并通过使用QUARTUS II软件进行程序设计,模拟仿真,功能验证,以更好的来理解和掌握自动售货机控制系统的工作原理和设计方法,以及学习和掌握基于EDA 的电子产品设计方法,进一步加深对VHDL 语言以及QUARTUS II 软件、FPGA 可编程芯片的认识与了解。
FPGA 是现场可编程门阵列(Field programmable gates array) 的英文简称。是有可编程逻辑模块组成的数字集成电路(IC)。这些逻辑模块之间用可配置的互联资源。设计者可以对这些器件进行编程来完成各种各样的任务
二、设计项目及要求
设计一个自动售货机,它能够完成对货物信息的存储,硬币处理,余额计算和显示等功能。
(1)自动售货机可以出售四种货物,每种商品的数量和单价在初始化时设定,并存储在存储器中。
(2)采用模拟开关分别模拟5角和1元的硬币来进行购物,并通过按键来选择商品。 (3)系统能够根据用户输入的硬币,判断钱币是否够,当所投硬币达到或超过购物者所选面值时,则根据顾客的要求自动售货,并找回剩余的硬币,然后回到初始状态。当所投硬币不够时,则给出提示,并通过一个复位键退回所投硬币,然后回到初始状态。
(一)设计说明
本文设计的自动售货机可销售四种货物,售货机可识别1元和0.5元的两种货币,在一次购买过程中,可购买一个或多个商品,系统会自动计算所需钱数和找零的钱数并自动找零。另外有3个发光二极管、6个LCD 数码管:两个用来显示所需金额,两个用来显示已付金额,两个用来显示找零数。
(二)流程说明
本文设计的自动售货机当通电时,表示一次销售的开始。顾客选择一种商品或多种商品后就进入投币状态。若不投币,则自动返回初始状态。投币后,系统自动计算所投钱数。若投币够,则出货并找零。若投币不够,如果顾客没有继续投币,则退币并回到初始状态。本系统的投币销售流程图如图1所示。
图1 投币销售流程图
(一)顶层电路图
(二) 状态转换
本文所设计的自动售货机进程可以分为7个状态:a,b,c,d,e,f,g.a 为开始状态,当有商品选择键按下时即进入b 状态(投币状态)。当有货币投入,但投币不够时,即进入c 状态(继续投币),若投币够了,即进入d 状态(出货找零),之后进入f 状态(延时)后返回a(状态) 。
(三)模块组成
1、总控模块
(1)模块说明
总控模块是本系统最重要的模块,该模块大体有5个输入端口和6个输出端口,如图1-1所示。其输入端口包括clk 、coin1(投入一元货币)、coin5(投入0.5元货币)、
good1
(选择货物一)、good2(选择货物二)、good3(选择货物三)、good4(选择货物四),输出端口有paid (已投入多少钱)、needed (还需多少钱)moneyout (找零)、success (灯亮表示交易成功)、failure (灯亮表示交易失败)、showmoneyout (灯亮表示正在找零)。该模块实现了本系统最重要的交易过程,包括选择商品、投入货币,计算剩余金额,找零出货等。
(2)模块源程序
Library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity shouhuoji is
port(clk1: in std_logic; coin1:in std_logic; coin5:in std_logic; gd1:in std_logic; gd2:in std_logic; gd3:in std_logic; gd4:in std_logic;
paid:out std_logic_vector(7 downto 0); needed:out std_logic_vector(7 downto 0); success:out std_logic; failure:out std_logic;
showmoneyout:out std_logic;
moneyout:out std_logic_vector(7 downto 0)); end shouhuoji;
architecture behav of shouhuoji is
type state_type is (qa,qb,qe,qc,qg,qd,qf);--定义七个状态 signal current_state :state_type:=qa; signal q:integer range 0 to 100; begin
process(clk1)
variable paidtemp:std_logic_vector(7 downto 0);--定义变量 variable neededtemp:std_logic_vector(7 downto 0); variable backmoney:std_logic_vector(7 downto 0); variable pricetemp:std_logic_vector(7 downto 0); begin
if clk1'event and clk1='1' then case current_state is
when qa=>paidtemp:="00000000";neededtemp:="00000000"; backmoney:="00000000";pricetemp:="00000000";q
showmoneyout
if gd1='1' or gd2='1' or gd3='1' or gd4='1' then current_state
neededtemp:=pricetemp;
Elsif gd2='1' then pricetemp:=pricetemp+"00001010"; neededtemp:=pricetemp;
Elsif gd3='1' then pricetemp:=pricetemp+"00010100"; neededtemp:=pricetemp;
Elsif gd4='1' then pricetemp:=pricetemp+"00011001"; neededtemp:=pricetemp; end if; end if;
paid
when qb=> if coin1='1' or coin5='1' then
if coin1='1' then paidtemp:=paidtemp+"00001010"; else
paidtemp:=paidtemp+"00000101"; end if; end if;
if paidtemp>=pricetemp then backmoney:=paidtemp-pricetemp; neededtemp:="00000000";current_state
else neededtemp:=pricetemp-paidtemp;backmoney:="00000000"; current_state
paid
if gd1='1' or gd2='1' or gd3='1' or gd4='1'then q
Elsif gd2='1' then pricetemp:=pricetemp+"00000101"; neededtemp:=pricetemp;
Elsif gd3='1' then pricetemp:=pricetemp+"00010100"; neededtemp:=pricetemp;
Elsif gd4='1' then pricetemp:=pricetemp+"00011001"; neededtemp:=pricetemp; end if; end if;
paid
else current_state
when qe=>failure
else current_state
when qc=>if coin1='1' or coin5='1' then
if coin1='1'then paidtemp:=paidtemp+"00001010"; else
paidtemp:=paidtemp+"00000101"; end if;
if paidtemp>=pricetemp then backmoney:=paidtemp-pricetemp;
neededtemp:="00000000";current_state
else neededtemp:=pricetemp-paidtemp;backmoney:="00000000"; current_state
paid
if coin1/='1'and coin5/='1' then if q
else current_state
when qg=>failure
showmoneyout
when qd=>success
if backmoney>"00000000"then showmoneyout
current_stateif q
end process; end behav;
(3)总控模块封装电路图
图1-1 总控模块封装电路图
2、译码模块
(1)模块说明
该模块有一个输入端口和两个输出端口,如图1-2所示。输入端口是一个8位的二进制数,输出端口bcd0、bcd1是两个4位的BCD 码。该模块的主要的功能是实现将主控模块输出的二进制数(paid 、needed 、moneyout )转换成BCD 码,以便输出到七段数码管上显示出来。该模块的原理是将一个8位的二进制转换成2个4位的BCD 码,分为高四位和低四位。
(2)模块源程序
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity code1 is
port(b:in std_logic_vector(7 downto 0); bcd0:out std_logic_vector(3 downto 0); bcd1:out std_logic_vector(3 downto 0)); end code1;
architecture one of code1 is begin process(b) begin case b is
when"00000000"=>bcd0bcd0bcd0bcd0bcd0bcd0bcd0
when"00000111"=>bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0
when"00010100"=>bcd0null; end case; end process; end one;
(3)二进制译码模块封装电路图
图1-2 二进制译码模块封装电路图
3、显示模块
(1)模块说明
该模块有clk2、gao1、di1、gao2、di2、gao3、di3七个输入以及控制6个数码管显示的两个输出wei 和duan ,此外6个LCD 数码管,如图1-3所示:两个用来显示所需金额,两个用来显示已付金额,两个用来显示找零数。
(2)模块源程序 library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity erjinzhiyima is
port (clk2:in std_logic;
gao1,di1,gao2,di2,gao3,di3:in std_logic_vector(3 downto
0);
wei:out std_logic_vector(2 downto 0); duan1:out std_logic_vector(7 downto 0)); end entity erjinzhiyima;
architecture behv of erjinzhiyima is
signal dout: std_logic_vector(3 downto 0); signal wei1:std_logic_vector(2 downto 0); begin
process (clk2)
variable count:std_logic_vector(2 downto 0); begin
if RISING_EDGE(clk2) then --动态扫描显示输出 if count="101" then count:="000";
else count:=count+1; end if;
case count is
when "000"=>doutdoutdoutdoutdoutdoutnull; end case; end if;
end process; process(dout) begin
case dout is
when "0000"=>duan1duan1duan1duan1duan1duan1duan1duan1duan1duan1duan1
end behv;
(3)显示模块封装电路图
图1-3 显示模块封装电
五、各模块软件仿真及分析
(一)顶层电路仿真
图 5-1 顶层电路仿真图
此仿真显实的是顾客选择购买货物三,货物三的实际价格为2元,而顾客实际投入了
1.5元,购买失败,给出一个失败信号和退钱信号。
(二)主控模块仿真
图 5-2 主控模块仿真图
此仿真实现的是顾客购买货物三,货物三的价格为2元,而顾客实际投币1.5元,所以购买失败,退回投入的1.5元。
(三)显示模块仿真
图5-3 显示模块仿真图
此仿真实现的是顾客投入了1.5元,而购买货物还需投入0.5元,数码管上显示顾客已经投币1.5元,还需投入0.5元。
(四)译码模块仿真
图5-4 译码模块仿真图
此仿真实现的是将主控模块传过来的八位BCD 码分为两个四位BCD 码。
六、总结
这个设计实现了一个简单的自动售货机的功能,程序由硬件描述语言vhdl 编写。程序中采用分块编写的方式,将一个本来复杂的体系用简单的逻辑表述出来。这样做设计显得很流畅,每个成员都不是独立存在的。
通过完成本次课程设计,使我对EDA 技术有了更进一步的了解和掌握。从上世纪末以来,数字电子技术在迅速的发展,有力的推动了社会生产力的发展和社会信息化的提高。在其推动下,数字电子技术的应用已经渗透到了人类生活的各个方面,对于我们来说,学好EDA 这门课有着至关重要的意义。在编写程序中,让我们明白很多道理。虽然自己能够编写出实现基本要求的代码,可是在代码的很多地方都出现杂乱,冗长,完全背离了代码简练,易懂的原则,让我们明白了要多参考别人优秀的程序,借鉴别人的优点,使自己的编写能力得到提到。在各个进程中,对各个进程间的信号量传递要用易懂的字符替代,这对于读懂代码有很大的帮助。虽然在编程中犯了很多错误,但是通过不断的修改,不断的请教别人和借鉴别人的经验,最终实现了成功的编写了本次课程设计的代码,并且在解决错误,明白错误中让我们获益匪浅。对于本学期EDA 这门课有了更进一步的了解,对于一个陌生的题目也知道了如何下手。
总之,只有通过自己的动手,才能真正的理解上课时的内容,才能真正的掌握EDA 这门技术。
附录
1、初始状态实物图
2、购买状态实物图
3、合作分工