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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Diabloa 于 2018-12-6 16:07 编辑 / D1 L$ u& I, y; z) Y- g6 r

$ ?& }4 S# K$ ^& l( r
自动售货机vhdl代码以及解析
library IEEE;
: |: U: u- h" Z% i- r! S  ouse IEEE.STD_LOGIC_1164.ALL;
) ?+ O' I+ z6 C7 G) \6 Z- P* @" ouse IEEE.STD_LOGIC_ARITH.ALL;
' z) f6 V& M. Z/ K, o7 J/ F0 u/ ouse IEEE.STD_LOGIC_UNSIGNED.ALL;% j  @" d9 M  H3 l, h- l. g
entity drink_auto_sale is- C" O" r0 h8 L
         port(clk: in std_logic;
- ~9 u+ L$ N2 U$ t/ u, V, y$ O                   reset:in std_logic;
+ |. ^, @3 N" x                   sw101:in std_logic;
! I* O1 T2 @) {* B4 `9 m6 l8 b+ E                   sw102:in std_logic;6 K2 q8 R) v0 Q+ C
                   buy : out std_logic;
# s$ C& _1 K/ G: }* I( V  ]                   back: out std_logic);& W5 g2 x) y; K% [7 e0 O" W
end drink_auto_sale;
6 _, s+ @1 n' T; F% }; `architecture Behavioral of drink_auto_sale is" ^9 h+ }# S# A' A0 f) y+ P, C
type state_type is(st0,st1);
4 j! B/ e4 O. Tsignal cs ,ns : state_type;, t; w  c- i4 F
begin
- N: P* I% R; I0 t$ Z* i: Y, ?4 G  fprocess(clk,reset)
1 d0 }3 ~7 O  \begin/ `0 l" W% P+ u8 N( h
         if(reset = '1') then
) e1 p0 G- F. T5 ]! O                   cs <= st0;3 P/ s4 z0 `( u/ l5 Y  h
         elsif(clk'event and clk = '1') then   & d5 a0 ]# c* v% v# v0 [
                   cs <= ns;0 Y- ?) t, G5 {+ r
         end if;$ N* N+ A3 {3 g% p
end process;8 I/ Y" L! L! e+ P
7 a* \" \2 d6 Y& L% g4 K' A/ Z
process(reset ,cs)
3 i: C2 c& U: y. M8 C5 Vbegin( w8 z, x# S( j+ V
         case cs is
2 y- H" T# K+ q" |5 @) y                   when st0 =>        if( sw101 = '1') then/ `2 R2 B: J. l# g8 P
                                                                 ns <= st1;
+ U% ~. ]6 G5 ?$ J# F2 p                                                                 buy<= '0';
4 O/ d; a: z1 v+ V! |                                                                 back<= '0';
% Q# m6 Q. W: W+ q/ Q; ~                                                        elsif(sw102 = '1') then
; u7 p9 h4 k& U' X! T$ j                                                                 ns <= st0;
1 d: s  p3 k2 C5 }" y0 T: x                                                                 buy<= '1';# k$ N2 p& I! Q; N
                                                                 back <= '0';
1 `, n9 y8 g+ Y                                                        else* ^5 u! W4 g! P) p$ ?7 [
                                                                 ns <= st0 ;
" B9 P2 ]+ s% P% i6 e3 Y/ k                                                                 buy <= '0';
: U' s$ `9 a9 R4 d1 b                                                                 back <= '0';1 i; G4 ~3 X9 s! C; J! C+ v+ O
                                                        end if;; H  `* c; }+ E' m3 e0 w% g
                   when st1 => if(sw101 = '1') then% \7 L6 p/ `# d  x. y$ M: s
                                                                 ns <= st0;0 i8 d0 n. B, C' p# ?( m! T
                                                                 buy <= '1';
; @, i" E  D1 f6 K                                                                 back <= '0';
: }( J' v* C# M9 S& r                                                        elsif(sw102 = '1') then" |' u' X$ B0 S2 @, R  m- A
                                                                 ns <= st0;' x7 w4 O/ j( S  q
                                                                 buy <= '1';* R1 p) T5 ~$ r! b
                                                                 back <= '1';
: e; h0 ~6 |7 e# D8 F8 [) g                                                        end if;
5 ^7 ]  R: d! @                   when others => ns <= st0;
$ Y  W, z2 ]- c% a- I                                                                 buy<= '0';9 ^* S- i; ]; p+ y+ H3 G6 B' i8 D, `
                                                                 back <= '0';
5 f5 I6 _' Y$ S  E! x  I( N         end  case;3 w, q4 {0 M: m) d! u1 z6 v9 P
end process;3 @, d" R& u3 H
end Behavioral;" t/ [( F1 i0 [: H9 g
设 计过程:设定三个状态: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-10-6 19:13 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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