Anda di halaman 1dari 32

Una introduccin a VHDL

Miguel Melgarejo

Facultad de Ingeniera
Universidad Distrital Francisco Jos de Caldas
Bogot DC, Colombia




Este documento se entrega bajo una licencia GPL , GNU.
Contenido
Propiedades de VHDL
Niveles de descripcin
Un primer ejemplo: caso del multiplexor
Reutilizacin de componentes
Simulacin



Propiedades de VHDL
Qu es un lenguaje de descripcin de
hardware?
Es un conj unto de sentenci as cuya
semntica encierra la descripcin de un
circuito anlogo, digital o mixto.




Lenguaje Circuitos que se
pueden modelar
Observaciones
VHDL Digitales Simulacin y
construccin
VHDL AMS Analgicos Simulacin
Verilog Digitales Simulacin y
construccin
SystemC Digitales Simulacin
Ventajas de modelar con VHDL
Alto nivel de abstraccin.
Portabilidad

Reduccin de costo en las herramientas
de diseo.

Lenguajes de descripcin de hardware
Hoy en da el estndar ms popular para
especificacin de circuitos digitales es VHDL.

VHDL es la sigla de Very high speed integrated
circuit Hardware Description Language.

Sin embargo, se predice que en un mediano
plazo VHDL ser desplazado por SystemC.




Tipos de uso comn en VHDL
En la mayora de lenguajes de descripcin de hardware se
identifican dos tipos : escalares y vectoriales.
Los tipos escalares representan variables booleanas (1,0) o
variables fsicas ( 1,0,Z,X entre otros)
Los tipos vectoriales representan conjuntos de tipos escalares.

Ejemplos en VHDL

Escalares
1. BIT: representa variables booleanas
2. STD_LOGIC : representa variables fsicas

Vectoriales
1. BIT_VECTOR: representa un conjunto de BITs (n-tuplas)
2. STD_LOGIC_VECTOR : representa un conjunto de STD_LOGICs
3. INTEGER: representa valores enteros positivos
4. UNSIGNED : modela un conjunto de variables booleanas que
representan una cantidad en representacin binario natural
5. SIGNED: modela un conjunto de variables booleanas que representa
una cantidad en representacin binario complemento a dos

Seales en VHDL

Una seal modela:

1. Un puerto de entrada, salida o bidireccionales.
2. Un nodo

Ejemplo en VHDL
Signal enable : std_logic modela un nodo del tipo STD_LOGIC
Signal mux_out : std_logic_vector ( 3 downto 0) modela un
conjunto de cuatro lneas STD_LOGIC
Signal ALU_out : signed ( 3 downto 0 ) modela un conjunto de
cuatr o lneas que representan un valor en representacin
complemento a dos.
Operaciones tpicas en VHDL
Lgicas : and , or , xor ,nand , nor ,xnor , nor
VHDL: Operan sobre tipo bit y std_logic;

Matemticas : + , -
VHDL: Operan sobre integer ,signed y unsigned.
* , /
VHDL: Operan sobre integer cuando es potencia de dos.
Comparacin : = , /= , < , <= , > , >=
VHDL: Operan sobre integer , signed y unsigned.
Conexin : &
VHDL: Opera sobre std_logic.
Niveles de descripcin
Niveles de descripcin
Comportamental
Describe el comportamiento del sistema.

Funcional
Describe las funciones que representan al sistema

Estructural
Describe el sistema en trminos de los componentes que
lo conforman y sus interconexiones.
Descripcin en VHDL
Estructura de una descripcin.

Bibliotecas : recursos , funciones y operaciones.

Entidad : Definicin de puertos ( entradas y
salidas ).

Arquitectura : procesos , interacciones y seales
internas.

Estructura de una descripcin VHDL
Entity compuerta_nand is
port ( a : in std_logic;
b : in std_logic;
c : out std_logic );
End compuerta_nand;
?
a
b
c
VHDL: Arquitectura comportamental
Architecture comportamental of compuerta_nand is
begin
c <= 0 when a =1 and b=1 else 1;
end funcional;

Es una arquitectura de muy alto nivel , en una sola sentencia se
describe todo el funcionamiento del circuito.
NAND
a
b
c
VHDL: Arquitectura funcional
Architecture funcional of compuerta_nand is
signal x : std_logic;
begin
x <= a and b;
c <= not x;
end funcional;
Esta es una descripcin a un nivel ms bajo , se especifican las
operaciones que dan origen a la compuerta nand.

AND NOT
a
b
c
x
VHDL : Arquitectura estructural
Architecture estructural of compuerta_nand is

component cand is
port ( q1,q2 : in std_logic; q3 : out std_logic );
end component;

component cnot is
port ( p1 : in std_logic; p2: out std_logic);
end component;

signal x : std_logic;

begin

c1 : cand port map ( q1 => a , q2 =>b , q3 => x );

c2 :cnot port map ( p1 => x , p2 => c ),

