Está en la página 1de 61

El arte de programar sistemas digitales Por David G. Maxinex y Jessica Alcala VHDL. Lenguaje para sntesis y modelado de circuitos.

(Fernando Pardo y Jos A. Boluda)

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

Lenguaje de programacin
El

(VHDL)

significado de las siglas VHDL es VHSIC (Very High SpeedIntegratedCircuit) Hardware Description Language, es decir, lenguaje de descripcin hardware de circuitos integrados de muy alta velocidad

Permite integrar Sistemas Digitales que contienen una gran cantidad

de subsistemas electrnicos con el fin de minimizar el tamao de la aplicacin. Ya sea en un solo CI y si el problema es complejo, a travs de una serie sucesiva de circuitos programables como CPLD (Dispositivo Lgico Programable complejo o FPGA (Arreglo de Compuertas Programables en campo).

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL


CARACTERISTICAS
VHDL permite disear, modelar y comprobar un sistema desde un alto nivel de abstraccin

bajando hasta el nivel de definicin estructural de puertas.


Los mdulos creados en VHDL pueden utilizarse en diferentes diseos, lo que permite la reutilizacin del cdigo. Adems, la misma descripcin puede emplearse para diferentes tecnologas sin tener que redisear todo el circuito.
Basado en un estndar (IEEE Std 1076-1987, IEEE Std 1076-1993) pueden usar este lenguaje

para minimizar errores de comunicacin y problemas de compatibilidad.


VHDL permite diseo 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 ms bajos de abstraccin de la implementacin del diseo.
Modularidad: VHDL permite dividir o descomponer un diseo hardware y su descripcin

VHDL en unidades ms pequeas

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

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 interconexin, de esta manera se tiene especificado un circuito y se sabe cmo funciona. Se captura el esquema y la de descripcin Netlist.. 2. Comportamental o funcional: consiste en describir un circuito indicando lo que hace o cmo funciona, es decir, describiendo su comportamiento. Naturalmente esta forma de describir un circuito es preferible para un diseador puesto que lo que realmente le interesa es el funcionamiento del circuito ms que sus componentes.
1.

Muchas veces la descripcin Comportamental se divide a su vez en dos: 1. flujo de datos 2. algortmica
PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 4

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

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; ARCHITECTURE flujo2 OF mux IS BEGIN Salida <=a WHEN selec='0' ELSE b; END flujo2;

MODO ESTRUCTURAL

ARCHITECTURE estructura OF mux IS SIGNAL ax, bx, nosel: bit; BEGIN u0: ENTITY inv PORT MAP (e=>selec, y=> nosel); u1: ENTITY and2 PORT MAP(e1=>a, e2=>nosel, y=>ax); 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

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL


Las palabras clave del VHDL'87 son las siguientes:

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

OPERADORES

Operadores aritmticos **(exponencial). ABSS () . * (Multiplicacin). / (Divisin). MOD (mdulo). REM (resto). + (suma y signo positivo). - (resta y signo negativo).
Operadores de desplazamiento SLL, SRL (desplazamiento lgico a izquierda y a derecha). SLA, SRA (desplazamiento aritmtico a izquierda y derecha). ROL, ROR (rotacin a izquierda y a derecha). Operadores relacionales =, /= (igualdad). <. <=, >, >= (menor mayor). Operadores lgicos NOT, AND, NAND, OR, NOR, XOR y en el VHDL'93 se aadi XNOR

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL


Precedencia de operadores
La precedencia de operadores se presenta en la tabla 4.1, encontrndose 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 expresin, se evaluar primero siguiendo el orden de izquierda a derecha de la expresin. Al igual que en otros lenguajes, los parntesis sirven para evaluar primero operadores con menor precedencia.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

10

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL


UNIDADES BASICAS DE DISEO
entity declaration architecture

configuration
package declaration package body

(primaria) (secundaria) (primaria) (primaria) (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 diseo en VHDL donde se identifica con

claridad sus entradas y salidas generales. (sumadores, contadores, Multiplexores etc.).

Entidades: elementos electrnicos que conforman un sistema digital

compuertas,

flip

flops,

memorias,

Una entidad se puede representar por:


Descripcin ESTRUCTURAL (nivel de compuertas) Descripcin COMPORTAMENTAL (funcional) de la entidad.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

12

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL


EJEMPLOS Sintaxis de una declaracin VHDL. ENTITY nombre IS [GENERIC (lista de parmetros);) [PORT (lista de puertos);) [declaraciones) [BEGIN sentencias) END [ENTITY] [nombre]; ENTITY rom IS GENERIC (tamano, ancho: positive); PORT (enable : IN bit; address : IN bit vector(tamano-1 DOWNTO O); data: OUT bit_vector(ancho-1 DOWNTO O)); END rom; ENTITY procesador IS GENERIC (max freq: frequency .- 30 MHz); 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 libreras o paquetes permiten declarar y almacenar estructuras lgicas seccionadas o complejas que facilitan el diseo. LIBRARY (LIBRERA) Una librera o biblioteca es un lugar al que se tiene acceso para utilizar unidades de diseo predeterminadas por el fabricante de la herramienta. En VHDL para sintesis, se usan libreras 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 diseo VHDL el compilador crea automticamente y utiliza una

librera work
Una librera permite tambin almacenar resultados de la compilacin de

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


La librera work es el lugar establecido donde se almacenan los programas

que el usuario va generando. Comprende las unidades de diseo del proyecto activo.
Esta librera (work) se encuentra siempre presente en la compilacin de un

diseo o diseos que guardan en ella mientras no se especifique otra cosa.


Std contiene los paquetes Standard y Textio .
Standard almacena fundamentalmente definiciones de tipo bsico. 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 seal, tipo, constantes, funcin, procedimiento y componentes. Es una unidad de diseo 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 diseo se utiliza un paquete es necesario llamar a la librera que lo contiene, para esto se utiliza la siguiente declaracin 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 diseo y no necesita declaracin library.


PROGRAMACION DE SISTEMAS DIGITALES CON VHDL 16

Librerias y Paquetes
El acceso a la informacin 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, adems 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 aritmticas, como igual (=), mayor que (>), menor que (<) entre otros.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

17

Librerias y Paquetes
Ejemplo: 1. Circuito multiplicador de dos nmeros de dos bits. -- Declaracin 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 nmeros 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 asignacin. Utiliza el simbolo :=. La operacion entre objetos siempre deben ser del mismo tipo de objetos a ambos lados del operador asignado. Seales. Se utilizan en el intercambio de informacin digital. Detallan las conexiones entre diferentes bloques funcionales internos y con el exterior. Las seales pueden aparecer en cualquier entorno de ejecucin, 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 despus, sino despus 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 definicin, con la sintasis: IS RANGE__TO__. Ej: TYPE ent1 IS RANGE 1 TO 64: (define un tipo entero ent1con 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 seal 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. Matrices: conjuntos de datos de un mismo tipo y se declara con la palabra clave ARRAY El numero de indices especifica la dimensin.

TIPOS VECTORIALES:

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 seales poseen un conjunto de atributos a traves de los cuales se accede a la informacion relativa a ellos.
El atributo predefinido ms usado es EVENT que permite detectar transiciones en

el estado de las seales. Ejemplo: IF rel=O EVENT THEN El procedimiento incluye siempre una declaracin y una asignacin. ATTRIBUTE id_atrib:_atributo; - - declaracion ATTRIBUTE id_atrib OF id_elem: clase_elemento IS valor; asignacin.

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 estndard IEEE 1076 clasifica los operadores en:


Logicos: para operandos de tipo bit y boolean.

AND, OR, NAND, NOR, XOR, XNOR, NOT. +(signo), -(signo), +, -, *, /, **, MOD, REM, ABS. =, /=, <, <=, >, >=

Aritmeticos: para datos nteger.

Relacionales: para datos de cualquier tipo.

Concatenacin: para datos de un nico tipo para construir u vector del mismo tipo. &.

NOTA: La asignacion de un valor a una seal 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 expresin excepto cuando los parntesis expecifican otro orden. Mayor: **, ABS, NOT, *, /, MOD, REM
Menor: =(signo), -(signo), +, -, & =, /=, <, <=, >= 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 seales de entrada y salida, el cual equivale a un pin de un smbolo esquemtico. signal-names (identificador): se utiliza como una forma de llamar un puerto.

mode: permite definir la direccin que tomara la informacin.


In: La seal es una entrada a la entidad. Out: La seal es una salida de la entidad. Note que el valor de esta seal no puede ser

leda dentro de la arquitectura de la entidad, solamente por otras entidades que la utilicen. tpicamente utilizado para terminales de entrada/salida de tres estados en un PLD.

Inout: La seal se puede emplear como una entrada o una salida. Este modo es

Buffer: La seal es una salida de la entidad y su valor puede ser ledo 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 informacin que se transmite por el puerto. Se

asignan de acuerdo a un diseo en particular. Algunos tipos mas utilizados son:


Bit el cual tiene valores de 0 y 1 lgico. Boolean (booleano) que define los valores de FALSO o VERDADERO en una

expresin.

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.

- -Declaracin 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 programacin VHDL.


-- Texto comentario que es ignorado por el compilador. ; Se usa para finalizar una declaracin. : Se usa para asignar nombres a las entradas salidas

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

25

ENTIDAD Entity
Especificaciones o reglas para identificadores

(nombre)
4suma

El primer carcter es una letra mayscula o minscula.


Suma4

El segundo carcter no puede ser un guin bajo S_4bits.


S_4bits

S4_bits

Dos guiones juntos no son permitidos.


Resta_ _4

Resta_4_

Un identificador no puede utilizar smbolos.


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 nmeros 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 aparicin en sentido descendente 0 to 3 (0 hasta 3) Indica el orden de aparicin en sentido ascendente. Los cuales se agruparan de la siguiente manera: Vector_A(3) = A3 Vector_A(2) = A2 Vector_A(1) = A1 Vector_A(0) = A0 Vector_B(3) = B3 Vector_B(2) = B2 Vector_B(2) = B1 Vector_B(0) = B0 Vector_SUMA(3) = S3 Vector_SUMA(2) = S2 Vector_SUMA(1) = S1 Vector_SUMA(0) = S

Una vez se ha establecido el orden en que aparecern 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 declaracin ser:
-- Declaracin 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 mdulo

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 simulacin, o la sntesis, cuando se especifica qu arquitectura concreta se quiere simular o sintetizar.
La declaracin de la arquitectura se realiza con la palabra clave

ARCHITECTURE, y su sintaxis completa es:

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

29

ARQUITECTURA (architecture)

Descripcin Estilo Funcional (comportamental)


entidad.

En la arquitectura es donde se define el funcionamiento del mdulo definido en la 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 simulacin, o la sntesis, cuando se especifica qu arquitectura concreta se quiere simular o sintetizar.

La declaracin 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 programacin describir los diseos desde el nivel de compuertas hasta sistemas complejos.
Sintaxis de una definicin 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 nmeros de dos bits: Si A = B entonces C = 1 Si A B entonces C = 0

Su Arquitectura funcional ser: -- Declaracin 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.
-- Declaracin 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: Seala el inicio de la seccin donde se comienza a declarar el

proceso que rige el comportamiento del sistema.

La declaracin del proceso (process) se utiliza para la definicin del

algoritmo etiqueta opcional:

El process se une con la lista sensitiva (A,B, etc) que hace referencia a las

seales que determinan el funcionamiento del proceso. if~then~else.

El proceso se ejecuta mediante declaraciones secuenciales del tipo


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 rengln.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

34

ARQUITECTURA (architecture)
Descripcin Estilo flujo de datos. Varias instrucciones concurrentes adicionales permiten a VHDL, describir un circuito en trminos de flujo de datos y operaciones activadas dentro del circuito. Indica la forma en que los datos se pueden transferir de una seal a otra sin necesidad de declaraciones secuenciales if then - else. Este tipo de descripcin 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 seales de entrada y las seales 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:
-- Declaracin 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: -- Declaracin 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 declaracin secuencial donde su ejecucin debe seguir un orden para evitar la prdida de la lgica descrita. En este caso se tiene una declaracin 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 organizacin interna. Si tomamos el comparador de dos bits, se puede representar por medio de compuertas lgicas bsicas y su ecuacin booleana ser: F = (A(1) xnor B(1)) (A(0) xnor B(0)) -- Declaracin 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 organizacin interna. F = A or B Para la compuerta OR -- Declaracin 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)
Descripcin Estilo estructural.

Para iniciar la programacin de una entidad de manera estructural es necesario la descomposicin lgica del diseo en pequeos submodulos (jerarquizada), los cuales permiten analizar de manera practica el circuito ya que la funcin de entrada / salida es conocida.
En VHDL es importante aclarar que una jerarqua se refiere al procedimiento de dividir en bloques y no a que un bloque tenga mayor jerarqua que otro. La salida de cada uno de los bloques se maneja como una seal, 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 diseo. Este tipo de arquitecturas estndares se conoce como componentes. En VHDL conectividad se conoce como netlist7 o listado de componentes.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

40

ARQUITECTURA (architecture)
Instruccin 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 seales 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 descripcin estructural del comparador .

-- Declaracin 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)
-- Declaracin 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. DISEO LOGICO COMBINATORIO


Programacin de estructuras bsicas mediante declaraciones concurrentes.

Las declaraciones concurrentes se encuentran fuera de la declaracin de un proceso y suelen usarse en las descripciones de flujo de datos y estructural. En la declaracin concurrente no importa el orden en que se escriban las seales, ya que el resultado para determinada funcin seria el mismo. Tipos de declaraciones concurrentes:
Declaraciones condicionales asignadas a una seal (when - else). Declaraciones concurrentes asignadas a seales. Seleccin de una seal (with - select- when).

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

44

V.H.D.L. DISEO LOGICO COMBINATORIO


Operadores Lgicos.
Los operadores lgicos ms utilizados son: AND, OR, NAND, NOR, XOR, XNOR y NOT. Las operaciones que se efecten 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 lgicos presentan el siguiente orden y prioridad:
1. 2. 3. 4.

Expresiones entre parntesis Complementos Funcin OR Funcin AND

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

45

V.H.D.L. DISEO LOGICO COMBINATORIO


Declaraciones condicionales asignadas a una seal (when - else).

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

46

V.H.D.L. DISEO LOGICO COMBINATORIO


Declaraciones condicionales asignadas a una seal (when - else).

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

47

V.H.D.L. DISEO LOGICO COMBINATORIO


Declaraciones concurrentes asignadas a seales.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

48

V.H.D.L. DISEO LOGICO COMBINATORIO


Seleccin de una seal (with-select-when )|

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

49

V.H.D.L. DISEO 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 lgica descrita. Una secuencia debe ejecutarse en el orden en que aparece y forma parte de un proceso (process).
El siguiente ejemplo del comparador dos nmeros de dos bits (a,b) y compara los nmeros si son iguales o son diferentes.

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

50

V.H.D.L. DISEO LOGICO COMBINATORIO


Declaraciones secuenciales (if-elsif-else-end if)

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

51

V.H.D.L. DISEO LOGICO COMBINATORIO


Declaraciones secuenciales (Tri-state)

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

52

V.H.D.L. DISEO LOGICO COMBINATORIO


Descripcin de Multiplexores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

53

V.H.D.L. DISEO LOGICO COMBINATORIO


Descripcin de Sumadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

54

V.H.D.L. DISEO LOGICO COMBINATORIO


Descripcin de Sumadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

55

V.H.D.L. DISEO LOGICO COMBINATORIO


Descripcin de Sumadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

56

V.H.D.L. DISEO LOGICO COMBINATORIO


Descripcin de Decodificadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

57

V.H.D.L. DISEO LOGICO COMBINATORIO


Descripcin de Decodificadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

58

V.H.D.L. DISEO LOGICO COMBINATORIO


Descripcin de Decodificadores BCD a 7 Segmentos

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

59

V.H.D.L. DISEO LOGICO COMBINATORIO


Descripcin de Codificadores

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

60

PROGRAMACION DE SISTEMAS DIGITALES CON VHDL

61

También podría gustarte