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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

1 V0 X) b* p0 Y9 p4 J& c3 {3 h7 V$ ~) \7 g* m
library ieee;
1 X9 L- \1 K4 g0 puse ieee.std_logic_1164.all;7 M9 v' g+ f' D4 J
use ieee.std_logic_unsigned.all;  n5 f0 [% Q" z

! r4 N% G9 Y" `8 rentity matrix is% t+ l. }7 B* o- Q. I8 B! ^" q
port(        clk: in std_logic;6 b9 r0 N7 w7 U& f# D) a9 ~
                row:in std_logic_vector(3 downto 0);+ o3 N" u/ g" T( G
                colut std_logic_vector(3 downto 0);! Q; c, q8 u/ _7 }3 ^
                keyoutut std_logic_vector(3 downto 0);
$ I# p0 A0 J" @  Z                flagut std_logic;7 W- ]5 V( A" X3 p
                clkreg: buffer std_logic
( Z+ [: ?6 ~. O                );2 B, ^  H* x/ V$ Q- l
end matrix;
- L3 c: y8 n3 z8 J' \
9 G# H* `4 O) {; B! M. q: g1 @; O2 t7 ]6 |+ l8 Z! p8 Y' Z  {5 {
architecture behave of matrix is
. w- v( ]4 k9 ?  Osignal colreg:  std_logic_vector(3 downto 0);0 w4 S6 z& d7 f# V' I
signal con: std_logic_vector(7 downto 0);5 ]* l  P6 Z4 j1 c* F6 X( {
signal cnt: std_logic_vector(2 downto 0) :="000";--(15 downto 0);
( d( k* P, R5 M' A6 c" E  M2 N& |--signal clkreg: std_logic;
7 O# B* b% E6 X- m& o) i7 e& m0 q* t: @& y* W; c6 A% b
begin# V' y& v, M+ E. c
process(clk)
9 Z0 ]& P7 ~" n: O; Y& A9 Vbegin
* T5 T1 B5 J  i        if clk'event and clk = '1' then
/ }& s3 M1 g% H                if cnt = "111" then--1100001101001111
. @9 O+ d  n; \' H7 y                        cnt<="000";--"0000000000000000";
; u  d3 ~- q$ k5 D) i; `( c4 _                        clkreg<='0';" b4 }  J9 p  t
                elsif cnt = "011" then--0110000110100111( O' s! Z( ?# N
                        cnt<=cnt+"001";--"0000000000000001";. l. D2 ?6 ^2 C: u
                        clkreg<='1';' w: J, W( W' q1 n/ ~
                else
, Q8 H. Y: b4 M: C  V                        cnt<=cnt+"001";--"0000000000000001";
5 Q% k+ ]' |3 r- \' ?" ]# y                end if;1 {: V1 z" @2 z& q  ^  `) H8 |
        end if;
1 H5 d. X' j& j5 Q, Jend process;
# A" z+ f! v9 l: }! g
* s& S( A' q7 [$ c& Xprocess(clkreg)
1 z* |( D/ g  {2 a        begin; f( I% {. @. {
        if clkreg'event and clkreg = '1' then' n" _9 C8 u/ C3 S7 U
                        case colreg is8 g2 A2 ]" S, q: F. k/ `
                                when "1110" => colreg<="1101";, l+ Y7 |& ?3 i
                                when "1101" => colreg<="1011";
, w: c/ J5 o" c' u. i: L                                when "1011" => colreg<="0111";, k' Y- J! n1 l! k$ ]
                                when "0111" => colreg<="1110";
$ g: M6 I8 f8 R                                when others => colreg<="1110";
  ^: b& U* H8 Z  C9 y" z9 Y, d- U3 F, |                        end case;' E7 t4 ?! g: n. v
                end if;% D: d3 Q7 J# b
end process;
4 s/ |: Q" @  i) T0 t! m  Q, u+ y: `3 t+ _
col<=colreg;* q  o' s& u2 a" Q
con<= colreg & row;' @5 j: u6 M3 q: G, e! Y* S
process(clkreg)5 a$ J# m' b9 d, O) ?
begin% L" m/ c5 V6 \, f
        if clkreg'event and clkreg = '1' then* W7 {) g3 [' d2 Q& D
                case con is
, D/ n9 f2 J, p6 \0 U7 r8 U                        when "11101110" => keyout<="0000";flag<='1';--0
5 `: [5 l/ c) L8 ^0 u& ^  H7 p9 y                        when "11011110" => keyout<="0001";flag<='1';--1
1 {4 n6 U1 K3 C/ o8 s                        when "10111110" => keyout<="0010";flag<='1';--23 P* g8 `6 V+ T! q) I4 g. Y; b9 o
                        when "01111110" => keyout<="0011";flag<='1';--3# m# j/ z+ n' E+ M7 z6 _# }# Z
                        when "11101101" => keyout<="0100";flag<='1';--49 W$ A3 q- ]! Z7 V. E
                        when "11011101" => keyout<="0101";flag<='1';--50 S1 ]1 k' N2 t$ g
                        when "10111101" => keyout<="0110";flag<='1';--6
7 q. p7 O! S: h/ P$ i2 g2 J. S                        when "01111101" => keyout<="0111";flag<='1';--7
6 \& L3 t' q: [1 w                        when "11101011" => keyout<="1000";flag<='1';--83 F4 h/ P9 F# V: ?1 W' e5 j% D+ E
                        when "11011011" => keyout<="1001";flag<='1';--9
; s  S  ^  e4 v* g- E                        when "10111011" => keyout<="1010";flag<='1';--delete button,pull once delete one num;9 A  x8 U; q- c' Y1 u
                        when "01111011" => keyout<="1011";flag<='1';--clear button, pull this button will clear all num of ur input]3 ^3 R- R1 W1 p: z+ b
                        when "11100111" => flag<='0';--keyout<="1100";flag<='1';
6 x* T9 S& b! C* c2 s! f; [7 y                        when "11010111" => flag<='0';--keyout<="1101";flag<='1';
  d' }; c# t4 C5 M% i) g: b                        when "10110111" => flag<='0';--keyout<="1110";flag<='1';
! V7 w6 h' [/ s$ d/ ], ?                        when "01110111" => flag<='0';--keyout<="1111";flag<='1';
6 U. V1 `4 d: F2 [: [                        when "11101111" => flag<='0';
: Q8 @) I! r3 ?# M$ k5 E9 T7 W                        when "11011111" => flag<='0';5 Y; }1 u% ^1 h+ M8 w3 l8 u
                        when "10111111" => flag<='0';
4 F  k. v. i; @3 Q0 ]& I                        when "01111111" => flag<='0';- R4 u" X. r" N9 _; ?
                        when others => flag<='0';5 t5 y: d9 X# f5 _+ h: M0 _) n, H
                end case;: s# Y# T9 _; s; Q9 c, h4 t1 X
        end if;2 M9 i; X: P5 s6 ]8 L6 X
end process;0 P% K8 L1 H6 d6 f

- x  Q8 ?/ ~  f, E' k, X4 r) vend behave;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 05:34 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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