Está en la página 1de 18

Using VHDL for Synthesis of

Digital System
MSc Heiner Castro
Por qu usar Hardware
Description Language -HDL-?
La captura en esquemtico de sistemas
digitales se hace tediosa para diseos
complejos y extensos.
Con un HDL se reduce tiempo y costo.
Permite una exploracin rpida de
diversas alternativas.
Reuso del diseo.
VHDL: Very High Speed Integrated Circuit
Hardware Description Language
Es un lenguaje de descripcin y modelado de
sistemas digitales.
Es una herramienta estndar e independiente.
Standard 1076 y 1164 de IEEE.
La descripcin se realiza de una forma
independiente de la tecnologa a emplear.
Se basa en un alto nivel en la sintaxis (no en la
abstraccin).
Soportado por numerosas herramientas CAD.
VHDL: Historia y Evolucin
1980: El departamento de defensa de Estados
Unidos inicia el proyecto.
1985: Versin 7.2 en dominio pblico.
1987: Estndar IEEE 1076 (VHDL 87).
1993: Nueva versin del estndar, VHDL 93.
2000 y 2002 Actualizacin del estndar IEEE 1076.
Cambios menores a la versin 93.
2008. Mayor compatibilidad hacia otros lenguajes
(C++) y con mayor posibilidad de diseo de alto
nivel.
Hardware Vs. Software
Software
La mayora de los lenguajes de
programacin convencionales
estn basados en un modelo de
operacin secuencial.
Los lenguajes de programacin
convencionales no pueden
describir o modelar la operacin
del hardware digital debido a que
no incluyen la nocin del tiempo
en sus sentencias.
Hardware
El hardware digital posee una
naturaleza paralela de
funcionamiento.
Las entradas, las salidas y los
circuitos mismos dependen del
tiempo.
HDLs
Todos los lenguages de
descripcin de hardware estan
definidos para modelar
operaciones paralelas o
concurrentes.
Todos los HDLs incluyen
sentencias para emular el tiempo
en las descripciones.
Elementos Sintcticos de
VHDL
Entidades
Arquitecturas
Seales
Puertos

Entity
Define la visin externa del
dispositivo, interfaz con el
entorno.
Permite realizar diseos
jerrquicos: puede ser
reutilizada por otros
diseos manteniendo
oculta la implementacin
concreta del sistema.
entity ejemplo1 is
port (C: in std_logic;
A,B: in std_logic_vector (3 downto 0);
E: out std_logic;
F: out std_logic_vector (3 downto 0));
end ejemplo1;
Ports
in
Los puertos de entrada
slo se pueden leer.
No es permitido
asignarles ninguna
conexin.
out
Las puertos de salida
pueden cambiar y es
posible asignarles
valores.
No pueden leerse. No
es vlido usarlas como
argumentos.
port: define las entradas y salidas del mdulo descrito.
inout: describe a un puerto bidireccional, el cual permite
operaciones de escritura y lectura.
Type Std_logic
Type Std_logic:
'1' : Bit 1
'0' : Bit 0
'X' : Unknown
'U' : Uninitialized
'Z' : High impedance
'L' : Driven low weakly
'H' : Driven high weakly
'W' : Weak unknown
'-' : Do not care
Type bit
'1' : bit 1
'0' : bit 0
Architecture
Sirve para definir la funcionalidad
de la entidad que representa.
Siempre est referida a una
entidad concreta.
Una misma entidad puede tener
diferentes arquitecturas.
architecture behavioral of ejemplo1 is
-- parte declarativa
begin
-- sentencias concurrentes
F <= A - not (B) + C;
E <= not ( A(3) or A(2) or A(1) or A(0) );
end behavioral;
Architecture: signals
architecture behavioral2 of ejemplo1 is
-- parte declarativa
signal X,Y : std_logic_vector (3 downto 0);
begin
F <= Y + C;
X <= not B;
E <= A(3) nor A(2) nor A(1) nor A(0);
Y <= A - X;
end behavioral2;
VHDL Operators
Highest precedence first, left to right within same precedence group,
use parenthesis to control order.
Unary operators take an operand on the right.
"result same" means the result is the same as the right operand.
Binary operators take an operand on the left and right.
Arithmetic Operators
** exponentiation, numeric ** integer, result numeric X <= Y**3;
abs absolute value, abs numeric, result numeric X <= abs (Y);
* multiplication, numeric * numeric, result numeric X <= Y*Z;
/ division, numeric / numeric, result numeric X <= Y/Z;
mod modulo, integer mod integer, result integer X <= Z mod Y;
rem remainder, integer rem integer, result integer X <= Y rem Z;
+ unary plus, + numeric, result numeric X <= +Y;
- unary minus, - numeric, result numeric X <= -Y;
+ addition, numeric + numeric, result numeric X <= Y + Z
- subtraction, numeric - numeric, result numeric X <= Y - Z

