Está en la página 1de 30

VHDL Organización y arquitectura

VHDL
Es un lenguaje orientado a la descripción o modelado de sistemas digitales.

Permite describer, analizar y evaluar el comportamiento de un sistema electrónico


digital.

Permite integrar sistemas digitales sencillos, elaborados o ambos en un dispositivo


lógico programmable, de baja o alta capacidad de integración (PAL/GAL o
CPDL/FPGA)

2
UNIDADES BÁSICAS DE DISEÑO
Estructura general de un programa en VHDL está formada por módulos o unidades
de diseño.

Cada módulo o unidad está compuesto por un conjunto de declaraciones e


instrucciones que definen, describen, estructura, analizan y evalúan el
comportamiento de un sistema digital.

3
5 TIPOS DE UNIDADES BÁSICAS DE DISEÑO
1. Declaración de entidad (entity declaration)
2. Arquitectura (architecture)
3. Configuración (configuration)
4. Declaración del paquete (package declaration)
5. Cuerpo del paquete (package body)

Los módulos indispensables en la estructuración de un programa son entidad y


arquitectura.

4
UNIDADES BÁSICAS DE DISEÑO
Primarias
 Entidad
 Paquete
 Configuración

Secundarias
 Arquitectura
 Cuerpo del paquete Dependen de una entidad primaria
que se analiza antes que ellas.

5
ENTIDAD (ENTITY)
Bloque elemental de diseño en VHDL
Son todos los elementos electrónicos (sumadores, contadores, compuertas, flip-flops,
memorias, multiplexores, etc.) que forman un sistema digital.

Símbolo funcional

Nivel de compuertas Diagrama a bloques 6


PUERTOS DE ENTRADA/SALIDA
Las señales de entrada/salida en una entidad son referidas como Puerto (pin o terminal de
un símbolo esquemático).
Los puertos que son declarados deben tener nombre, un modo y un tipo de dato.
Nombre: forma de llamar al puerto.
Modo: permite definir la dirección que tomará la información.
Tipo: define qué clase de información se transmitirá por el puerto.

7
MODOS
Permite definir la dirección en la cual el dato es transferido a
través de un puerto.
Puede tener 1 de 4 valores: in, out, inout y buffer.
 In (entrada): se refiere a las señales de entrada a la entidad. Es
unidireccional.
 Out (salida): indica las señales de salida de la entidad.
 Inout (entrada/salida): permite declarar a un puerto de forma
bidireccional. Permite la retroalimentación de señales dentro o fuera de la
entidad.
 Buffer: permite hacer retroalimentaciones internas dentro de la entidad. El
puerto se comporta como terminal de salida.

8
TIPOS DE DATOS
Son valores (datos) que el diseñador establece para los puertos de entrada y salida
dentro de una entidad.
Se asignan de acuerdo con las características del diseño en particular.

Tipos:
 Bit, tienen valores 0 y 1 lógico
 Boolean, define valores de verdadero o falso en una expresión
 Bit_vector, representa un conjunto de bits para cada variable de entrada o salida.
 Integer, representa un número entero.

9
DECLARACIÓN DE ENTIDADES
Consiste en la descripción de las entradas y salidas de un circuito de diseño identificado como
entity.
Señala las terminales o pines de entrada y salida con que cuenta la entidad de diseño.

10
EJEMPLO: DECLARACIÓN DE LA ENTIDAD
SUMADOR

1 --Declaración de la entidad de un circuito sumador


2 entity sumador is
3 port (A, B, Cin: in bit;
4 SUMA, Cout: out bit);
5 end sumador

* Palabras en negritas son reservadas para VHDL


11
EJEMPLO: DECLARE LA ENTIDAD DEL CIRCUITO
LÓGICO

12
SOLUCIÓN

1 --Declaración de la entidad de un circuito lógico


2 entity circuito is
3 port (a3, b3, a2, b2, a1, b1, a0, b0: in bit;
4 F: out bit);
5 end circuito

13
IDENTIFICADORES
Son los nombres o etiquetas que se usan para referir variables, constantes, señales,
procesos, etc.
Regla Correcto Incorrecto
El primer carácter siempre es una letra Suma4 4suma
mayúscula o minúscula SUMA4

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


bajo
Dos guiones juntos no son permitidos Resta_4_ Resta__4
Un identificador no puede utilizar símbolos Clear_8 Clear#814
DISEÑO DE ENTIDADES MEDIANTE VECTORES
De manera general, en la práctica se utilizan conjuntos (palabras) de varios bits, que
se consideran un grupo y no como bits individuales.

Ejemplos:

vector_A = [A3, A2, A1, A0]


vector_B = [B3, B2, B1, B0]
vector_SUMA = [S3, S2, S1, S0]

