Documentos de Académico
Documentos de Profesional
Documentos de Cultura
VHDL permite diseñar, modelar y comprobar un sistema desde un alto nivel de abstracción
bajando hasta el nivel de definición estructural de puertas.
Los módulos creados en VHDL pueden utilizarse en diferentes diseños, lo que permite la
reutilización del código. Además, la misma descripción puede emplearse para diferentes
tecnologías sin tener que rediseñar todo el circuito.
Basado en un estándar (IEEE Std 1076-1987, IEEE Std 1076-1993) pueden usar este lenguaje
para minimizar errores de comunicación y problemas de compatibilidad.
VHDL permite diseño Top-Down, esto es, describir (modelar) el comportamiento de los
bloques de alto nivel, analizarlos (simularlos) y refinar la funcionalidad en alto nivel requerida
antes de llegar a niveles más bajos de abstracción de la implementación del diseño.
ENTITY mux IS
PORT (a: IN bit;
b: IN bit;
selec: IN bit;
salida: OUT bit) ;
END mux:
Operadores aritméticos
**(exponencial). ABSS () . * (Multiplicación). / (División). MOD (módulo). REM (resto). +
(suma y signo positivo). - (resta y signo negativo).
Operadores de desplazamiento
SLL, SRL (desplazamiento lógico a izquierda y a derecha).
SLA, SRA (desplazamiento aritmético a izquierda y derecha).
ROL, ROR (rotación a izquierda y a derecha).
Operadores relacionales
=, /= (igualdad).
<. <=, >, >= (menor mayor).
Operadores lógicos
NOT, AND, NAND, OR, NOR, XOR y en el VHDL'93 se añadió XNOR
ENTIDAD – “Entity”
EJEMPLOS
Sintaxis de una declaración VHDL.
ENTITY rom IS
ENTITY nombre IS GENERIC (tamano, ancho: positive);
PORT (enable : IN bit;
[GENERIC (lista de parámetros);)
address : IN bit vector(tamano-1 DOWNTO O);
[PORT (lista de puertos);) data: OUT bit_vector(ancho-1 DOWNTO O));
[declaraciones) END rom;
[BEGIN
sentencias) ENTITY procesador IS
GENERIC (max freq: frequency .- 30 MHz);
END [ENTITY] [nombre];
PORT (clk: IN bit;
address: OUT integer;
data: INOUT word 32;
control: OUT proc control;
ready: IN bit); -
END procesador;
LIBRARY (LIBRERÍA)
Una librería o biblioteca es un lugar al que se tiene acceso para utilizar unidades de diseño
predeterminadas por el fabricante de la herramienta.
En VHDL para sintesis, se usan librerías de fiabilidad probada como las llamadas
ieee y work así:
- ieee
std_logic_1164
std_logic_arith.all
std_logic_unsigned.all
- work
numeric_std
std_arith
gatesspkg
otra
use nombre_libreria.nombre_paquete.all;
Ejemplo: use ieee.std_logic_1164.all;
La palabra all indica que puede usar todas las definiciones almacenadas en el
paquete, en este archivo.
Paquete numeric_bit define tipos de datos binarios c0n signo o sin este.
library ieee;
use ieee.std_logic_1164.all;
entity comp is
port (X ,Y: in bit_vector (1 downto 0);
C: out bit);
end comp;
Variables. Solo deben ser declaradas dentro de los procesos, especificando el nombre y tipo.
Cambian su valor inmediatamente despues de una sentencia de asignación.
Utiliza el simbolo “:=“. La operacion entre objetos siempre deben ser del mismo tipo de objetos a ambos lados
del operador asignado.
Predefinidos.
En una libreria estandard del lenguaje.
En una libreria especifica del compilador.
port (signal-names: mode, signal-type); Se refiere a cada una de las señales de entrada y
salida, el cual equivale a un pin de un símbolo esquemático.
Out: La señal es una salida de la entidad. Note que el valor de esta señal no puede ser
leída dentro de la arquitectura de la entidad, solamente por otras entidades que la
utilicen.
Inout: La señal se puede emplear como una entrada o una salida. Este modo es
típicamente utilizado para terminales de entrada/salida de tres estados en un PLD.
Buffer: La señal es una salida de la entidad y su valor puede ser leído dentro de la
arquitectura de la entidad. Retroalimentaciones internas declaradas se comporta
como una terminal de salida.
Bit_vector (vectores de bits) conjunto de bits para cada variable de entrada o salida.
Las palabras binarias se conocen como vectores de bits, los cuales se consideran un grupo y no
como bits individuales.
Los tres vectores A, B, SUMA se definen con cuatro componentes distribuidos en orden
descendente por medio del comando:
3 downto 0 (3 hacia 0) Indica el orden de aparición en sentido descendente
0 to 3 (0 hasta 3) Indica el orden de aparición en sentido ascendente.
Una vez se ha establecido el orden en que aparecerán los bits enunciados en cada vector, no se
puede modificar a menos que se utilice el comando to.
Una arquitectura siempre está referida a una entidad concreta, por lo que no tiene
sentido hacer declaraciones de arquitectura sin especificar la entidad.
El process se une con la lista sensitiva (A,B, etc) que hace referencia a las
señales que determinan el funcionamiento del proceso.
Indica la forma en que los datos se pueden transferir de una señal a otra sin
necesidad de declaraciones secuenciales if – then - else.
NOTA: En el caso anterior se tiene una declaración secuencial donde su ejecución debe
seguir un orden para evitar la pérdida de la lógica descrita. En este caso se tiene una
declaración concurrente donde no importa el orden que se ejecuta.
Este estilo considera las ecuaciones booleanas del circuito digital de acuerdo a su organización
interna.
Si tomamos el comparador de dos bits, se puede representar por medio de compuertas lógicas
básicas y su ecuación booleana será: F = (A(1) xnor B(1)) (A(0) xnor B(0))
Este estilo considera las ecuaciones booleanas del circuito digital de acuerdo a su
organización interna.
F = A or B
Para la compuerta OR
La salida de cada uno de los bloques se maneja como una señal, las cuales se declaran
dentro de la arquitectura y no en la entidad, debido a que no representan a una terminal
(pin) y solo se utilizan para conectar bloques de manera interna a la entidad.
component component-name
port (signal-name : mode signal-type ;
signal-name : mode signal-type ;
…………
signal-name : mode signal-type) ;
end component ;
Las palabras clave port map introducen una lista que asocia los puertos de la entidad
nombrada con señales en la arquitectura actual. La lista puede escribirse en dos estilos
diferentes:
Operadores Lógicos.
Los operadores lógicos más utilizados son: AND, OR, NAND, NOR, XOR,
XNOR y NOT.