Está en la página 1de 61

El arte de programar sistemas digitales

Por David G. Maxinex y Jessica Alcala


VHDL. Lenguaje para síntesis y modelado de circuitos.
(Fernando Pardo y José A. Boluda)

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 1


Lenguaje de programación (VHDL)

 El significado de las siglas VHDL es VHSIC (Very High


SpeedIntegratedCircuit) Hardware Description Language, es decir,
lenguaje de descripción hardware de circuitos integrados de muy alta
velocidad

 Permite integrar “Sistemas Digitales” que contienen una gran cantidad


de subsistemas electrónicos con el fin de minimizar el tamaño de la
aplicación. Ya sea en un solo CI y si el problema es complejo, a través de
una serie sucesiva de circuitos programables como CPLD (Dispositivo
Lógico Programable complejo o FPGA (Arreglo de Compuertas
Programables en campo).

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 2


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL
CARACTERISTICAS

 VHDL permite diseñar, modelar y comprobar un sistema desde un alto nivel de abstracción
bajando hasta el nivel de definición estructural de puertas.

 Los módulos creados en VHDL pueden utilizarse en diferentes diseños, lo que permite la
reutilización del código. Además, la misma descripción puede emplearse para diferentes
tecnologías sin tener que rediseñar todo el circuito.

 Basado en un estándar (IEEE Std 1076-1987, IEEE Std 1076-1993) pueden usar este lenguaje
para minimizar errores de comunicación y problemas de compatibilidad.

 VHDL permite diseño Top-Down, esto es, describir (modelar) el comportamiento de los
bloques de alto nivel, analizarlos (simularlos) y refinar la funcionalidad en alto nivel requerida
antes de llegar a niveles más bajos de abstracción de la implementación del diseño.

 Modularidad: VHDL permite dividir o descomponer un diseño hardware y su descripción


VHDL en unidades más pequeñas

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 3


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

 Existen dos formas de describir un circuito.

1. Estructural: se puede describir un circuito indicando los diferentes


componentes que lo forman y su interconexión, de esta manera se tiene
especificado un circuito y se sabe cómo funciona. Se captura el esquema y la de
descripción Netlist..
2. Comportamental o funcional: consiste en describir un circuito indicando lo
que hace o cómo funciona, es decir, describiendo su comportamiento.
Naturalmente esta forma de describir un circuito es preferible para un
diseñador puesto que lo que realmente le interesa es el funcionamiento del
circuito más que sus componentes.

1. Muchas veces la descripción Comportamental se divide a su vez en dos:


1. flujo de datos
2. algorítmica

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 4


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 5


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL
DESCRIPCION COMPORTAMENTAL

ENTITY mux IS
PORT (a: IN bit;
b: IN bit;
selec: IN bit;
salida: OUT bit) ;
END mux:

ARCHITECTURE comportamental OF mux IS


BEGIN
PROCESS (a, b, selec)
BEGIN
IF(selec ='0') THEN
salida <=a;
ELSE
salida <=b,
END IF;
END PROCESS;
END comportamental;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 6


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

 ARCHITECTURE flujo1 OF mux IS


 SIGNAL nosel, ax, bx: bit;
 BEGIN
 Nosel <= NOT selec;
ax <= a AND nosel;
bx <= b AND selec;
salida <= ax OR bx;
 ENDflujo1; MODO ESTRUCTURAL

ARCHITECTURE estructura OF mux IS
 ARCHITECTURE flujo2 OF mux IS
SIGNAL ax, bx, nosel: bit;
 BEGIN BEGIN
 Salida <=a WHEN selec='0' ELSE u0: ENTITY inv PORT MAP (e=>selec, y=> nosel);
 b; u1: ENTITY and2 PORT MAP(e1=>a, e2=>nosel, y=>ax);
 END flujo2; u2: ENTITY and2 PORT MAP(b, selec, bx);
u3: ENTITY or2 PORT MAP(e1=>ax,e2=>bx, y=>salida);
END estructura;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 7


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL
 Las palabras clave del VHDL'87 son las siguientes:

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 8


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL
 OPERADORES

 Operadores aritméticos
 **(exponencial). ABSS () . * (Multiplicación). / (División). MOD (módulo). REM (resto). +
(suma y signo positivo). - (resta y signo negativo).

 Operadores de desplazamiento
 SLL, SRL (desplazamiento lógico a izquierda y a derecha).
 SLA, SRA (desplazamiento aritmético a izquierda y derecha).
 ROL, ROR (rotación a izquierda y a derecha).

 Operadores relacionales
 =, /= (igualdad).
 <. <=, >, >= (menor mayor).

 Operadores lógicos
 NOT, AND, NAND, OR, NOR, XOR y en el VHDL'93 se añadió XNOR

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 9


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL
 Precedencia de operadores

 La precedencia de operadores se presenta en la tabla 4.1, encontrándose


ordenados de mayor precedencia (arriba) a menor (abajo). Los operadores que
se encuentran en la misma fila tienen la misma precedencia; por lo tanto, en
una expresión, se evaluará primero siguiendo el orden de izquierda a derecha
de la expresión. Al igual que en otros lenguajes, los paréntesis sirven para
evaluar primero operadores con menor precedencia.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 10


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

 UNIDADES BASICAS DE DISEÑO

 entity declaration (primaria)


 architecture (secundaria)
 configuration (primaria)
 package declaration (primaria)
 package body (secundaria)

 Una unidad es secundaria porque depende de una unidad primaria.

 Las dos primeras unidades Entity declaration y architecture son


indispensables en la estructura de un programa.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 11


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

 ENTIDAD – “Entity”

 Es el bloque elemental de diseño en VHDL donde se identifica con


claridad sus entradas y salidas generales.

 Entidades: elementos electrónicos que conforman un sistema digital


(sumadores, contadores, compuertas, flip flops, memorias,
Multiplexores etc.).

 Una entidad se puede representar por:

 Descripción ESTRUCTURAL (nivel de compuertas)


 Descripción COMPORTAMENTAL (funcional) de la entidad.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 12


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

EJEMPLOS
Sintaxis de una declaración VHDL.
ENTITY rom IS
ENTITY nombre IS GENERIC (tamano, ancho: positive);
PORT (enable : IN bit;
[GENERIC (lista de parámetros);)
address : IN bit vector(tamano-1 DOWNTO O);
[PORT (lista de puertos);) data: OUT bit_vector(ancho-1 DOWNTO O));
[declaraciones) END rom;
[BEGIN
sentencias) ENTITY procesador IS
GENERIC (max freq: frequency .- 30 MHz);
END [ENTITY] [nombre];
PORT (clk: IN bit;
address: OUT integer;
data: INOUT word 32;
control: OUT proc control;
ready: IN bit); -
END procesador;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 13


Librerias y Paquetes
Los modulos VHDL utilizan elementos definidos en paquetes contenidos en librerias. Las
librerías o paquetes permiten declarar y almacenar estructuras lógicas seccionadas o
complejas que facilitan el diseño.

LIBRARY (LIBRERÍA)

Una librería o biblioteca es un lugar al que se tiene acceso para utilizar unidades de diseño
predeterminadas por el fabricante de la herramienta.
En VHDL para sintesis, se usan librerías de fiabilidad probada como las llamadas
ieee y work así:

- ieee
std_logic_1164
std_logic_arith.all
std_logic_unsigned.all

- work
numeric_std
std_arith
gatesspkg
otra

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 14


Librerias y Paquetes
 Para un diseño VHDL el compilador crea automáticamente y utiliza una
librería “work”

 Una librería permite también almacenar resultados de la compilación de


un diseño, con el fin de utilizar en uno o varios programas.

 La librería work es el lugar establecido donde se almacenan los programas


que el usuario va generando. Comprende las unidades de diseño del
proyecto activo.

 Esta librería (work) se encuentra siempre presente en la compilación de un


diseño o diseños que guardan en ella mientras no se especifique otra cosa.

 “Std” contiene los paquetes “Standard” y “Textio” .


 “Standard” almacena fundamentalmente definiciones de tipo básico.
 “Textio” define tipos y funciones para el acceso a ficheros de texto.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 15


Librerias y Paquetes
 PACKAGES (PAQUETES)

 Un paquete VHDL es un archivo que contiene definiciones de objetos que


pueden ser utilizados en otros programas. La clase de objetos que pueden ser
puestos en un paquete incluye declaraciones de señal, tipo, constantes, función,
procedimiento y componentes.

 Es una unidad de diseño que permite desarrollar un programa en VHDL de una


forma ágil, debido a que contiene algoritmos preestablecidos (sumadores,
restadores, contadores, etc.) que ya tienen optimizado su comportamiento.

 Cuando en el diseño se utiliza un paquete es necesario llamar a la librería que lo


contiene, para esto se utiliza la siguiente declaración library ieee;

 El paquete std_logic_1164 contiene todos los tipos de datos que suelen


emplearse en VHDL ( std_logic_vector, std_logic), entre otros.

 Work. Siempre esta presente al desarrollar un diseño y no necesita declaración


library.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 16


Librerias y Paquetes
 El acceso a la información contenida en un paquete se hace por medio de la
sentencia use así:

 use nombre_libreria.nombre_paquete.all;
Ejemplo: use ieee.std_logic_1164.all;

 La palabra all indica que puede usar todas las definiciones almacenadas en el
paquete, en este archivo.

 Paquete numeric_std define funciones para realizar operaciones entre


diferentes tipos de datos, además los datos pueden representarse con signo o
sin este.

 Paquete numeric_bit define tipos de datos binarios c0n signo o sin este.

 Paquete std_arith define funciones y operaciones aritméticas, como igual (=),


mayor que (>), menor que (<) entre otros.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 17


Librerias y Paquetes
Ejemplo:
1. Circuito multiplicador de dos números de dos bits.

-- Declaración de entidad circuito multiplicador


library ieee;
use ieee.std_logic_1164.all;
entity multiplica is
port (X0 X1 ,Y0 ,Y1: in std_logic;
Z0 Z1 Z2 Z3: out std-logic);
end multiplica;

2. Circuito comparador de dos números de dos bits.

library ieee;
use ieee.std_logic_1164.all;
entity comp is
port (X ,Y: in bit_vector (1 downto 0);
C: out bit);
end comp;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 18


Librerias y Paquetes
 OBJETOS. Existen cuatro clases principales de Objetos:

 Literales. Datos de determinado tipo, sin nombre asociado.


Puede ser un entero o real, expresado en cualquier base entre 2 y 16. Si no se especifica la base, se entiende que
esta expresado en base 10. Si no aparece el punto decimal se trata de un entero. Ejemplo: 8#63.5#E-1 = 6.35 base 8.

 Constantes. Se declaran de dos formas .


 “GENERIC” se definen constantes caracteristicas de la entidad y por tanto de alcance global.
 “CONSTANT” se declaran constantes locales. Se define en laparte declarativa de las arquitecturas su rango
de validez es el de la arquitectura. Si se define dentro de un proceso, su alcance se reduce a este.

 Variables. Solo deben ser declaradas dentro de los procesos, especificando el nombre y tipo.
 Cambian su valor inmediatamente despues de una sentencia de asignación.
 Utiliza el simbolo “:=“. La operacion entre objetos siempre deben ser del mismo tipo de objetos a ambos lados
del operador asignado.

 “Señales”. Se utilizan en el intercambio de información digital.


 Detallan las conexiones entre diferentes bloques funcionales internos y con el exterior.
 Las señales pueden aparecer en cualquier entorno de ejecución, serie o concurrente y son de caracter global,
es decir pueden ser leidas por cualquier componente , bloque o proceso integrado en la arquitectura.
 Utiliza el simbolo “<=“ no actualiza su valor inmediatamente después, sino después de finalizar la ejecucion
concurrente en curso.

PROGRAMACION DE SISTEMAS DIGITALES


CON VHDL 19
Librerias y Paquetes
TIPOS Y ATRIBUTOS.
 TIPOS ESCALARES:
 Enteros. Se hace indicando el dominio de definición, con la sintasis: “IS RANGE__TO__”.
 Ej: TYPE ent1 IS RANGE 1 TO 64: (define un tipo entero “ent1”con rango comprendido en el
intervalo [1,64]
 Enumerados. Tomen valores que pertenecen a un conjunto finito, se define simplemente el
conjunto de valores posibles:
 TYPE estado IS (inicio, lee, escribe, triestado); cualquier señal o variable declarado como tipo
“estado” recibirá de uno de los cuatro valores indicados en la definicion del tipo. Por ejemplo:
SIGNAL S1: estado; - - S1 de tipo estado.
 …..
 S1 <= lee – valor lee a S1.
 TIPOS VECTORIALES:
 Matrices: conjuntos de datos de un mismo tipo y se declara con la palabra clave “ARRAY” El
numero de indices especifica la dimensión.
 Una vez declarada una matriz, se puede acceder individualmente a cada elemento especificando el indice entre
perentesis.
 TYPE string IS ARRAY (positive RANGE <>) OF character;
 TYPE bit_vector IS ARRAY (natural RANGE <>) OF bit;

PROGRAMACION DE SISTEMAS DIGITALES


CON VHDL 20
Librerias y Paquetes
 ATRIBUTOS.
 Los tipos, objetos denominados señales poseen un conjunto de atributos a
traves de los cuales se accede a la informacion relativa a ellos.
 El atributo predefinido más usado es “EVENT” que permite detectar transiciones en
el estado de las señales.
 Ejemplo: IF rel=‘O’ EVENT THEN
 El procedimiento incluye siempre una declaración y una asignación.
 ATTRIBUTE id_atrib:_atributo; - - declaracion
 ATTRIBUTE id_atrib OF id_elem: clase_elemento IS valor; asignación.
 Clases:

 Predefinidos.
 En una libreria estandard del lenguaje.
 En una libreria especifica del compilador.

 Definidos por el usuario.

PROGRAMACION DE SISTEMAS DIGITALES


CON VHDL 21
Librerias y Paquetes
OPERADORES Y EXPRESIONES
Operadores.
 El estándard IEEE 1076 clasifica los operadores en:
 Logicos: para operandos de tipo “bit” y “boolean”.
 AND, OR, NAND, NOR, XOR, XNOR, NOT.
 Aritmeticos: para datos ïnteger”.
 +(signo), -(signo), +, -, *, /, **, MOD, REM, ABS.
 Relacionales: para datos de cualquier tipo.
 =, /=, <, <=, >, >=
 Concatenación: para datos de un único tipo para construir u vector del mismo tipo. &.
NOTA: La asignacion de un valor a una señal utiliza el mismo simbolo que un operador
relacionl.
Expresionnes. Los operadores que se encuentran en una misma fila tienen la
misma prioridad, y se evaluan de izquierda a derecha en la expresión
excepto cuando los paréntesis expecifican otro orden.
Mayor: **, ABS, NOT,
*, /, MOD, REM
=(signo), -(signo), +, -, &
=, /=, <, <=, >=
Menor: AND, OR, NAND, NOR, XOR, XNOR

PROGRAMACION DE SISTEMAS DIGITALES


CON VHDL 22
ENTIDAD – “Entity”
 Puertos De Entrada – Salida “Port”

 port (signal-names: mode, signal-type); Se refiere a cada una de las señales de entrada y
salida, el cual equivale a un pin de un símbolo esquemático.

 signal-names (identificador): se utiliza como una forma de llamar un puerto.

 mode: permite definir la dirección que tomara la información.

 In: La señal es una entrada a la entidad.

 Out: La señal es una salida de la entidad. Note que el valor de esta señal no puede ser
leída dentro de la arquitectura de la entidad, solamente por otras entidades que la
utilicen.

 Inout: La señal se puede emplear como una entrada o una salida. Este modo es
típicamente utilizado para terminales de entrada/salida de tres estados en un PLD.

 Buffer: La señal es una salida de la entidad y su valor puede ser leído dentro de la
arquitectura de la entidad. Retroalimentaciones internas declaradas se comporta
como una terminal de salida.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 23


ENTIDAD – “Entity”
 signal-type: clase de información que se transmite por el puerto. Se
asignan de acuerdo a un diseño en particular. Algunos tipos mas
utilizados son:
 Bit el cual tiene valores de ‘0’ y ‘1’ lógico.

 Boolean (booleano) que define los valores de FALSO o VERDADERO en una


expresión.

 Bit_vector (vectores de bits) conjunto de bits para cada variable de entrada o salida.

 Integer (numero entero) que representa un numero entero’

 std_logic para definir puertos escalares asociados a lineas individuales.

 std_logic_vector para los puertos vectoriales, asociados a buses de varias lineas.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 24


ENTIDAD – “Entity”
Ejemplo de una Entidad para un sumador de un bit.

- -Declaración De la Entidad de un circuito Sumador


entity sumador is
port (A,B, Cin: in bit;
SUMA, Cout: out bit);
end Sumador;

Las palabras en negrillas son reservadas para el lenguaje de


programación VHDL.

 -- Texto comentario que es ignorado por el compilador.


 ; Se usa para finalizar una declaración.
 : Se usa para asignar nombres a las entradas salidas

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 25


ENTIDAD – “Entity”
 Especificaciones o reglas para identificadores
(nombre)

El primer carácter es una letra mayúscula o minúscula.


 4suma Suma4

El segundo carácter no puede ser un guión bajo S_4bits.


 S_4bits S4_bits

Dos guiones juntos no son permitidos.


 Resta_ _4 Resta_4_

Un identificador no puede utilizar símbolos.


 Clear#8 Clear_8_

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 26


ENTIDAD – “Entity”
 Declaracion de Entidades Mediante Vectores

Las palabras binarias se conocen como vectores de bits, los cuales se consideran un grupo y no
como bits individuales.

Ejemplo: Sumador de dos números de 4 bits.

Los tres vectores A, B, SUMA se definen con cuatro componentes distribuidos en orden
descendente por medio del comando:
3 downto 0 (3 hacia 0) Indica el orden de aparición en sentido descendente
0 to 3 (0 hasta 3) Indica el orden de aparición en sentido ascendente.

Los cuales se agruparían de la siguiente manera:

Vector_A(3) = A3 Vector_B(3) = B3 Vector_SUMA(3) = S3


Vector_A(2) = A2 Vector_B(2) = B2 Vector_SUMA(2) = S2
Vector_A(1) = A1 Vector_B(2) = B1 Vector_SUMA(1) = S1
Vector_A(0) = A0 Vector_B(0) = B0 Vector_SUMA(0) = S

Una vez se ha establecido el orden en que aparecerán los bits enunciados en cada vector, no se
puede modificar a menos que se utilice el comando to.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 27


ENTIDAD – “Entity”
Luego la declaración será:

-- Declaración de la entidad circuito sumador


entity sumador is
port (A,B: in bit_vector (3 downto 0);
Cin: in bit;
Cout: in bit;
SUMA: out bit_vector (3 downto 0);
end sumador;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 28


ARQUITECTURA (architecture)
 En la arquitectura es donde se define el funcionamiento del módulo
definido en la entidad.

 Una arquitectura siempre está referida a una entidad concreta, por lo


que no tiene sentido hacer declaraciones de arquitectura sin especificar
la entidad.

 Una misma entidad puede tener diferentes arquitecturas, pero es en el


momento de la simulación, o la síntesis, cuando se especifica qué
arquitectura concreta se quiere simular o sintetizar.

 La declaración de la arquitectura se realiza con la palabra clave


ARCHITECTURE, y su sintaxis completa es:

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 29


ARQUITECTURA (architecture)
 Descripción Estilo Funcional (comportamental)

 En la arquitectura es donde se define el funcionamiento del módulo definido en la


entidad.

 Una arquitectura siempre está referida a una entidad concreta, por lo que no tiene
sentido hacer declaraciones de arquitectura sin especificar la entidad.

 Una misma entidad puede tener diferentes arquitecturas, pero es en el momento de


la simulación, o la síntesis, cuando se especifica qué arquitectura concreta se quiere
simular o sintetizar.

 La declaración de la arquitectura se realiza con la palabra clave ARCHITECTURE, y


su sintaxis completa es:

 ARCHITECTURE nombre OF nombre entidad IS


 [declaraciones] -
 BEGIN
 [sentencias concurrentes]
 END [ARCHITECTURE] (nombre);

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 30


ARQUITECTURA (architecture)
 El VHDL permite mediante un algoritmo de programación describir los diseños
desde el nivel de compuertas hasta sistemas complejos.

 Sintaxis de una definición de arquitectura VHDL.

Architecture architecture-name of entity-name is


type declarations
signal declarations
constant declarations
function definitions
procedure definitions
component declarations
begin
concurrent-statement
……….
concurrent-statement
end architecture-name

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 31


ARQUITECTURA (architecture)
 Ejemplo1: Comparador de dos números de dos bits:
Si A = B entonces C = 1
Si A ≠ B entonces C = 0

Su Arquitectura funcional será:

-- Declaración de entidad circuito comparador


library ieee;
use ieee.std_logic_1164.all;
entity comp is
port (A,B: in bit_vector (1 downto 0);
C: out bit);
end comp;

architecture functional of comp is


begin
compara: process (A,B)
begin
if A = B then
C = ‘1’;
else
C = ‘0’;
end if;
end process compara;
end functional;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 32


ARQUITECTURA (architecture)
 Ejemplo 2: Describa mediante declaraciones del tipo if~then~else el funcionamiento
de una compuerta OR con base a la tabla de verdad.

-- Declaración de funcional compuerta OR


library ieee;
use ieee.std_logic_1164.all;
entity com_or is
port (A,B: in std_logic;
C: out std_logic);
end com_or;
architecture functional of com_or is
begin
process (A,B) begin
if (A = ‘0’ and B = ‘0’) then
C <= ‘0’;
else
C <= ‘1’;
end if;
end process;
end functional;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 33


ARQUITECTURA (architecture)
Donde:

 begin: Señala el inicio de la sección donde se comienza a declarar el


proceso que rige el comportamiento del sistema.

 La declaración del proceso (process) se utiliza para la definición del


algoritmo etiqueta opcional:

 El process se une con la lista sensitiva (A,B, etc) que hace referencia a las
señales que determinan el funcionamiento del proceso.

 El proceso se ejecuta mediante declaraciones secuenciales del tipo


if~then~else.

 Una vez se ha definido el proceso se termina con la palabra end process.


 Luego se termina la arquitectura con end (nombre) en el siguiente renglón.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 34


ARQUITECTURA (architecture)
Descripción Estilo flujo de datos.

Varias instrucciones concurrentes adicionales permiten a VHDL, describir un


circuito en términos de flujo de datos y operaciones activadas dentro del
circuito.

Indica la forma en que los datos se pueden transferir de una señal a otra sin
necesidad de declaraciones secuenciales if – then - else.

Este tipo de descripción puede utilizar dos formatos:

Mediante instrucciones when - else o with - select


Mediante ecuaciones booleanas

La forma de flujo de datos en cualquiera de sus representaciones describe el


camino que los datos siguen al ser transferidos de las operaciones efectuadas
entre las señales de entrada y las señales de salida.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 35


ARQUITECTURA (architecture)
Mediante instrucciones when - else.

En este caso se elimina el proceso y las declaraciones secuenciales if – then - else.

Tomando el ejemplo del comparador, la arquitectura por flujo de datos será:

-- Declaración de entidad circuito comparador


library ieee;
use ieee.std_logic_1164.all;
entity comp is
port (A,B: in bit_vector (3 downto 0);
C: out bit);
end comp;

architecture f_datos of comp is


begin
C = ‘1’ when (A = B) else ‘0’;
end f_datos;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 36


ARQUITECTURA (architecture)
Para el caso de la compuerta OR será:

-- Declaración de funcional compuerta OR


library ieee;
use ieee.std_logic_1164.all;
entity com_or is
port (A,B: in std_logic;
C: out std_logic);
end com_or;

architecture compuerta of com_or is


begin
f <= ‘0’ when (A = ‘0’ and B = ‘0’) else
‘1’;
end compuerta;

NOTA: En el caso anterior se tiene una declaración secuencial donde su ejecución debe
seguir un orden para evitar la pérdida de la lógica descrita. En este caso se tiene una
declaración concurrente donde no importa el orden que se ejecuta.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 37


ARQUITECTURA (architecture)
Mediante ecuaciones booleanas.

Este estilo considera las ecuaciones booleanas del circuito digital de acuerdo a su organización
interna.
Si tomamos el comparador de dos bits, se puede representar por medio de compuertas lógicas
básicas y su ecuación booleana será: F = (A(1) xnor B(1)) (A(0) xnor B(0))

-- Declaración de entidad circuito comparador


library ieee;
use ieee.std_logic_1164.all;
entity comp is
port (A,B: in bit_vector(1 downto 0);
C: out bit);
end comp;

architecture booleana of comp is


begin
C <= (A(1) xnor B(1) and A(0) xnor B(0);
end booleana;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 38


ARQUITECTURA (architecture)
Mediante ecuaciones booleanas.

Este estilo considera las ecuaciones booleanas del circuito digital de acuerdo a su
organización interna.
F = A or B
Para la compuerta OR

-- Declaración de funcional compuerta OR


library ieee;
use ieee.std_logic_1164.all;
entity com_or is
port (A,B: in std_logic;
C: out std_logic);
end com_or;

architecture compuerta of com_or is


begin
f <= ( A or B);
end compuerta;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 39


ARQUITECTURA (architecture)
Descripción Estilo estructural.

Para iniciar la programación de una entidad de manera estructural es necesario la


descomposición lógica del diseño en pequeños submodulos (jerarquizada), los cuales
permiten analizar de manera practica el circuito ya que la función de entrada / salida es
conocida.

En VHDL es importante aclarar que una jerarquía se refiere al procedimiento de dividir en


bloques y no a que un bloque tenga mayor jerarquía que otro.

La salida de cada uno de los bloques se maneja como una señal, las cuales se declaran
dentro de la arquitectura y no en la entidad, debido a que no representan a una terminal
(pin) y solo se utilizan para conectar bloques de manera interna a la entidad.

En el caso del comparador cada compuerta se encuentra dentro de un paquete


gatesspkg,6 del cual se toman la estructura del diseño.

Este tipo de arquitecturas estándares se conoce como componentes.

En VHDL conectividad se conoce como netlist7 o listado de componentes.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 40


ARQUITECTURA (architecture)
Instrucción component es la mas fundamental de las instrucciones concurrentes y tiene
la siguiente sintaxis:

label: component-name port map (signal1, signal2,…..,signaln);

label: component-name port map (port1=>signal1, port1=>signal2,….., port1=>signaln);

component component-name
port (signal-name : mode signal-type ;
signal-name : mode signal-type ;
…………
signal-name : mode signal-type) ;
end component ;

Las palabras clave port map introducen una lista que asocia los puertos de la entidad
nombrada con señales en la arquitectura actual. La lista puede escribirse en dos estilos
diferentes:

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 41


ARQUITECTURA (architecture)
El siguiente listado muestra la descripción estructural del comparador .

-- Declaración de entidad circuito comparador


library ieee;
use ieee.std_logic_1164.all;
entity comp is
port (A,B: in bit_vector(0 to 1);
C: out bit);
end comp;
use work.compuerta.all;

architecture estructural of comp is


signal X: bit_vector (0 to 1);
begin
U0: xnor2 port map (A(0), B(0), X(0);
U1: xnor2 port map (A(1), B(1), X(1);
U2: and2 port map (X(0), X(1), C);
end estructural;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 42


ARQUITECTURA (architecture)

-- Declaración de entidad circuito combinatorio


library ieee;
use ieee_std_logic_1164.all;
entity combina is
port (A,B,C: in std_logic;
F: out std_logic);
end combina;
use work.compuerta.all;

architecture estructural of combina is


signal X: bit_vector (0 to 2);
begin
U0: and2 port map (B, C, X(0);
U1: and2 port map (C, A, X(1);
U2: and2 port map (A, B, X(2));
U3: or3 port map (X(0), X(1), X(2), F);
end estructural;

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 43


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Programación de estructuras básicas mediante declaraciones
concurrentes.

Las declaraciones concurrentes se encuentran fuera de la declaración de un


proceso y suelen usarse en las descripciones de flujo de datos y estructural.

En la declaración concurrente no importa el orden en que se escriban las


señales, ya que el resultado para determinada función seria el mismo.

Tipos de declaraciones concurrentes:

 Declaraciones condicionales asignadas a una señal (when - else).

 Declaraciones concurrentes asignadas a señales.

 Selección de una señal (with - select- when).

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 44


V.H.D.L. DISEÑO LOGICO COMBINATORIO

Operadores Lógicos.

Los operadores lógicos más utilizados son: AND, OR, NAND, NOR, XOR,
XNOR y NOT.

Las operaciones que se efectúen entre ellos (excepto not ) deben


realizarse con datos que tengan la misma longitud o palabras de bits.

En el momento de ser compilados los operadores lógicos presentan el


siguiente orden y prioridad:

1. Expresiones entre paréntesis


2. Complementos
3. Función OR
4. Función AND

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 45


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Declaraciones condicionales asignadas a una señal (when - else).

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 46


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Declaraciones condicionales asignadas a una señal (when - else).

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 47


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Declaraciones concurrentes asignadas a señales.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 48


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Selección de una señal (with-select-when )|

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 49


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Declaraciones secuenciales (if-else-end if)

 Las declaraciones secuenciales son


aquellas en las que el orden que
llevan pueden tener efecto
significativo en la lógica descrita.
Una secuencia debe ejecutarse en el
orden en que aparece y forma parte
de un proceso (process).

 El siguiente ejemplo del comparador


dos números de dos bits (a,b) y
compara los números si son iguales
o son diferentes.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 50


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Declaraciones secuenciales (if-elsif-else-end if)

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 51


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Declaraciones secuenciales (Tri-state)

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 52


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Descripción de Multiplexores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 53


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Descripción de Sumadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 54


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Descripción de Sumadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 55


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Descripción de Sumadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 56


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Descripción de Decodificadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 57


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Descripción de Decodificadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 58


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Descripción de Decodificadores BCD a 7 Segmentos

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 59


V.H.D.L. DISEÑO LOGICO COMBINATORIO
Descripción de Codificadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 60


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 61

También podría gustarte