TU MEJOR MAESTRO

Logo TTM

Sintaxis del Lenguaje


LIBRERIAS

La libreria debe colocarse al inicio del documento antes de la entidad que va a utilizar los elementos de esa libreria. La libreria WORK y STD así como el paquete STD.STANDARD siempre estan accesibles al documento que se esta editando. Primero la clausula LIBRARY declara el nombre de la libreria y porteriormente el uso de l clausula USE selecciona la parte de la libreria que se desea usar. A continuación se muestra un ejemplo.

library ieee ;
use ieee.std_logic_1164 . all ;
use ieee.std_logic_arith . all ;
use ieee.std_logic_unsigned . all ;

COMENTARIOS

En todo lenguaje de programación es una buena prácitica realizar comentarios al código con la finalidad de hacerlo más entendible al programador. Una linea de codigo marcada como comentario será ignorada por el compilador, por lo que no afecta de ninguna manera al tiempo de compilación. En VHDL los comentarios se hacen poniendo doble guión antes del texto a comentar. A continuación se muestra un comentario en VHDL.

-- Este es un comentario en VHDL

DATOS "STD_LOGIC"

En el paquete ieee.std_logic_1164 que se encuentra dentro de la libreria IEEE está definido el tipo de datos denominado STD_LOGIC. Las señales de tipo std_logic pueden no solo contemplan los valores lógicos 0 y 1 sino que además tiene definido otros tipos de datos. A continuación se muestra una tabla con cada uno de los valores permitidos.


TIPO VALORES
U Sin Inicializar
X Desconocido
0 0 Forzado
1 1 Forzado
Z Alta Impedancia
W Desconocido Debil
L 0 Debil
U 1 Debil
- No Importa

Las operaciones lógicas básicas de VHDL estan definidas en base a los tipos de datos de la tabla anterior. Las compuertas and, nand, or, nor, xor, xnor, not definidas en en VHDL se calculan en función de los tipos de datos de entrada a estas compuertas. En la práctica los tipos más utilizados son '0', '1', 'Z', 'X' y '-'. La manera de definir bit o arreglos de bit es mediante las siguientes estructuras.

señal1 : IN std_logic := '0' ;
señal2 : OUT std_logic_vector ( 7 downto 0 ) ;

OPERADORES

TIPO VALORES
INTEGER -2147483647 hasta 2147483647
BIT '0' ó '1'
BOOLEAN TRUE ó False
BIT_VECTOR Arreglo de bits sin restricción

PALABRAS RESERVADAS

abs acces after alias all
and architecture array assert atribute
begin block body buffer bus
case component configuration constant disconect
downto else elsif end entity
exit file for function generate
generic group* guarded if impure*
in inertial* inout is label
library linkage literal* loop map
mod nand new next nor
not null of on open
or others out package port
postponed* procedure process pure* range
record register reject* rem report*
return rol ror select severity
signal shared* sla* sll* sra*
srl* subtype then to transport
type unaffected* units until use
variable wait when while with
xnor* xor

Diseño y configuración de entidades


DECLARACIÓN DE ENTIDADES

El diseño de entidades es la primera abtracción de hardware en VHDL. Representa la parte del diseño de hardware visto como una caja negra en donde solo se definen las entradas y salidas que tendrá el circuito. Este diseño puede representar el sistema completo, un subsistema, una compuerta logica, etc.


ENTITY nombre IS
GENERIC ( n: NATURAL );
PORT (
______ clk : IN STD_LOGIC ;
______ dato : IN STD_LOGIC_VECTOR ( 7 downto 0 );
______ leds : OUT STD_LOGIC_VECTOR ( 7 downto 0 ) );
END ENTITY ;


DECLARACIÓN DE ARQUITECTURA

El diseño de entidades es la primera abtracción de hardware en VHDL. Representa la parte del diseño de hardware visto como una caja negra en donde solo se definen las entradas y salidas que tendrá el circuito. Este diseño puede representar el sistema completo, un subsistema, una compuerta logica, etc.


ARCHITECTURE nombre OF entidad IS
___ SIGNAL cont: INTEGER RANGE 0 TO 1023 := 0 ;
___ SIGNAL aux: STD_LOGIC_VECTOR (15 downto 0 ) ;
___ CONSTANT const: INTEGER := 10 ;
BEGIN

______ PROCESS ( clk , rst )
______ BEGIN
_________ . . . .
_________ instrucciones
_________ . . . .
______ END PROCESS ;

END ARCHITECTURE ;



Subprogramas y Paquetes


Declaración de Subprogramas

Funciones

Declaración de Paquetes

Cuerpo del paquete


Sentencias Secuenciales


Sentencia WAIT

Sentencia de asignación de señal

Sentencia de asignación de variables

Sentencia IF

Sentencia CASE

Sentencia LOOP

Sentencia NEXT

Sentencia EXIT

Sentencia RETURN


Setencias Concurrentes


Sentencia BLOCK

Sentencia PROCESS

Asignación concurrente de señales

Asignación condicional de señales

Asignacion de señales señales seleccionadas

Instanciación de componentes


INTRODUCCIÓN

¿Qué es un FPGA?

¿Cómo funciona?

¿Qué es un HDL?

Referencia VHDL

Referencia Verilog

CIRCUITOS DIGITALES

Combinatorios

Secuenciales

Aritmética digital

PROTOCOLOS

Serial

SPI

I2C

Ethernet

PRÁCTICAS

BÁSICOS

LEDs

PWM

Motor CD

Motor PAP

INTERMEDIOS

Matriz de LEDs

Sensor ultrasónico

Display LCD

Display TFT

Display OLED

AVANZADOS

Interfaz VGA

Interfaz HDMI

Interfaz PS2

Interfaz SD