Sunteți pe pagina 1din 34

VHDL

CONCEPTOS GENERALES

HISTORIA DE VHDL
Nace

a partir de un proyecto del


gobierno americano denominado
Circuitos Integrados de Muy Alta
Velocidad (VHSIC).

Durante

el proyecto quedo clara la


necesidad de un Lenguaje para
Descripcin de Hardware (HDL) estndar.

VHDL

fue reconocido como un HDL


estndar por la IEEE y en 1987 se
denomino Standard 1076.

QU ES VHDL?
Lenguaje

de descripcin y modelado de

hardware
Su propsito inicial era solo el
modelado y simulacin lgica, dirigida
por eventos de sistemas digitales.
Actualmente se lo utiliza tambin para
la sntesis automtica de circuitos.
Diseado para describir (de forma tal
que los humanos puedan leer y
entender) la funcionalidad y la
organizacin de sistemas hardware.

PRINCIPALES USOS DE
VHDL
Modelado

Desarrollo de un modelo para simulacin de un circuito o sistema


previamente implementado cuyo comportamiento, por tanto, se
conoce.

El objetivo del modelado es la simulacin.

Sntesis

Proceso automtico en el cual se parte de una especificacin de


entrada

Cdigo vhdl/verilog

Alto nivel de abstraccin

Un herramienta de software transforma la entrada a una


implementacin circuital detallada,

Netlist parecido a un circuito de spice por texto.

Bajo nivel de abstraccin.

VENTAJAS DEL USO DE


VHDL

Permite disear, modelar, y comprobar


un sistema desde un alto nivel de
abstraccin.

Es posible crear circuitos sintetizables,


siguiendo algunas pocas reglas.
Al ser un lenguaje estndar permite
minimizar errores de comunicacin y
problemas de compatibilidad.

Modularidad: VHDL permite dividir un


diseo hardware y su descripcin VHDL
en unidades mas pequeas.

NIVELES DE
ABSTRACCIN
Estructural
Una

forma de describir un modulo


es decir cuales son los submdulos que lo componen.

Los

sub-mdulos se conectan
entre si por medio de seales.

Cada

sub-mdulo puede ser o


bien una primitiva bsica u otra
descripcin estructural.

Descripcin Estructural Full Adder


ARCHITECTURE one OF fullAdder IS
COMPONENT xor2
PORT(e1,e2: IN bit; y OUT bit);
END COMPONENT;
COMPONENT and2
PORT(e1,e2: IN bit; y OUT bit);
END COMPONENT;
COMPONENT or2
PORT(e1,e2: IN bit; y OUT bit);
END COMPONENT;
SIGNAL s1, c1, c2: bit;
BEGIN
U0: xor2 PORT MAP(e1=>A,e2=>B,y=>s1);
U1: xor2 PORT MAP(e1=>s1,e2=>CIN,y=>S);
U2: and2 PORT MAP(e1=>A,e2=>B,y=>c1);
U3: and2 PORT MAP(e1=>CIN,e2=>s1,y=>c2);
U4: or2 PORT MAP(e1=>c1,e2=>c2,y=>COUT);
END one;

NIVELES DE
ABSTRACCIN
RTL
Transferencia

a Nivel de Registros.

Es

un nivel de abstraccin intermedio


entre una descripcin estructural y
comportamental.

Permite

la paralelizacin de
instrucciones.

Este

tipo de descripcin se encuentra


mas cercana a una descripcin
estructural.

Descripcin RTL Full


Adder
ARCHITECTURE one OF fullAdder
IS
SIGNAL s1, c1, c2: bit;
BEGIN
s1 <= A xor2 B;
S <= s1 xor CIN;
c1 <= A and B;
c2 <= s1 and CIN;
COUT <= c1 or c2;
END one;

NIVELES DE
ABSTRACCIN
Modelo

Temporal de Eventos Discretos

Una

vez la estructura y el
comportamiento de un mdulo han sido
especificados, es posible simular el
mdulo ejecutando su descripcin
comportamental.

Esto

se hace por medio de la simulacin


del paso del tiempo en pasos discretos.

VHDL

permite crear los test-bench para


simulacin.

