Cómo utilizar el lenguaje Verilog HDL para implementar un circuito de escaneo dinámico digital de 6 dígitos
use ieee.std_logic_1164.all; entidad reg4 es
puerto(
din: en std_logic_vector( 3 abajo a 0);
dout: out std_logic_vector(3 abajo a 0);
ena: in std_logic
);
fin reg4;
El arte estructural de reg4 es
comenzar
proceso(ena)
comenzar
si ena ='1' luego doutlt;=din; -- ena=1, establecer número
else doutlt;="ZZZZ"; -- ena=0, alta resistencia
fin if ;
finalizar el proceso;
finalizar el arte; Este es un decodificador de 6 bits (en realidad, un decodificador de 3 a 8 bits, los 2 bits más altos no se utilizan), use Para seleccione la salida del pestillo del tubo digital: biblioteca ieee;
use ieee.std_logic_1164.
all; el decodificador de entidad es
port(
add: in std_logic_vector(2 downto 0);
sel: out std_logic_vector(5 downto 0) p> p>
);
finalizar el decodificador; el arte arquitectónico del decodificador es
comenzar
sel(5)lt;='1' cuando add= "110" else '0';
sel(4)lt;='1' cuando add="101" else '0'; ;= '1' cuando agrega="011" else '0'
sel(2)lt;='1' cuando agrega="010" else '0'; > sel (1)lt;='1' cuando add="001" else '0'
sel(0)lt;='1' cuando add="000" else '0';
sel(0)lt;='1' cuando add="000" else '0';
p>
end art; que proporciona la función de direccionamiento (la señal del reloj requiere 50 HZ, porque el umbral de tiempo de retención del ojo humano es 25 HZ y mi programa cuenta de manera segmentada): biblioteca ieee ;
use ieee.all; p>
use ieee.std_logic_unsigned.all; la entidad cnt6 es
port(
clk: in std_logic ;
cq: out std_logic_vector(2 downto 0)
);
end cnt6;
la arquitectura de cnt6 es
p>
señal cqi: std_logic_vector( 2 hasta 0);
comenzar
proceso(clk)
comenzar
si clk 'evento y clk='1' entonces ---sincronización clara
si cqilt; "101" entonces
cqilt;=cqi 1;
else
cqilt;= "000";
.p> finalizar si;
finalizar si;
finalizar el proceso; Decodificador de 7 segmentos similar al 7448. No tiene tantos pines de control porque no se puede usar esta versión simple: entidad decodificador7 es
port(
inp.in std_logic_vector(3 downto 0);
outp: out std_logic_vector(6 downto 0)
);
end decoder7;
p>arquitectura arte de decoder7 es: debido a que el ***convertidor digital catódico necesita estar conectado, la salida se activa en nivel alto
comenzar
con inp select
outplt;= "1111
110" cuando "0000",
"0110000" cuando "0001",
"1101101" cuando "0010",
"1111001" cuando "0011 ",
"0110011" cuando "0100",
"1011011" cuando "0101",
"0011111" cuando "0110",