VHDL描述的自动售货机系统毕业论文

2026/1/13 6:45:16

BEGIN setstart<='0';clrstart<='0'; CASE state3 IS WHEN s_cancel=> IF(start_cancel_rising='1')THEN nextstate3<=s_start;setstart<='1'; ELSE

nextstate3<=s_cancel;clrstart<='1';

END IF;

WHEN s_start=> IF(timer_down_rising='1')THEN clrstart<='1';nextstate3<=s_cancel; ELSIF(start_cancel_rising='1')THEN nextstate3<=s_cancel;clrstart<='1'; ELSE

nextstate3<=s_start;

END IF;

END CASE;

END PROCESS;

main_control_update:PROCESS(reset,sysclk,timer_down_rising)IS BEGIN IF(reset='0')THEN

state1<=s_type1;state2<=s_quan1;state3<=s_cancel;

ELSIF(sysclk'EVENT AND sysclk='1')THEN state1<=nextstate1;state2<=nextstate2;state3<=nextstate3;

IF(set_type1='1')THEN type1_out<='1';ELSE type1_out<='0';END IF; IF(set_type2='1')THEN type2_out<='1';ELSE type2_out<='0';END IF; IF(set_type3='1')THEN type3_out<='1';ELSE type3_out<='0';END IF; IF(set_quan1='1')THEN quan1_out<='1';ELSE quan1_out<='0';END IF; IF(set_quan2='1')THEN quan2_out<='1';ELSE quan2_out<='0';END IF; IF(set_quan3='1')THEN quan3_out<='1';ELSE quan3_out<='0';END IF; IF(timer_down_rising='1')THEN start_out<='0'; ELSIF(clrstart='1')THEN start_out<='0';

ELSIF(setstart='1')THEN start_out<='1';

END IF;

type_sel_dlayed<=type_sel;

quantity_sel_dlayed<=quantity_sel;

21

start_cancel_dlayed<=start_cancel;

timer_down_dlayed<=timer_down;

END IF; END PROCESS;

END ARCHITECTURE rtl;

3.选择的定时模块

LIBRARY

IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY timer_count IS PORT(reset,sysclk,clk,start_in,ok_buy:IN STD_LOGIC;

timer_down_out:OUT STD_LOGIC);

END ENTITY;

ARCHITECTURE rtl OF timer_count IS TYPE stateTYPE IS(idle,incount); SIGNAL state,nextstate:stateTYPE;

SIGNAL count_inc,count_clr,setdown,clrdown:STD_LOGIC; SIGNAL timer_down,ok_buy_rising,ok_buy_dlayed:STD_LOGIC; SIGNAL count,count_u:STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL timerdown_rising,timerdown_dlayed,clk_rising,clk_dlayed:STD_LOGIC; BEGIN

timerdown_rising<=timer_down AND (NOT timerdown_dlayed); ok_buy_rising<=ok_buy AND (NOT ok_buy_dlayed); clk_rising<=clk AND (NOT clk_dlayed);

count1:PROCESS(clk_rising,state,start_in,count,ok_buy_rising)IS BEGIN setdown<='0';clrdown<='0';count_inc<='0';count_clr<='0'; CASE state IS WHEN idle=>clrdown<='1';count_clr<='1'; IF(start_in='1' AND timerdown_rising='0')THEN

nextstate<=incount;

22

ELSE

nextstate<=idle;

END IF;

WHEN incount=> IF(start_in='0' OR ok_buy_rising='1')THEN

nextstate<=idle;

ELSE IF(clk_rising='1' AND start_in='1')THEN IF(count/=count_u)THEN

count_inc<='1';nextstate<=incount;

ELSE clrdown<='0'; setdown<='1'; count_clr<='1';

nextstate<=idle;

END IF;

END IF;

END IF;

END CASE;

END PROCESS;

timer_count_update:PROCESS(reset,sysclk)IS BEGIN IF(reset='0' AND (NOT timerdown_rising)='0')THEN

state<=idle;clk_dlayed<='0';count_u<=\

ELSIF(sysclk'EVENT AND sysclk='1')THEN

state<=nextstate;

IF(clrdown='1')THEN timer_down<='0';ELSIF(setdown='1')THEN timer_down<='1';END IF; IF(count_inc='1')THEN

count<=count-1;

ELSIF(count_clr='1')THEN count<=\ END IF;

timerdown_dlayed<=timer_down; ok_buy_dlayed<=ok_buy;

clk_dlayed<=clk;

23

END IF;

timer_down_out<=timer_down;

END PROCESS;

END ARCHITECTURE rtl;

,商品金额计算模块

LIBRARY

IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY money_count IS PORT(reset,sysclk,start_in,timer_down,ok_buy:IN STD_LOGIC; type1_in,type2_in,type3_in,quan1_in,quan2_in,quan3_in:IN STD_LOGIC;

money_1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END ENTITY;

ARCHITECTURE rtl OF money_count IS

SIGNAL ok_buy_rising,ok_buy_dlayed:STD_LOGIC; SIGNAL timer_down_rising,timer_down_dlayed:STD_LOGIC; BEGIN

ok_buy_rising<=ok_buy AND (NOT ok_buy_dlayed);

timer_down_rising<=timer_down AND (NOT timer_down_dlayed);

money_count_update:PROCESS(reset,sysclk,timer_down_rising,ok_buy_rising)IS VARIABLE money_sum_tmpe:INTEGER; VARIABLE uu:STD_LOGIC; BEGIN IF(reset='0' OR timer_down_rising='1')THEN

money_sum_tmpe:=0;uu:='0';

ELSIF(sysclk'EVENT AND sysclk='1')THEN IF(ok_buy_rising='0' AND uu='0')THEN

money_sum_tmpe:=0;

ELSE uu:='1';

IF(start_in='0')THEN

24

4


VHDL描述的自动售货机系统毕业论文.doc 将本文的Word文档下载到电脑
搜索更多关于: VHDL描述的自动售货机系统毕业论文 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219