Está en la página 1de 10

Contenido Actividad Fundamental 5.

- Contador Ascendente/Descendente de 4 bits


1.- Descripción del Problema ............................................................................................. 2
2.- Desarrollo ..................................................................................................................... 2
3.- Tabla de Verdad y Ecuaciones ..................................................................................... 3
4.- Diagrama de la Implementación del Circuito................................................................. 4
5.- Descripción del programa en VHDL ............................................................................. 5
6.- Simulación y Test Bench .............................................................................................. 6
7.- Simulación .................................................................................................................... 9

8.- Coclusión ..................................................................................................................... 11


Actividad Fundamental 5.- Contador
Ascendente/Descendente de 4 bits.
1.- Descripción del Problema
Diseñe un circuito que cuente en Binario natural Ascendente y Descendente, tomando en
cuenta una señal de entrada que indique el sentido de la cuenta. La cuenta deberá de ser
en 4 bits utilizando una señal de reloj de 1 segundo.

2.- Desarrollo

- Especificación del sistema:


El sistema está conformado por un conjunto de tres entradas, la señal de reloj (CLK)
siempre constante, que determina el tiempo de duración de los cambios en el sistema,
una señal de control (CTRL) que define cuando nuestro sistema irá en ascenso (‘1’) o en
descenso (‘0’), asi mismo posee la entrada de RESET, que reiniciará la sucesión del
sistema desde cero al ser su valor un ‘1’.
Nuestro sistema tiene una sola salida que define sencillamente los valores contados en
forma binaria, solo variando su orden respecto a como se seleccione el control y si es
ascendente o descendente.
3. Tabla de Verdad y Ecuaciones

X Q4 Q3 Q2 Q1 J4K4 J3K3 J2K2 J1K1 Q4 Q3 Q2 Q1

0 0 0 0 0 0X 0X 0X 1X 0 0 0 1

0 0 0 0 1 0X 0X 1X X1 0 0 1 0

0 0 0 1 0 0X 0X X0 1X 0 0 1 1

0 0 0 1 1 0X 1X X1 X1 0 1 0 0

0 0 1 0 0 0X 0X 0X 1X 0 1 0 1

0 0 1 0 1 0X X0 1X X1 0 1 1 0

0 0 1 1 0 0X X0 X0 1X 0 1 1 1

0 0 1 1 1 1X X1 X1 X1 1 0 0 0

0 1 0 0 0 X0 0X 0X 1X 1 0 0 1

0 1 0 0 1 X1 0X 0X X1 0 0 0 0

1 0 0 0 0 1X 0X 0X 1X 1 0 0 1

1 0 0 0 1 0X 0X 0X X1 0 0 0 0

1 0 0 1 0 0X 0X X1 1X 0 0 0 1

1 0 0 1 1 0X 0X X0 X1 0 0 1 0

1 0 1 0 0 0X X1 1X 1X 0 0 1 1

1 0 1 0 1 0X 0X 0X X1 0 1 0 0

1 0 1 1 0 0X X0 X1 1X 0 1 0 1

1 0 1 1 1 0X X0 X0 X1 0 1 1 0

1 1 0 0 0 X1 1X 1X 1X 0 1 1 1

1 1 0 0 1 X0 0X 0X X1 1 0 0 0

- La distribución de la tabla de verdad se dejó como muestra hasta el número 9 binario, a


fin de cuentas se comprende cuál es la acción que realiza.
- La ecuación característica del sistema es:
Qn+1 = J*Qn’ + K’*Qn
4.- Diagrama de la Implementación del Circuito

Describa el diagrama esquemático del circuito propuesto.

- A partir de los valores que comen el CLK y el CTRL es como se definirá el comportamiento
de nuestro circuito, en caso de que el control sea un ‘1’, la secuencia de salida de cuatro
bits irá en aumento valor a valor, escrito de forma binaria obviamente, de darse el caso
contrario, si el CTRL es ‘0’, entonces la secuencia de salida iría de bajada, hasta que el
circuito termine su ciclo
- Podemos controlar el fin e inicio del ciclo del contador con la entrada RESET, si nuestro
reset tiene valor ‘1’, independientemente de la ubicación numérica que tenga la
secuencia, la salida volverá a tomar el valor de ceros (“0000”).
- En cambio, si el RESET toma de nuevo el valor ‘0’, entonces comenzará la cuenta
nuevamente desde el cero, obviamente.
5.-Descripción del programa en VHDL
- El código descrito anteriormente define primero una ‘signal’ denominada ‘conteo’, que tendrá
valor de “0000”.
- Después comenzando el ‘process’ con el RESET y el CLK, empezamos los condicionales:

Si el valor de RESET es igual a 1, entonces la salida será 0000, y no tendrá ningún comportamiento,
después definimos que con el evento de CLK y el mismo CLK es igual a 1, entonces el sistema
empezará su proceso.

Después, si el CTRL es igual a ‘1’ entonces conteo <= conteo + 1; de lo contrario, conteo <= conteo
– 1, en otras palabras, si el valor del CTRL es ‘1’, entonces el contador irá ascendentemente, si el
CTRL es ‘0’, entonces el contador irá descendentemente.

- Consideramos también que la SALIDA tendrá el valor de ‘conteo’ después del valor declarado.

6.- Simulación y Test Bench

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY Contador_sim IS

END Contador_sim;

ARCHITECTURE behavior OF Contador_sim IS

COMPONENT ContadorU_D_code

PORT(

CLK : IN std_logic;

RESET : IN std_logic;

CTRL : IN std_logic;

SALIDA : OUT std_logic_vector(3 downto 0)

);

END COMPONENT;
signal CLK : std_logic := '0';

signal RESET : std_logic := '0';

signal CTRL : std_logic := '0';

signal SALIDA : std_logic_vector(3 downto 0);

constant CLK_period : time := 10 ns;

BEGIN

uut: ContadorU_D_code PORT MAP (

CLK => CLK,


RESET => RESET,

CTRL => CTRL,

SALIDA => SALIDA


);

CLK_process :process

begin

CLK <= '0';

wait for CLK_period/2;

CLK <= '1';

wait for CLK_period/2;

end process;
-- Stimulus process

stim_proc: process

begin -Se comienza desde 0 ns


con el CTRL en ‘1’, y así
-- hold reset state for 100 ns. el contador irá
ascendentemente.
wait for 0 ns;
-Luego de 155 ns (se
CTRL <= '1';
dividió el tiempo de esta
forma porque así
apreciamos más cada
wait for 155 ns;
valor contado) el CTRL
CTRL <= '0'; cambiará a ‘0’, y
entonces el contador
será descendente.
wait for 155 ns; -Luego de otros 155 ns
RESET <= '1'; ahora activamos el
RESET a ‘1’, entonces el
sistema tomará valores
wait for 30 ns; de 0 a la SALIDA.

RESET <= '0'; -Luego de 30 ns el RESET


volverá a iniciar el
CTRL <= '1'; conteo tomando valor
‘0’ y el CTRL toma el
valor ‘1’, definiendo que
wait for 155 ns; ascenderá el conteo.

CTRL <= '0'; -Por ultimo esperamos


155 ns para que el CTRL
cambie a ‘0’ y defina un
wait; conteo descendente.

end process;

END;

- Se definió el código completo en esta ocasión para demostrar que no se quitar las señales
de reloj que se colocan en el código de la simulación para darle continuación al uso del
reloj desde la principal.
7.- Simulación
De la forma más clara posible capture segmentos de formas de onda que muestren el
comportamiento de cada una de las operaciones propuestas dentro del código para el test bench.

- Tenemos la vista más general de la simulación en este apartado, notando donde ubicamos
en cada forma de onda.

Sentido = 1

- Cuando la señal de CTRL es igual a 1, el contador irá ascendentemente.

Sentido = 1 Sentido = 0

13 14 15 14

- Luego de 155 ns (al llegar a 14 en binario) el CTRL cambia a valor ‘0’, y entonces el
contador irá descendentemente.
Sentido = 1 Sentido = 0

1 0

- Cuando el RESET toma el valor de ‘1’, la SALIDA reinicia sus valores de 0, todo durante 30
ns, entonces seguirá el conteo ascendente.

8.- Conclusión

En casi todos los tipos de equipo digital se encuentran flip-flops programados o conectados como
contadores, usándose no solamente como contadores sino como equipo para dar la secuencia de
operación, división de frecuencias, así como para manipulación matemática.

Propiamente entendemos que asignan distintos valores si no se cumplen ciertas características


específicas, y así sucesivamente, dependiendo de qué es lo que queramos lograr, podemos utilizar
ciertas palabras reservadas u otras, pero siempre hay que saber emplearlos correctamente,
porque realmente pueden salvarte de alguna configuración en especifica.

También podría gustarte