conceptos basicos de_vhdl

15
Ingeniero Dagoberto Rodríguez Cedeño Página 1 CONCEPTOS BASICOS DE VHDL Ingeniero Dagoberto Rodríguez Cedeño Concepto. “VHDL” viene “VHSIC Hardware Description Languaje” (Lenguaje de Descripción de Hardware VHSIC). A su vez VHSIC quiere decir “Very High Speed Integrated Circuit” (Circuito Integrado de Muy Alta Velocidad), lo que fue un programa del Departamento de Defensa de Estados Unidos para estimular la investigación sobre tecnología de CI de alto rendimiento. Estructura de programa en VHDL. ELEMENTOS DE DESCRIPCION DE VHDL. Bibliotecas (Library): Almacenan los elementos de diseño: tipo de datos, operadores, componentes, objetos, funciones,... Esos elementos de diseño se organizan en Paquetes. Packages: Son unidades de almacenamiento de elementos y tienen que hacerse “visibles” para poder ser utilizados.

Upload: angie-cardenas

Post on 09-Aug-2015

17 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 1

CONCEPTOS BASICOS DE VHDL

Ingeniero Dagoberto Rodríguez Cedeño

Concepto.

“VHDL” viene “VHSIC Hardware Description Languaje” (Lenguaje de

Descripción de Hardware VHSIC). A su vez VHSIC quiere decir “Very

High Speed Integrated Circuit” (Circuito Integrado de Muy Alta

Velocidad), lo que fue un programa del Departamento de Defensa de

Estados Unidos para estimular la investigación sobre tecnología de CI

de alto rendimiento.

Estructura de programa en VHDL.

ELEMENTOS DE DESCRIPCION DE VHDL.

� Bibliotecas (Library): Almacenan los elementos de diseño:

tipo de datos, operadores, componentes, objetos, funciones,...

Esos elementos de diseño se organizan en Paquetes.

� Packages: Son unidades de almacenamiento de elementos y

tienen que hacerse “visibles” para poder ser utilizados.

Page 2: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 2

Hay 2 bibliotecas que siempre son visibles por defecto: std (la

standard) y work (la de trabajo) y que no es necesario declarar.

� Entidades (Entity): Es el modelo de interfaz de un circuito con

el exterior mediante unos terminales de entrada y de salida. Es

la caja negra que define las entradas y salidas.

� Arquitectura (Architecture): Describe el funcionamiento del

circuito.

SINTAXIS DECLARACION DE ENTIDAD:

Page 3: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 3

Caja negra:

Puertos de una entidad (Modo de la dirección de la señal):

Modo Descripción IN En este modo las señales solo entran en la entidad

OUT Las señales salen de la entidad

BUFFER Este modo se utiliza para las señales que además de salir de la entidad pueden usarse como entradas realimentadas

INOUT

Este modo se utiliza para señales bidireccionales. Se emplea en salida con tres estados. Se puede asignar como sustituto de los tres modos anteriores, pero no se aconseja pues dificulta la comprensión del programa.

Page 4: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 4

SINTAXIS DECLARACION DE ARQUITECTURA:

Librerías:

Una librería es una colección de piezas de código usualmente empleadas. Esto permite poder reusar esas piezas ó compartirlas con otros diseños. Sintáxis: LIBRARY <nombre de la librería>; USE <nombre de un package>; Ejemplos: LIBRARY ieee; USE ieee.std_logic_1164;

El código es escrito en forma de Funciones (Functions), Procesos

(Process), Procedimientos (Procedures) ó Componentes

(Components) y luego ubicados dentro de Paquetes (Packages) para

ser compilados dentro de la Librería destino.

Page 5: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 5

Librerías más comunes del paquete VHDL actualizado en 1993: LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; USE ieee.std_logic_signed.all; USE ieee.std_logic_unsigned.all; LIBRARY std; Librería que no requiere ser declarada en un diseño. Contiene declaraciones de tipos de datos y funciones de entrada-salida de texto entre otros. USE std.standard.all; USE std.texto.all; Standard: donde se definen los tipos lógicos y numéricos básicos. TEXTO: Define tipos para la creación de texto y procedimientos para el ingreso e impresión de textos. LIBRARY work; USE work.all; Librería que no requiere ser declarada en un diseño. Es donde se salvan todos los archivos relacionados con el diseño en curso (creados por el compilador, simulador, etc.). USE ieee.std_logic_1164: Especifica el STD_LOGIC (8 niveles) y el STD_ULOGIC (9 niveles) para sistemas lógicos multinivel. De todos estos niveles sólo 3 son sintetizables sin restricciones; el resto sirven para simulación. USE ieee.std_logic_arith: Especifica tipos de datos con y sin signo, operaciones aritméticas y de comparación numérica y funciones para conversión de datos.

