Nothing Special   »   [go: up one dir, main page]

Cartas Asm

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

TUTORIAL “LENGUAJE VHDL” PRÁCTICAS DE LABORATORIO

PRÁCTICA 10

DISEÑO DE UNA CARTA ASM

OBJETIVO:

El alumno comprenderá utilizando lenguaje VHDL, el funcionamiento y manejo de


cartas ASM para la creación de máquinas de estados, las cuales controlan sistemas
secuenciales con gran diversidad de salidas.

ESPECIFICACIONES:

Diseñar un contador que cuente en forma ascendente/descendente los números binarios


del cero al tres, cuando el valor de la variable A sea uno la cuenta se efectuará de forma
ascendente y si el valor de la variable A es cero la cuenta se efectuará en forma
descendente. El cambio de cuenta de ascendente a descendente y viceversa se puede
efectuar en cualquier estado.

DIAGRAMA DE BLOQUES:

reset

L1

MÁQUINA
A DE L0
ESTADOS

divi

DIVISOR DE FRECUNECIA

reloj

DISEÑO DE SISTEMAS DIGITALES


TUTORIAL “LENGUAJE VHDL” PRÁCTICAS DE LABORATORIO

CARTA ASM:

DISEÑO DE SISTEMAS DIGITALES


TUTORIAL “LENGUAJE VHDL” PRÁCTICAS DE LABORATORIO

CODIGO EN LENGUAJE VHDL DE LAS BIBLIOTECAS Y ENTIDAD:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity ASM is
Port ( RELOJ : in STD_LOGIC;
RESET : in STD_LOGIC;
A : in STD_LOGIC;
L : out STD_LOGIC_VECTOR (1 downto 0));
end ASM;

DISEÑO DE SISTEMAS DIGITALES


TUTORIAL “LENGUAJE VHDL” PRÁCTICAS DE LABORATORIO

CÓDIGO EN LENGUAJE VHDL DE LA ARQUITECTURA:

architecture Behavioral of ASM is


type ESTADOS is (s0,s1,s2,s3);
signal epresente, esiguiente :ESTADOS;
begin
process (reloj,reset)
begin
if reset='1' then epresente <=s0;
elsif rising_edge (reloj) then
epresente <= esiguiente;
end if;
end process;
process (epresente, A)
begin
case epresente is
when s0 =>
L <= "00";
if A='1' then
esiguiente<= s1;
else
esiguiente <= s3;
end if;
when s1 =>
L <= "01";
if A='1' then
esiguiente<= s2;
else
esiguiente<= s0;
end if;
when s2 =>
L <= "10";
if A='1' then
esiguiente<= s3;
else
esiguiente <= s1;
end if;
when s3 =>
L <= "11";
if A='1' then
esiguiente<= s0;
else
esiguiente<= s2;
end if;
end case;
end process;
end Behavioral;

DISEÑO DE SISTEMAS DIGITALES


TUTORIAL “LENGUAJE VHDL” PRÁCTICAS DE LABORATORIO

SIMULACIÓN DE LA CARTA ASM:

DISEÑO DE SISTEMAS DIGITALES

También podría gustarte