EJECUCIN SERIE

Es conocida la facilidad algortmica de


una ejecucin serie, y es por esto por lo
que resulta tan sencillo programar un
sistema monoprocesador.

En algunos casos la ejecucin serie


resulta poco efectiva puesto que no
permite explotar el paralelismo que una
arquitectura puede proveer.

Ejecucin Serie Alto nivel Abstraccin


Pensamiento Humano

EJECUCIN
CONCURRENTE
En

la ejecucin concurrente por su


parte las sentencias, mas que
mandatos o comandos, indican
conexiones o leyes que se
cumplen, por tanto, es como si se
ejecutaran continuamente.
La ejecucin concurrente permite
modelar el paralelismo.

Concurrente Bajo nivel


Abstrac. Hardware

Ej.

PARALELISMO
El

nivel de paralelismo es manejable en


hardware.

Se

puede tener arquitecturas totalmente


paralelas y otras semi-paralelas.

Entre

mas nivel de paralelismo se tenga,


el costo y tamao del hardware
incrementa.

Se

debe tener un compromiso entre


capacidad de procesamiento y
complejidad en hardware.

EJEMPLO PARALELISMO

Y= A1xB1+A2xB2++ANxBN
A1
B1
A2
B2
AN
BN

Implementacin
Serie

X1

X2

Xn

AN
Xn
BN

Implementacin
Paralela

SINCRONIZACIN

Al disear hardware, la sincronizacin de los mdulos es uno


de los puntos ms crticos.

Cada mdulo debe procesar los datos en el momento


indicado.

Se utiliza mdulos de procesamiento acompaados de una


unidad de control.

Proceso 1
Unidad
de
Control

Proceso 2
Proceso N

VHDL
SINTAXIS DEL LENGUAJE

CONSTANTES, VARIABLES Y SEALES

Una constante es un elemento que se


inicializa a un determinado valor y no
puede ser cambiado una vez inicializado,
conservando para siempre su valor.

Declaracin de una constante

constant <name>: <type> := <value>;

Ejemplo :

constant N : INTEGER range 0 to 31 := 25;

constant val : STD_LOGIC_VECTOR(3 downto 0) :=


1010;

CONSTANTES, VARIABLES Y SEALES

Las

variables solo tienen sentido dentro de


un proceso (PROCESS) o un subprograma,
es decir, solo tienen sentido en entornos de
programacin donde las sentencias son
ejecutadas en serie. No tienen significado
fsico.
Declaracin de una variable:

variable <name>: <type> := <value>;

Ejemplo:

variable I : INTEGER range 0 to 56 := 25;

variable val : STD_LOGIC_VECTOR(5 downto 0) := 111010;

CONSTANTES, VARIABLES Y SEALES

Las seales tienen un significado fsico


inmediato y es el de representar conexiones
reales en el circuito.

La seales pueden ser usadas en cualquier


parte del programa o descripcin y son
declaradas siempre en la parte de arquitectura
antes del BEGIN.

Hay tres tipos especiales de seal

Normal : conectan un puerto de salida con uno o


mas puertos de entrada.

Bus: conectan mltiples puertos I/O

Registro: almacenan datos.

CONSTANTES, VARIABLES Y SEALES

Declaracin de una seal

signal <name>: <type> := <value>;

Ejemplos

signal contador : INTEGER := 0;

signal product: STD_LOGIC_VECTOR(7 downto


0) := 00000000

CONSTANTES, VARIABLES Y SEALES

Las variables solo tienen sentido dentro de un


proceso o subprograma. Ejecucin serie.

Las seales se declaran dentro de


arquitecturas, paquetes o bloques
concurrentes. Ejecucin paralela.

Las constantes se pueden declarar en


arquitecturas y procesos.

La variables son elementos abstractos con poco


significado fsico.

CONSTANTES, VARIABLES Y SEALES

Las seales pueden representar


interconexiones, registros, etc. Implicacin
fsica.

Los puertos de entrada se consideran como


seales pero con ciertas restricciones:

A una entrada no se le pueden asignar valores.

Una salida no puede ser asignada a otras salidas


o seales.

<=
Para asignar variables se utiliza :=
Para asignar seales se utiliza

