打印
[FPGA]

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

[复制链接]
814|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ak26843232656|  楼主 | 2018-5-26 11:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity matrix is
port(        clk: in std_logic;
                row:in std_logic_vector(3 downto 0);
                col:out std_logic_vector(3 downto 0);
                keyout:out std_logic_vector(3 downto 0);
                flag:out std_logic;
                clkreg: buffer std_logic
                );
end matrix;


architecture behave of matrix is
signal colreg:  std_logic_vector(3 downto 0);
signal con: std_logic_vector(7 downto 0);
signal cnt: std_logic_vector(2 downto 0) :="000";--(15 downto 0);
--signal clkreg: std_logic;

begin
process(clk)
begin
        if clk'event and clk = '1' then
                if cnt = "111" then--1100001101001111
                        cnt<="000";--"0000000000000000";
                        clkreg<='0';
                elsif cnt = "011" then--0110000110100111
                        cnt<=cnt+"001";--"0000000000000001";
                        clkreg<='1';
                else
                        cnt<=cnt+"001";--"0000000000000001";
                end if;
        end if;
end process;

process(clkreg)
        begin
        if clkreg'event and clkreg = '1' then
                        case colreg is
                                when "1110" => colreg<="1101";
                                when "1101" => colreg<="1011";
                                when "1011" => colreg<="0111";
                                when "0111" => colreg<="1110";
                                when others => colreg<="1110";
                        end case;
                end if;
end process;

col<=colreg;
con<= colreg & row;
process(clkreg)
begin
        if clkreg'event and clkreg = '1' then
                case con is
                        when "11101110" => keyout<="0000";flag<='1';--0
                        when "11011110" => keyout<="0001";flag<='1';--1
                        when "10111110" => keyout<="0010";flag<='1';--2
                        when "01111110" => keyout<="0011";flag<='1';--3
                        when "11101101" => keyout<="0100";flag<='1';--4
                        when "11011101" => keyout<="0101";flag<='1';--5
                        when "10111101" => keyout<="0110";flag<='1';--6
                        when "01111101" => keyout<="0111";flag<='1';--7
                        when "11101011" => keyout<="1000";flag<='1';--8
                        when "11011011" => keyout<="1001";flag<='1';--9
                        when "10111011" => keyout<="1010";flag<='1';--delete button,pull once delete one num;
                        when "01111011" => keyout<="1011";flag<='1';--clear button, pull this button will clear all num of ur input]
                        when "11100111" => flag<='0';--keyout<="1100";flag<='1';
                        when "11010111" => flag<='0';--keyout<="1101";flag<='1';
                        when "10110111" => flag<='0';--keyout<="1110";flag<='1';
                        when "01110111" => flag<='0';--keyout<="1111";flag<='1';
                        when "11101111" => flag<='0';
                        when "11011111" => flag<='0';
                        when "10111111" => flag<='0';
                        when "01111111" => flag<='0';
                        when others => flag<='0';
                end case;
        end if;
end process;

end behave;

相关帖子

沙发
ak26843232656|  楼主 | 2018-5-27 23:48 | 只看该作者
11111

使用特权

评论回复
板凳
ak26843232656|  楼主 | 2018-5-27 23:59 | 只看该作者

1111

1111

使用特权

评论回复
地板
爱上0在路上| | 2018-5-30 11:56 | 只看该作者
解释什么呢

使用特权

评论回复
5
feihufuture| | 2018-5-30 13:59 | 只看该作者

我也正有此问!

使用特权

评论回复
6
lihui567| | 2018-6-1 11:31 | 只看该作者
储物柜也用FPGA做吗,用单片机做的也非常不错的,比较稳定啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