Page 6: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 6

USE ieee.std_logic_signed: Permite operaciones con signo con datos tipo STD_LOGIC_VECTOR. USE ieee.std_logic_unsigned: Permite operaciones sin signo con datos tipo STD_LOGIC_VECTOR.

Sintaxis definición de paquete.

PACKAGE nombre_paquete IS Declaración de tipos Declaración de señales. Declaración de constantes Declaración de componentes Definición de funciones Definición de procedimientos END nombre_paquete PACKAGE BODY nombre_paquete IS Declaración de tipos Declaración de constantes Definición de funciones Definición de procedimientos END nombre_paquete

Sintaxis de una declaración de componente.

COMPONENT nombre_componente PORT (Nombre de señal: modo tipo de señal; ... Nombre de señal: modo tipo de señal); END COMPONENT;

Tipo de señal:

TIPO Características BIT En este tipo las señales solo toman los valores de "1" y "0"

Booleana En este tipo las señales solo toman los valores de True y False

Std_logic En este tipo las señales toman 9 valores, entre ellos tenemos: "1", "0", "Z" (para el 3er estado), "-" (para los opcionales).

Integer En este tipo las señales toman valores enteros. Los 1 y los 0 se escriben sin “

Page 7: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 7

Bit_Vector En este tipo los valores de las señales son una cadena de unos y ceros. Ejemplo: “1000”

Std_Logic_Vector En este tipo los valores de las señales son una cadena de los nueve valores permisibles para el tipo std_logic.

Character Contiene todos los caracteres ISO de 8 bits, donde los primeros 128 son los caracteres ASCII.

Literales:

Enteros.

Punto flotante.

Literales físicos (ejemplo ns).

