Documente Academic
Documente Profesional
Documente Cultură
R1
4k
R4
1.6k
INT1
A
Q1
PN2222
V1 = 5V
V2 = 0V
TD = 0.1u
TR = 0.15u
TF = 0.15u
PW = 6u
PER = 13u
V2
R3
130
Q3
PN2222
V5
INT
5Vdc
Q2
PN2222
D3
D1N4004
OUT
V
V1 = 5V
V2 = 0V
TD = 0.1u
TR = 0.15u
TF = 0.15u
PW = 13u
PER = 26u
V3
Q1_bis
PN2222
INT2
Q4
PN2222
R2
1k
C1
0.1n
GND
Resultado: VHDL
4
1987
El Departamento de Defensa de EUA impone el uso de VHDL.
La IEEE avala el estndar de VHDL bajo el nmero: IEEE1076.
Avin-caza F-22, primer proyecto donde se exigi utilizar VHDL.
1993
Se realiza la primera revisin del estndar, lo que tiene como
consecuencia una nueva versin del mismo: IEEE 1076 93
1996
Nuevas herramientas comerciales de simulacin y sntesis lgica salen al
mercado cumpliendo con la nueva versin del estndar IEEE 107693
Incremento exponencial del uso de VHDL en la industria para el diseo de
C.I. bajo una metodologa Top-Down.
Desarrollo de libreras del estndar IEEE 1076.3 que permite la
portabilidad de los diseos entre distintos fabricantes de EDAs.
El estndar IEEE 1076.4 se complementa con libraras para modelar
estructuras de circuitos ASIC y FPGAs: VITAL(VHDL Initiative Towards
6
ASIC Libraries).
1 si A = 0 Z
0 si A = 1
Modelizacin
Simulacin
Sntesis lgica
HDLs: Caractersticas
Inspirado en lenguajes de programacin de alto
nivel como C, o C++ (Software) para modelar y
describir funciones que sern implementadas
fsicamente (Hardware)
Existen 2 aspectos importantes en la descripcin
de Hardware que se facilitan con el uso de
HDLs:
Modelado del comportamiento abstracto del circuito
Modelado estructural a nivel fsico
8
Descripcin comportamental
10
Descripcin RTL
11
12
Nivel de abstraccin
VHDL permite codificar un algoritmo (como un lenguaje de alto
nivel).
Los diferentes niveles de abstraccin del cdigo permiten realizar
una concepcin descendente TOP-DOWN.
El nivel RTL (Register Transfer Logic) donde los registros son
identificados es sintetizable. Despus de la sntesis, la herramienta
genera la netlist, es decir, el HDL Estructural con los componentes
de la biblioteca.
registros
S=fft(e,64)
Nivel 1
radix1
radix2
biblioteca
radix3
Nivel 2
Nivel RTL
Sntesis
lgica
netlist
13
14
Caractersticas de VHDL
VHDL: Proximidad con las herramientas de diseo
asistido por computadora (CAD):
Relacin implcita con lenguajes de alto nivel como C.
Facilidad de documentar.
Cdigo porttil (se puede usar en diferentes
tecnologas o procesos).
NO ES UN LENGUAJE COMPUTACIONAL
15
Entity
Architecture
Package declaration
Package body
Configuration
La Entidad, el Empaquetado y la
Configuracin son unidades principales
de diseo, visibes dentro de la librera.
Una librera es un conjunto de unidades
de diseo.
La Arquitectura y el Cuerpo del
Empaquetado son unidades de diseo
secundarias y no son visibles dentro de
la librera.
Un archivo de descripcin en VHDL
consiste de una Entidad y una
Arquitectura.
Compilador
Librera
Editor de
Conexiones
elaboracin
16
Arquitectura
17
Package body: Contiene la definicin de los sub-programas, subrutinas, funciones y procesos declarados en el Empaquetado.
Configuration: Asocia la Entidad a la Arquitectura para formar los
componentes de un diseo. Permite asociar una Entidad a distintas
versiones de la Arquitectura sintetizadas, lo que permite modificar la
funcionalidad sin modificar la estructura externa del circuito.
18
Definicin de la Arquitectura
Declaraciones de:
signals
constants
variables
components
types
Library IEEE;
use IEEE.std_logic_1164.ALL;
entity NAME_OF_ENT is
Port ( NAME, NAME : in type of input;
NAME, NAME: out type of output;
NAME : bidir type of bidir);
end NAME_OF_ENT;
architecture NAME_OF_ARC of NAME_OF_ENT is
signal SIG_A, SIG_B : type of signal;
variable VAR_A, VAR_B : type of variable;
constan CONS_A: type of constant;
type NAME_OF_TYPE is (values of type);
component NAME_OF_COMP is
port ( .; in type of input:
..: out type of output);
end component NAME_OF_COMP;
Begin
------ concurrent instruction ----------;
------ concurrent instruction ----------;
end NAME_OF_ARC;
signals
constants
variables
components
types
Proceso
(instruccin
concurrente)
Instrucciones concurrentes
VHDL permite describir una funcin materal con la ayuda de
instrucciones concurrentes.
Un process es un tipo de instruccin concurrente (tambin lo son
los procedures y las functions.
Las seales se usan para contectar entre si los procesos
CLK
Proceso
sncrono
seales
B
C
S3
procesos
combin.
instr concurrente
S1
instr concurrente
S2
21
Estructura de VHDL
C <= A and B;
E <= C or D;
A
B
C
D
Operador seal
A, B , C, D : seales
Seal : tipo correspondiente a
las seales en sistemas fsicos
(cables)
Instruccin concurrente:
Instrucciones paralelas
para que el simulador
tome en cuenta el
tiempo de propagacin
de las seales dentro de
un circuito.
22
Asignacin Concurrente:
Dentro de una arquitectura podemos asignar un valor a
una seal (cable), a una variable (nodo R/W) o a una
constante (nodo R).
Las asignaciones concurrentes dentro de una
arquitectura de ejecutan al mismo tiempo (no es un
cdigo sncrono):
VAR := VAR + 1;
SIG <= SIG + 1;
Las instrucciones concurrentes tales como los process
son pedazos de cdigo secuencial y solo se ejecutan
cuando se cumplen sus condiciones de activacin (lista
de sensibilidad).
23
Seales/variables
ENTITY mux IS
PORT (a, b, c, selx, sely : IN
BIT;
data_out
:
OUT BIT);
END mux;
ARCHITECTURE ex OF mux IS
SIGNAL sig
: BIT;
BEGIN
sig <= a and selx or b and
not(selx);
Procesos (Process)
Un proceso es una instruccin concurrente definida
con la ayuda de instrucciones secuenciales internas al
proceso.
El proceso se activa si al menos una de las seales de
la lista de sensibilidad cambia de estado lgico.
Ejemplo :
P1 : process(X,Y)
begin
if X= 1 then
Z <= Y;
else
Z <= 0 ;
end if;
end process P1;
Lista de sensibilidad
Z
Y
25
Objetos:
Signal
Port
function
constant
variable
procedure
component
Tipologa
Las seales, variables y constantes deben pertencer a
un tipo. Con la biblioteca STD, los tipos son:
Files
Access
Scalar
Composite
Physical
Enumerated
Record
BIT
BOOLEAN
Real
Array
BIT_VECTOR
Integer
INTEGER
NATURAL
POSITIVE
27
sel
a
mux
b
c
s <=
a
mux
b
c
29
sel
a
b
mux
entity FullAdder is
port (X, Y, Cin: in bit;
Cout, Sum: out bit );
end FullAdder;
palabras
reservadas
X
Y
Cin
FullAdder
Sum
-- entradas
-- salidas
comentarios
Cout
31
Arquitectura perteneciente
a la entidad FullAdder
(MISMO NOMBRE)
32
Componentes
Si
ya
tenemos
una
biblioteca
con
componentes ya diseados (FAs, MUXs, ),
podemos utilizarlos para el diseo de otros
sistemas que necesiten estos componentes ya
diseados.
Se habla de instanciamiento de componentes:
crear copias de un componente para
implementar un sistema ms complejo.
33
A(3) B(3)
A(2) B(2)
A(1) B(1)
A(0) B(0)
entity
Co
C(3)
FullAdder
FullAdder
S(3)
S(2)
C(2)
FullAdder
S(1)
C(1)
Ci
FullAdder
S(0)
34
Adder4
A
B
Ci
35
FullAdder
es un
componente
--entradas
--salidas
--seal interna que comunica
--los componentes FullAdder
begin
Tipos diferentes
Herencia de
propiedades de
tipo
37
Los operadores
Lgicos
Relacionales
Aditivos
De signo
Multiplicativos
Diversos
** (exponente)
abs (valor absoluto)
not (negacin)
*, /, mod, rem
A = (A / B) * B + (A rem B)
signe(A rem B) = signe(A)
abs(A rem B) < abs(B)
(-A) / B = -(A / B) = A / (-B)
N, A = B * N + (A mod B)
signe(A mod B) = signe(B)
abs(A mod B) < abs(B)
38
Bibliotecas y Libreras
En VHDL es posible utilizar componentes, funciones y
procesos descritos previamente por otros diseadores o
por las empresas que usan este estndar.
Estas unidades estarn almacenadas en una biblioteca
(librera) que puede ser agregada al proyecto con el fin
de utilizar sus componentes en un nuevo diseo.
Los componentes se sintetizan dentro de la librera de
trabajo
El nombre lgico para una librera de trabajo es work.
La localizacin fsica de este repertorio debe ser
especificada en la herramienta que se utilice.
Normalmente, las herramientas de diseo con VHDL
definen y usan la librera work automticamente.
39
Bibliotecas
Para utilizar los componentes de una librera, sta debe ser
especificada como se muestra:
library <library_name>;
use <library_name>.<package_name>.ALL;
No necesitan ser
especificadas
40
Library
Otras libreras o empaquetados requieren ser
especificados al inicio del cdigo en VHDL:
std_logic
std_ulogic,
std_logic_vector
std_ulogic_vector
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity
41
Bibliotecas
La biblioteca WORK corresponde al repertorio de trabajo
del usuario:
Biblioteca
ALTERA
Empaquetado
maxplus2
megacore
Descripcin
LPM
lpm_components
megafonciones LPM
IEEE
std_logic_1164
std_logic_unsigned
std_logic_signed
std_logic_arith
Bibliotecas de ALTERA :
42
lpm_inv
lpm_or
lpm_bustri
lpm_constant
lpm_mux
lpm_xor lpm_decode
lpm_add_sub
lpm_mult
csdpram
lpm_latch
lpm_ram_io
lpm_tff
Circuitos aritmticos
lpm_abs
lpm_compare
lpm_counter
Memorias
csfifo
lpm_ram_dq
lpm_dff lpm_rom
Combinatorio :
entradas
lgica
salidas
Secuencial :
entradas
lgica
Estado_f
estado
CLK
44
Lgica combinatoria
Hay varios estilos de codificacin:
Con la ayuda de una instruccin concurrente de
afectacin. (vistos previamente)
Con la ayuda de un proceso (process)
Con la ayuda de instanciacin de componentes (cdigo
estructural o jerrquico)
45
Proceso (Process)
Un proceso es una subrutina dentro de la
arquitectura que solo se efecta (activa) cuando
algunas de las seales internas a ste cambian
de estado.
Sintaxis:
process (lista de sensibilidad)
begin
instrucciones combinatorias o
secuenciales
end process;
46
sel
a
mux
47
combi : process(a,b,c,sel)
begin
case sel is
when '0' => s <= a and c;
when '1' => s <= b and c;
when others => null;
end case;
a
b
mux
end process;
48
combi :
process(a,b,c,sel)
begin
if c='0' then
s <= '0';
elsif sel='0' then
s <= a;
else
s <= b;
end if;
end process;
SEL
Sntesis de un latch :
Cuando las condiciones no son muy precisas en las instrucciones
condicionales => memorisacin se traduce como una sntesis en
flip-flops tipo "latch".
PROCESS(A,B)
BEGIN
IF A = '1' THEN
Q <= B;
-ELSE
-Q <= 0 ;
END IF;
END PROCESS;
A
B
B
D
Operaciones aritmticas
Por default sobre los tipos INTEGER
Sobre tipos STD_LOGIC, UNSIGNED,
STD_LOGIC_VECTOR y SIGNED utilizar la
biblioteca IEEE1164 con las sublibreras:
std_logic_1164
std_logic_unsigned
std_logic_signed
std_logic_arith
+,-,*
Operaciones posibles :
La sntesis llama automticamente a las macrofunciones LPM
51
Lgica Sncrona
Una sola solucin : uso de un process sncrono
con un solo reloj en la lista de sensibilidad
Proceso sncrono
Entradas
lgica
Estado_f D
estado
CLK
Codigo de la
lgica
Por separado
Proceso sncrono
entradas
Lgica
= registro
Estado_f D
estado
CLK
52
Lgica Sncrona
Los circuitos secuenciales siempre van acompaados de
una red combinacional.
Para una sintaxis VHDL limpia SIEMPRE DEBE
separarse la red combinacional de la parte secuencial
Los procesos secuenciales van siempre dentro de un
process
Los procesos combinatorios pueden asignarse dentro de
la Arquitectura, en un process, en una function o en un
procedure
53
PROCESS(CLK)
BEGIN
IF CLKevent and CLK = '1' THEN
Q <= D;
END IF;
END PROCESS;
CLK
D
Q
CLK
54
PROCESS (CLK)
BEGIN
IF (CLKevent and CLK = '1')
THEN
IF N_RST = 0 THEN
Q <= 0;
ELSE
Q<= D;
END IF;
END IF;
END PROCESS;
CLK
N_RS
T
D
Q
N_RST
D
CLK
55
CLK
N_RST
D
Q
CLK
D
EN
CLK
D Q
ENA
58
Ejemplo de un FlipFlop JK
PROCESS(CLK, RST)
BEGIN
IF RST = 0 THEN
Q <= 0;
ELSIF CLKevent and CLK = '1' THEN
Q <= (J and not(Q)) or (not(K) and Q);
END IF;
END PROCESS;
Q_N <= not (Q);
CLK
K Q_N
Q_N
59
Mquina de estados
Mquina de MOORE :
Entradas
Estado_F
estado
Salidas
CLK
Ejemplo de cdigo :
Proceso combinatorio : P3
Proceso sncrono : P1
Proceso combinatorio : P2
60
Mquina de estados
Creacin de un tipo que
engloba la lista de estados
P3 : PROCESS(entradas,estado)
...estado_futuro <=
END Ejemplo;
61
MON
DES
S0
S1
alto='1'
bajo='1'
alto
DES='1'
S3
MON='1'
d='1'
S2
bas
62
Bibliografa sugerida:
Roth, Ch. Jr. Digital Systems Design Using VHDL.PWS
Publishing Company, 2a Ed.
Roth, Ch. Jr. Fundamentals of Logic Design, PWS Publishing
Company, 2a Ed.
Brown, Vranesic. Fundamentals of Digital Logic with VHDL,
McGrawHill. 2nd edition.