Está en la página 1de 56

CIRCUITOS DIGITALES Y

APLICACIÓN DE VHDL

Ing. Wilmer Naranjo

1
Introducción
¾ VHDL Lenguaje de descripción de Hardware
¾ Usado en ASIC, CPLD, FPGA, etc.
¾ Combina:
z Documentación

z Simulación

z Síntesis

¾ Modelamiento según:
z Comportamiento (Behavioural
(Behavioural))
z Estructura
E t t ((St
(Structural
Structural)
St t l) l)
2
ASIC
¾ ASIC Circuito Integrado para Aplicaciones
Específicas

¾ Es un circuito integrado hecho a la medida para un


uso en particular,
ti l en vez ded ser concebido
bid para
propósitos de uso general.
¾ Por ejemplo,
ejemplo un chip diseñado únicamente para ser
usado en un teléfono móvil es un ASIC.
¾ Por otro lado, los circuitos integrados
g de la serie 74
son circuitos lógicos (combinacionales o secuenciales)
que se pueden utilizar para multiples aplicaciones.

Ing. Wilmer Naranjo 3


ASIC
¾ Con los avances en la miniaturización y en las
herramientas de diseño, la complejidad máxima, y por ende
la funcionalidad, un ASIC ha crecido desde 5.000 puertas
lógicas a más de 100 millones.
¾ Los ASIC modernos incluyen:
¾ Procesadores de 32-bit
¾ Memoria Ram,, Rom,, Eeprom
p y flash

¾ Este tipo de ASIC frecuentemente es llamado Sistema en


un Chip, o SoC, por sus siglas en inglés.
¾ Los diseñadores de ASIC digitales usan lenguajes
descriptores de hardware (HDL),
(HDL) tales como Verilog o
VHDL, para describir la funcionalidad de estos dispositivos.
Ing. Wilmer Naranjo 4
CPLD

¾ CPLD ( Complex Programmable Logic Device)


¾ Los CPLD extienden el concepto de un PLD
(Programmable Logic Device) a un mayor nivel de
integración ya que permite implementar sistemas más
eficaces ya que utilizan menor espacio,
eficaces, espacio mejoran la
fiabilidad del diseño, y reducen costos.
¾ Un CPLD se forma con múltiplesp bloques
q lógicos,
g , cada uno
similar a un PLD. Los bloques lógicos se comunican entre
sí utilizando una matriz programable de interconexiones, lo
cual hace más eficiente el uso del silicio,
silicio conduciendo a
una mejor eficiencia a menor costo. CPLD.
Ing. Wilmer Naranjo 5
FPGA

FPGA (Field Programmable Gate Array)

Es un dispositivo semiconductor que contiene bloques de


lógica cuya interconexión y funcionalidad se puede programar.
La lógica programable puede reproducir desde funciones tan
sencillas como las llevadas a cabo por una puerta lógica o un
sistema combinacional hasta complejos sistemas en un chip

Ing. Wilmer Naranjo 6


FPGA

Las FPGAs se utilizan en aplicaciones similares a los ASICs


sin embargo son más lentas, tienen un mayor consumo de
potencia y no pueden abarcar sistemas tan complejos como
ellos.
ll
A pesar de esto, las FPGAs tienen las ventajas de ser
reprogramables, sus costes de desarrollo y adquisición son
mucho menores para pequeñas cantidades de dispositivos y
el tiempo de desarrollo es también menor.
Históricamente las FPGA surgen como una evolución de los
conceptos desarrollados en las PLA y los CPLD.
Ing. Wilmer Naranjo 7
FPGA

¾ Las FPGA son el resultado de la convergencia de dos


tecnologías diferentes, los PLD (dispositivos lógicos
programables) y ASIC (circuitos integrados de aplicación
específica)..
específica)
¾ La historia de los PLDs comenzó con los primeros
dispositivos PROM (Programmable Read Read--Only Memory)
Memory) y
se lles añadió
ñ dió versatilidad
ilid d con llos PAL (Programmable
P bl
Array Logic)
Logic) que permitieron un mayor número de entradas
y la inclusión de registros
registros.
g .
¾ Esos dispositivos han continuado creciendo en tamaño y
potencia..
potencia Ing. Wilmer Naranjo 8
DIFERENCIAS

Ing. Wilmer Naranjo 9


