Está en la página 1de 5

CONTADOR DE RIZO MODULO 10

Problema a realizar:
Realizar el algoritmo y programar utilizando VHDL un contador de rizo mdulo 10.
Planteamiento:
Para realizar el contador de rizo mdulo 10, para el presente trabajo hemos utilizado vectores
en las respuestas y hemos creado una entrada adicional de modo que la seal auxiliar (aux)
tenga un valor inicial (0000).
Entradas, salidas y variables:
Debido a que las estructuras de los procesos son similares; las entradas, salidas y variables
cumplen una misma funcin pero en diferente proceso.
Entradas
In (3 downto 0)
Salidas
Inout (3 downto 0)
Seal Auxiliar
Aux
Diagrama de Flujo:


CLK =FLANCO
ACTIVA
NO
RESETEAR
SI
CONTAR
HASTA 9
Programa realizado en VHDL:
----------------------------------------------------------------------------------
library IEEE; -- bibliotecas
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity CONTADOR is
port(RST: in std_logic;
CLK: in std_logic;
h: in std_logic_vector(3 downto 0); -- entradas
salida: inout std_logic_vector(3 downto 0)); -- salidas
end entity;

architecture contador of contador is
signal aux: std_logic_vector(3 downto 0); -- seal auxiliar
begin
process (CLK,RST) -- programacin secuencial
begin
if (h="0000")then
aux<=h;
else
if RST='1' then -- reset -> inicializacin
aux<=(others=>'0');
elsif(clk'event and clk='1') then -- flanco de reloj ascendente
if(salida="1001") then -- mxima cuenta
aux<=(others=>'0'); -- vuelvo a comenzar
else
aux<=aux+1; -- cuento uno
end if;
end if;
end if;
salida<=aux; -- saco la salida
end process;
end contador;
























LA SENTENCIA WAIT

La sentencia wait indica en qu punto del flujo debe suspenderse la ejecucin de un
proceso, al mismo tiempo puede fijar en qu condiciones debe reactivarse dicho
proceso. Al ejecutar la sentencia wait el proceso se suspende y al mismo tiempo se
fijan las condiciones para su reactivacin.

La primera forma en que se puede utilizar la sentencia wait es sin ningn tipo de
condicin para despertar el proceso. Esto significa que el proceso en cuestin
ejecutar las sentencias que contenga hasta el wait y entonces se suspender, sin que
pueda volver a activarse en toda la simulacin. El uso ms comn de este estilo lo
encontramos en los bancos de pruebas a realizar sobre el dispositivo a verificar, y a
continuacin se termina la simulacin.




La segunda forma de usar la sentencia wait establece a que seales ser sensible el
proceso (wait on lista seales). Por lo tanto, siempre que se produzca un evento en
alguna de las seales indicadas en la sentencia wait el proceso se despertar y
ejecutar sus sentencias secuenciales hasta ejecutar otra vez una sentencia wait. Es
usual utilizar esta forma de la sentencia wait para modelar lgica combinacional que
debe responder a cualquier cambio que se produzca en sus entradas.





Al suspender un proceso tambin puede fijarse una condicin para su reactivacin,
esta condicin se especifica con la forma wait until condicin booleana. En condicin
booleana puede aparecer cualquier expresin que al evaluarse de cmo resultado
TRUE o FALSE. Un ejemplo tpico de este uso se encuentra en el modelado de
elementos sensibles al flanco de un reloj. El siguiente proceso describe el
comportamiento de un biestable sensible al flanco de subida del reloj:





Al ejecutar la sentencia wait el proceso se suspender y no se reactivar hasta que no
se produzca un evento en Reloj y adems Reloj pase a valer 1. Si al llegar a esta
sentencia wait, Reloj ya valiese 1, entonces el proceso no se reactivara, ya que debe
cumplirse que haya un evento en la seal adems de cumplirse la condicin booleana.
Por ltimo al suspender un proceso se puede especificar un cierto tiempo antes de que
ste se reactive. Para ello se utiliza la forma wait for; como ejemplo, el siguiente
proceso utiliza esta opcin de la sentencia wait para generar un reloj de un
determinado perodo.





Cada vez que el proceso se suspenda, se fija su reactivacin para 10ns ms tarde, de
modo que lo que hace es generar un reloj de 20 ns de periodo.

También podría gustarte