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

求大神解释储物柜电子密码程序VHDL

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

: ?! W! g! q  R/ ?: ~" a2 G
+ v( s6 `0 D( @: \- Ulibrary ieee;
$ a% x" n$ D$ `! kuse ieee.std_logic_1164.all;
6 u6 A  Q+ V6 y$ w: E8 ~+ ]$ o2 @9 kuse ieee.std_logic_unsigned.all;
0 I8 q# u$ ?, \# c
( F1 ~6 q/ ^. A7 M; i. \entity matrix is
' M# @+ F, r' }3 ?port(        clk: in std_logic;8 e; ?4 ]7 R2 B; h4 s& Z" S: {5 Z
                row:in std_logic_vector(3 downto 0);' Q, _" `: a6 M
                colut std_logic_vector(3 downto 0);; @& a" i% a' W# t2 ]. i  e! @
                keyoutut std_logic_vector(3 downto 0);
! ], J: S. W) V* ^                flagut std_logic;
2 C" f* Q1 k8 r0 L* x( T                clkreg: buffer std_logic
1 b- D0 B8 @) T, C" R& {* Y8 \                );: l9 z0 G* J6 E. m; ~# _5 D
end matrix;
) ^% C' w6 ~- N
, ^8 ?7 F! C& L2 H: ^4 k2 a
! A7 v1 W( k1 ]1 _! \# rarchitecture behave of matrix is
& Y; F% ^# x+ D! {+ [5 m: lsignal colreg:  std_logic_vector(3 downto 0);: y* C2 R3 c5 E3 W1 e! ~
signal con: std_logic_vector(7 downto 0);' a% @6 A1 P0 c  B% S! b# I* F! C* u
signal cnt: std_logic_vector(2 downto 0) :="000";--(15 downto 0);
# @# e; T3 Y+ m1 k--signal clkreg: std_logic;( T! A# T8 i% p+ }! Z" g
( @7 H2 m1 A$ e
begin
/ x1 S% p1 @  x9 u8 c' Hprocess(clk)
/ V) ?( V# C# m" |5 o- x- Ibegin$ R! @: ]4 O3 T/ [
        if clk'event and clk = '1' then
( `0 q2 Y6 a; D. e4 _0 e3 @% E                if cnt = "111" then--1100001101001111- r' X7 C' D" t! [$ W4 a' \
                        cnt<="000";--"0000000000000000";
. d7 }6 g# T- h$ C/ m/ g; A, L                        clkreg<='0';7 e8 e9 ~9 F" b  c! l
                elsif cnt = "011" then--0110000110100111+ j2 v) \, Z2 {% k' w3 ^4 z
                        cnt<=cnt+"001";--"0000000000000001";
1 @( f$ o  x5 @                        clkreg<='1';+ c6 z8 M# l8 X0 H
                else
. `, [1 j8 l6 q  _# o' E, x4 `                        cnt<=cnt+"001";--"0000000000000001";
3 D) c" W8 E9 U$ J  u5 z3 x                end if;( P2 r4 |0 t8 n7 Y6 q
        end if;
3 B  `: U" `6 L2 C) _( Pend process;
. B0 ?( H* m* ]4 ^4 d# j8 s  O! k# c) V6 t5 B! ?- Z
process(clkreg)
% k& a5 v: c4 [. |9 z0 E4 J        begin
+ X  C3 ], \0 t3 y        if clkreg'event and clkreg = '1' then3 b. T  C7 M/ A( l3 p6 ?  M- s
                        case colreg is  l( M8 R1 Z! q; V
                                when "1110" => colreg<="1101";- Y! [" \) H* X5 a
                                when "1101" => colreg<="1011";* `0 s& U( H& |2 ]
                                when "1011" => colreg<="0111";
* o0 _& L( s- u( U" y                                when "0111" => colreg<="1110";
( M; Y7 Z, B# V! F7 x( Y9 |' {                                when others => colreg<="1110";
$ w' V5 N4 {0 F: w9 a- i                        end case;( ?' D& q& m5 J, t8 y) ?( r
                end if;0 I1 w7 \! H1 k. Q2 G/ z9 D7 A
end process;
4 |, k  {$ Z; F, E: Y; B* [/ {* O- ?" a/ e
col<=colreg;
2 n" k2 {% T+ b8 [. \  E, K+ M! }4 jcon<= colreg & row;/ w1 M3 k, F% S* Z# x
process(clkreg)+ X& u1 Q2 [, F5 e3 z7 C4 G" c$ v( t
begin
, A' S  J' f1 R2 q. ~        if clkreg'event and clkreg = '1' then
( W2 n) N: Z) N3 x) K                case con is( L+ i! X' F: i2 P, v4 Y# L
                        when "11101110" => keyout<="0000";flag<='1';--03 y* E; u1 f/ X7 T  {4 b
                        when "11011110" => keyout<="0001";flag<='1';--1- h: @0 P2 t% o$ Y7 f
                        when "10111110" => keyout<="0010";flag<='1';--21 O7 w0 X2 _; b6 _2 i0 s
                        when "01111110" => keyout<="0011";flag<='1';--3: V+ B5 ], y* R1 [( L3 o
                        when "11101101" => keyout<="0100";flag<='1';--4- B$ S0 ], ~- ?8 S, ?4 i# k
                        when "11011101" => keyout<="0101";flag<='1';--5
5 I" k2 U4 {0 N7 `$ J                        when "10111101" => keyout<="0110";flag<='1';--6
5 Z1 a7 G- ?7 m9 k                        when "01111101" => keyout<="0111";flag<='1';--7( R1 d# x) ?0 x& [) q" X6 V2 g" z
                        when "11101011" => keyout<="1000";flag<='1';--8
1 y8 u- M. a' ^1 }( o1 x5 x                        when "11011011" => keyout<="1001";flag<='1';--9
, I  V8 h5 X! b8 l( O                        when "10111011" => keyout<="1010";flag<='1';--delete button,pull once delete one num;' Z' ]' Y1 J. E3 W. C
                        when "01111011" => keyout<="1011";flag<='1';--clear button, pull this button will clear all num of ur input]0 M  z8 G8 b2 ]6 R, I* ^5 t
                        when "11100111" => flag<='0';--keyout<="1100";flag<='1';
) `9 S) v. Z1 D+ u; Y' }, x/ D                        when "11010111" => flag<='0';--keyout<="1101";flag<='1';0 e: A9 A, R5 s) E5 w$ P: }5 E
                        when "10110111" => flag<='0';--keyout<="1110";flag<='1';
  |% {+ |6 R- ~                        when "01110111" => flag<='0';--keyout<="1111";flag<='1';) {$ B( c1 D7 v- ?9 g& J- u5 G
                        when "11101111" => flag<='0';
% z1 x  L7 n2 a2 ~8 t: N% w  H4 p8 ~; S                        when "11011111" => flag<='0';, Q, u* l/ o' Q3 j+ n1 f3 B
                        when "10111111" => flag<='0';' k. |' W) [8 p
                        when "01111111" => flag<='0';
) M' d) _6 c) H3 U  o" b0 P6 A                        when others => flag<='0';
- c( r5 l. w) n) V- J, n' Q/ u; J9 ^                end case;6 |+ S/ h. f1 N, o1 D
        end if;
' J' c( n. @( W+ l+ s, ^end process;: Z( V' I. s# K# ~+ [9 ]9 W
% V2 n- C. P' F7 m, }: m
end behave;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-2 19:39 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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