Está en la página 1de 26

FLUJO DE DISEO CON

VHDL

Cul es la primera fase del diseo de un sistema


digital utilizando SPLDs, CPLDs y/o FPGAs ?

Descripcin del Diseo

Mtodos
Captura Esquemtica (p.ej. OrCAD)

Limitacin: Difcil o imposible la


manipulacin de diseos complejos.

Descripcin con un Lenguaje (HDL)

De Bajo Nivel:

PALASM
OPAL
PLPL

De Alto Nivel:

Handel C
System C
Verilog
VHDL

Cul es la primera fase del diseo de un sistema


digital utilizando SPLDs, CPLDs y/o FPGAs ?

Descripcin del Diseo

Simulacin
Funcional

Verifica que realiza la funcin para


la cual fue diseado.

Digital (Timing Simulation)

Programacin

Verificacin del diseo

FIN

Verifica que los tiempos en la


propagacin del circuito no afecten
la funcionalidad del sistema.

IDEA

SINTESIS

DESCRIPCIN
DEL CIRCUITO

ANALISIS
TEMPORAL

SIMULACION FUNCIONAL
FUNCIONA?
NO FUNCIONA? SI

NO

SI
PROGRAMACION
DEL DISPOSITIVO

NO
FUNCIONA?
SI
FIN
DEL PROCESO
DE DISEO

PRUEBAS
AL DISEO

ELABORACION
DEL PROTOTIPO

Descripcin del diseo

Elementos sintcticos del VHDL


Comentarios

Se consideran comentarios despus de dos guiones medios seguidos --.

Smbolos especiales

