Está en la página 1de 69

Sesión VI

2
 Definir el lenguaje de descripción del hardware.

 Identificar los elementos principales del VHDL.

 Implementar descripciones RTL o de flujo de datos.

 Implementar descripciones estructurales o lógicas.

3
Un lenguaje de descripción del hardware (HDL) es una
herramienta formal que sirve para describir la
arquitectura y comportamiento de un circuito o sistema
electrónico, utilizando diferentes niveles de abstracción
y, en muchos casos, el modo jerárquico.

4
 Nivel sistema: Describe el sistema como un conjunto de módulos
cooperantes, no se específica la forma de realizar cada módulo.

 Nivel Algorítmico: Cada módulo se define mediante un algoritmo en


lenguaje de alto nivel.

 Nivel RTL (Register Transfer Level) o flujo de datos: Se describe el


sistema mediante diagramas de transferencia entre registros, tablas de
verdad o ecuaciones lógicas. Lo importante es “qué hace” y no “cómo lo
hace”.
5
 Nivel lógico: Descripción mediante interconexión de bloques básicos
como puertas lógicas, no se describe comportamiento sino estructura.

 Nivel Conmutador: Las puertas se sustituyen por transistores


considerados como conmutadores ideales (0 o 1).

 Nivel Eléctrico: En éste, se usan modelos reales del transistor.

 Nivel Físico: Descripción geométrica o simbólica de las máscaras o capas


semiconductoras empleadas en la fabricación de los circuitos digitales.
6
 HDL de bajo nivel: Permite definir un circuito a nivel de su
arquitectura con poco nivel de abstracción. Ejemplos: ABEL y
PALASM.

 HDL de nivel medio: Permite definir un circuito con mayor


nivel de abstracción y utilizar el modo jerárquico. Un lenguaje
de este tipo es el AHDL de Altera.

 HDL de alto nivel: Permite definir un circuito o sistema con


un gran nivel de abstracción, además de utilizar el modo
jerárquico.
 Lenguajes de este tipo: VERILOG y VHDL, con estándares
de la IEEE.
7
 PALASM: PAL Assembler. Surgió en 1978 de la Monolithic
Memories. Se basa en el uso de ecuaciones lógicas o tablas
de verdad. Esta en desuso.

 ABEL: Advanced Bolean Expresión Language. Surgió en 1983


de Signetics y Data I/O. Desde 1990, diferentes fabricantes de
circuitos PLD desarrollaron sistemas CAD basados en
lenguajes no estructurados como ABEL.

 AHDL: Altera Hardware Description Language surge en 1989,


solo aplicable con herramientas CAD y productos de Altera.

8
 Simultáneamente con el desarrollo de VHDL, la empresa
Gateway Design Automation (actualmente Cadence)
desarrolló el Verilog; Verify Logic Language.

 Normalizado en 1995 por la IEEE. Se desarrollaron muchas


herramientas de síntesis para Verilog que fueron después
adaptadas para aceptar VHDL.

9
 VHDL (Very High Speed Integrated Circuit Hardware
Design/Description Language) surge de Intermetrics, Texas
Instruments e IBM.
 Inicialmente llamado VHD2L, lenguaje amplio y prolijo
 Algunos han dado un segundo significado: Very Hard
Description Language.

 A mediados de los años 80 y desde 1987, se convirtió en un


estándar de la IEEE.

 Utilizando VHDL, se puede diseñar, simular y sintetizar desde


un CLC sencillo, hasta sistemas digitales de gran complejidad
tal como un microprocesador.
10
 El Lenguaje VHDL ha ganado mucha popularidad entre los
diseñadores de sistemas digitales
 Variadas herramientas de diseño que utilizan VHDL.

 Numerosas firmas han adoptado VHDL como herramienta


básica y lo han incorporado a sus productos.

 Entre estas herramientas están:


 Altera [Max Plus II]
 Xilinx [Foundation]

11
 Permite realizar diseños parametrizables mediante
la utilización de parámetros genéricos.

 Soporta metodologías de diseño de arriba hacia


abajo (top-down), de abajo hacia arriba (bottom-up)
o mixtas.

12
Soporta tres tipos diferentes de descripción de
sistemas digitales: estructural, de flujo de
datos y comportamental.

Permite realizar la descripción de un sistema


mediante la combinación de los diferentes
tipos de descripciones (descripción mixta).
 VHDL está formado por la pareja Entidad-Arquitectura (Entity
- Architecture), lo que se llama modelo en VHDL. Un fichero
nombre.vhd puede contener uno o varios modelos.

Un diseño en VHDL es un fichero


texto (no un dibujo), escrito
en cualquier editor; primero la entidad
(entity), luego la arquitectura
(architecture).

