Red de conocimiento informático - Material del sitio web - Cómo utilizar el lenguaje Verilog HDL para implementar un circuito de escaneo dinámico digital de 6 dígitos

Cómo utilizar el lenguaje Verilog HDL para implementar un circuito de escaneo dinámico digital de 6 dígitos

Debido a que utiliza el lenguaje Verilog para crear su circuito de escaneo dinámico digital de 6 bits, no tiene que buscar un determinado dispositivo o un determinado pin, porque el dispositivo es su propio programa. Simplemente cree los puertos útiles y no los cree. los inútiles Hermano, pasé 3 horas haciendo esto por ti. El tiempo es muy ajustado y simplemente satisface tus necesidades. ¡Por supuesto, las condiciones que quieres que modifique son negociables! Bien, ahora les publicaré mi método. Por cierto, ¡lo implementé usando vhdl! ¡Y compilado con éxito en el software de la versión quartus II 5.1! Primero está el código de bloqueo de 4 bits: biblioteca ieee;

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>

);

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;

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",