Bases (ejemplo 2#1011#, 8#17#, 16#9FD#).

Caracteres ASCII (ejemplo `M´, `5´).

Cadena de caracteres (ejemplo: “esto es un string”).

Otros.

Constantes, variables y señales:

Constantes (ejemplo: CONSTANT retardo: tiem:=3ns;)

Variables: Locales en un proceso. No salen del entorno de declaración en procesos ó subprogramas. Son ejecutadas secuencialmente.

Señales: Se modifican mediante sentencias de asignación pero no se hace efectivo hasta que todos losprocesos terminan. Son de uso global.

Operadores:

Lógicos: AND, OR, NAND, NOR, XOR, XNOR, NOT para tipos BIT, BOOLEAN y arrays de ellos.

Relacionales: =, /=, <, <=, >, >= donde los operandos deben ser del mismo tipo y el resultado es BOOLEAN.

Shift: SLL, SRL, SLA, SRA, ROL, ROR donde el operando izquierdo debe ser BIT ó BOOLEAN y el derecho INTEGER.

Page 8: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 8

Suma y resta: + y -.

MULT y DIV: *, /, MOD y REM.

Misceláneos: exponenciación (**) y valor absoluto (ABS).Los comentarios comienzan con doble línea “--”. Las sentencias terminan con “;”.

Identificadores:

No hay longitud máxima. No hay diferencia entre mayúsculas y minúsculas. Deben empezar con carácter alfabético. No pueden terminar con underline.

Tipos de descripciones en VHDL: En HDL se describen en general sucesos inherentemente concurrentes pues en la arquitectura de una entidad (entre BEGIN y END) se definen sentencias concurrentes. Sin embargo en VHDL aparece la noción de PROCESOS (Process), que si bien describen eventos que se producen como cualquier sentencia concurrente, son analizados internamente en forma secuencial para su síntesis y/o simulación. Es por eso que se encuentran sentencias de asignación propias de acciones concurrentes y otras exclusivas para procesos secuenciales. Ejemplos: Concurrentes: Declaración de señales. Sentencias: WHEN..ELSE, PROCESS, etc. Secuenciales: Declaración de variables. Sentencias: IF..THEN..ELSE, CASE, DO…WHILE, WHILE, FOR, etc. Ambas: Asignación a señales, declaración de tipos y constantes, sentencia ASSERT, retardos (AFTER), etc.

Page 9: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 9

TIPOS DE DISEÑO EN VHDL ESTRUCTURAL: En forma similar a las herramientas de diseño que trabajan con lenguajes de NETLIST, VHDL puede ser utilizado para diseñar ó simular un sistema digital, especificando por un lado sus componentes y por el otro sus interconexiones.

POR COMPORTAMIENTO (ó FUNCIONAL): VHDL puede ser usado para diseñar un sistema digital, describiendo el comportamiento del mismo a través de dos formas diferentes: “algorítmica” y por “flujo de datos”. Esta modalidad es muy utilizada en procesos de simulación ya que permite simular un sistema sin necesidad de conocer su estructura interna.

DISEÑO ESTRUCTURAL Es una forma de diseñar instanciando subcomponentes que realizan operaciones mas pequeñas del modelo completo. Ejemplo: Diseño del mismo mux 4:1 pero con una descripción “estructural” de la arquitectura que ahora denominaremos “netlist”. La misma está formada por compuertas de tres tipos diferentes (andgate, inverter y orgate) interconectadas convenientemente. Cada tipo de compuerta está especificado como un COMPONENTE diferente. “andgate” es de 3 puertos de entrada y uno de salida. “orgate” es de 4 puertos de entrada y uno de salida. “inverter” es de un puerto de entrada y uno de salida. La forma de describir que hace cada compuertas está en la sección: BEGIN ..... END de la estructura “netlist”;

Page 10: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 10

ARCHITECTURE netlist OF mux IS COMPONENT andgate

PORT(a, b, c, : IN BIT; c : OUT BIT); END COMPONENT;

COMPONENT inverter

PORT(in1 : IN BIT; x : OUT BIT); END COMPONENT; COMPONENT orgate

PORT(a, b, c, d : IN BIT; x : OUT BIT); END COMPONENT;

SIGNAL s0_inv, s1_inv, x1, x2, x3, x4 : BIT; BEGIN

U1 : inverter (s0, s0_inv); U2 : inverter (s1, s1_inv); U3 : andgate(a, s0_inv, s1_inv, x1); U4 : andgate(b, s0, s1_inv, x2); U5 : andgate(c, s0_inv, s1_inv, x3); U6 : andgate(d, s0_inv, s1_inv, x4); U7 : orgate(x2 => b, x1 => a, x4 => d, x3 => c, x => z);

END netlist;

DISEÑO ALGORÍTMICO Otra forma de describir la funcionalidad de un dispositivo es la de hacerlo algorítmicamente dentro de una sentencia “PROCESS”. La sentencia PROCESS consta de una serie de partes: La primera es la lista de sensibilidad. La segunda la declarativa La tercera es la de statement. Comienza en “BEGIN”.... .

Page 11: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 11

Ejemplo: Diseño del mismo multiplexor “mux2” en una arquitectura ahora denominada “secuencial” donde la misma contiene sólo una sentencia “PROCESS....END PROCESS”. (a, b, c, d, s0, s1) es la lista de sensibilidad. “sel” es una variable local que se declara (similar a NODE en AHDL). La ejecución de la sentencia PROCESS comienza en “BEGIN” y termina en “END PROCESS”. En esta sección se han utilizado las funciones “IF” y “CASE” para describir el comportamiento del multiplexor.

Page 12: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 12

DISEÑO POR FLUJO DE DATOS

Ejemplo de compuerta AND de 2 entradas

Declaración de arreglo y matrices:

Arreglos:

type word is array(31 downto 0) of bit;

Word (2) es el dato que se encuentre en las posición con índice 2

Matrices:

type memoria is array (0 to 7, 0 to 63) of bit;

Page 13: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 13

Sintaxis: If, Case, For, While, Do…While

If:

if (<constant_expression>)

begin : <if_block_name>

// Generate Items

end

// If-Else

if(<constant_expression>)

begin : <if_block_name>

// Generate Items

end

else

begin : <else_block_name>

// Generate Items

end

Case:

case <expression> is

when <constant_expression> =>

-- Sequential Statement(s)

when <constant_expression> =>

-- Sequential Statement(s)

when others =>

-- Sequential Statement(s)

end case;

Page 14: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 14

For:

For (<genvar_id> = <constant_expr>; <constant_expr>;

<genvar_id> = <constant_expr>)

begin : <required_block_name>

// Generate Items

End

While:

while(<expression>)

begin

// Statements

end

Do…While:

do

begin

// Statements

end

while(<expression>);

Herramientas:

• Warp • Altera • Xilinx • ActiveVHDL • GHDL (GNU) • Max+Plus II • Quartus II • ModelSim/ISE • Otros programas están incluyendo en sus últimas versiones la

capacidad de programar FPGA usando sus propios lenguajes, pero también incluyen módulos en VHDL, por ejemplo Protel DXP, Labview o Matlab.

Page 15: Conceptos basicos de_vhdl

Ingeniero Dagoberto Rodríguez Cedeño Página 15

BIBLIOGRAFIA:

1. Roth, Charles H. Fundamentos de Diseño Lógico. Ed. Thomson. 2. John F. Wakerly, Diseño digital, principios y prácticas 3. www.altera.com 4. Uyemura, John P. Introducción al Diseño de Sistemas Digitales. Ed.

Thomson.