14
 La entidad describe la conexión con el mundo externo, se
declaran los terminales de entrada y de salida que, en VHDL,
se llaman port (puertos) del circuito o sistema que se desea
diseñar.

 La arquitectura describe la
operación del bloque (o lo que
hace el circuito o cómo lo hace).

15
 En la declaración de entidades, se definen las entradas,
salidas y tamaño de un circuito, explicitando cuáles son, de
qué tamaño (de 0 a n bits), modo (entrada, salida, ...) y tipo
(integer, bit,...) .

 Las entidades pueden definir, bien sea las entradas y salidas


de un diseño más grande o las entradas y salidas de un chip
directamente.

16
 La declaración de entidades es análoga al símbolo
esquemático de lo que queremos implementar, el
cual describe las conexiones de un componente al
resto del proyecto. Esto es, si hay una entrada o
puerto de 8 bits, o dos salidas o puertos de 4 bits,
etc.
 Cabecera del programa

 Aquí vienen los puertos (o grupos de


señales) de entrada y/o salida, con la
sintaxis. Las líneas que empiezan con
dos guiones se ignoran por el
compilador; no se distingue las
mayúsculas de las minúsculas.

 Indica que se ha acabado la


declaración de puertos de entrada y/o
salida, fin de la entidad
18
 En VHDL, las señales pueden ser de cuatro modos diferentes.

19
20
nombre_variable: modo tipo; • Forma genérica de designar un puerto

• El primer puerto es un bit de entrada, y


Puertoa: in bit; su nombre es “Puertoa"

• El segundo puerto es un vector de 8 bits


Puertob: in bit_vector (0 to 7); de entrada siendo el MSB el Puertob(0) y
el LSB el Puertob(7)

Puertoc: out bit_vector (3 downto 0); • El tercer puerto es un vector de 4 bits de


salida siendo el MSB el Puertoc(3) y el LSB
el Puertoc(0)
Puertod: buffer bit;
• El cuarto puerto es un buffer de un solo
bit, cuyo nombre es “Puertod“
Puertoe: inout std_logic;
• El quinto puerto es una entrada/salida
del tipo estándar logic de un solo bit 21
Escriba la declaración de entidad En este caso, ejemplo1 es el
para un circuito digital con dos nombre asignado a la entidad;
entradas (a, b) y una salida f, como
el mostrado: IN es el modo de las señales de
entrada a y b. Se pueden escribir
en una misma línea separadas por
comas o en líneas aparte;

OUT es el modo de la señal de


salida;
Solución:

ENTITY ejemplo1 IS Bit es el tipo de las señales de


PORT ( a, b : IN bit ; f : OUT bit ) ; entrada y salida.
END ejemplo1 ;
22
 Indica el tipo de procesamiento que se realiza con
la información correspondiente a las señales de
entrada (declarados previamente en la entidad),
para tener los puertos de salida (también
declarados en la entidad).

23
Es aquí donde reside el funcionamiento de un
circuito y se indica qué hacer con cada
entrada, para obtener la salida.

La entidad es vista como una "caja negra“; la


arquitectura es el conjunto de detalles
interiores de la caja negra.
• Cabecera de la arquitectura.