DESCRIPCIÓN EN VHDL
¾ Al inicio de los 8080´´s diversos grupos de investigadores
empiezan a crear y desarrollar los llamados "lenguajes de
descripción
p de hardware" cada uno con sus p peculiaridades..
peculiaridades
Empresas como IBM con su IDL, el TI - HDL de Texas
Instruments,, ZEUS de General Electric, etc
Instruments etc..,
¾ Al d d de
Alrededor d 1981 ell Departamento
D t t de
d Defensa
D f d llos
de
Estados Unidos desarrolla un proyecto llamado VHSIC
(Very High Speed Integrated Circuit ) su objetivo era
rentabilizar las inversiones en hardware haciendo más
sencillo su mantenimiento.
mantenimiento. Se pretendía con ello resolver el
problema de modificar el hardware diseñado en un
proyecto para utilizarlo en otro, lo que no era posible hasta
entonces porque no existía una herramienta adecuada para
armonizar y normalizar dicha tarea,
tarea entonces empieza el
momento de ra el momento de los HDL's
Ing. Wilmer Naranjo 10
DESCRIPCIÓN EN VHDL

¾ Constituida al menos por 3 elementos principales


principales::
o Biblioteca (librerías)
o Entidades (interface)
o Arquitecturas (estructura)

¾ El diseñador generalmente realiza la descripción de las


entidades y arquitectura empleando elementos
almacenados en las bibliotecas
bibliotecas..
¾ Éstas a su vez son almacenadas en la biblioteca de
trabajo, luego de ser compiladas
compiladas..

Ing. Wilmer Naranjo 11


BIBLIOTECA
¾ Es un lugar donde el compilador VHDL almacena
i f
información
ió referente
f t a un proyecto
t de
d diseño
di ñ particular
particular.
ti l .

¾ Incluyendo documentos intermedios que son usados en


el análisis, simulación y la síntesis
síntesis..

¾ Una biblioteca estándar muyy usada es IEEE.


IEEE.

¾ Para especificar la biblioteca se usa "library"


library" y en la
primera línea del programa debe escribirse lo siguiente
siguiente::

¾ Library ieee
ieee;;

Ing. Wilmer Naranjo 12


OBJETO DE DATOS
¾ Seproporcionan tres tipos de objetos de
datos:

¾ Señales
¾ Constantes
¾ Variables

¾ Las señales: representan las señales


lógicas de un circuito
circuito.

¾ Lasconstantes y variables son útiles para


describir el circuito.
Ing. Wilmer Naranjo 13
NOMBRE DE OBJETO DE DATOS
¾ Cualquier
q carácter Alfanumérico
¾ Empieza con una letra (ingles)
¾ No p
puede ser una p
palabra reservada de
VHDL
¾ No puede empezar con “_”
¾ No puede tener dos “_” seguidos
¾ Ejemplo X1, Puerto_1, UNO, estado, a, F
¾ VHDL no distingue
di ti entre
t mayúscula
ú l y
minúscula.

Ing. Wilmer Naranjo 14


VALORES DE OBJETO DE DATOS
¾ Se utiliza objeto de datos SIGNAL para representar
señales lógicas en un circuito.
¾ El V
Valor
l objeto
bj t SIGNAL iindividual
di id l se especifica
ifi
utilizando apostrofe como en ‘0’ o en ‘1’ para un
número binario.
¾ El Valor objeto SIGNAL multibits se especifica
utilizando comillas como en “0101” o “10111100”
¾ Las comillas también se emplean para indicar un
número binario “1001” representa los cuatro
valores SIGNAL ‘1’, ‘0’, ‘0’, ‘1’
¾ Los valores CONSTANT o VARIABLE se
especifican de la misma manera que los objetos de
datos SIGNAL.

Ing. Wilmer Naranjo 15


OBJETO DE DATOS SIGNAL

¾ Los objetos
j de datos SIGNAL representan
p señales
lógicas, o cables en un circuito.
¾ Ejemplo de declaración:
¾ SIGNAL signal_name
signal_name:: type_name
¾ La variable type_name determina los valores
legales que la señal puede asumir y sus usos en
VHDL.
¾ Ejemplos:
j p
¾ BIT, BIT VECTOR, STD_LOGIC, STD_LOGIC
VECTOR , STD_ULOGIC , SIGNED, UNSIGNED,
INTEGER ENUMERATION y BOOLEAN
INTEGER, BOOLEAN.
Ing. Wilmer Naranjo 16
TIPO BIT y BIT_VECTOR
¾ Estos tipos están predefinidos en los estandares de
VHDL del IEEE 1076 y 1164.
¾ BIT puede
d tener
t los
l valores
l ‘1’ o ‘0’
¾ BIT_VECTOR es un arreglo lineal de objetos tipo bit.
¾ Ejemplo:
¾ SIGNAL X1: BIT
¾ SIGNAL C: BIT_VECTOR (1 TO 4)
¾ SIGNAL D: BIT_VECTOR (7 DOWNTO 0)