Existen caracteres especiales sencillos como (&, #, +, *, =) o dobles como ( :=, <=).

Identificadores

Es lo que se usa para dar nombre a los diferentes objetos del lenguaje.

Nmeros

Se considera que se encuentra en base 10, se admite la notacin cientfica convencional


es posible definir nmeros en otras bases utilizando el smbolo # : 2#11000100#

Caracteres

Es cualquier letra o carcter entre comillas simples: 3, t

Cadenas

Son un conjunto de caracteres englobados por comillas dobles: hola

Cadenas de bits

Los tipos bit y bit_vector son en realidad tipo carcter y arreglo de caracteres
respectivamente, se coloca un prefijo para indicar la base : O126, XFE

Palabras reservadas

Son las instrucciones, rdenes y elementos que permiten definir sentencias.

Descripcin del diseo

Identificadores
Nombres o etiquetas que se usan para referir: Variables, Constantes,
Seales, Procesos, Entidades, etc.
Estn formados por nmeros, letras (maysculas o minsculas) y
guin bajo _ con las reglas especificadas en la tabla siguiente.
Longitud (Nmero de Caracteres): Sin restricciones
Palabras reservadas por VHDL no pueden ser identificadores
En VHDL, un identificador en maysculas es igual a su contraparte
en minsculas

Reglas para especificar un identificador

Incorrecto

Correcto

Primer carcter debe ser siempre una letra mayscula o minscula 4Suma

Suma4

Segundo carcter no puede ser un guin bajo ( _ )

S_4bits

S4_bits

Dos guiones bajos no son permitidos

Resta__4

Resta_4_

Un identificador no puede utilizar smbolos especiales

Clear#8

Clear_8

Descripcin del diseo

Lista de palabras reservadas en VHDL

Estructura bsica

Estructura Bsica de un Programa VHDL

Declaracin de Entidad
(entity)
Unidad Primaria

Arquitectura
(architecture)
Unidad Secundaria

Entidad - Qu es?

entidad (entity) Bloque elemental de diseo


Circuitos elementales digitales que forman de manera
individual o en conjunto un sistema digital
Ejemplos: Compuertas, Flip-Flops, Sumadores/Restadores, Multiplexores,
Contadores, Multiplicadores, ALUs, Neurona-Digital, etc.
Ejemplo-1: Sumador

Cin
Puertos de Entrada

A
B

Entidad

Cout

Sumador

SUMA

Puertos de Salida

Declaracin de una entidad Consiste en la descripcin de los puertos de


entrada o salida de un circuito, el cual es identificado como una entidad (entity)
Importante!
No se describe cmo ser realizado o implementado el circuito, es decir, su Arquitectura

Entidad Descripcin de un Puerto

Descripcin de un Puerto

Nombre
Identificador

Modo
in = Entrada
out = Salida
Ms tipos
Se irn introduciendo conforme avance el curso

Tipo de Dato
Conjuntos de Valores que se les ha asignado un nombre
de tal forma que un objeto de un determinado Tipo
pueda tomar cualquier valor dentro del conjunto de
valores que define al Tipo especificado.

bit (pkg.standard)

Valores de 0 o 1
Lgico

bit_vector

Conjunto de bits
que representa a un
grupo de seales de
ent. o sal.

(pkg.standard)

(pkg.std_logic_1164)

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

std_logic_vector

Arreglos de
std_logic

std_logic

(pkg.std_logic_1164)

Ms tipos
Se irn introduciendo conforme avance el curso

Entidad Ejemplo 1

Ejemplo-1 Sumador
Cin
Puertos de Entrada

A
B

Entidad

Cout

circuito

SUMA

Puertos de Salida

(entity) Inicia declaracin de la entidad


(--) Indica Comentario

Lnea
N.
1
2
3
4
5

Identificador de la entidad

Nombres de los puertos

Sumador-completo de dos datos con longitudes de 1-bit


(Declaracin de Entidad)
--Declaracin de la entidad de un circuito sumador
entity sumador is
port (A, B, Cin: in bit;
SUMA, Cout: out bit);
end sumador;

Modo de Operacin
Tipo de Dato

(;) Finaliza declaracin o subdeclaracin


(end) Finaliza declaracin de la entidad

Entidad Ejemplo 2

Ejemplo-2

a3
b3
a2
b2

a1
b1
a0
b0

Lnea
N.

Detector Uso de dos datos con longitudes de 4-bit


(Declaracin de Entidad)

--Declaracion de la entidad

entity circuito is

3
4
5

port (a3, b3, a2, b2, a1, b1, a0, b0: in bit;
F: out bit);
end circuito;

Entidad Ejemplo 3 (Vectores)

Ejemplo-3

a3
b3
a2
b2

a1
b1
a0
b0

Lnea
N.

Detector Uso de dos datos con longitudes de 4-bit


(Declaracin de Entidad Uso de Vectores)

--Declaracion de la entidad

entity circuito is

3
4
5

port (a, b: in bit_vector (3 downto 0);


F: out bit);
end circuito;

Entidad - Uso de biblioteca

Para llamar un paquete es necesario llamar a la librera/biblioteca que lo contiene


(donde ha sido compilado)

Sintaxis: use nombre_librera.nombre_paquete.all;

Ejemplo: use ieee.std_logic_1164.all;

Uso del paquete std_logic_1164


incluido en la biblioteca ieee

Permite el uso de todos los componentes


almacenados en el paquete

Arquitectura - Qu es?

arquitectura (architecture)
Unidad de Diseo Secundaria que describe el comportamiento interno de una entidad.

Cmo? - A travs de la descripcin de varios procedimientos que permitan que la


entidad (entity) cumpla con las condiciones de operacin o comportamiento deseadas.

Niveles de Descripcin utilizados


Nivel Algoritmo

Estilo de descripcin o
Modelizacin
Funcional

Nivel de Transferencia entre Registros (RTL)


Flujo de Datos
Nivel Lgico

Nivel Compuerta
Nivel Transistor (Topologa / Layout)

Estructural

Layout

Nivel Transistor (Topologa / Layout)

Descripcin - Estructural

Ejemplo-4a

a
f1
b

f1

Lnea
N
1
2
3
4
5
6
7
8
9
10
11
12

Arquitectura - Compuerta OR de dos entradas


--Ejemplo de una descripcin estructural
library ieee;
use ieee.std_logic_1164.all;
entity compuerta_or is
port (a,b: in std_logic;
f1: out std_logic);
end compuerta_or;
architecture estructural of compuerta_or is
begin
U1: ENTITY or2 PORT MAP (e1=>a, e2=>b, y=>f1);
--U2: ENTITY or2 PORT MAP (a, b, f1);

end estructural;

Descripcin - Flujo de datos

Ejemplo-4b

Lnea
N

a
f1
b

f1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Arquitectura - Compuerta OR de dos entradas


--Ejemplo de una descripcin abstracta (funcional)
library ieee;
use ieee.std_logic_1164.all;
entity compuerta_or is
port (a,b: in std_logic;
f1: out std_logic);
end compuerta_or;
architecture flujo_datos of compuerta_or is
begin
f1 <= (a) OR (b);
end flujo_datos;

Descripcin - Funcional

Ejemplo-4c

Lnea
N

a
f1
b

f1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Arquitectura - Compuerta OR de dos entradas


--Ejemplo de una descripcin abstracta (funcional)
library ieee;
use ieee.std_logic_1164.all;
entity compuerta_or is
port (a,b: in std_logic;
f1: out std_logic);
end compuerta_or;
architecture funcional of compuerta_or is
begin
process (a,b) begin
if (a = 0 and b=0) then
f1 <= 0;
else
f1 <= 1;
end if;
end process;
end funcional;

Arquitectura. Ejemplo 5

Ejemplo-5
ENTRADA SALIDA
a

salida

b
c

ENTRADAS

salida

SALIDA

c
0

b
0

a
0

salida
0

Dibujar el circuito con compuertas universales.

Describir el circuito en VHDL.

Simplificar la funcin por lgebra de Boole.


Dibujar el circuito a nivel de compuertas.

Arquitectura. Ejemplo 5

Ejemplo-5
ENTRADA SALIDA
a

salida

b
c

ENTRADAS

SALIDA
salida
0

salida

Simplificar la funcin por lgebra de Boole.

c
0

b
0

a
0

= Sel a (b+b) + Sel b (a+a)

= Sel a + Sel b

Dibujar el circuito multiplexor 2 a 1.


Dibujar el circuito con compuertas universales.
Describir el circuito en VHDL.

Sal=Sel a b+Sel a b + Sel a b + Sel a b

Arquitectura. Ejemplo 5

Ejemplo-5
--Entidad
ENTITY ejemplo_5 IS
PORT (a, b, c: IN bit;
salida: out bit);
END ejemplo_5;

--Arquitectura Estructural
ARCHITECTURE estructural OF ejemplo_5 IS
SIGNAL ax, bx, noc :bit;
BEGIN
U0: ENTITY inv PORT MAP (e=>c, y=>noc);
U1: ENTITY and2 PORT MAP (e1=>a, e2=>noc, y=>ax);
U2: ENTITY and2 PORT MAP (b, c, bx);
U3: ENTITY or2 PORT MAP (e1=>ax, e2=>bx, y=>salida);
END estructural ;

Arquitectura. Ejemplo 5
Ejemplo-5

--Ejemplo 5
ENTITY ejemplo_5 IS
PORT (
a, b, c: IN
bit;
salida: OUT bit
);
END ejemplo_5;
ARCHITECTURE data_flow OF ejemplo_5 IS
BEGIN
salida <= ( (NOT c) AND a ) OR (c AND b);
END data_flow;

Arquitectura. Ejemplo 5
Ejemplo-5

--Arquitectura concurrente o RTL


ARCHITECTURE flujo1 OF ejemplo_5 IS
SIGNAL ax, bx, noc : bit;
BEGIN
noc <= NOT c;
ax <= a AND noc;
bx <= b AND c;
salida<= ax OR bx;
END flujo1;

--Arquitectura concurrente o RTL


ARCHITECTURE flujo2 OF ejemplo_5 IS
BEGIN
salida <= a WHEN c =0 ELSE
b;
END flujo2;

--Arquitectura comportamental o funcional


ARCHITECTURE comportamental OF ejemplo_5 IS
BEGIN
PROCESS (a, b, c) - - Lista sensible
BEGIN
IF (c=0) THEN
salida <= a;
ELSE
salida <= b;
END IF;
END PROCESS;
END comportamental;

Arquitectura. Ejemplo 5
Ejemplo-5
--Ejemplo 5
ENTITY ejemplo_5 IS
PORT (
a, b, c: IN bit;
salida: OUT bit
);
END ejemplo_5;
ARCHITECTURE data_flow OF ejemplo_5 IS
SIGNAL temp: bit_vector (2 DOWNTO 0);
BEGIN
salida <= 0 WHEN temp = 000 ELSE
0 WHEN temp = 001 ELSE
1 WHEN temp = 010 ELSE
1 WHEN temp = 011 ELSE
0 WHEN temp = 100 ELSE
1 WHEN temp = 101 ELSE
0 WHEN temp = 110 ELSE
1;
temp <= c & b & a; --Concatenacin para formar un solo bus .
END data_flow;

Prctica 1. Tecnologas de implementacin, SSI y


PLDs, y uso bsico del IDE Galaxy.