• Declaraciones de apoyo (se


verán más adelante

• Se da comienzo al programa

• Conjunto de sentencias,
bucles, procesos, funciones,...
que dan operatividad al programa.

• Fin del programa


25
La estructura de un programa VHDL consiste en tres partes:

1. Declaración de las bibliotecas utilizadas (library).

2. Una entidad (entity).

3. Una arquitectura (arquitecture).

Los comentarios se inician con dos guiones seguidos y terminan al


final de la línea.

26
 El lenguaje VHDL se organiza y trabaja con bibliotecas.

 Biblioteca VHDL: lugar donde el compilador VHDL almacena


información referente a un proyecto de diseño particular,
incluyendo documentos intermedios, usados en el análisis,
simulación y síntesis.

 Una biblioteca estándar muy usada es la de IEEE.

 Ésta es de solo lectura y del tipo global que puede usarse por
varios programas a la vez. El diseñador no puede interactuar con
ella ni modificar su contenido.

 Para usarla, se debe escribir al inicio del programa: library ieee;

27
28
 Los diseñadores pueden definir sus propios paquetes o
bibliotecas, pudiendo reutilizar los diseños como parte
de nuevos diseños.

 Para que el diseñador pueda generar sus propios


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

29
En la biblioteca work sí se puede escribir, pero
no contiene todas las definiciones u otra
información necesaria para realizar un diseño
HDL.

Cada proyecto posee su propia biblioteca


work que es una biblioteca local y responde
solo a un proyecto particular.
Lo que hacemos es
llamar a la biblioteca
interna de trabajo
WORK.
Luego procedemos a
instanciar
normalmente el
circuito, sin tener que
declarar nuevamente
el subcircuito con
COMPONENT.

31
El lenguaje VHDL permite crear más de una forma o
alternativa en la escritura de la arquitectura.
A estas alternativas se las llama estilos o
aproximaciones.

 Por Flujo de datos (dataflow) o transferencia de


registros (RTL).

 Estructural o lógica.

 Por comportamiento (behavioral), funcional o


algorítmica. 32
 Se utilizan declaraciones de asignación de señales de tal
forma que la información sea transferida de señal a
señal y de la entrada a la salida usando únicamente
asignaciones concurrentes.

 Este estilo de escritura se conoce también como lógica


de transferencia de registros (RTL).

33
 Este estilo de escritura se conoce también
como lógica de transferencia de registros
(RTL).

 Esta forma de diseño simplifica


considerablemente los diseños VHDL, pues
los hace más compactos, posibles de
mantener y son comprensibles.
• Se utilizan declaraciones
de asignación de señales,
así como operadores
lógicos, no usados en el
estilo de escritura
estructural

35
, / , **

 Std_logic_Vector: Aritméticos, De Relación.


 Pero, atención, utilizar: use ieee.std_logic_unsigned.all;
o: use ieee.std_logic_signed.all;
36
 La descripción por flujo de datos utiliza en su escritura
ecuaciones simples de asignación de señales, declaraciones de
asignación condicional de señales (usando when-else) o de
asignación de señales seleccionadas (usando with-select-when).

37
 El miembro de la derecha del
operador de asignación <= se
conoce como expresión, cuyo
valor se obtiene evaluándola
completamente.

 Luego, ese valor se deposita en


el miembro de la izquierda.

 En la implementación de
circuitos simples, el miembro de
la derecha es la función
minimizada, que asigna un valor
de verdad a la salida. 38
 Cuando una señal cambia de
valor, se dice que se ha
producido un evento.

 La existencia de eventos da
lugar a otro evento. De esta
manera, se actualizan los
valores de las señales.

 Cuando la expresión booleana


cambie de valor, la expresión
que se le asigne a la señal será
distinta.
39
 Este tipo de declaración de asignación
evalúa la expresión que acompaña a la
declaración with. Cuando el valor coincide
con una de las alternativas señaladas
después de la palabra clave when, el valor
correspondiente a esta alternativa se le
asigna al nombre de la señal.

 Cuando el valor de la señal para varias


alternativas es el mismo, pueden ser
expresadas como una lista de valores
separadas por barras verticales “|”

 La palabra clave others sirve para cubrir


todos los casos posibles faltantes.
40
library ieee;
use ieee.std_logic_1164.all;

ENTITY XOR IS
PORT( A,B: IN STD_LOGIC;
S : OUT STD LOGIC);
END XOR; 41
42
 El cuerpo de la arquitectura es una descripción exacta
del esquema lógico.

 Para ello, se usa las declaraciones de componentes.

 Los componentes están en relación con la cantidad de


componentes distintas que forman parte del circuito
físico que se esté diseñando.

 La declaración component tiene una estructura similar a


la de una entidad, pero con diferente connotación. 43
 La forma de declarar un componente es como sigue:

component nombre_componente
port (señales_entrada: modo tipo;
señales_salida: modo tipo);
end component;

44
 Ejemplo: La operación exor se puede expresar como:
Y=
ENTITY XOR IS
PORT (A,B: IN BIT;
Y: OUT BIT);
END XOR;
Architecture XOR1 of XOR is
- declaración de señales
signal AN, BN : bit;
signal ANB, ABN : bit;
- declaración de componentes
component INV
port (I: in bit;
O: out bit); Figura 3: Circuito equivalente de exor con
end component; nombres de las señales internas.
45
component AND2
port (I1, I2: in bit;
O: out bit);
end component;
component OR2
port (I1, I2: in bit;
O: out bit);
end component;
begin
- instanciación de componentes
U1: INV port map(A,AN);
U2: INV port map(B,BN);
U3: AND2 port map(AN,B,ANB);
U4: AND2 port map(A,BN,ABN);
U5: OR2 port map(ANB,ABN,Y);
end XOR1;

46
La figura representa un detector de magnitud relativa
que recibe dos números binarios (STD_LOGIC) de 3
bits, X (X2X1X0) y Y (Y2Y1Y0). El circuito verifica si X y Y
son iguales y si no lo son, éste indica cuál de ellos es el
mayor.
Hay 3 salidas que se definen como sigue:
M = 1 sólo si los dos números de entrada son iguales.
N = 1 cuando X es mayor que Y
P = 1 cuando Y es mayor que X.
Diseñe el circuito en VHDL
Usando la descripción RTL.
47
use ieee.std_logic_unsigned.all;

48
Diseñar un circuito multiplicador Binario en VHDL utilizando la descripción
RTL. El circuito multiplicador binario tiene 2 entradas de datos binarios, A y B
de 2 dígitos cada una y la entrada habilitadora AC. El circuito genera una
salida M de 4 bits. El circuito funcionará según las siguientes
especificaciones:

•Si AC.H = H, el circuito se activa y presenta en la salida M el producto


aritmético de A y B.
•Si AC.H=L, el circuito presenta en la salida M un nivel de alta impedancia.

49
50
51
52
SIGNAL F : STD_LOGIC_VECTOR (3 downto 0);

F
F
F

F
<=

53
54
55
La figura muestra cuatro interruptores que son parte de la circuitería de
control de una máquina copiadora. Los interruptores se encuentran en
distintos puntos consecutivos (esto es, no pueden estar cerrados dos
interruptores si el papel no está pasando por dos de éstos consecutivos) a lo
largo del camino que recorre el papel dentro de la máquina. Cada
interruptor está normalmente abierto y, cuando el papel pasa sobre el
interruptor, éste se cierra. Es imposible que los interruptores S1 y S4 se
cierren al mismo tiempo. Además, asuma que solo puede ingresar un papel a
la vez. Diseñe un circuito lógico que genere una salida de voltaje ALTA (H)
cada vez que dos o más interruptores estén cerrados al mismo tiempo.

56
57
Nota : Esta solución asume que todas las señales son de lógica positiva. Para
considerar que las señales son de lógica negativa, es necesario agregar el operador
“NOT” delante de cada variable.
58
59
Diseñe el circuito de control que comande el apagado automático de un televisor. El controlador
recibe las siguientes señales:
Automático.L : es baja (L) cuando se desea activar el apagado automático.
TTV.H : es alta (H) cuando se presiona una tecla en el televisor
TCR.H : es alta (H) cuando se presiona alguna tecla en el control remoto.
T10.H : es alta (H) cuando han pasado 10 minutos desde el último movimiento de teclas en el
TV.
T23.L : es baja (L) cuando el reloj del TV marca más de las 23h00.
El circuito debe activar la salida (Apagar.H=H) cuando esté activado el automático, no se está
moviendo ninguna tecla, sean más de las 23h00 y hayan pasado más de 10 minutos desde el
último movimiento.
Si el automático no está activado la salida debe tomar un valor de alta impedancia.
Asuma que no es posible que la señal de 10 minutos se active y al mismo tiempo se presione
alguna tecla.

60
Auto

61
62
63
Se desea disponer de un circuito generador de paridad.
Este dispositivo recibe una palabra de información de 4 bits, a través de la entrada
"DATO.H".
Por medio del interruptor "SELECTOR DE PARIDAD" se escoge la paridad que se desea
generar en la salida "BIT DE PARIDAD.H".
Cuando este interruptor está cerrado (SELEC PARIDAD.L = L), se generará la paridad
par; esto es, si el número de unos en la palabra "DATO" es impar, la señal BIT DE
PARIDAD.H se fijará en nivel alto (BIT DE PARIDAD.H = H); en caso contrario, esta
salida se fijará en nivel bajo (BIT DE PARIDAD.H = L).
Con el interruptor "SELECTOR DE PARIDAD" abierto (SELEC PARIDAD.L = H), se
generará la paridad impar, y la salida "BIT DE PARIDAD.H" se irá a nivel alto (BIT DE
PARIDAD.H = H), cada vez que el número de unos en la entrada "DATO.H" es par y lo
contrario cuando el número de unos es impar.

64
Cuando se trabaja con paridad par, se enciende el led verde y cuando la paridad es
impar, se prende el led rojo. El diagrama de bloques a continuación ilustra las
entradas y salidas del circuito.

65
66
67
68
En este caso, la señal w se forma con la suma aritmética de
“000” + D(3)+D(2)+D(1)+D(0). Entonces, el valor de w es 000,
para el vector D=0000; w será 001 para D=0001, 0010, 0100, y
1000 (todos estos valores representan un número impar de
unos; w será 010 para D=0011, 0101, 1001, y 1100 (todos estos
valores representan un número par de unos; w será 011 para
D=0111, 1011, 1101, y 1110 (todos estos valores representan un
número impar de unos, w será 100 para D=1111 (este valor
representa un número par de unos.

69

También podría gustarte