¾ C<= “1010”
1010 --C(1)=1,
--C(1)=1,
C(1)=1 C(2)=0,
C(2)=0 C(3)=1
C(3)=1, C(4)=0
¾ D<= “10010100” --D(7)=1,
--D(7)=1, D(6)=0, D(5)=0, D(4)=1
¾ --D(3)=0,
-- D(3)=0,
( ) , D(2)=1,
( ) , D(1)=0,
( ) , D(0)=0
( )

Ing. Wilmer Naranjo 17


TIPO STDLOGIC y STDLOGIC _VECTOR
¾ Se añadio en el estandar de VHDL del IEEE 1164.
¾ Ofrece mayor versatilidad que el tipo BIT.
¾ P
Para utilizarlo
tili l d debemos
b d
de iincluir
l i llas siguientes
i i t iinstrucciones
t i
¾ LIBRARY ieee
¾ USE ieee.std_logic_1164.all

¾ Los siguientes valores son legales para STD_LOGIC:


¾ 0 ----- un 0 ;1 ---- un 1
¾ Z ----- alta impedancia ;‘;‘--‘ ---- estado opcional (don’t
(don’t care
care))
¾ L ----- un 0 débil ;H ---- un 1 débil
¾ U ----- no inicializado ;X ---- desconocido ((un 0 ó un 1 fuerte))
¾ W ----- desconocido (un 0, ó un 1 débiles)
¾ SIGNAL X1, x2, x3 :STD_LOGIC
¾ SIGNAL C : STD_LOGIC_VECTOR
STD LOGIC VECTOR (1 TO 4)
¾ SIGNAL Y, Z : STD_LOGIC_VECTOR (7 DOWNTO 0)
Ing. Wilmer Naranjo 18
TIPO STD_ULOGIC
¾ Muy similares a las señales de tipo STD_LOGIC.
¾ La diferencia esta en qque STD_ULOGIC se relaciona
con el concepto de Función de Resolución.
Resolución.
¾ La Función de Resolución se utiliza para determinar
que valor debe tomar una señal si hay dos fuentes
para la misma.
¾ Por ejemplo dos buffers triestados podrían tener sus
salidas conectadas a una señal x, en algún momento
uno de ellos podría producir un valor de salida ‘Z’ y el
otro un valor ‘1’
1 . Para determinar que el valor de X
debe de ser ‘1’ en este caso se emplea la función
resolución

Ing. Wilmer Naranjo 19


TIPO SIGNED Y UNSIGNED

¾ Los paquetes std_logic_signed y std_logic_unsigned


rec rren a otro paquete
recurren paq ete llamado std_logic_arith
std
std_logic_arith,
logic arith, que
q e
define el tipo de circuito que utilizará operadores
aritméticos como +.

¾ El tipo signed maneja números con signo


((complemento
p a 2)

¾ El tipo unsigned emplea números sin signo


signo..

Ing. Wilmer Naranjo 20


¾ TIPO INTEGER
¾ bit cuyo rango [-(231-1) a (231-1)]
Una señal INTEGER tiene 32 bit, )]..
¾ El rango se puede personalizar utilizango RANGE
RANGE..
¾ SIGNAL X: INTEGER RANGE -127 TO 127 127..

¾ TIPO BOOLEAN
¾ Tiene los valores TRUE o FALSE, que equivale a ‘1’ y a ‘0’.

¾ TIPO ENUMERATION
¾ Tiene valores que el usuario especifica.
especifica.
¾ TYPE enumerated_type_name IS (name name{,{, name
name})
});;
¾ TYPE State_type IS (estadoA
estadoA,, estadoB,
estadoB, estadoC)
estadoC);
¾ SIGNAL y: State_type;
State type;
State_type
type;
¾ Los valores legales para y son estadoA
estadoA,, estadoB y estadoC
Ing. Wilmer Naranjo 21
¾ OBJETO DE DATOS CONSTANTES
¾ Es aquel cuyo dato no puede cambiar
cambiar..
¾ CONSTANT constant_nombre : type_name:
type_name:=constant_valor
constant_valor;;
¾ CONSTANT zero : std_logic_vector (3 downto 0):=“0000
=“0000””;