source: http://www.cs.umbc.edu/portal/help/VHDL/operator.html
VHDL Operators
Shift Operators
sll shift left logical, logical array sll integer, result same, X <= Y sll 1;
srl shift right logical, logical array srl integer, result same X <= Y srl 2;
sla shift left arithmetic, logical array sla integer, result same X <= Y sla 3;
sra shift right arithmetic, logical array sra integer, result same X <= Y sra 4;
rol rotate left, logical array rol integer, result same X <= Y rol 5;
ror rotate right, logical array ror integer, result same X <= Y ror 6;
& (1) concatenation, array or element & array or element, result array
X <= Y & Z;
Boolean Operators
= test for equality, result is boolean X = Y; F <= X = Y;
/= test for inequality, result is boolean X /= Y; F <= X /= Y;
< test for less than, result is boolean X < Y; F <= X < Y;
<= test for less than or equal, result is boolean X <= Y; F <= X <= Y;
> test for greater than, result is boolean X > Y; F <= X > Y;
>= test for greater than or equal, result is boolean X >= Y; F <= X >= Y;

(1) Precedence priority 12th


VHDL Operators
Logic Operators
not (2) complement, not logic or boolean, result same X <= not (Y);
and logical and, logical array or boolean, result is same X <= Y and Z;
or logical or, logical array or boolean, result is same X <= Y or Z;
nand logical complement of and, logical array or boolean, result is same
X <= Y nand Z;
nor logical complement of or, logical array or boolean, result is same
X <= Y nor Z;
xor logical exclusive or, logical array or boolean, result is same X <= Y xor Z;
xnor logical complement of exclusive or, logical array or boolean, result is same
X <= Y xnor Z;
(2) Precedence priority 3rd
source: http://www.cs.umbc.edu/portal/help/VHDL/operator.html
VHDL Operators
library IEEE;
use IEEE.std_logic_1164.all, IEEE.numeric_std.all;
entity nBitAdder is
generic (n: NATURAL :=8);
Port (A,B: in std_logic_vector (n-1 downto 0);
Sum: out std_logic_vector (n downto 0));
end entity nBitAdder;
Architecture behavioral of nBitAdder is
Begin
sum <= (0&A) + (0&B); --add including Carry-out
end behavioral;
Architecture: exercise
Escriba la descripcin completa (entidad y arquitectura) de un circuito
que le cambie el signo a un nmero binario con signo de 8 bits en
formato complemento a 2. En este ejercicio no puede usar sentencias
if then o when else, solamente compuertas, sumadores y restadores.
Escriba el cdigo VHDL del
circuito que se muestra en la
figura. Todos los buses son de 4
bits. No puede usar sentencias if
then o when else, solamente
compuertas, sumadores y
restadores. Cuidado que las
salidas no pueden leerse.
VHDL combinational blocks: adders
Escriba la descripcin de hardware
completa en VHDL del sumador de la
figura si A, B y Sum son buses de n
bits y los dems puertos son de 1 bit.
Desarrolle el cdigo VHDL para un sumador genrico de n bits con datos
de entrada con signo en formato complemento a 2.
Desarrolle el VHDL para un restador genrico de n bits con datos de
entrada sin signo. El resultado de la diferencia debe tener un bit de ms
donde este el prstamo. El circuito debe tener en cuenta un prstamo de
entrada.
Desarrolle el VHDL para un restador genrico de n bits con datos de
entrada con signo en formato complemento a 2.
VHDL combinational blocks examples
if a < b then
Amenor <= '1';
else Amenor <= '0';
if a = b then
Aigual <= '1';
else Aigual <= '0';
--a, b must be vectors for all comparations to take place
--Comparators
if a > b then
Amayor <= '1';
else Amayor <= '0';
--Multiplier
M <= A*B; --m, a, b must vectors, size of M = size of A + size of B.
--Adder/substractor
S <= A + B; --s, a, b must be vectors
R <= A - B; --r, a, b must be vectors, R is in Two's complement
For the next class

También podría gustarte