SEP
DGEST
INSTITUTO
TECNOLÓGICO
SNEST DE
MATAMOROS
DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
DISEÑO DIGITAL CON VHDL 8:00 a 9:00pm, Lunes, Miércoles, Viernes 7:00 a 9:00 pm, Martes
Contador de 8 Bi ts “Practica 4.- Contador ”
Alumnos: Leonardo Adán Mora Vázquez José Fortino Rico San Martín Luis Eduardo Guzmán Puga Julián Vera Ávila
Núm. de control: 11260099 11260110 11260085 11260125
Profesor: Ing. Arturo Rodríguez Casas
H. MATAMOROS, TAM.
24 DE SEPTIEMBRE DE 2013
OBJETIVO
Realizar un contador de 8 bits utilizando lenguaje VHDL e implementarlo en el Kit Basys2.
MARCO TEÓRICO
Un contador es un circuito secuencial construido a partir de biestables y puertas lógicas capaz de realizar el cómputo de los impulsos que recibe en la entrada destinada a tal efecto, almacenar datos o actuar como divisor de frecuencia. Habitualmente, el cómputo se realiza en un código binario, que con frecuencia será el binario natural o el BCD natural (contador de décadas).
Según la forma en que conmutan los biestables, podemos hablar de contadores síncronos (todos los biestables conmutan a la vez, con una señal de reloj común) o asíncronos (el reloj no es común y los biestables conmutan uno tras otro). Según el sentido de la cuenta, se distinguen en ascendentes, descendentes y UPDOWN(ascendentes o descendentes según la señal de control). Según la cantidad de números que pueden contar, se puede hablar de contadores binarios de n bits (cuentan todos los números posibles de n bits, desde 0 hasta ), contadores BCD (cuentan del 0 al 9) y contadores Módulo N (cuentan desde el 0 hasta el N-cuarto.
El número máximo de estados por los que pasa un contador se denomina módulo del contador. Este número viene determinado por la expresión 2^n donde n indica el número de bits del contador. Ejemplo, un contador de módulo 4 pasa por 4 estados, y contaría del 0 al 3. Si necesitamos un contador con un módulo distinto de 2^n, lo que haremos es añadir un circuito combinacional.
CODIGOS VHDL
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter is generic (N: integer :=8); port( clk: in std_logic; clr: in std_logic; q: out std_logic_vector(N-1 downto 0) ); end counter; architecture counter of counter is signal count: std_logic_vector(N-1 downto 0); begin process(clk,clr) begin if clr = '1' then count <= (others => '0'); elsif clk'event and clk ='1' then count <= count + 1; end if; end process; q <= count; end counter;
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity clkdiv is port( mclk: in std_logic; clr: in std_logic; clk48: out std_logic ); end clkdiv; architecture clkdiv of clkdiv is signal q: std_logic_vector(23 downto 0); begin process(mclk, clr) begin if clr='1' then q <= x"000000"; elsif mclk'event and mclk ='1' then q <= q + 1; end if; end process; clk48 <= q(23); end clkdiv;
library IEEE; use IEEE.std_logic_1164.all; entity count is port( mclk : in STD_LOGIC; btn : in STD_LOGIC_VECTOR(3 downto 3); ld : out STD_LOGIC_VECTOR(7 downto 0) ); end count; architecture count of count is ---- Component declarations ----component clkdiv port ( clr : in STD_LOGIC; mclk : in STD_LOGIC; clk48 : out STD_LOGIC ); end component; component counter generic( N : INTEGER := 8 ); port ( clk : in STD_LOGIC; clr : in STD_LOGIC; q : out STD_LOGIC_VECTOR(N-1 downto 0) ); end component; ---- Signal declarations used on the diagram ---signal NET91 : STD_LOGIC; begin ---- Component instantiations ---U1 : clkdiv port map( clk48 => NET91, clr => btn(3), mclk => mclk ); U2 : counter port map( clk => NET91, clr => btn(3), q => ld( 7 downto 0 ) ); end count;
OBSERVACIONES Y CONCLUSIONES.
Durante la realización de esta práctica del contador de 8 bits tuvimos varios problemas por que al principio no sabíamos cómo realizar la práctica, pero basándonos en el archivo que nos proporcionó el profesor pudimos entender mejor la realización de la misma y la pudimos llevar a cabo sin que hubieras más complicaciones.