¾ OBJETOS DE DATOS VARIABLES


¾ Se utiliza para almacenar los resultados de los cálculos
¾ VARIABLE variable_name:
variable_name
i bl : type_name
t

Ing. Wilmer Naranjo 22


Operadores

¾ Cinco categorías de operadores:

A it éti
Aritméticos
Relacionales
Lógicos
Desplazamiento
Otros

Ing. Wilmer Naranjo 23


Operadores Aritméticos

OPERACIÓN OPERADOR

Igual =
Dif
Diferente
t /=
Mayor >
Mayor o igual >=
M
Menor
enor <
Menor o igual <=
Ing. Wilmer Naranjo 24
Operadores lógicos y de desplazamiento
OPERACIÓN OPERADOR
Y and
g
Y Negado nand
O or
O Negado nor
O-exclusiva xor
O-exclusiva negada xnor
Negación
egac ó not
ot
Desplazamiento lógico a la izquierda sll
Desplazamiento lógico a la derecha srl
Desplazamiento aritmético a la izquierda sla
Desplazamiento aritmético a la derecha sra
Desplazamiento circular a la izquierda rol
Desplazamiento circular a la derecha ror
Ing. Wilmer Naranjo 25
Operadores de adición

OPERACIÓN OPERADOR
Signo positivo +
Signo negativo -
Concatenación &