TIPOS DE DATOS

Lgicos

STD_LOGIC

--'U','X','0','1','Z','W','L','H','-'

STD_LOGIC_VECTOR

--Natural Range of STD_LOGIC

BOOLEAN

--True or False

Escalares

INTEGER

--32 or 64 bits

NATURAL

--Integers >= 0

POSITIVE

--Integers > 0

REAL

--Floating-point

TIME

--hr, min, sec, ms, us, ns, ps,

fs

OPERADORES
Aritmticos:
Suma

Resta

Multiplicacin
Divisin

Potenciacin
Valor

**

Absoluto abs()

OPERADORES

Desplazamiento:

Desplazamiento lgico a la izquierda sll.

<signed_sig> sll <shift_amount_in_integer>;

Desplazamiento lgico a la derecha srl.

Desplazamiento aritmtico a la izquierda sla.

Desplazamiento aritmtico a la derecha sra.

Rotacin a la izquierda rol.

Rotacin a la derecha ror.

OPERADORES

Relacionales:

Lgicos:

MENOR QUE <

AND,

MAYOR QUE >

OR,

MENOR O IGUAL QUE


<=

NOT,

NAND,

NOR

XOR

MAYOR O IGUAL QUE


>=

IGUAL QUE =

DIFERENTE QUE /=

Otros:

Concatenacin &

ELEMENTOS
SINTACTICOS
Comentarios:
doble

guin --

Identificadores:
no

sensible a maysculas y minsculas.

Nmeros:
por

defecto en base 10.

otras

bases as:

Binario
Hexa

2#1101110#

6#C9#

ELEMENTOS SINTACTICOS
Caracteres
entre

comillas simples H, o, l, a

Cadenas
entre

comillas dobles Hola Mundo

Bits
Entre

comillas simples 0, 1, Z

Cadenas
Binario
Octal

de bits:

B"11101001 o "11101001"

O"126"

Hexadecimal

X"FE"

ENTIDAD

La entidad es la parte del programa que


define la interfaz del modulo.

Estructura sintctica que posibilita


realizar diseos jerrquicos en VHDL.

Define las entradas y salidas del circuito.

Descripcin estructural utilizando


componentes.

Mdulos parametrizables utilizando


genricos

Facilita disear mdulos que se adaptan


a cualquier nmero de bits en sus
entradas

SINTAXIS ENTIDAD

entity <entity_name> is
generic ( <generic_name> : <type> := <value>;
<other generics>...
);
port ( <port_name> : <mode> <type>;
<other ports>...
);
end <entity_name>;

EJEMPLO ENTIDAD

Definamos la ENTIDAD para un sumador:

entity sumador is
generic ( N : INTEGER := 4
);
port ( A : in STD_LOGIC_VECTOR ( N-1 downto 0);
B : in STD_LOGIC_VECTOR ( N-1 downto 0);
C : out STD_LOGIC_VECTOR ( N-1 downto 0);
);
end sumador;

ARQUITECTURA

Define el funcionamiento del modulo definido


en la entidad.

Puede utilizar cualquier tipo de descripcin o una


combinacin de ellas

Una arquitectura siempre esta asociada a una


entidad.
Una entidad puede tener varias arquitecturas,

En el momento de la simulacin o la sntesis se


especifica la arquitectura concreta se quiere
simular o sintetizar.

SINTAXIS ARQUITECTURA
architecture <arch_name> of <entity_name> is
-- declarative_items (signal declarations,
-- component declarations, etc.)
begin
-- architecture body
end <arch_name>;

EJEMPLO ARQUITECTURA
entity FA is
Port ( A : IN STD_LOGIC;
B : IN STD_LOGIC;
Cin : IN STD_LOGIC;
S : OUT STD_LOGIC;
Cout : OUT STD_LOGIC);
end FA;

architecture uno of FA
signal x : STD_LOGIC;
signal c0: STD_LOGIC;
signal c1: STD_LOGIC;
begin
x <= A xor B;
S <= Cin xor x;
c0 <= A and B;
c1 <= Cin and xor;
Cout <= c0 or c1;
end uno;

c1
c0

S-ar putea să vă placă și