找回密码
 注册
关于网站域名变更的通知
查看: 294|回复: 1
打印 上一主题 下一主题

自动售货机vhdl代码以及解析

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-12-4 09:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 Diabloa 于 2018-12-6 16:07 编辑
" y8 `, E3 F/ L* D  K9 ]% o9 f8 Y( k5 l$ _4 N% d: Z4 v& ~  X  y6 M# Y
自动售货机vhdl代码以及解析
library IEEE;  A6 e4 w" \, l2 W, n7 Z9 N- [* r
use IEEE.STD_LOGIC_1164.ALL;/ P3 p$ G3 |8 g+ T4 o- E
use IEEE.STD_LOGIC_ARITH.ALL;3 t2 i) H8 O: c7 A5 m
use IEEE.STD_LOGIC_UNSIGNED.ALL;! F4 ~/ k: k/ E2 d9 R5 ?) c: s
entity drink_auto_sale is
5 K  r+ C- g" n6 d         port(clk: in std_logic;
: o! N# c+ a( t9 \- t7 z                   reset:in std_logic;
6 f* Z# J+ E# B: r- q8 N* b                   sw101:in std_logic;1 N; c( H" H# K( {+ C7 M
                   sw102:in std_logic;2 G1 G, K. C" O6 G& o
                   buy : out std_logic;
/ s; q9 r+ X) e8 D                   back: out std_logic);3 d) V5 g$ h7 @4 b4 m3 w
end drink_auto_sale;
$ k, z( m& ]2 Jarchitecture Behavioral of drink_auto_sale is
2 H- B; z5 S  d: u6 }type state_type is(st0,st1);
7 E$ M' y: K9 Asignal cs ,ns : state_type;
0 G- `( s: V1 j! x8 @  j( l9 F. v6 Ubegin. ?' U4 V2 }* L: q" h% `
process(clk,reset)
3 E' L! b3 Y/ }. nbegin
. ^" T; H" Z2 |6 V/ k1 n' ^         if(reset = '1') then0 l3 ~. o, T) R5 J
                   cs <= st0;6 @% z  L2 p7 ?* B
         elsif(clk'event and clk = '1') then   " q  ^8 Y4 g* ]! j5 V/ a1 u
                   cs <= ns;# I) p' j  H3 t# X" I# t; [
         end if;7 f" E7 X- i9 V+ o' ~5 I" C
end process;
: B& Q  Q( i. y0 \. J
0 {) i6 b/ U! W6 Y# ~process(reset ,cs)
' T. N1 F$ L" ]( m2 ]1 L% I& @- Obegin; f- T' S2 o1 _; l
         case cs is
2 x2 R) [0 p0 ]) r3 }$ `# X                   when st0 =>        if( sw101 = '1') then
9 t) Y7 \. H7 A$ W  y4 I+ V( d+ V% A                                                                 ns <= st1;) G2 B: N; ^; f7 G$ z
                                                                 buy<= '0';
, l0 i. T4 m, d( Z* n                                                                 back<= '0';+ G+ K: c! ?) v# `6 R. q6 N
                                                        elsif(sw102 = '1') then- |3 x6 J6 V; G
                                                                 ns <= st0;9 A" m) s, Z' I, P+ M
                                                                 buy<= '1';& D; k& L1 }( K1 a0 W2 X
                                                                 back <= '0';( g$ W; H! Q5 Q; ?
                                                        else
. O  N1 N$ |% @, B, t0 f$ f                                                                 ns <= st0 ;
6 |. x7 d7 E1 o$ {! i$ T# {                                                                 buy <= '0';* h7 j' p! X. j# T' W1 [& Q3 ~! M
                                                                 back <= '0';* J$ }0 A) o' B7 f2 Y
                                                        end if;
0 m) E8 g8 |0 q* o8 W                   when st1 => if(sw101 = '1') then) \' W, L1 ?! m! O9 ^2 {
                                                                 ns <= st0;
" l0 f2 Q" k0 C5 |& |                                                                 buy <= '1';
, |- I, E. k) b$ l4 K2 Q$ j! a                                                                 back <= '0';$ I! \6 B8 r2 }$ \* s
                                                        elsif(sw102 = '1') then
: }3 j/ x$ @; n$ F4 }: o( U                                                                 ns <= st0;
! h- [2 j5 Q/ B5 n" F& w# K                                                                 buy <= '1';5 U, L* E/ ]$ |, k& I- g% ^
                                                                 back <= '1';
+ j0 E3 I% Z% Q$ }7 y2 S                                                        end if;+ Q" O: y; B  J7 u& g
                   when others => ns <= st0;
+ p! R, T: f6 s; d* Z. [# u3 K( D                                                                 buy<= '0';
- U$ n8 X7 g' X# m                                                                 back <= '0';
- X  v6 O# r4 X         end  case;" g# M" S5 N  ]+ T6 j5 Y$ ^# C
end process;
2 i+ _3 j) X( C) T# ?end Behavioral;# j  j7 i8 K+ u0 `& f
设 计过程:设定三个状态:0分,5分;当状态为0分时,接收到5分信号脉冲后转为5分;接收到10分信号脉冲时,转到0分状态,同时弹出饮料,不找零;状态 为5分时,接受到5分信号,弹出饮料,不找零,返回0分状态;当接受到10分状态时,弹出饮料,找零,并返回零分状态。

该用户从未签到

2#
发表于 2018-12-4 10:08 | 只看该作者
写的不错 赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-23 21:04 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表