LENGUAJE VHDL - · PDF fileIng. Wilmer Naranjo 2 DESCRIPCIÓN EN VHDL ¾Al inicio...
-
Upload
duongkhanh -
Category
Documents
-
view
226 -
download
1
Transcript of LENGUAJE VHDL - · PDF fileIng. Wilmer Naranjo 2 DESCRIPCIÓN EN VHDL ¾Al inicio...
Ing. Wilmer Naranjo 2
DESCRIPCIÓN EN VHDLAl inicio de los 80´s diversos grupos de investigadores empiezan a crear y desarrollar los llamados "lenguajes de descripción de hardware" cada uno con sus peculiaridades. Empresas como IBM con su IDL, el TI - HDL de Texas Instruments, ZEUS de General Electric, etc.,Alrededor de 1981 el Departamento de Defensa de los Estados Unidos desarrolla un proyecto llamado VHSIC (Very High Speed Integrated Circuit ) su objetivo era rentabilizar las inversiones en hardware haciendo más sencillo su mantenimiento. Se pretendía con ello resolver el problema de modificar el hardware diseñado en un proyecto para utilizarlo en otro, lo que no era posible hasta entonces porque no existía una herramienta adecuada que armonizase y normalizase dicha tarea, era el momento de los HDL's
Ing. Wilmer Naranjo 3
DESCRIPCIÓN EN VHDL
Constituida al menos por 3 elementos principales:o Biblioteca (librerías)o Entidadeso Arquitecturas
El diseñador generalmente realiza la descripción de las entidades y arquitectura empleando elementos almacenados en las bibliotecas.Éstas a su vez son almacenadas en la biblioteca de trabajo, luego de ser compiladas.
Ing. Wilmer Naranjo 4
BIBLIOTECA
Es un lugar donde el compilador VHDL almacena información referente a un proyecto de diseño particular, incluyendo documentos intermedios que son usados en el análisis, simulación y la síntesis.
Una biblioteca estándar muy usada es IEEE.
Para especificar la biblioteca se usa "library" y en la primera línea del programa de escribirse lo siguiente:
Library ieee;
Ing. Wilmer Naranjo 5
OBJETO DE DATOSSe proporcionan tres tipos de objetos de datos:SeñalesConstantes VariablesLas señales: representan las señales lógicas de un circuito.Las constantes y variables son útiles para describir el circuito.
Ing. Wilmer Naranjo 6
NOMBRE DE OBJETO DE DATOSCualquier carácter AlfanuméricoEmpieza con una letra (ingles)No puede ser una palabra reservada de VHDLNo puede empezar con “_”No puede tener dos “_” seguidosEjemplo X1, Puerto_1, UNO, estado, a, FVHDL no distingue entre mayúscula y minúscula.
Ing. Wilmer Naranjo 7
VALORES DE OBJETO DE DATOSSe utiliza objeto de datos SIGNAL para representar señales lógicas en un circuito.El Valor objeto SIGNAL individual se especifica utilizando apostrofe como en ‘0’ o en ‘1’ para un número binario.El Valor objeto SIGNAL multibits se especifica utilizando comillas como en “0101” o “10111100”Las comillas también se emplean para indicar un número binario “1001” representa los cuatro valores SIGNAL ‘1’, ‘0’, ‘0’, ‘1’Los valores CONSTANT o VARIABLE se especifican de la misma manera que los objetos de datos SIGNAL.
Ing. Wilmer Naranjo 8
OBJETO DE DATOS SIGNALLos objetos de datos SIGNAL representan señales lógicas, o cables en un circuito.Ejemplo de declaración:SIGNAL signal_name: type_nameLa variable type_name determina los valores legales que la señal puede asumir y sus usos en VHDL.Ejemplos:BIT, BIT VECTOR, STD_LOGIC, STD_LOGICVECTOR , STD_ULOGIC , SIGNED, UNSIGNED, INTEGER, ENUMERATION y BOOLEAN.
Ing. Wilmer Naranjo 9
TIPO BIT y BIT_VECTOREstos tipos están predefinidos en los estandares de VHDL del IEEE 1076 y 1164.BIT puede tener los valores ‘1’ o ‘0’BIT_VECTOR es un arreglo lineal de objetos tipo bit.Ejemplo:SIGNAL X1: BITSIGNAL C: BIT_VECTOR (1 TO 4)SIGNAL D: BIT_VECTOR (7 DOWNTO 0)
C<= “1010” --C(1)=1, C(2)=0, C(3)=1, C(4)=0D<= “10010100” --D(7)=1, D(6)=0, D(5)=0, D(4)=1
--D(3)=0, D(2)=1, D(1)=0, D(0)=0
Ing. Wilmer Naranjo 10
TIPO STDLOGIC y STDLOGIC _VECTORSe añadio en el estandar de VHDL del IEEE 1164.Ofrece mayor versatilidad que el tipo BIT.Para utilizarlo debemos de incluir las siguientes instrucciones
LIBRARY ieeeUSE ieee.std_logic_1164.all
Los siguientes valores son legales para STD_LOGIC:0 ----- un 0 ;1 ---- un 1 Z ----- alta impedancia ;‘-‘ ---- estado opcional (don’t care) L ----- un 0 débil ;H ---- un 1 débil U ----- no inicializado ;X ---- desconocido (un 0 ó un 1 fuerte) W ----- desconocido (un 0, ó un 1 débiles)SIGNAL X1, x2, x3 :STD_LOGICSIGNAL C : STD_LOGIC_VECTOR (1 TO 4)SIGNAL Y, Z : STD_LOGIC_VECTOR (7 DOWNTO 0)
Ing. Wilmer Naranjo 11
TIPO STD_ULOGICMuy similares a las señales de tipo STD_LOGIC.La diferencia esta en que STD_ULOGIC se relaciona con el concepto de Función de Resolución.La Función de Resolución se utiliza para determinar que valor debe tomar una señal si hay dos fuentes para la misma.Por ejemplo dos buffers triestados podrían tener sus salidas conectadas a una señal x, en algún momento uno de ellos podría producir un valor de salida ‘Z’ y el otro un valor ‘1’. Para determinar que el valor de X debe de ser ‘1’ en este caso se emplea la función resolución
Ing. Wilmer Naranjo 12
TIPO SIGNED Y UNSIGNED
Los paquetes std_logic_signed y std_logic_unsignedrecurren a otro paquete llamado std_logic_arith, que define el tipo de circuito que utilizará operadores aritméticos como +.El tipo signed maneja números con signo (complemento a 2)El tipo unsigned emplea números sin signo.
Ing. Wilmer Naranjo 13
TIPO INTEGERUna señal INTEGER tiene 32 bit, cuyo rango [-(231-1) a (231-1)].El rango se puede personalizarutilizango RANGE.SIGNAL X: INTEGER RABGE -127 TO 127.
TIPO BOOLEANTiene los valores TRUE o FALSE, que equivale a ‘1’ y a ‘0’.
TIPO ENUMERATIONTiene valores que el usuario especifica.TYPE enumerated_type_name IS (name{, name});TYPE State_type IS (estadoA, estadoB, estadoC);SIGNAL y: State_type;Los valores legales para y son estadoA, estadoB y estadoC
Ing. Wilmer Naranjo 14
OBJETO DE DATOS CONSTANTESEs aquel cuyo dato no puede cambiar.CONSTANT constant_nombre : type_name:=constant_valor;CONSTANT zero : std_logic_vector (3 downto 0):=“0000”;
OBJETOS DE DATOS VARIABLESSe utiliza para almacenar los resultados de los cálculosVARIABLE variable_name: type_name
Ing. Wilmer Naranjo 15
Operadores
Cinco categorías de operadores:
AritméticosRelacionalesLógicosDesplazamientoOtros
Ing. Wilmer Naranjo 16
Operadores Aritméticos
OPERACIÓN OPERADOR
Igual =Diferente /=
Mayor >Mayor o igual >=
Menor <Menor o igual <=
Ing. Wilmer Naranjo 17
Operadores lógicos y de desplazamientoOPERACIÓN OPERADOR
Y andY Negado nand
O orO Negado nor
O-exclusiva xorO-exclusiva negada xnor
Negación notDesplazamiento lógico a la izquierda sllDesplazamiento lógico a la derecha srl
Desplazamiento aritmético a la izquierda slaDesplazamiento aritmético a la derecha sraDesplazamiento circular a la izquierda rolDesplazamiento circular a la derecha ror
Ing. Wilmer Naranjo 18
Operadores de adición
OPERACIÓN OPERADORSigno positivo +Signo negativo -Concatenación &
Operadores Otros
Operadores de multiplicar: *, /, MOD, REM
Operadores miscellaneous: **, ABS
Ing. Wilmer Naranjo 19
Tipos de datos
Estándar Lógico‘0’ , ‘1’,’Z’ (tercer estado), ‘-’(don´t care),’L’,’H’,,’U’,’X’,’W’
Std_logic
Cadena de caracteresConjunto de caracteresStringCaracteresCharacter
Cadena de bitsConjunto de bitsBit_vector
Números binarios0,1BitNúmeros booleanosTRUE,FALSEBoolean
Números realesMAXREAL… MAXREALRealNúmeros positivos1… MAXINTPositiveNúmeros naturales0… MAXINTNaturalNúmeros enterosMAXINT… MAXINTIntegerDESCRIPCIÓNRANGOTIPO
Ing. Wilmer Naranjo 20
ENTIDAD DE DISEÑO DE VHDLUn circuito o subcircuitodescrito con código VHDL se llama entidad de diseño o simplemente entidad.Tiene dos partes principales que son:
Declaración de entidad ENTITYEspecifica las señales de entrada y salida del circuito digital.Arquitectura .Proporciona los detalles del circuito.
ENTIDAD
DECLARACION DE ENTIDAD
ARQUITECTURA
Ing. Wilmer Naranjo 21
DECLARACION ENTITYLas señales de E/S del circuito digital se especifica utilizando la declaración ENTITY.PORT indica la señal de E/S en modo:Modo in: Un puerto es de modo in si la información correspondiente al mismo, entra a la entidad.Modo out: Un puerto es de modo out si la
información fluye hacia fuera de la entidad.Modo buffer: Este modo es similar al modo out, pero además, permite la realimentación y no es bidireccional. Modo inout: Es usado para señales
bidireccionales.
Ing. Wilmer Naranjo 22
ENTIDADTiene la misión de modelar la interfaz de un circuito o sistema con el exterior, a través de las entradas y salidas.
EA
BC
Entity EJEMPLO isPort (A,B: in bit;
C : out bit);End EJEMPLO
EA
BC
Entity EJEMPLO1 isPort (A,B: in bit_vector (1 to 4);
C : out bit_vector (1 to 4));End EJEMPLO1
Ing. Wilmer Naranjo 23
ARQUITECTURAARCHITECTURE Provee los detalles del circuitopara una entidad.Consta de 2 partes principales:La región declarativa
Precede a la palabra reservada BEGIN.Se utiliza para declarar señales, tipos definidos por el usuario y constantes, componentes y atributos.
La región del cuerpo de arquitecturaSe encuentra después de BEGIN y se detalla la programación en VHDL del circuito digital
Ing. Wilmer Naranjo 24
PAQUETEUn paquete en VHDL sirve como un depósito. Se utiliza para almacenar código de VHDL de uso general.Un paquete tiene dos partes:Declaración de Paquete.Se declara: LIBRARY library_name;
USE library_name.package_name_all;
PACKAGE package_name IS[TYPEdeclarartions][SIGNAL declarartions][COMPONENT declarartions]
END package_nameCuerpo de Paquete.Opcional para definir funciones de VHDL
Ing. Wilmer Naranjo 25
Crear paquetesLa biblioteca IEEE es solo de lectura, tipo global, no puede interactuar ni modificar.
Cada diseñador puede crear su propio paquete dando la posibilidad de utilizarlos en otros diseños o modificarlos, para esto el compilador VHDL genera automáticamente una biblioteca llamada work.
En la biblioteca work se almacenan las entidades y arquitecturas de diseño.
Una vez creado el nuevo paquete se lo puede usar en otro proyecto declarándolo de la siguiente manera:
Use work.nombre_del_paquete.all ;
Ing. Wilmer Naranjo 26
SUBCIRCUITOSUna entidad de VHDL definida en un archivo de código fuente puede usarse como subcircuito en otro archivo de código fuente.El subcircuito en VHDL se llama COMPONENTE.Un componente se declara en la arquitectura o en la declaración de paquete.La sintaxis de la declaración del componente es similar a la declaración de la entidad.Una vez declarado, este puede instanciarse como un subcircuito. COMPONENT component_name[GENERIC ( parameter_name: integer:= default_value{;
parameter_name: integer:= default_value});]PORT ([SIGNAL] signal_name {, signal_name}:[mode] type_name{;
[SIGNAL] signal_name {, signal_name}:[mode] type_name});
instance_name : component_name PORT MAP(formal_name => actual_name {, formal_name => actual_name });
Ing. Wilmer Naranjo 27
ARQUITECTURAEs la encargada de la descripción del funcionamiento de un circuito.Describe el funcionamiento interno de las entidades.Pueden existir varias arquitecturas para una misma entidad.
Niveles de arquitectura:
- Nivel Algorítmico- Nivel RTL- Nivel Lógico
Ing. Wilmer Naranjo 28
Nivel Algorítmico, funcional o de comportamiento
Es el nivel con mayor grado de abstracción.
El diseñador sólo describe el comportamiento del sistema sin preocuparse de las señales o componentes internos del mismo.
Se suele hablar de éste nivel como: Alto Nivel.
Ing. Wilmer Naranjo 29
Ejemplo:
Entity decodificador isPort (e0,e1,en: in bit;
s0,s1,s2,s3 : out bit);End decodificador
Ing. Wilmer Naranjo 30
Nivel Algorítmicoarchitecture algoritmica of decodificador is begin
process (e0,e1,en)begin
if en=‘0’ thens0<=‘0’; s1<=‘0’; s2<=‘0’; s3<=‘0’;
elsif e1=‘0’ and e0=‘0’ thens0<=‘1’;
elsif e1=‘0’ and e0=‘1’ thens1<=‘1’;
elsif e1=‘1’ and e0=‘0’ thens2<=‘1’;
elsif e1=‘1’ and e0=‘1’ thens3<=‘1’;
end if;end process;
end algoritmica;
Ing. Wilmer Naranjo 31
Nivel RTL (Register Transfer Level) o de flujo de datos (Data Flow)
Proporciona un cierto grado de abstracción con respecto al hardware.
El diseñador describe el sistema mediante diagramas de transferencias entre registros, tablas de verdad o ecuaciones lógicas.
Ing. Wilmer Naranjo 32
Nivel RTLarchitecture RTL of decodificador is
signal e0n, e1n: bit;begin
e0n<=not(e0);e1n<=not(e1);s0<= e0n and e1n and en;s1<= e0 and e1n and en;s2<= e0n and e1 and en;s3<= e0 and e1 and en;
end RTL;
Ing. Wilmer Naranjo 33
Nivel Lógico o Estructural
Utiliza los recursos que el lenguaje proporciona para describir las interconexiones entre los distintos componentes de un circuito.
No se realiza una descripción del comportamiento sino de la estructura del mismo.
Ing. Wilmer Naranjo 34
Nivel Lógicoarchitecture estructural of decodificador is
signal e0n, e1n: bit;component inversor is
port (e:in bit; s:out bit);end component;component puerta_and is
port (e0, e1,en:in bit; s:out bit);end component;
BeginN0:inversor port map (e0, e0n);N1:inversor port map (e1, e1n);A0:puerta_and port map (e0n, e1n, en,,s0);A1:puerta_and port map (e0, e1n, en,,s1);A2:puerta_and port map (e0n, e1, en,,s2);A3:puerta_and port map (e0, e1, en,,s3);
end estructural;
Ing. Wilmer Naranjo 35
INSTRUCCIONES DE ASIGNACION CONCURRENTEAsignación de señales simples
Signal_name <= expression;
Asignación de señales seleccionadaWhit expression SELECTsignal_name <= expression WHEN constant_value{,
expression WHEN constant_value};
Asignación de señal condicionalsignal_name <= expression WHEN logic_expression ELSE
{expression WHEN logic_expression ELSE}expression;
Instrucciones Generate
Ing. Wilmer Naranjo 36
COMPARADOR ASIGNACION
EA
BC
Entity comparador isPort (A,B: in bit_vector (0 to 3);
C : out bit );End comparadorarchitecture RTL of comparador is
BEGINC <= NOT (A(0) XOR B(0)) AND
NOT (A(1) XOR B(1)) ANDNOT (A(2) XOR B(2)) AND NOT (A(3) XOR B(3));
end RTL;
Ing. Wilmer Naranjo 37
SELECTOR SELECCIONEntity selector isPort (A,B: in bit_vector (1 to 4);
S: in bit; C : out bit_vector (1 to 4));
End selectorarchitecture RTL of selector isbegin
WITH S SELECTC <= A WHEN ‘0’,
B WHEN OTHERS;end RTL;
E
S
A
BC
Ing. Wilmer Naranjo 38
SELECTOR 4Entity selector4 isPort (A,B,C,D: in bit_vector (1 to 4);
S: in bit_vector (0 to 1); F : out bit_vector (1 to 4));
End selector4architecture RTL of selector4 isbegin
WITH S SELECTF <= A WHEN ‘00’,
B WHEN ‘01’,C WHEN ‘10’,D WHEN OTHERS;
end RTL;
E
S
A
BF
C
D
Ing. Wilmer Naranjo 39
COMPARADOR CONDICIONAL
EA
BC
Entity comparador isPort (A,B: in bit_vector (1 to 4);
C : out bit );End comparadorarchitecture RTL of comparador is
BEGINC <= ‘1’ when (a = b) else ‘0’;
end RTL;
Ing. Wilmer Naranjo 40
SELECTOREntity selector2 isPort (A,B: in bit_vector (1 to 4);
S: in bit; C : out bit_vector (1 to 4));
End selector2architecture RTL of selector2 isbegin
C <= A WHEN S= ‘0’ ELSE B;end RTL;
E
S
A
BC
Ing. Wilmer Naranjo 41
Asignación de señal recibida 2
Otra forma:with - select - when - others
Ejemplo:Whit m selectT <=‘1’ when 0 | 4 | 18;
‘0’ when 14 | 16 | 20;‘z’ when others;
Las barras verticales (|) tienen el mismo significado que la operación lógica or.
Ing. Wilmer Naranjo 42
PROCESOEs el mecanismo fundamental utilizado para describir el comportamiento de una entidad.La arquitectura de una entidad descrita a nivel de comportamiento incluye una o más procesos.Es en sí una cláusula concurrente, pero las sentencias incluidas en él son secuenciales.
La declaración de los procesos comienza con el nombre de éste, seguida por dos puntos (:) y luego, la palabra clave PROCESS.Después de la palabra clave es necesario detallar una lista de señales, conocida como lista de sensibilidades.El objetivo de esta lista es activar el proceso, siempre y cuando se active o cambie una de las señales contenidas en dicha lista.
Ing. Wilmer Naranjo 43
Sintaxis del procesonombre_del_proceso: process (señal1, señal2,…,señaln)
Declaración de tipos Declaración de variablesDeclaración de constantesBeginDeclaraciones secuenciales...
Declaraciones secuencialesend process nombre_del_proceso;
Ing. Wilmer Naranjo 44
Declaración if - thenLa declaración if es una estructura de asignación condicional, que permite la selección de instrucciones que serán ejecutadas, dependiendo de una o más condiciones.Ejemplo:
If a=b thenE<=‘1’;end if;
Declaración if – then-elseEjemplo:
If a=b thenE<=‘1’;
elseE<=‘0’;
end if;
Ing. Wilmer Naranjo 45
Declaración if – then-elsif-else
Usada cuando es necesario varias estructuras ifanidadas (una en el interior de otras).
Ejemplo:
If [A[3]=‘1’] then Y <= “111”;elsif [A[2]=‘1’] then Y <= “110”;elsif [A[1]=‘1’] then Y <= “101”;elsif [A[0]=‘1’] then Y <= “100”;
else Y <= “000”;end if;
Ing. Wilmer Naranjo 46
Declaración Case
Es muy útil cuando se disponen de varias alternativas a partir del valor de una señal, o una expresión y se necesita seleccionar sólo una.
Ejemplo:
Case A iswhen “001” => Y[0] <= '0';when “010” => Y[1] <= '0';when “011” => Y[2] <= '0';when “111” => Y[3] <= '0';
end case;
Ing. Wilmer Naranjo 47
Case-when-othersEjemplo:
Case A iswhen “001” => Y[0] <= '0';when “010” => Y[1] <= '0';when “011” => Y[2] <= '0';when “101” => Y[3] <= '0';when others =>Y<=“1111”;
end case;