Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2
Definir el lenguaje de descripción del hardware.
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.
8
Simultáneamente con el desarrollo de VHDL, la empresa
Gateway Design Automation (actualmente Cadence)
desarrolló el Verilog; Verify Logic Language.
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.
11
Permite realizar diseños parametrizables mediante
la utilización de parámetros genéricos.
12
Soporta tres tipos diferentes de descripción de
sistemas digitales: estructural, de flujo de
datos y comportamental.
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,...) .
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
19
20
nombre_variable: modo tipo; • Forma genérica de designar un puerto
23
Es aquí donde reside el funcionamiento de un
circuito y se indica qué hacer con cada
entrada, para obtener la salida.
• Se da comienzo al programa
• Conjunto de sentencias,
bucles, procesos, funciones,...
que dan operatividad al programa.
26
El lenguaje VHDL se organiza y trabaja con bibliotecas.
É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.
27
28
Los diseñadores pueden definir sus propios paquetes o
bibliotecas, pudiendo reutilizar los diseños como parte
de nuevos diseños.
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.
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.
Estructural o lógica.
33
Este estilo de escritura se conoce también
como lógica de transferencia de registros
(RTL).
35
, / , **
37
El miembro de la derecha del
operador de asignación <= se
conoce como expresión, cuyo
valor se obtiene evaluándola
completamente.
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.
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.
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:
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