end estructural;
CAND CNOT
a
b
c
x
Un primer ejemplo :
caso mutliplexor
VHDL para circuitos combinacionales
VHDL ofrece diferentes sentencias que
pueden ser empleadas para especificar
circuitos combinacionales.
Las sentencias son de naturaleza
concurrente ( operan en paralelo)
Las sentencias pueden ser de seleccin,
condicionales y generadoras.
Un mismo circuito se puede especificar de
diferentes maneras.
Implementacin de funciones
booleanas
Library ieee;
Use ieee.std_logic_1164.all

Entity mux2to1 is
port ( I1,I2,s : in std_logic;
f : out std_logic);
End mux2to1;
AND
AND
OR
NOT
I
1

I
2

S
f
I
1

I
2

s
f

Architecture funcional of mux2to1 is
Signal x1,x2,x3 : std_logic;
Begin
x1 <= not s;
x2 <= s and I2;
x3 <= x1 and I1;
f <= x2 or x3 ;
End Behavioral;
Cada sentencia representa un circuito.
Todos los circuitos operan paralelamente,
Es decir al mismo tiempo
x1
x2
x3
Multiplexores
Seleccin de seales
binarias.
El multiplexor bsico
tiene dos entradas (I
0
e
I
1
) , una salida f y una
seal de seleccin S.


S f
0 I
1

1 I
2

I
1
I
2

f
S
AND
AND
OR
NOT
I
1

I
2

S
f
Especificacin VHDL del
multiplexor bsico
Library ieee;
Use ieee.std_logic_1164.all

Entity mux2to1 is
port ( I1,I2,s : in std_logic;
f : out std_logic);
End mux2to1;


S f
0 I
1

1 I
2

I
1
I
2

f
S

Architecture behavioral of mux2to1 is
Begin
with s Select
f <= I1 when 0,
I2 when others;
End Behavioral;
Otras formas de especificar multiplexores
Sentencias condicionales de
asignacin.

Architecture BHV of mux2to1 is
begin
f <= I
0
when s = 0 else I
1
;

End BHV;

S f
0 I
0

1 I
1

Reutilizacin de componentes
Reutilizacin de componentes
Un componente se puede utilizar cuantas
veces sea necesario.

Todo componente que se vaya a reutilizar
debe ser declarado en una biblioteca de
componentes (lonchera).
Hay una nica biblioteca componentes por
proyecto.

Reutilizacin de componentes
Ejemplo
Se construir un multiplexor 4:1 empleando multiplexores 2:1 como
Los presentados en las lminas anteriores.
Library ieee;
Use ieee.std_logic_1164.all

Entity mux2to1 is
port ( I1,I2,s : in std_logic;
f : out std_logic);
End mux2to1;

Architecture BHV of mux2to1 is
begin
f <= I
0
when s = 0 else I
1
;

End BHV;
Mux2to1.vhd


Se crea la especificacin
VHDL del componente.

Reutilizacin de componentes
Library ieee;
Use ieee.std_logic_1164.all;

Package mux2to1_pack is
component mux2to1
port( I
1
,I
2
: in std_logic;
s : in std_logic;
f :out std_logic);
End component;
End mux2to1_pack;
I
1
I
2

f
S
Se declara la biblioteca de componentes (lonchera)
Mux2to1_pack.vhd
Reutilizacin por medio
de una descripcin estructural
Library ieee;
Use ieee.std_logic_1164.all;
Library work;
Use work.mux2to1_pack.all;

Entity mux4to1 is
port ( D : in std_logic_vector ( 3 downto 0);
S : in std_logic_vector( 1 downto 0);
F : out std_logic);
End mux4to1;



S
0

S
1

D
0
D
1
D
2
D
3

Reutilizacin por medio
de una descripcin estructural
Architecture structure of mux4to1 is

signal q: std_logic_vector( 1 downto 0);

Begin

Mux1 : mux2to1 port map
( i
1
=> D(0), I
2
=> D(1), S => S(0), f => q(0));

Mux2 : mux2to1 port map
( i
1
=> D(2), I
2
=> D(3), S => S(0), f => q(1));

Mux3 : mux2to1 port map
( i
1
=> q(1), I
2
=> q(0), S => S(1), f => F);


End structure;



mux2
S
0
mux1
mux3
S
1

D
0
D
1
D
2
D
3

q(0)
q(1)
F
Simulacin
Simulacin
Una primera aplicacin de los lenguajes de
descripcin de hardware es la simulacin de
circuitos/sistemas digitales.

La simulacin de las especificaciones HDL
permite validar la funcionalidad del circuito.

La simulacin igualmente ayuda a detectar
posibles fallas en una etapa temprana de
diseo. Esto ahorra costos significativamente.
Simulacin
Ventana tpica de
Simulador
Resultado de
la simulacin
Referencias
Esta leccin est basada en las obras de
referencia:

Brown S., Fundamentos de Lgica digital
con diseo VHDL, McGraw Gil, 2006
Actel Co, Actel HDL coding style guide,
2000