Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I. Objetivo
II. Introduccin
III. Clasificacin de la Lgica Digital
IV. Diseo electrnico con Herramientas
CAD
V. Sintaxis del lenguaje VHDL
VI. Diseo con VHDL
2
Proporcionar una guia en las metodologas
para el diseo de circuitos digitales
utilizando el lenguaje VHDL
3
Introduccin
1. Qu es VHDL
2. VHDL y Diseo Digital
3. Metodologas de diseo
4. Niveles de abstraccin y diseo digital
5
Por qu surge VHDL ?
Necesidad de compartir informacin entre
integrantes y equipos de un proyecto
Necesidad de reutilizar mdulos que ya han
sido desarrollados, depurados y probados
Necesidad de tener un lenguaje portable a
diversos fabricantes
Tener un lenguaje estructurado para modelar,
simular y sintetizar circuitos digitales
6
Qu es VHDL
VHDL es un lenguaje de descripcin de
hardware estandarizado por la IEEE
(1076-93)
VHDL VHSIC Hardware Description
Language
VHSIC Very High Speed Integrated
Circuit
7
Otros lenguajes de descripcin Hardware
ABEL
CUPL
PALASM
Verilog (Cadence)
AHDL (Altera Hardware Description Language)
Handel-C (Celoxica)
System-C (Synopsys)
8
Ventajas de VHDL para el diseo digital
9
Ventajas de VHDL para el diseo digital
10
Metodologas de realizacin de un proyecto
Ascendente (Bottom-up)
Se comienza con componentes simples que se
van ensamblando y encapsulando en
componentes cada vez mas complejos hasta
llegar al sistema
Descendente (Top-down)
Se especifica y prueba el sistema con
herramientas de alto nivel de abstraccin y
posteriormente se van definiendo e
implementando los niveles de inferiores hasta
llegar a nivel componente
11
Espacio de diseo
Tiempo
Superficie Costo
Niveles
> 1.000.000 Trts Elctrico
> 500.000 bits Bits (disp. prog. FPGA)
10.000.000 rect. Geomtrico (Cls)
16
Clasificacin de la lgica digital
Logic
Standard
Logic ASIC
Programmable
Logic Devices
Gate Cell-Based Full Custom
(PLDs) Arrays ICs ICs
SPLDs
(PALs) CPLDs FPGAs
17
SPLD Simple Programmable Logic Device
18
PLD Arreglo AND-OR
Global 3 Global 2 or 4
Clocks Tri-State
Macrocell 1 I/O
AND Product-
Array Term
Allocator
36
From
FastCONNECT
Macrocell 18 I/O
To
FastCONNECT
19
CPLD -Complex Programmable Logic Device
20
CPLD - Complex Programmable Logic Device
3
In-System
JTAG Programming Controller
JTAG Port Controller
I/O Function
Block 1
I/O
Function
I/O Block 2
I/O
Blocks FastCONNECT
I/O Switch Matrix
Global Function
Block 3
Clocks 3
Global
Set/Reset 1
Function
Global Block 4
Tri-States
2 or 4
21
FPGA-Field Programmable Gate Array
H1 DIN S/R EC
Estructura similar a un ASIC
S/R
G4
Control
Buses de interconexin 3-estados
DIN
G
G3
SD
G2 Func.
F'
G' D Q
Reconfigurable mltiples veces
Gen. H'
G1
EC
RD
1
H G'
Y
Func. H'
S/R
F3 F DIN
Func. SD
F2 Gen.
F'
G' D Q
D Q
Output
Buffer
Pad
F1 H'
Input
EC Buffer
Q D
RD Delay
1
H'
F'
X
K
I/O Blocks
(IOBs)
Programmable
Interconnect
23
23
CLB de un FPGA (Xilinx)
C1 C2 C3 C4
H1 DIN S/R EC
S/R
Control
G4 DIN
SD
G3 G F'
G' D Q YQ
G2 Func. H'
Gen.
G1 EC
RD
1
H G'
H'
Y
Func S/R
.Gen.
Control
F4
F3 F DIN
SD
Func. F'
D Q XQ
F2 Gen. G'
H'
F1
EC
RD
1
H'
F'
X
K
24
IOB de un FPGA (Xilinx)
25
Unidad de interconexiones (Xilinx)
CLB CLB
Switch Switch
Matrix Matrix
CLB CLB
26
Interior del FPGA
Programmable Interconnect Points, PIPs (White)
Switch Routed Wires (Blue)
Matrix
Direct
Interconnect
(Green)
CLB
(Red)
Long Lines
(Purple)
27
Porgramacin de FPGAs 27
ASIC - Application Specific Integrated Circuit
29
Plataforma de desarrollo con FPGA
Computadora PC
Herramienta CAD
(Active, Foundation)
Tarjetas de desarrollo
(xess.com)
Tarjetas PCI
(alphadata.co.uk)
Sistemas Multimdulos
y sistemas dedicados
30
Flujo de diseo
Especificacin del diseo esquemtico,
VHDL, y/o Verilog. Hay varios fabricantes
1 de herramientas como Synopsys, Aldec
(Xilinx Foundation), Mentor, Cadence,
Viewlogic, y otros
Programacin se programa el
dispositivo FPGA y se valida el diseo 3
Se puede reprogramar tantas veces
como sea necesario para depurar
XC4000 XC4000 XC4000
31
Principales fabricantes de FPGAs
32
IV. Diseo Electrnico con
Herramientas CAD
1. Evolucin de herramientas
2. Flujo de diseo y compilacin con VHDL
34
1. Evolucin de herramientas
35
Sntesis digital
A partir de una descripcin VHDL, el
compilador obtiene una descripcin de
compuertas del circuito
La herramienta de ruteo adapta la
descripcin de compuertas a los recursos
particulares del FPGA
Se pueden realizar simulaciones antes de
la programacin fsica para comprobar que
el circuito conserva la funcionalidad
original
36
2. Flujo de diseo y compilacin VHDL
VHDL
Description
Synopsys VHDL
compiler
VHDL
Driver Synopsys Design
compiler
VHDL Gate-
Level Description
BIT VHDL
EDIF SDF
JDEC Verilog
38
Flujo de diseo de Xilinx
39
V. Sintaxis de VHDL
1. Componentes bsicos de VHDL
2. Elementos primitivos
3. Declaraciones secuenciales
4. Seales y asignacin de seales
5. Declaraciones concurrentes
41
1. Componentes bsicos de VHDL
Biblioteca (Library)
Paquete (Package)
Entidad (Entity)
Arquitectura (Architecture)
Configuracin
42
1. Componentes bsicos de VHDL
Entity Entity
Architecture Architecture
Configuration Configuration
Package Compilador VHDL Package
43
Modelo VHDL
Todo modelo se
Modelo VHDL
especifica por una
Entidad ENTIDAD o interfaz
del componente
Arquitectura modelado
ARQUITECTURA o
descripcin del
comportamiento de
un componente
Entorno
44
Entidad (Entity)
Define un nuevo componente, sus interconexiones de E/S
y las declaraciones relacionadas.
La definicin de una entidad no incluye la arquitectura del
componente, y se puede utilizar sin conocerla.
Sintaxis:
45
Entidad (Entity)
Una entidad especifca las conexiones externas de un
componente
entity COMPARA is Nombre del puerto, direccin
port (A, B: in bit; y tipo de datos
C: out bit);
end COMPARA;
bit
A bit
COMPARA C
B bit
46
Declaracin de Puertos
Define la interface del objeto con el
mundo exterior
La declaracin incluye
Nombre-Algn identificador que no sea una
palabra reservada
Modo-In, Out, Inout, Buffer
Tipo de dato-Algn tipo de los predefinidos
Ejemplo:
entity test is
port (name: mode data_type);
end test;
47
a3
b3
a2
b2 F
a1
b1
a0
b0
entity circuito is
port (a3, b3, a2, b2, a1, b1, a0, b0: in bit;
F: out bit);
end circuito;
48
a3
b3
a2
b2 F
a1
b1
a0
b0
entity circuito is
port (a, b: in bit_vector (3 downto 0);
F: out bit);
end circuito;
49
Arquitectura (Architecture)
Especifica el comportamiento del componente, sus
interconexiones y componentes internos. Tiene que
compilarse para hacerlo funcional. La arquitectura puede
ser modelada con diferentes niveles de abstraccin.
Las arquitecturas en VHDL se categorizan dependiendo
del estilo en:
Funcional (Behavioral). Define un proceso descrito
secuencialmente
Flujo de datos (Dataflow). Incluye estructura y
comportamiento
Estructural (Structural). Define interconexiones y
componentes
50
Una entidad puede tener varias arquitecturas, solo una esta
activa.
Entity
xyz
Ejemplo:
52
Arquitectura Flujo de Datos (Dataflow)
Ejemplo:
architecture ARQ2 of COMPARA is
begin
C <= not (A xor B) after 1 ns;
end ARQ2;
Otro ejemplo:
entity XR2 is
generic (m: time := 1.0 ns); -- Tiempo de retardo
port (X,Y: in bit; Z: out bit);
end XR2;
53
Arquitectura Estructural (Structural)
Ejemplo:
entity COMPARA is -- Entidad
port (A,B: in bit; C: out bit);
end COMPARA
architecture STRUCT of COMPARA is
signal I: bit; -- Declaracin de componentes
component XR2 port (x,y: in bit; z: out bit); end component;
component INV port (x: in bit; z: out bit); end component;
begin
U0: XR2 port map (A,B,I); -- Componentes
U1: INV port map (I,C); -- utilizados
end STRUCT;
U0 U1
A x I x INV z C
XR2 z
B y
54
Jerarqua de diseo
entity ALU is
port ( opcode:
CPU end ALU;
55
2. Elementos primitivos
VHDL es un lenguaje fuertemente
declarativo
56
Escalares y cadenas de caracteres
57
Character String
'A' "error en sincronia -- Cadena de dimensin 18
'b'
"z" -- Cadena de dimensin 1
x'
'' string'("10")
'''
Bit Bit_vector
'0 "0101_1001"
'1 x"00AF"
bit'('1') bit_vector'("101")
58
Lgica estndar IEEE
Std_Logic
U no inicializado
X forzando valor desconocido
0 forzando 0
1 forzando 1
Z alta impedancia - tres estados
W valor debil desconocido
L 0 dbil
H 1 dbil
- sin importancia (dont care)
Std_Logic_Vector
101Z"
"UUUUU"
signed'("1011") -- Menos 5
59
Boolean Real
-2.0
true
+3.76
false
45.0
TRUE -1.0E + 38
FALSE VHDL define por lo menos seis digitos
decimales de precisin.
El rango de los nmeros reales es de
-1.0E-38 a 1.0E+38
index_constraint
{low_val to high_val | high_val downto low_val}
Ejemplo:
entity COMPARA_DIGITO is
port (B,A: in integer range 0 to 9 := 0; Restriccin del rango
C: out boolean);
end COMPARA_DIGITO;
Ejemplos:
62
Declaracin de seales
Sintxis:
Escalar: signal name(s):=type [range_contraint][:=expression];
Vectorial: signal name(s):
array_type[index_constraint][:=expression];
Entidad: port (name(s): direction type
[range_constraint][:=expression]);
Ejemplos:
variable INDEX:INTEGER range 1 to 50;
variable CYCLE_TIME:TIME range 10 ns to 50 ns := 10ns;
variable MEMORY:BIT_VECTOR (0 to 7); -- Restriccin del rango
variable x,y: INTEGER; -- valor inicial -2,147,483,647
64
Conversin de tipos
Ejemplos:
integer (4.0) tipo entero
real (5) tipo real
integer * time tipo tiempo
nanos + picos tipo tiempo
nanos/picos tipo entero
Expresiones
Operadores por orden de precedencia (del ms bajo al ms alto)
Operadores lgicos and, or, nand
Operadores relacionales nor, xor, =, /=, <, <=, >, >=
Operador de concatenacin &
Operadores aritmticos +, -, *, /, mod, rem, **, abs
Operador lgico not
65
Mayor
Precedencia de operadores
** ABS NOT
* / MOD REM
+ (signo) - (signo)
+ - &
= /= < <= > <=
Menor
66
3.. Declaraciones secuenciales
Declaracin de procesos
Asignacin de variables
Asignacin secuencial de seales
IF
CASE
LOOP
NEXT
EXIT
WAIT
ASSERT
Subprogramas (funciones y procedimientos)
Functions
Procedures
67
Declaracin de procesos
bus a 7
bus b 2
bus c 5
68
Entity low_high is
port (a, b, c: in integer);
end low_high;
architecture behavior of low_high is
begin
L: process
variable low: integer := 0;
begin
wait on a, b, c;
if a < b then low := a; else low := b; end if;
if c < low then low := c; end if;
end process;
H: process
variable high: integer := 0;
begin
wait on a, b, c;
if a > b then high := a; else high := b; end if;
if c > high then high := c; end if;
end process;
end behavior;
69
Declaracin de procesos
Sintxis:
[label:]
process [(sensitivity_list)]
[subprogram]
[type]
[constant]
[variable]
[other declarations]
begin
sequential_statements
end process [label];
70
Asignacin de variables
Sintxis:
target := expression;
Ejemplos:
ix := 'a'; Caracter
a := 2.7; Asignacin de un valor real
71
IF
Sintxis:
if condition then sequential_statements
{elsif condition then sequential_statements}
[else sequential_statements]
end if;
Ejemplos:
73
LOOP
Sintxis:
[label:][while condition | for loop_specification] loop
sequential_statements
end loop [label];
El comando Loop es un declaracin secuencial en un proceso.
Puede tener una etiqueta que es util en ciclos interlazados. Hay
dos tipos de ciclos LOOP: el ciclo FOR-LOOP y el ciclo WHILE-
LOOP.
Ejemplos:
L: for i in 1 to 10 loop
s1; s2; ... sn;
end loop;
i:=1;
M: while (i<11) loop
s1; s2; ... sn;
i := i+1;
end loop;
74
NEXT
Sintxis:
75
NEXT y WHILE
Cuando hay varios ciclos interlazados se puede dar
una etiqueta a cada uno de ellos. El comando Next
puede hacer referencia a un ciclo en particular.
Por ejemplo:
76
EXIT
El comando Exit completa la ejecucin de un ciclo Loop. La
terminacin del ciclo puede ser condicional si se incluye una
condicin.
Sintxis:
exit [label][when condition]
Por ejemplo:
77
WAIT
Sintxis:
Ejemplos:
Wait on a,b;
78
ASSERT
Sintxis:
assert condition [report string_expression][severity
expression];
Ejemplo:
79