15
A y B son entradas tipo vector
Suma es salida tipo vector
Cin y Cout son entrada y salida tipo bit

16
DECLARACIÓN DE ENTRADAS/SALIDAS TIPO
VECTOR
port (vector_A, vector_B: in bit_vector (3 downto 0);
vector_SUMA: out bit_vector (3 downto 0));

3 downto 0  4 componentes distribuidos en orden descendente


vector_A vector_B vector_SUMA
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(1) = B1 vector_SUMA(1) = S1
vector_A(0) = A0 vector_B(0) = B0 vector_SUMA(0) = S0

Use 0 to 3 para distribuir los componentes en orden ascendente 17


EJEMPLO: DECLARE LA ENTIDAD DEL
DISPOSITIVO DE LA DIAPO 16
Solución:

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

18
DECLARACIÓN DE ENTIDADES MEDIANTE
LIBRERÍAS Y PAQUETES
Una librería o biblioteca almacena las unidades de diseño predeterminadas por el
fabricante de la herramienta (paquete).

VHDL cuenta con 2 librerías: ieee y work.


En la librería ieee está el paquete std_logic_1164
En la librería work están numeric_std, std_arith y gatespkg

19
LIBRERÍA WORK
Almacena los programas que el usuario va generando.
Se encuentra siempre presente en la compilación del diseño y los díselos se guardan
en ella mientras no se especifique otra.

20
PAQUETE
Es una unidad de diseño que permite desarrollar un programa en VHDL.
Contiene algoritmos preestablecidos (sumadores, restadores, contadores, etc.) que ya
tiene optimizado ese comportamiento.
El diseñador no necesita caracterizar paso a paso una nueva unidad de diseño si ya
se encuentra almacenada en un paquete.
Es una unidad de diseño formada por declaraciones, programas, componentes y
subprogramas que incluyen diversos tipos de datos (bit, booleano, std_logic).

21
LIBRARY IEEE
Se utiliza la declaración library ieee; para mandar llamar los paquetes.

Permite el uso de todos los componentes incluidos en la librería.

22
PAQUETE STD_LOGIC_1164
Contiene los tipos de datos que suelen emplearse en VHDL (std_logic_vector,
std_logic, entre otros).

Se accede a la librería por medio de la sentencia use.


use nombre_librería.nombre_paquete.all;

por ejemplo: use ieee.std_logic_1164.all;

23
OTROS PAQUETES…
numeric_std define funciones para realizar operaciones entre diferentes tipos de
datos, que pueden ser representados con signo o sin él.

numeric_bit define tipos de datos binarios con signo o sin él.

std_arith define funciones y operadores artiméticos (=, >, <, entre otros).

24
EJEMPLO: DECLARE LA ENTIDAD DEL CIRCUITO,
INCLUYA LAS LIBRERÍAS Y PAQUETE
La multiplicación de (X1, X09 y (Y1, Y0) producen la salida Z3, Z2, Z1,
Z0.

25
SOLUCIÓN
1 library ieee;
2 use ieee.std_logic_1164.all;
3 entity multiplicador is
4 port (X0, X1, Y0, Y1: in std_logic;
5 Z3, Z2, Z1, Z0: out std_logic);
6 end multiplicador;

26
STD_LOGIC TYPE
This is a nine valued logic system.
It has 9 values: 'U', 'X', '0', '1', 'Z', 'W', 'L' ,'H' and '-'.
The meaning of each of these characters are:
U = uninitialized
X = unknown - a multisource line is driven '0' and '1' simultaneously (*)
0 = logic 0
1 = logic 1
Z = high impedance (tri state)
W = weak unknown
L = weak "0"
H = weak "1"
- = dont care

27
ARQUITECTURA (ARCHITECTURE)
Se define como la estructura que describe el funcionamiento de una entidad.

De manera general, los estilos de programación utilizados en el diseño de


arquitectura se clasifican como:

 Estilo funcional
 Estilo por flujo de datos
 Estilo estructural

28
DESCRIPCIÓN FUNCIONAL
Expone la forma en que trabaja el sistema
Las descripciones consideran la relación que hay entre las entradas y salidas del circuito, sin
importar como esté organizado en su interior.

Si a = b entonces c = 1
Si a ≠ b entonces c = 0

29
1 --Ejemplo de arquitectura funcional

2 library ieee;

3 use ieee.std_logic_1164.all;

4 entity comp is
Entidad
5 port (a, b: in bit_vector (1 downto 0);

6 c: out bit);

7 end comp;

8 architecture funcional of comp is

9 begin

10 compara: process (a, b)

11 begin

12 if a = b then

13 c < =‘1’; Arquitectura


14 else

15 c <=‘0’;

16 end if;

17 end process compara;

18 end funcional; 30

También podría gustarte