Sunteți pe pagina 1din 3

UNIVERSIDAD NACIONAL DE COLOMBIA

Página 1 de 3
LABORATORIO DE ELECTRÓNICA DIGITAL

Contador de 0 a 9 con acarreo y reinicio

1. Introducción

1.1. Sistemas secuenciales

A diferencia de los sistemas combinacionales, en los sistemas secuenciales, los valores de las salidas, en un
momento dado, no dependen exclusivamente de los valores de las entradas en dicho momento, sino también
dependen del estado anterior o estado interno. El sistema secuencial más simple es el biestable.

1.2. Divisor de frecuencia

Los sistemas digitales cuentan con señales de referencia que tienen una alta frecuencia. Estas son llamadas
señales de reloj. Sin embargo, estos sistemas necesitan diferentes frecuencias para funcionar. Por lo tanto, se
toma este reloj y se le reduce su frecuencia mediante un divisor de frecuencia, así se pueden contar segundos
con alta precisión.

2. Objetivos

 Entender el concepto de lógica secuencial y divisor de frecuencia

 Diseñar un contador de 0 a 9 con acarreo y reinicio

 Diseñar un cronómetro de 0.0 a 0.9 segundos con acarreo y reinicio

 Introducir al uso de estructuras de control de decisiones en el lenguaje VHDL.

3. Componentes y Equipos

- Tarjeta Basys 2
- Manilla antiestática
- Software ISE Xilinx
- Computador
UNIVERSIDAD NACIONAL DE COLOMBIA
Página 2 de 3
LABORATORIO DE ELECTRÓNICA DIGITAL

4. Actividad 1: Contador de 0 a 9 con acarreo y reinicio

Implementar un contador de 0 a 9 con acarreo y reinicio. La arquitectura de este contador es:

 2 entradas lógicas: La primera para aumentar el contador en uno (inc) y la segunda para reiniciar el
contador a cero (reset)
 1 bus de salida de 4 bits que representa el valor actual del contador
 1 salida lógica que representa el valor del acarreo

Puede tomar como referencia el código explicado en clase:

process(inc,reset)
begin
if reset='1' then
bin <= "0000";
cout <= '0';
elsif(rising_edge(inc) then
case(bin) is
when "0000" =>
bin <= "0001"; cout <= '0';---1
when "0001" =>
bin <= "0010"; ---2


when "1000" =>
bin <= "1001"; ---9
when others =>
bin <= "0000"; cout <= '1'; ---0
end case;
end if;
end process;

5. Actividad 2: Cronómetro de 0 a 9 con acarreo y reinicio

Tome este código de divisor de frecuencia a 10 Hz con una señal de reloj de entrada de 50 MHz y úsela como el
incremento del contador. Calcule el tamaño en bits del prescaler. Recuerde usar las librerías de operaciones
aritméticas para la suma:

----------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
----------------------------------------------------------
UNIVERSIDAD NACIONAL DE COLOMBIA
Página 3 de 3
LABORATORIO DE ELECTRÓNICA DIGITAL

Código de señal de reloj de 10Hz

process (clk)
begin
if rising_edge(clk) then
if(prescaler=250000) then --cycle of clock of 50MHz : 12 500 00 for 10Hz
prescaler <= (others => '0');
clk_1hz <= not clk_1hz;
else
prescaler <= prescaler + "1";
end if;
end if;
end process;

6. Metodología

Este laboratorio se realizará en una sección llevada a cabo en el laboratorio de electrónica.

Informe

El informe de esta práctica se incluye en el informe final del cronómetro de 4 digitos con precisión de décimas de
segundo.

7. Bibliografía

Floy, Tomas. (2000). Fundamentos de Sistemas Digitales (Séptima Edición ed.). Madrid: Pearson Educación.

Tocci, R., Widner, N., & Moss, G. (2007). Circuitos Lógicos MSI. En R. Tocci, N. Widner, & G. Moss, Sistemas
Digitales: Principios y Aplicaciones (págs. 576-674). PEARSON Educación.

S-ar putea să vă placă și