Operadores Otros
¾ Operadores de multiplicar: *, /, MOD, REM
¾ Operadores miscellaneous:: **,
miscellaneous ** ABS
Ing. Wilmer Naranjo 26
Tipos de datos
TIPO RANGO DESCRIPCIÓN
Integer MAXINT… MAXINT Números enteros
Natural 0…
0 MAXINT Números naturales
Positive 1… MAXINT Números positivos
Real MAXREAL… MAXREAL Números reales
Boolean TRUE,FALSE Números booleanos
Bit 0,1 Números binarios
Std_logic ‘0’ , ‘1’,’Z’ (tercer estado), ‘‘--’ Estándar Lógico
(don´´t care),’L’,’H’,,’U’,’X’,’W’
(don

Bit_vector Conjunto de bits Cadena de bits


Character Caracteres
String Conjunto de caracteres Cadena de caracteres
Ing. Wilmer Naranjo 27
ENTIDAD DE DISEÑO DE VHDL
¾ Un circuito o subcircuito
descrito con código VHDL se
ENTIDAD
ll
llama entidad
tid d d
de di
diseño
ñ o
simplemente entidad.
¾ Tiene dos partes principales DECLARACION
DE ENTIDAD
que son:
z Declaración de la entidad
ENTITY
Especifica las señales de
entrada y salida del circuito ARQUITECTURA
digital.
z Arquitectura .
P
Proporciona
i llos d
detalles
t ll d dell
circuito.
Ing. Wilmer Naranjo 28
DECLARACION ENTITY
¾ Las señales de E/S del circuito digital se
especifica utilizando la declaración ENTITY.
¾ PORT indica la señal de E/S en modo:
¾ Modo in: Un puerto es de modo in si la
información correspondiente al mismo,
mismo entra a
la entidad.
¾ Modo out: Un puerto es de modo out si la
información fluye hacia fuera de la entidad.
¾ Modo buffer: Este modo es similar al modo
out,
t pero además,
d á permite it lla realimentación
li t ió y
no es bidireccional.
¾ Modo inout: Es usado para señales
bidireccionales.
Ing. Wilmer Naranjo 29
ENTIDAD
¾ Tiene la misión de modelar la interfaz de un circuito o
sistema con el exterior, a través de las entradas y salidas
salidas..

Entity EJEMPLO is
Port ((A,B:
, in bit;;
A C
E C : out bit);
B
End EJEMPLO

Entity EJEMPLO1 is
Port (A,B:
(A B: in bit
bit_vector
vector (1 to 4);
A 4 4 C
E C : out bit_vector (1 to 4));
B 4
End EJEMPLO1

Ing. Wilmer Naranjo 30


ARQUITECTURA
¾ ARCHITECTURE Provee los detalles del
circuito p
para una entidad.
¾ Consta de 2 partes principales:
¾ La región declarativa
z Precede a la palabra reservada BEGIN.
z Se utiliza p
para declarar señales, tipos
p definidos
por el usuario y constantes, componentes y
atributos.
¾ La región del cuerpo de arquitectura
z Se encuentra después de BEGIN y se detalla la

programación en VHDL del circuito digital

Ing. Wilmer Naranjo 31


PAQUETE
¾ Un paquete en VHDL sirve como un depósito.
¾ Se utiliza para almacenar código de VHDL de uso general.
¾ U paquete
Un t tiene
ti d partes:
dos t
¾ Declaración de Paquete.
Se declara: LIBRARY library_name;
USE library_name.package_name_all;

PACKAGE package
package_name
name IS
[TYPE declarartions]
[SIGNAL declarartions]
[COMPONENT declarartions]
END package_name
¾ Cuerpo de Paquete.
Opcional para definir funciones de VHDL
Ing. Wilmer Naranjo 32
Crear paquetes
¾ La biblioteca IEEE es solo de lectura, tipo global, no
puede interactuar ni modificar.
p modificar.

¾ Cada diseñador puede crear su propio paquete dando la


posibilidad de utilizarlos en otros diseños o modificarlos,,
p
para esto el compilador VHDL genera automáticamente
una biblioteca llamada work
work..

¾ En la biblioteca work se almacenan las entidades y


arquitecturas de diseño.
diseño.

¾ Una vez creado el nuevo paquete se lo puede usar en


otro proyecto declarándolo de la siguiente manera
manera::

¾ Use work
work..nombre_del_paquete.
nombre_del_paquete.all ;
Ing. Wilmer Naranjo 33
SUBCIRCUITOS
¾ Una entidad de VHDL definida en un archivo de código g fuente
puede usarse como subcircuito en otro archivo de código
fuente..
fuente
¾ El subcircuito en VHDL se llama COMPONENTE
COMPONENTE..
¾ Un componente se declara en la arquitectura o en la
declaración de paquete
paquete..
¾ Laa ssintaxis
ta s de la
a dec
declaración
a ac ó de
del co
componente
po e te es ssimilar
a a la
a
declaración de la entidad
entidad..
¾ Una vez declarado, este puede instanciarse como un
subcircuito..
subcircuito
¾ COMPONENT component_name
¾ [GENERIC ( parameter_name
parameter_name:: integer:
integer:= default_value{;
default_value{;
¾ parameter
parameter_name
parameter_name:
name: integer
name: integer::= default_value});
default value});
default_value})
value});]
¾ PORT ([SIGNAL] signal_name {, signal_name}
signal_name}::[mode] type_name{
type_name{;;
¾ [SIGNAL] signal_name {, signal_name}
signal_name}::[mode] type_name});
type_name});
instance_name : component_name PORT MAP(
formal_name => actual_name {, formal_name => actual_name })
});;
Ing. Wilmer Naranjo 34
ARQUITECTURA
¾ Es la encargada de la descripción del funcionamiento de
un circuito.
¾ D
Describe
ib ell ffuncionamiento
i i t iinterno
t d
de llas entidades.
tid d
¾ Pueden existir varias arquitecturas para una misma
entidad.

Niveles de arquitectura:

- Nivel Algorítmico
- Nivel RTL
- Nivel Lógico
Ing. Wilmer Naranjo 35
Nivel Algorítmico, funcional o
de comportamiento

¾ Es el nivel con mayor grado de abstracción


abstracción..

¾ El diseñador sólo describe el comportamiento del


sistema
i t sin
i preocuparse ded llas señales
ñ l o
componentes internos del mismo
mismo..

¾ Se suele hablar de éste nivel como


como:: Alto Nivel.
Nivel.

Ing. Wilmer Naranjo 36


Ejemplo:

Entity decodificador is
Port ((e0,e1,en:
, , in bit;;
s0,s1,s2,s3 : out bit);
End decodificador Ing. Wilmer Naranjo 37
Nivel Algorítmico
g
architecture algoritmica of decodificador is begin
process (e0,e1,en)
begin
if en=‘0’ then
s0<=‘0’; s1<=‘0’; s2<=‘0’; s3<=‘0’;
elsif e1=‘0’
e1= 0 and e0=‘0’
e0= 0 then
s0<=‘1’;
elsif e1=‘0’ and e0=‘1’ then
s1< ‘1’;
s1<=‘1’;
elsif e1=‘1’ and e0=‘0’ then
s2<=‘1’;
elsif
l if e1=‘1’
1 ‘1’ and
d e0=‘1’
0 ‘1’ th
then
s3<=‘1’;
end if;
endd process;
end algoritmica;
Ing. Wilmer Naranjo 38
Nivel RTL (Register Transfer Level) o
d fl
de flujo
j dde d
datos
t (D(Data
t Fl
Flow))

¾ Proporciona un cierto grado de


abstracción con respecto al hardware
hardware..

¾ Eldiseñador describe el sistema mediante


diagramas de transferencias entre
registros, tablas de verdad o ecuaciones
lógicas..
lógicas

Ing. Wilmer Naranjo 39


Nivel RTL
architecture RTL of decodificador is
signal e0n, e1n: bit;
begin
e0n<=not(e0);
e1n<=not(e1);
s0<= e0n and e1n and en;
s0<=
0< ((nott e0)
0) and
d not(e1)
t( 1) and
d en;
s1<= e0 and e1n and en;
s2<= e0n and e1 and en;
s3<= e0 and e1 and en;
end RTL;;

Ing. Wilmer Naranjo 40


Nivel Lógico o Estructural
¾ Utiliza los recursos que el lenguaje
proporciona para describir las
interconexiones entre los distintos
componentes de un circuito.
circuito.

¾ No se realiza una descripción del


comportamiento
p sino de la estructura del
mismo..
mismo

Ing. Wilmer Naranjo 41


Nivel Lógico
architecture estructural of decodificador is
signal e0n, e1n: bit;
component inversor is
port (e:in bit; s:out bit);
end component
component;;
component puerta_and
puerta and is
port (e0, e1,en:in bit; s:out bit);
end component
component;;
Begin
N0:inversor port map (e0, e0n);
N1:inversor port map (e1, e1n);
A0:puerta and port map (e0n,
A0:puerta_and (e0n e1n,
e1n en
en, s0);
A1:puerta_and port map (e0, e1n, en, s1);
A2:puerta_and port map (e0n, e1, en, s2);
A3:puerta and port map (e0,
A3:puerta_and (e0 e1
e1, en,
en s3);
end estructural;
Ing. Wilmer Naranjo 42
INSTRUCCIONES DE ASIGNACION CONCURRENTE
¾ Asignación de señales simples
Signal_name <= expression;

¾ Asignación de señales seleccionada


Whit expression
p SELECT
signal_name <= expression WHEN constant_value{,
expression WHEN constant_value};

¾ Asignación de señal condicional


signal_name
g <= expression WHEN logic_expression
g ELSE
{expression WHEN logic_expression ELSE}
expression;

¾ Instrucciones Generate
Ing. Wilmer Naranjo 43
COMPARADOR ASIGNACION
Entity comparador is
Port (A,B: in bit_vector (0 to 3); A 4 C
B E
C : out bit );
4
End comparador
architecture RTL of comparador is
BEGIN
C <= NOT ((A(0) ( ) XOR B(0))
( )) AND
NOT (A(1) XOR B(1)) AND
NOT (A(2) XOR B(2)) AND
NOT (A(3) XOR B(3));
end RTL;

Ing. Wilmer Naranjo 44


SELECTOR SELECCION
Entity selector is
Port (A,B: in bit_vector (1 to 4);
A 4 C
S: in bit; E
B 4
C : out bit_vector (1 to 4)); 4
End selector
architecture RTL of selector is S
begin
WITH S SELECT
C <= A WHEN ‘0’,
B WHEN OTHERS;
end RTL;

Ing. Wilmer Naranjo 45


SELECTOR 4
Entity selector4 is
Port (A,B,C,D: in bit_vector (1 to 4);
A 4 F
S: in bit_vector
bit vector (0 to 1);
B 4 4
F : out bit_vector (1 to 4));
C 4 E
End selector4
D 4
architecture RTL of selector4 is
begin
WITH S SELECT S
F <= A WHEN ‘00’,
B WHEN ‘01’,
C WHEN ‘10’,
D WHEN OTHERS;
end RTL;
Ing. Wilmer Naranjo 46
COMPARADOR CONDICIONAL
Entity comparador is
A 4 C
Port (A,B:
(A B: in bit_vector
bit vector (1 to 4); E
B
C : out bit ); 4
End comparador
architecture RTL of comparador is
BEGIN
C <= ‘1’1 when (a = b) else ‘0’;
0;
end RTL;

Ing. Wilmer Naranjo 47


SELECTOR
Entity selector2 is
Port (A,B: in bit_vector (1 to 4);
A 4 C
S: in bit; E
B 4
C : out bit_vector (1 to 4)); 4
End selector2
S
architecture RTL of selector2 is
begin
C <= A WHEN S= ‘0’ ELSE B;
end RTL;

Ing. Wilmer Naranjo 48


Asignación de señal recibida 2

¾ Otra forma:
¾ with - select - when - others

¾ Ejemplo:
With m select
T <=‘
<=‘11’ when 0 | 4 | 18
18;;
‘0’ when 14 | 16 | 20;
20;
‘z’ when others;
others;

¾ Las barras verticales (|) tienen el mismo


significado que la operación lógica or
or..
Ing. Wilmer Naranjo 49
PROCESO
¾ Es el mecanismo fundamental utilizado para describir el
comportamiento
p de una entidad
entidad..
¾ La arquitectura de una entidad descrita a nivel de
comportamiento incluye una o más procesos.
procesos.
¾ Es en sí una cláusula concurrente,, p
pero las sentencias
incluidas en él son secuenciales.
secuenciales.

¾ La declaración de los procesos comienza con el nombre


de éste, seguida por dos puntos (:) y luego, la palabra
clave PROCESS.
PROCESS.
¾ Después de la palabra clave es necesario detallar una
lista de señales, conocida como lista de sensibilidades.
sensibilidades.
¾ El objetivo de esta lista es activar el proceso, siempre y
cuando se active o cambie una de las señales
contenidas en dicha lista.
lista.
Ing. Wilmer Naranjo 50
Sintaxis del proceso
nombre_del_proceso: process (señal1, señal2,…,señaln)
Declaración de tipos
Declaración de variables
ariables
Declaración de constantes
Begin
g
Declaraciones secuenciales
.
.
.

Declaraciones secuenciales
end process nombre_del_proceso;
nombre del proceso;

Ing. Wilmer Naranjo 51


Declaración if - then
¾ La declaración if es una estructura de asignación
condicional, que permite la selección de instrucciones que
j
serán ejecutadas, dependiendo
p de una o más condiciones.
condiciones.
¾ Ejemplo::
Ejemplo
¾ If a=b then
E<=‘1
E<=‘
E<= 1’;
end if;
if;

Declaración if – then
then--else
Ejemplo:
Ejemplo:
If a
a=b
b then
E<=‘1
E<=‘1’;
else
E<=‘0
E<=‘ 0’;
end if;
if; Ing. Wilmer Naranjo 52
Declaración if – then
then--elsif
elsif--else

¾ Usada cuando es necesario varias estructuras if


anidadas (una en el interior de otras).

Ejemplo::
Ejemplo

If [A[3
[A[3]=‘1
]=‘1’] then Y <= “111 111””;
elsif [A[
[A[2
2]=
]=‘1
]=‘ 1’]] then Y <= “110
110””;
elsif [A[1
[A[1]=‘1
]=‘1’] then Y <= “101
101””;
elsif [A[0
[A[0]=‘1
]=‘1’] then Y <= “100
100””;
else Y <= “000000””;
end if;
if;

Ing. Wilmer Naranjo 53


Declaración Case
¾ Es muy útil cuando se disponen de varias alternativas a
partir del valor de una señal, o una expresión y se
necesita seleccionar sólo una
una..

Ejemplo::
Ejemplo

C
Case A iis
when “001” => Y[0] <= '0';
when “010” => Y[1] <= '0';
when “011” => Y[2] <= '0';
when “111” => Y[3] <= '0';
end case;

Ing. Wilmer Naranjo 54


Case--when
Case when--others
Ejemplo::
Ejemplo

Case A is
when “001” => Y[0] <= '0';
when “010” => Y[1] <= '0';
when “011” => Y[2] <= '0';
when “101” => Y[3] <= '0';
when
h others
th =>Y<=“1111”;
Y “1111”
end case;

Ing. Wilmer Naranjo 55


LOOP

VHDL provee d dos iinstrucciones


t i de
d ciclo:
i l
1.-- For --- loop
1.
2.-- While --- loop
2.
Estas instrucciones sirven para repetir una
o mas instrucciones de asignación
secuencial.

Ing. Wilmer Naranjo 56

También podría gustarte