Curso de diseño de reloj electrónico digital.
biblioteca ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
el código de entidad es p>
p>
port( clk: en std_logic;--La señal del reloj cuando el circuito está funcionando
clk1: en std_logic;--La señal del reloj requerida para la generación de alarma p>
k: in std_logic;--El nivel alto indica entrada 1
led: out std_logic;--Se ilumina cuando la entrada es correcta
led1: out std_logic; --Se ilumina cuando la entrada es incorrecta
restablecer: en std_logic; restablecer cuando se presiona
desea: en std_logic - si se debe cambiar la contraseña
alarma: out std_logic; -- sonido de alarma de salida
show: out std_logic_vector(3 downto 0));--función de aviso
end;
arquitectura un código es
temperatura de señal: std_logic_vector(3 hasta 0);--Ingrese un dígito más 1
código de señal: std_logic_vector(7 hasta 0);--Guardar contraseña
obtener código de señal: std_logic_vector(7 hasta 0);--Guardar la contraseña modificada
contador de señal: std_logic_vector(3 hasta 0);--Contar
señal permitir: std_logic;--Si se permite cambiar la contraseña
timbre de señal: std_logic;--si se activa la alarma
comenzar
proceso (clk)
comenzar
si ring='1' entonces
alarmlt;=clk1;--La alarma está activada
else
alarmlt;='0';- -La alarma finaliza
end if;
if reset='1' then--Después de presionar reset, el la contraseña se devuelve a la contraseña inicial
getcodelt;= "00000000";--Contraseña inicial
counterlt;="0000";--Recuento interno
codelt;="11001000";--Contraseña
ledlt;='0';
led1lt;='0';
allowlt;='0 ';
elsif clk'event and clk=' 1' luego--Ingrese el pulso clk, luego reciba la contraseña de 1 dígito
getcodelt;=getcode(6 downto 0)amp; k;--Incorpore esta contraseña de 1 dígito en el último dígito en getcode
si contador="1000" entonces--cuando la entrada sea un número de 8 dígitos
Compara
si code=getcode entonces
ledlt;='1';--la luz correcta está encendida
led1lt;='0'; p>
ringlt;='0';
allowlt;='1';--Permitir modificación de contraseña
elsif enable='1' and want='1' entonces-- Si se permite la entrada y desea ingresar
codelt;=getcode;--Ingrese la nueva contraseña
ledlt;='0';
led1lt;='0' ;
else
allowlt;='0';
ledlt;='0';
led1lt;='1' ;--La luz de error está encendida
ringlt;='1';--La alarma está sonando
end if;
counterlt;="0000";-- Recuento
else
counterlt;=counter 1; --Acumular
templt;=temp 1;- -Especialmente configurado para evitar la fuga de contraseñas
p>
end if
end if
show lt = temp; p> finalizar proceso;
finalizar