Post on 08-Jul-2015
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 1/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅1⋅
TEMARIO
Unidad 7
Diseño de SistemasSecuenciales
Andres.Iborra@upct.es Juan.Suardiaz@upct.es
Mayo 2003
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 2/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅2⋅
CONTENIDO
Unidad 7. Diseño de Sistemas Secuenciales.
7.1. Introducción.7.2. Diseño basado en elementos MSI.7.3. Descripción VHDL de lógica secuencial.
7.3.1. Biestables.
7.3.2.
Registros de almacenamiento.7.3.3. Contadores.7.3.4. Registros de desplazamiento.
7.4. Ejemplo de aplicación: Divisor de frecuencia.
OBJETIVOS ESPECÍFICOS
• Repasar el funcionamiento de los componentes básicos secuenciales.
• Ser capaz de modelar usando el lenguaje de descripción de hardware VHDL
cualquier componente o sistema secuencial.
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 3/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅3⋅
7.1 INTRODUCCIÓN
En la unidad anterior se han modelado sistemas combinacionales; es decir, aquellossistemas cuyas salidas en un instante determinado sólo dependen de los valores que
se encuentran presentes en sus entradas en ese momento.
Si bien un sistema secuencial puede tener también uno o más elementoscombinacionales, la mayoría de los sistemas digitales que se encuentran en la práctica
incluyen elementos de memoria, los cuales requieren que el sistema se describa entérminos de lógica secuencial.
Un sistema secuencial está formado por un circuito combinacional y un elemento dememoria encargado de almacenar de forma temporal la historia del sistema. En
esencia, la salida de un sistema secuencial no sólo depende del valor presente en lasentradas en un instante determinado, sino también de la historia del sistema (se dice
que los secuenciales son circuitos con memoria, mientras que los combinacionales notienen memoria).
Básicamente hay dos tipos de sistemas secuenciales:s Síncronos: su comportamiento se encuentra sincronizado mediante el pulso de reloj
del sistema (CLK).s Asíncrono: Su funcionamiento depende del orden y momento en el que se aplican
las señales de entrada.
En esta unidad se diseñarán los circuitos secuenciales más utilizados en el diseño
lógico a través del lenguaje de descripción de hardware VHDL.
CIRCUITOCOMBINACIONAL
ELEMENTODE MEMORIA
Entradas Salidas
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 4/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅4⋅
7.2 DISEÑO BASADO EN ELEMENTOS MSI
Al igual que en la unidad anterior, se desarrollarán este tipo de sistemas mediante el
uso del pensamiento estructurado: un circuito o sistema complejo se concibe como unacolección de subsistemas más pequeños, cada uno de los cuales tiene una descripción
más sencilla.
En el caso de los sistemas secuenciales, se partirá del elemento mínimo que será elbiestable. Este bloque secuencial de construcción constituye el ladrillo con los que se
edifican los sistemas secuenciales (equivalente a las puertas lógicas en los sistemascombinacionales). Uno de los bloques electrónicos más importantes de este tipo lo
constituyen los denominados elementos MSI (Medium Scale of Integration)secuenciales estudiados en la asignatura de Electrónica Digital: circuitos contadores,registros de desplazamiento…. En esta unidad se describen las estructuras
secuenciales más importantes desde una perspectiva de los lenguajes de descripciónde hardware, en concreto usando el lenguaje VHDL.
7.3 DESCRIPCIÓN VHDL DE LÓGICA SECUENCIAL
Uno de los conceptos nuevos que aparece en VHDL a la hora de describir sistemassecuenciales es la forma de describir la activación por flanco de reloj.
• Atributo ‘event.En el lenguaje VHDL los atributos sirven para definir características que se pueden
asociar con cualquier tipo de datos, objeto o entidades. El atributo ‘event (evento,donde ‘ indica que se trata de un atributo) se utiliza para describir un hecho u
ocurrencia de una señal particular.Considerando una señal de reloj (CLK), la sentencia CLK’event es cierta sólo
cuando ocurre un cambio de valor (paso de ‘0’ a ‘1’ o de ‘1’ a ‘0’). Combinándolacon una sentencia de comprobación de igualdad del nuevo valor es posible definir la
activación por el tipo de flanco que se desee:
Flanco de Subida Flanco de Bajada
IF(CLK’event and CLK=’1’) IF(CLK’event and CLK=’0’)
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 5/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅5⋅
7.3.1 BIESTABLES
Se trata de un dispositivo de almacenamiento temporal de dos estados, que pueden
permanecer en cualquiera de sus dos estados gracias a la capacidad derealimentación, lo que consiste en conectar las salidas con las entradas.
Es posible agrupar los biestables en dos grupos:
• Asíncronos: La salida cambia de estado cuando cambian las entradas.
• Síncronos: La salida cambia de estado (en función de las entradas) de forma
acompasada con una señal de reloj. Este tipo de dispositivos síncronos a su vez se
clasifican en:s Activos por nivel (alto o bajo): La salida cambia de estado sólo cuando la
señal de reloj se encuentra en el estado lógico ‘1’ (nivel alto) ó ‘0’ (nivelbajo).
s Activos por flanco (subida o bajada): La salida cambia de estado sólocuando la señal de reloj pasa de un nivel lógico de ‘0’ a ‘1’ (flanco de
subida) o de ‘1’ a ‘0’ (flanco bajada).
• Tipos de biestables.Independientemente del momento de activación, es posible catalogar los biestables
en los siguientes tipo:
S
R
Q
Q
BIESTABLE S-R
S R Q*0 0 Q
0 1 0
1 0 11 1 No Valido
J
K
Q
Q
BIESTABLE J -K
J K Q*0 0 Q
0 1 0
1 0 11 1 Q
D Q
Q
BIESTABLE D
D Q*0 0
1 1
T Q
Q
BIESTABLE T
T Q*0 Q1 Q
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 6/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅6⋅
• Ej_1: Biestable S-R asíncrono.
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY BiestableSR ISPORT ( sS, sR: IN std_logic;
sQ, sQn: INOUT std_logic);-- Por realimentación INOUTEND BiestableSR;
ARCHITECTURE BiestableSRArch OFBiestableSR ISBEGIN-- Descripción mediante las ecuaciones-- características (Realimentación)
sQ <= sS nor sQn;sQn <= sR nor sQ;
END BiestableSRArch;
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY BiestableSR ISPORT ( sS, sR: IN std_logic;
sQ, sQn: INOUT std_logic);END BiestableSR;-- Versión secuencialARCHITECTURE BiestableSRArch2 OFBiestableSR ISBEGINPROCESS(sS, sR)BEGINIF (sS = ‘0’ and sR = ‘0’) THENsQ <= sQ; sQn <= sQn;
ELSIF (sS = ‘0’ and sR = ‘1’) THEN
sQ <= ‘0’; sQn <= ‘1’;ELSIF (sS = ‘1’ and sR = ‘0’) THEN
sQ <= ‘1’; sQn <= ‘0’;ELSE sQ <= ‘-‘; sQn <= ‘-‘;
-- Se usa ‘-‘ para el caso no válidoEND IF;
END PROCESS;END BiestableSRArch2;
S
R
Q
Q
BIESTABLE S-R
S R Q*0 0 Q0 1 01 0 11 1 No Valido
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 7/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅7⋅
• Ej_2: Biestable S-R síncrono activo en n ivel alto.
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY BiestableSRNivel ISPORT ( sS, sR: IN std_logic; --Señales de entrada.
sCLKH: IN std_logic; --Señal de reloj.sQ, sQn: INOUT std_logic); --Salida
END BiestableSRNivel;
ARCHITECTURE BiestableSRNivelArch OF BiestableSRNivel ISBEGIN
PROCESS(sS, sR, sCLKH)BEGIN-- Se cambia de estado sólo si el reloj está a nivel alto ‘1’IF (sCLKH = ‘1’) THENIF (sS = ‘0’ and sR = ‘0’) THENsQ <= sQ; sQn <= sQn;
ELSIF (sS = ‘0’ and sR = ‘1’) THENsQ <= ‘0’; sQn <= ‘1’;
ELSIF (sS = ‘1’ and sR = ‘0’) THEN
sQ <= ‘1’; sQn <= ‘0’;ELSE sQ <= ‘-‘; sQn <= ‘-‘;END IF;
ELSE NULL;END IF;
END PROCESS;END BiestableSRNivelArch;
S
R
Q
QCLK
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 8/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅8⋅
u Modelado VHDL de la activación por f lanco.Tal y como se ha comentado anteriormente, la principal opción que ofrece VHDLpara modelar la activación por flanco en los circuitos secuenciales es mediante el
atributo ‘event. Sin embargo, es posible modelarlos también mediante dos formasadicionales:
· Dentro de un proceso con la sentencia WAIT UNTIL.· Usando las macros VHDL’93 rising_edge(señal) y falling_edge(señal);
Flanco de Subida Flanco de Bajada
IF(CLK’event and CLK=’1’) IF(CLK’event and CLK=’0’)WAIT UNTIL CLK = ‘1’ WAIT UNTIL CLK = ‘0’
Rising_edge(CLK) Falling_edge(CLK)
• Ej_3: Flip-Flop D activo en flanco de subida.
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY FlipFlopD ISPORT ( sD, CLK: IN std_logic;
sQ: OUT std_logic);END FlipFlopD;
--Arquitectura con eventos.ARCHITECTURE FlipFlopDArch OFFlipFlopD ISBEGINPROCESS (CLK) BEGINIF (CLK’event and CLK = ‘1’) THEN
sQ <= sD;END IF;--Hubiera sido aquivalente a usar
--la macro rising_edge poniendo:--IF (rising_edge(CLK)) THEN--sQ <= sD;--END IF;END PROCESS;END FlipFlopDArch;
--Arquitectura con WAIT--Método no recomendado.ARCHITECTURE FlipFlopDArch2 OFFlipFlopD ISBEGINPROCESS BEGINWAIT UNTIL CLK = ‘1’;
sQ <= sD;END PROCESS;END FlipFlopDArch2;
D Q
CLK
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 9/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅9⋅
u Modelización VHDL de las señales de inicialización.Cuando los biestables se alimentan, pueden adoptar un valor indeterminado “apriori”, dependiendo de la forma en que lo haya implementado el fabricante.
Suele ser habitual el uso de señales de inicialización, que fuerzan la salida del
biestable a un valor conocido. Típicamente podemos clasificar esta clase de señalesen dos grupos:
• Señales de inicialización asíncrona.
∗ En cuanto se activan la salida del biestable pasa automáticamente a tomar el
valor correspondiente.
∗ Pueden ser activas a nivel alto o bajo.
RESET⇒ Q = ‘0’ SET⇒ Q = ‘1’
• Señales de inicialización síncrona.
∗ Cuanto se activan la salida del biestable espera la señal de reloj para tomar el
valor correspondiente.
∗ Pueden ser activas a nivel alto o bajo.
CLEAR⇒ Q = ‘0’ PRESET⇒ Q = ‘1’
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 10/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅10⋅
• Ej_4: Flip-Flop D activo en f lanco de subida con RESET.
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY FlipFlopD ISPORT ( sD, CLK: IN std_logic;
sResetH: IN std_logic;sQ: OUT std_logic);
END FlipFlopD;
ARCHITECTURE FlipFlopDArch OFFlipFlopD ISBEGINPROCESS (CLK, sResetH) BEGINIF (sResetH = ‘1’) THEN
sQ <= ‘0’;ELSIF (CLK’event and CLK = ‘1’) THEN
sQ <= sD;END IF;END PROCESS;END FlipFlopDArch;
• Ej_5: Flip-Flop D activo en flanco de subida con CLEAR.
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY FlipFlopD ISPORT ( sD, CLK: IN std_logic;
sClearH: IN std_logic;sQ: OUT std_logic);
END FlipFlopD;
ARCHITECTURE FlipFlopDArch OFFlipFlopD ISBEGIN
PROCESS (CLK, sClearH) BEGINIF (CLK’event and CLK = ‘1’) THENIF (sClearH = ‘1’) THEN sQ <= ‘0’;ELSE sQ <= sD;END IF;
END IF;END PROCESS;END FlipFlopDArch;
D Q
CLK
RESET
CLEAR
Q
CLK
D
El CLEAR y PRESET se suelencolocar junto a las entradas a fin deindicar ue son señales síncronas
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 11/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅11⋅
7.3.2 REGISTROS DE ALMACENAMIENTO
Presentan una estructura similar a los flip-flops. La diferencia radica en que almacenanel estado de un vector de bits en lugar de un solo bit.
• Ej_6: Regist ro de almacenamiento de N bits.
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY Registro ISGENERIC(iNAncho: integer := 8);PORT ( svD: IN std_logic_vector(iNAncho-1 DOWNTO 0); --Vector Entrada.
CLK: IN std_logic; --Señal de reloj.svQ: OUT std_logic_vector(iNAncho-1 DOWNTO 0)); --Vector Salida
END Registro;
ARCHITECTURE RegistroArch OF Registro ISBEGIN
PROCESS(CLK)BEGIN-- Uso de la MACRO rising_edgeIF (rising_edge(CLK)) THEN
svQ <= svD;END IF;
END PROCESS;END RegistroArch;
D Q
CLK
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 12/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅12⋅
7.3.3 CONTADORES
Se trata de dispositivos que en su salida presentan una cuenta que se actualiza
mediante la señal de reloj.
• Ej_7: Contador de N bits.
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ContadorNb ISGENERIC(iNAncho: integer := 8);PORT (CLK: IN std_logic; --Señal de reloj.
svQ: INOUT std_logic_vector(iNAncho-1 DOWNTO 0)); --Vector SalidaEND ContadorNb;
ARCHITECTURE ContadorNbArch OF ContadorNb ISBEGINPROCESS(CLK)
BEGIN-- Uso de la MACRO rising_edgeIF (rising_edge(CLK)) THEN
svQ <= svQ + 1; -- Debido a esta realimentación se pone svQ como INOUT.END IF;
END PROCESS;END ContadorNbArch;
Q
CLK
EJERCICIO PROPUESTO AL ALUMNO: CONTADOR UP/DOWN
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 13/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅13⋅
• Ej_8: Contador de N bits con RESET y carga paralelo síncrona (LOAD#).
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ContadorLoad ISGENERIC(iNAncho: integer := 8);PORT (CLK: IN std_logic; --Señal de Reloj.
sLoadL: IN std_logic; -- Señal de Carga.sResetH: IN std_logic; -- Señal de Reset.svC: IN std_logic_vector(iNAncho-1 DOWNTO 0); --Vector de Carga
svQ: INOUT std_logic_vector(iNAncho-1 DOWNTO 0)); --Vector SalidaEND ContadorLoad;
ARCHITECTURE ContadorLoadArch OF ContadorLoad ISBEGINPROCESS(CLK, sResetH, sLoadL)BEGIN-- Análisis de la posibilidad de RESETIF (sResetH =’1’) THEN svQ <= (OTHERS =>’0’);
-- Uso de la MACRO rising_edgeELSIF (rising_edge(CLK)) THENIF(sLoadL = ‘0’) THEN svQ <= svC;ELSE svQ <= svQ+1;END IF;
END IF;END PROCESS;END ContadorLoadArch;
Si
LOAD = 0 Los biestables se cargan con losvalores C7…C0 y se muestra en lasalida.
LOAD = 1. Se produce una cuentaascendente sobre S7…S0.
Q
CLK
S7…S0
C7…C0
LOAD
RESET
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 14/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅14⋅
7.3.4 REGISTROS DE DESPLAZAMIENTO.
Es un registro de N bits con una disposición para recorrer sus datos almacenados por
una posición de bit en cada activación de la señal de reloj.
• Ej_9: Regist ro de desplazamiento de N bits .
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY RegistroDespl IS
GENERIC(iNAncho: integer := 8);PORT (CLK: IN std_logic; --Señal de Reloj.
sEntrada: IN std_logic; -- Señal de Entrada.svSalida: OUT std_logic_vector(iNAncho-1 DOWNTO 0)); --Vector Salida
END RegistroDespl;
ARCHITECTURE RegistroDesplArch OF RegistroDespl IS--Señal auxiliar para llevar a cabo el desplazamiento.SIGNAL svAux: std_logic_vector(iNAncho-1 DOWNTO 0);
BEGINPROCESS(CLK, sEntrada, svAux) BEGINIF (rising_edge(CLK)) THEN-- Aplicación del operador concatenación para efectuar el desplazamiento.-- El bit 0 de svAux se pierde, ya que entra el valor de la entrada.svAux <= sEntrada & svAux(iNAncho-1 DOWNTO 1);END IF;
svSalida <= svAux; -- Actualización de la señal de salida.END PROCESS;
END RegistroDesplArch;
D Q
CLK
D Q
CLK
D Q
CLK
D Q
CLK
…
…
…
…
…
CLK
R(0) R(1) R(2) R(N-1)
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 15/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅15⋅
• Ej_10: Registro de desplazamiento de 8 bits conf igurable.
Se pide que diseñe un registro de desplazamiento con señal de RESET, dosseñales de entrada (Izquierda y Derecha) y posibilidad de carga de datos
(D7…D0) que, en función de los valores de unas líneas de selección en las queaparece un número codif icado sobre 3 bits (S2…S0), presente el comportamientosiguiente:
S2 S1 S0 Funcionalidad S2 S1 S0 Funcionalidad0 0 0 Retención (Hold) 1 0 0 Desp. Circu lar a Dcha.0 0 1 Carga 1 0 1 Desp. Circu lar a Izda.0 1 0 Desp. Derecha 1 1 0 Desp. Ari tm. a Dcha.
0 1 1 Desp. Izquierda. 1 1 1 Desp. Aritm. a Izda.
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY RegistroConf ISPORT (CLK, sResetH, sEntIzda, sEntDcha: IN std_logic;
svSeleccion: IN std_logic_vector(2 DOWNTO 0);svDatos: IN std_logic_vector(7 DOWNTO 0);svQ: OUT std_logic_vector(7 DOWNTO 0));
END RegistroConf;
ARCHITECTURE RegistroConfArch OF RegistroConf IS --Señal auxiliar.SIGNAL svAux: std_logic_vector(7 DOWNTO 0);
BEGIN
PROCESS(CLK, sResetH, svAux)BEGIN--Primero se realiza la comprobación del RESETIF (sResetH = ‘1’) THEN svAux<=(OTHERS=>’0’); --Inicialización asíncrona.ELSIF (rising_edge(CLK)) THEN
-- Aplicación de la MACRO conv_integer para aumentar lalegibilidadCASE conv_integer(svSeleccion) IS
WHEN 0 => NULL;--Retención.
WHEN 1 => svAux<= svDatos;--Carga.WHEN 2 => svAux<= sEntDcha &svAux(7 DOWNTO 1);-
-Despl. Dcha.WHEN 3 => svAux<= svAux(6 DOWNTO 0)& sEntIzda;--
Despl. Izda.WHEN 4 => svAux<= svAux(0)&svAux(7 DOWNTO 1);--
Despl. Circular Dcha.WHEN 5 => svAux<= svAux(6 DOWNTO 0)& svAux(7);--
Despl. Circular Izda.WHEN 6 => svAux<= svAux(7)&svAux(7 DOWNTO 1);--
Despl. Aritm. Dcha.WHEN 7 => svAux<= svAux(6 DOWNTO 0)& ‘0’;--Despl.
Aritm. Izda.WHEN OTHERS => NULL;--Prevención frente a valores
atípicos.END CASE;END IF;svQ <= svAux; -- Actualización de la señal de salida.END PROCESS;END RegistroConfArch;
5/9/2018 Guia Flip Flop VHDL - slidepdf.com
http://slidepdf.com/reader/full/guia-flip-flop-vhdl 16/16
Diseño de Sistemas Electrónicos-DB4 Unidad 7. Diseño de Sistemas Secuenciales
⋅16⋅
7.4 EJEMPLO DE APLICACIÓN: DIVISOR DE FRECUENCIA.
• Ej_11 Divisor de frecuencia por 8 (23).
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
-- Descripción del Biestable T.ENTITY FlipFlopT ISPORT (CLK, sT: IN std_logic;
sQ: INOUT std_logic);END FlipFlopT;
ARCHITECTURE FlipFlopTArch OF
FlipFlopT ISBEGINPROCESS(CLK, sT)BEGINIF (rising_edge(CLK)) THENIF (sT = ‘1’) THEN sQ<= not sQ;ELSE sQ<= sQ;END IF;
END IF;
END PROCESS;END FlipFlopTArch;
-- Descripción del divisor de frecuencia.ENTITY DivisorFrec8 ISPORT (sCLK: IN std_logic;
svSalida: INOUT std_logic);END DivisorFrec8;
ARCHITECTURE DivisorFrec8Arch OFDivisorFrec8 IS--Descripción del componente a usar
(Flip-Flop).COMPONENT FlipFlopT
PORT (CLK, sT: IN std_logic;sQ: INOUT std_logic);
END COMPONENT;--Señales auxiliariesSIGNAL sX1, sX2: std_logic;
BEGINFF0: FlipFlopT PORT MAP(CLK=>sCLK,sT=>’1’, sQ=>sX1);FF1: FlipFlopT PORT MAP(CLK=> sX1,
sT=>’1’, sQ=>sX2);FF2: FlipFlopT PORT MAP(CLK=> sX2,sT=>’1’, sQ=> svSalida);END DivisorFrec8Arch;
T Q
CLK
T Q
CLK
T Q
CLKCLK
‘1’ ‘1’ ‘1’
X1 X2