Nota: Se recomienda seguir esta serie de tutoriales de VHDL en orden, comenzando con el primer tutorial .
En el tutorial anterior diseñamos circuitos de pestillo SR sincronizados usando VHDL (que es un lenguaje de descripción de hardware de circuito integrado de muy alta velocidad).
Para este proyecto, haremos:
- Escriba un programa VHDL para construir un circuito flip-flop D
- Verifique la forma de onda de salida del programa (circuito digital) con la tabla de verdad de este circuito flip-flop.
El circuito flip-flop D
Mesa de la verdad
Ahora escribamos, compilemos y simulemos un programa VHDL. Luego obtendremos la salida de la forma de onda y la verificaremos con la tabla de verdad proporcionada.
Antes de comenzar, asegúrese de revisar el procedimiento paso a paso proporcionado en el Tutorial VHDL – 3 para diseñar adecuadamente el proyecto, así como editar y compilar el programa y el archivo de forma de onda, incluido el resultado final.
Para este tutorial, utilizamos un estilo de modelado de comportamiento para escribir el programa VHDL que construirá el circuito flip-flop. Este es el estilo de modelado preferido para circuitos digitales secuenciales.
Programa VHDL
biblioteca ieee;
utilice ieee.std_logic_1164.all;
entidad D_flip_flop es
puerto (clk,Din: en std_logic;
P: fuera std_logic;
Qnot: fuera std_logic);
finalizar D_flip_flop;
La arquitectura DFF_arch de D_flip_flop es
para comenzar
proceso (clk,Din)
para comenzar
si(clk'event y clk='1′) entonces
Q <= Ruido;
Qnot <= (no Din);
terminara si;
fin del proceso;
finalizar DFF_arch;
Para refrescar su memoria sobre cómo funciona esto, lea los dos primeros tutoriales de VHDL ( 1 y 2 ) de esta serie.
A continuación, compile el programa anterior, cree un archivo de forma de onda con todas las entradas y salidas necesarias enumeradas y simule el proyecto. Deberías obtener el siguiente resultado...
Forma de onda de simulación
Como se muestra en esta figura, hay dos casos resaltados en rojo y azul.
- Caso 1: cuando clk=1 y Din=1 -> Q = 1 y Qnot = 0
- Caso 2: cuando clk=1 y Din = 0 -> Q=0 y Qnot = 1
Este programa para el circuito flip-flop D parece bastante simple. Así que compliquemos un poco más las cosas agregando dos señales de entrada más:
1. Restablecer: Se activa el reinicio de la entrada alta, de modo que cuando la entrada sea '1', el flip-flop se restablecerá y Q=0, Qnot=1
2. Habilitar: Habilita la entrada al circuito flip-flop, por lo que si se establece en '0', el flip-flop se deshabilitará y ambas salidas estarán en alta impedancia (donde '1' es cuando el flip-flop funciona normalmente)
Tabla de verdad para el flip-flop D
Ahora, aquí está el programa del flip-flop D con las entradas habilitadas y activas de reinicio alto.
biblioteca ieee;
utilice ieee.std_logic_1164.all;
entidad D_flip_flop es
puerto (clk,Din,rst,en: en std_logic;
P: fuera std_logic;
Qnot: fuera std_logic);
finalizar D_flip_flop;
La arquitectura DFF_arch de D_flip_flop es
para comenzar
proceso (clk,en,Din,rest)
para comenzar
si(pt='0′) entonces
Q <='z';
Qnot <= 'z';
elsif(primero='1′) entonces
Q<='0′;
Qnot <='1′;
elsif(clk'event y clk='1′) entonces
Q <= Din;
Qnot <= no Din;
terminara si;
fin del proceso;
finalizar DFF_arch;
Al compilar y simular el programa anterior, obtendrá la siguiente salida de forma de onda...
Formas de onda de simulación
Como se muestra en esta figura, hay tres casos resaltados en rojo, azul y verde.
- Caso 1: Cuando en = 0, ambas salidas Q y Qnot son de alta impedancia (z)
- Caso 2: cuando en=1 y rst=1 -> Q=0 y Qnot=1 (el flip-flop se reinicia)
- Caso 3: cuando en=1, rst=0 y Din=1 -> Q=1 y Qnot=0
En el próximo tutorial construiremos un circuito flip-flop JK usando VHDL.