Académique Documents
Professionnel Documents
Culture Documents
INFORMACIN INTRODUCTORIA AL
LENGUAJE
P A R T E S B S I C A S D E U N P R O G R A M A
S I N T A X I S ( A S I G N A C I N ( < = ) , I F , E L S I F ,
WHEN-CASE,
H O L A M U N D O E N V H D L
M A P E O
S I M U L A C I N E N A C T I V E - H D L
I M P L E M E N T A C I N E N F P G A P O R M E D I O D E L
SOFTWARE ISE
Objetivos de primer sesin.
Libreras.
Contiene una lista de libreras a usar en el programa y
los paquetes de dichas libreras.
Sintaxis:
LIBRARY librera_a_utilizar;
USE nombre_de_librera_a_utilizar . nombre_del_paquete .partes_del_paquete;
Ejemplo:
library ieee;
use ieee.std_logic_1164.all; Tres
USE IEEE.STD_LOGIC_ARITH.ALL; paquetes
Use ieee.std_logic_unsigned.all; ms usados
Cada librera tiene tipos de datos y funciones exclusivas, para evitar complicaciones
pueden poner las 3 siempre pero posteriormente se explicar cundo usar cada una.
Partes bsicas de un programa.
Entidad o Entity.
Es la parte en la que definimos cuntas entradas y
salidas tendr y de qu tipo sern esas entradas o
salidas.
Ejemplo:
Entity Nombre_que_decidamos is
Port( Entrada_A : in std_logic;
Entrada_b : in std_logic; Tipo de
Salida_C : out std_logic entrada o
Salida_D: out std_logic); salida elegida.
End Nombre_que_decidamos ;
Los identificadores en este color pueden ser cualquiera que elijamos, que no empiece con un
nmero ni con dos guiones seguidos. No deben incluir smbolos (&%!$) ni . Ni sea una palabra
reservada.
Arquitectura o Architecture.
Aqu se escribe el comportamiento de la(s) entrada(s) dentro del
programa, para ser capaz de dar un valor (valores) a la(s) salida(s).
Ejemplo:
Architecture Tipo_de_arquitectura of Nombre_que_decidamos is
Begin
Salida_C <= Entrada_A and Entrada_b ;
Salida_D <= Entrada_A xor Entrada_b ;
End Tipo_de_arquitectura ;
Ejemplo de programa en VHDL.
Library IEEE;
Use ieee.std_logic_1164.all
Sintaxis bsica en VHDL.
Use ieee.std_logic_1164.all;
And, or, not, nor, xor, nand
Tipos de entradas y salidas:
Std_logic, std_logic_vector, bit, buffer.
Use ieee.std_logic_arith.all;
Despus
veremos
procesos
Ejemplo para el primer caso de IF-ELSIF
if (X = 5) and (Y = 9) then
Z <= A;
elsif (X >= 5) then
Z <= B;
else
Z <= C;
end if;
process(CLK, RESET)
begin La presencia de ELSIF y/o de ELSE
if RESET = '1' then No ameritan un
COUNT <= 0; end if;
elsif CLK'event and CLK='1' then En otras palabras, por cada IF
if (COUNT >= 9) then Va un
COUNT <= 0; end if;
Else
COUNT <= COUNT + 1;
end if;
end if;
end process;
Case Is When
La variable
que se va a
evaluar
case INT_A is
when 0 => Z <= A;
when 1 to 3 => Z <= B;
when 2|6|8 => Z <= C; -- illegal
when others => Z <= 'X';
end case;
No se puede poner rangos con vectores de bits.
case VEC is
when "000" to "010" => Z <= A; -- illegal
when "111" => Z <= B;
when others => Z <= 'X';
end case;
Seales.
Se pueden entender como variables auxiliares para
tener un contador o un acumulador, as como para
unir dos terminales en un Mapeo
Mapeo
Se explicar junto al grupo la sintaxis y las uniones con
seales, si las hay.
Realizar Prctica 1.