上传者: SKCQTGZX
|
上传时间: 2021-12-02 18:02:59
|
文件大小: 7.64MB
|
文件类型: RAR
基于VHDL设计用PGA实现一款简易电子密码锁QUARTUS工程源码+文档说明
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
entity time_counter is
port(
clk:in std_logic; --50M时钟输入
reset_n:in std_logic; --复位信号输入
password1_in:in std_logic_vector(3 downto 0); --
password2_in:in std_logic_vector(3 downto 0); --
password3_in:in std_logic_vector(3 downto 0); --
password4_in:in std_logic_vector(3 downto 0); --
ok_signal_counter_in:in std_logic_vector(2 downto 0);
seg_duan:out std_logic_vector(7 downto 0); --数码管段信号输出
seg_wei:out std_logic_vector(7 downto 0) --数码管位信号输出
);
end time_counter;
architecture time_counter_behave of time_counter is
signal clk_1hz: std_logic;
signal count: std_logic_vector(24 downto 0);
signal clk_scan: std_logic;
signal seg_select: std_logic_vector(2 downto 0);
signal scan_count: std_logic_vector(13 downto 0);
begin
-- //****************************************************************************************************
-- // 模块名称:50M时钟分频至1HZ模块
-- // 功能描述:
-- //****************************************************************************************************
process(clk,reset_n)
begin
if(reset_n = '0')then
clk_1hz <= '0';
count <= "0000000000000000000000000";
elsif(clk'event and clk = '1')then--上升沿触发
if(count = "1011111010111100001000000")then--
count <= "0000000000000000000000000";
clk_1hz <= not clk_1hz;
else
count <= count + '1';
end if;
end if;
end process;
-- //****************************************************************************************************
-- // 模块名称:数码管扫描时钟产生模块
-- // 功能描述:
-- //************************************************************************************