Está en la página 1de 6

Tarea #1 Yaniel Leliebre Peláez

Ejercicio #1
Diseñe un contador módulo 60 (de 0 a 59) con:
a) 74160 (contador decimal, tiene clr asincrónico)

b) 74162 (contador decimal, tiene clr sincrónico)


c) 74163 (es un contador binario con clr sincrónico)

Ejercicio #2
Diseñe un contador módulo 12, que cuente de 1 a 12 con:
a) 74162
b) 74163

Ejercicio #3
1. Diseñe, con un registro 74198, con circuito que comience a llenarse de 1s del LSB al MSB y
cuando esté totalmente lleno de 1s, comience a llenarse de 0s en sentido contrario. El
proceso se repite indefinidamente.

Primeramente para realizar este circuito debemos tener en cuenta que para realizar el cambio
de desplazamiento en el registro tiene que estar activado solo un pin de selección (01 ó 10)
----> S1So y luego con alguna lógica de pegamento alternar sus valores.

Según los conocimientos adquiridos con un biestable T podemos resolver este problema de
cambiar los valores de salida, esta función lo conseguimos con un biestable JK colocando 1
en las entradas J y K.
El otro inconveniente está en detectar cuándo los extremos de las salidas(a y h Registro
74xx198) son iguales para cambiar el desplazamiento o cuando son diferentes para continuar
en el mismo sentido. Esto se logra con una compuerta XOR que permitirá el cambio de los
pulsos del reloj en el biestable T.

Al simular y analizar seguidamente el circuito me doy cuenta que no realiza la función


asignada debido a que con la compuerta NOT el biestable JK experimenta un rápido
cambio en los pulsos del reloj(Clock) al inicio, lo que trae como consecuencia que en el
registro se active Desplazamiento a la Derecha y luego Desplazamiento a la Izquierda en
cuestiones de “milésimas de segundos” colocando ceros de MSB a LSB indefinidamente. La
solución para este problema sería retirar la compuerta NOT del circuito.
El circuito quedaría de esta forma, comprobado con los Display colocados en las
salidas del registro.

Ejercicio #4
Describa en VHDL un DIVISOR por 100 (que cuente de 0 a 99) y de un pulso de salida en el
momento que llegue a 99.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity divisor is
generic( maximo: integer := 99);
Port ( clk : in STD_LOGIC;
enable : in STD_LOGIC;
reset : in STD_LOGIC;
salida : out STD_LOGIC);
end divisor;
architecture Behavioral of divisor is
signal temporal: STD_LOGIC;
signal contador: integer range 0 to maximo := 0;
begin
divisor_frecuencia: process (reset, clk, enable)
begin
if (reset = '1') then
temporal <= '0';
contador <= 0;
elsif (enable = '0') then
contador <= contador;
elsif rising_edge(clk) then
if (contador = maximo) then
temporal <= '1';
contador <= 0;
else
contador <= contador + 1;
end if;
end if;
end process;
salida <= temporal;
end Behavioral;

También podría gustarte