Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2.- Desarrollo
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
- 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.
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY Contador_sim IS
END Contador_sim;
COMPONENT ContadorU_D_code
PORT(
CLK : IN std_logic;
RESET : IN std_logic;
CTRL : IN std_logic;
);
END COMPONENT;
signal CLK : std_logic := '0';
BEGIN
CLK_process :process
begin
end process;
-- Stimulus process
stim_proc: process
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
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.