Sei sulla pagina 1di 52

Entorno de programación de los dispositivos

lógicos programables


Interfaces y dispositivos de programación para
dispositivos lógicos programables.

Lenguaje simbólico estándar.

Lenguaje VHDL.
Interfaces y dispositivos de programación para
dispositivos lógicos programables.

Quartus Prime Design Software
● Contiene las herramientas necesarias para diseñar
aplicaciones en FPGA, SoCs, y CPLD.
● Implementado sobre Quartus II.
● Disponibles 3 ediciones
● Quartus prime Pro Edition – Optimizado para soportar las
características avanzadas de las familias FPGA de siguiente
generación, comenzando con los dispositivos de la Familia Arria 10.
● Quartus prime standar Edition – Proporciona soporte para la mayoría
de las familias de FPGA y CPLD.
● Quartus prime Lite Edition – Incluye soporte moderado pero suficiente
para comenzar con las familias elementales e intermedias de FPAGA y
CPLD. No requiere licencia.
● Para descargar hay que registrarse
● Este software es una interface para descargar el Software
● Hay que descargarlo y ejecutarlo
● Al ejecutarlo se abre esta ventana
● Esta ventana muestra el proceso de descarga
● Una vez instalada esta interface, regresamos a la página de descarga de
Quartus Primer y descargamos el software, Asegúrese de que estén
seleccionados solo los paquetes necesarios.
● Esta ventana muestra el proceso de descarga
Lenguaje VHDL. Estructura y Organización
● VHDL (Hardware Description Languaje) constituye una de las herramientas de
programación con mayor uso en el ambiente industrial y en el ámbito
universitario, debido a la versatilidad con la cuál se puede se puede describir y
sintetizar circuitos y sistemas digitales en la búsqueda de soluciones de
aplicación inmediata.
● El uso correcto del lenguaje hace obsoleto el diseño tradicional, que organiza
bloques lógicos de baja y mediana escala de integración, “compuertas
contadores registros, decodificadores, etc.” En otras palabras para qué
organizar diversas estructuras lógicas en una determinada solución, si esta se
puede crear en una sola entidad, la cual no solo proporciona una reducción
considerable de espacio físico, sino que además también produce un
resultado más directo y menos susceptible a los errores derivados a la
conexión entre varios componentes.

● El resultado, la solución es susceptible de ser encapsuladaen dispositivos


lógicos programables llamados PLD.
● Al emplear dispositivos programables de muy bajo costo, conocidos por sus
siglas en inglés como GAL (Arreglos lógicos genéricos-Generic Array Logic),
los cuales se utilizan con mucha frecuencia en proyectos donde lo que se
requiere de manera primordial es la interconexión de algunos dispositivos
convencionales, multiplexores, comparadores, sumadores, etc. estos
integrados pueden conseguirse de manera individual y ser programados en
grabadores convencionales.

● En el caso de que la solución requiera de un mayor número de componentes


lógicos o “pines” de salida, pueden utilizarse circuitos CPLD (Complex
Programable Logic Devise), los cuales también se consiguen de forma
individual o como parte de u sistema de desarrollo.

● Por otro lado si el proyecto lo amerita, es posible utilizar los FPGA (Field
Programable Gate Array-Erreglo de compuertas programables en campo)
recomendados para se empleados y programados dentro de un sistema de
desarrollo y en aplicaciones con tendencia hacia el desarrollo de sistemas
completos dentro de un solo circuito integado SOC (System On Chip).
● La opciones que brinda el hardware para la integración de la aplicación
permite introducir y utilizar el lenguaje en diversas materias, cuyo nivel de
profundidad y diseño depende de los lógicos por emplear; de esta manera, el
diseño lógico y el de sistemas digitales, la robótica, la arquitectura de
computadoras y la algorítmica, entre otras son algunas de las áreas donde
VHDL presenta una alternativa de diseño.

● Por ejemplo, en un curso de diseño lógico, quiza lo más recomendable sea


utilizar el lenguaje y programar en dispositivos GAL; sin embargo, esta no es
una condición necesaria e indispensable, pues depende en gran medida de
la economía personal.

● Como veremos los cambios en la programación son irrelevantes respecto a


la utilización de diversas tecnologías de fabricación de los chips.

● Por tanto, quizás los aspectos que deban cuidarse con más atención son la
conceptualización y el entendimiento de la arquitectura interna del circuito; no
es lo mismo programar en arreglos lógicos genéricos que en FPGA, cuyas
arquitecturas internas son muy diferentes.
Estructura de VHDL
● Se estructura en módulos o unidades funcionales, identificados mediante una
palabra reservada y particular de este lenguaje.

Library = Bibliotecas
Entity = Entidad
Architectura = Arquitectura
Package = Paquete
Component = Componente
Módulos de diseño en VHDL
● En tanto, a su vez, cada módulo tiene una secuencia de secuencias e
instrucciones o sentencias, las cuales, en conjunto con las declaraciones de
las unidades involucradas en el programa, permite la descripción, la
comprensión, la evaluación y la solución de un sistema digital.
● Al interior de la estructura de un programa, las unidades Entity y Architecture
en conjunto forman la columna vertebral de este lenguaje. Por su parte, los
módulos restante, no necesariamente utilizados en la búsqueda de una
solución, sirve entre otras cosas para optimizar y generalizar la aplicación en
futuros desarrollos.
Entidad (Entity)
● Una entidad básicamente representa la caracterización del dispositivo físico:
es decir exhibe las entradas y las salidas del circuito (los pines) que el
diseñador ha de considerar pertinentes para integrar su idea o aplicación. La
siguiente figura ilustra la secuencia de desarrollo.
● Con base en esa ide, una entity – por la palabra reservada del programa –
constituye un bloque de diseño que puede ser analizado y programado como
un elemento individual, ya sea como una compuerta, un sumador o un
decodificador, entre otros, incluso ser considerado como un sistema a través
de su relación entre entradas y salidas, las cuales representan los puntos de
observación o de conexión a elementos periféricos propios de la aplicación.

● La figura izquierda de las siguientes, la entidad proporciona los pines de


salida “d3, d2, d1, d0” para el control de un motor a pasos, mientras que la
figura de la derecha se conecta a un visualizador de siete segmentos.
Puertos de entrada-salida
● Cada una de las señales de entrada y salida en una entidad es referida como
un puerto, el cual es equivalente a un terminal (pin) de u símbolo
esquemático.
● Todos los puertos que son declarados deben tener un nombre, un modo y un
tipo de dato.
● El nombre es utilizado como una forma de llamar al puerto; el modo permite
definir la dirección que tomará la información, mientras que el tipo precisa
que clase de información se transmitirá a través del puerto.

● Por ejemplo, en el caso de los puertos de la entidad representativa en la


figura siguiente:

aquellos que son de entrada estan


indicados por las variables a y b;
mientras que el puerto de salida se
representa por la variable c.
Modos
● Como se mencionó antes, un modo permite definir la dirección hacia donde
el dato es transferido. Un modo uno de cuatro valores: in (entrada), out
(salida), inout (entrada/salida) y buffer.

● Modo in: Se refiere a las señales de entrada a la entidad. El modo in es solo


unidireccional y únicamente permite el flujo de datos hacia dentro de la
entidad.
● Modo out: indica las señales de salida de la entidad.
● Modo in/out: permite declarar un puerto de forman bidireccional, es decir
como entrada/salida, además hace posible la retroalimentación de señales
dentro o fuera de la entidad.

● Modo buffer: Permite realizar


retor-alimentaciones dentro de la
entidad; pero a diferencia del
modo inout, el puerto declarado
se comporta como una terminal
exclusiva de salida.
Tipos de datos
● Los tipos de valores (datos) que el diseñador establece para los puertos de
entrada y salida dentro de una entidad, y que son asignados de acuerdo con
las características de un diseño en particular.

● Algunos de los tipos mas utilizados son el tipo bit, el cual tiene valores de 0 y
1 lógico; el tipo boolean define valores de verdadero o falso en una
expresion; el bit_vector, el cual presenta un conjunto de bits para cada
variable de entrada y/o salida, y el tipo integer que representa un número
entero.

● Se utiliza para definir el valor que un objeto puede tomar, así como las
operaciones que se realizan con ese objeto.

● En VHDL hay dos tipos básicos: compuesto y escalar, los cuales agrupados
varios subtipos.
● A continuación se muestran estos tipos de datos y la forma en que se
encuentran clasificados:

● Tipos escalares

● Existen cuatro tipos de datos escalares en VHDL; veamos algunos ejemplos


sobre como se utilizan estos datos:

a) Tipos enumerados. Se usa par listar los diversos valores que puede contener
un objeto. Se llaman enumerados debido a que listan todos y cada uno de
los valores que forman el tipo.
La sintaxis para declararlo es:

type identificador is definición_tipo;


● Como se puede apreciar, la declaración del tipo contiene un nombre, el cual
permite hacer referencia a él en el programa; también cuenta con el
parámetro llamado definición del tipo, el cual corresponde a los valores que
se le asignan.
type nombre is (Ans,Mario,Julio,Cecilia);
type máquina is (edo_presente,edo_futuro,estado);
type letras is ('a','b','x','y','z');

● Los tipos bit y booleano se clasifican entre los tipos enumerados, debido a
que pueden tomar más de un valor.
type booleano is (verdadero, falso);
type bit is ('0', '1');

b) Tipos enteros y tipos reales. Sirven para representar números enteros y


reales (fraccionarios), respectivamente.

● VHDL soporta valores enteros en el intervalo (–2 31–1) hasta (231–1) y


números reales en el intervalo de –1.0E38 a 1.0E38.
Ambos tipos – enteros y reales – siguen la misma sintaxis:
object identificador : type range [valores];
● Un rango (range) es una palabra reservada por VHDL y se usa para definir
un conjunto de valores. Cabe destacar que no todas las herramientas en
VHDL manejan valores con signo. Por ejemplo el compilador warp solo
maneja valores sin signo.

c) Tipos físicos. Se refiere a lo valores que se usan como unidades de medida.


En VHDL el único tipo físico que se encuentra predefinido es time (tiempo), el
cual contiene como unidad primaria el femtosegundo (fs)
● La manera de definir un tipo físico:
type time is range 0 to 1E20
units
fs;
ps = 1000 fs;
ns = 1000 fs;
us = 1000 fs;
ms = 1000 fs;
s = 1000 fs;
min = 60 sec;
h = 60 min;
end units
● VHDL permite la creación de otros tipos físicos como metros, gramos, etc.
solo que en el diseño digital es difícil utilizar esto parámetros.

● Tipos compuestos

● Los tipos compuestos pueden tener valores múltiples en un mismo tiempo al


momento de ser simulados. Este tipo está formando por los arreglos y
registros.

a) Tipo arreglo. Formado por múltiples elementos de un tipo en común. Estos


arreglos se pueden considerar también como vectores, ya que agrupan
varios elementos del mismo tipo.

La sintaxis utilizada para declarar un arreglo es:

type identificador is array (rango) of tipo_objetos;

● Como se puede observar, en ambas declaraciones es necesario utilizar un


valor (rango) que determine el conjunto de valores que va a tomar el tipo. En
este caso el rango no se ha especificado, pero debe tomarse en cuenta al
momento de asignarlo se toma como un número entero positivo (número
natural)
● Los estándares IEEE 1076 y 1164 definen dos arreglos importantes, llamados
bit_vector y std_logic_vector, los cuales forman parte de los tipos bit y
std_logic, respectivamente.

● La forma en que se declaran estos arreglos es:


type digitos is array (rango) of bit;
type stdf_logic_vector is array (rango) of std_logic;

● El tipo std_logic es más versátil que el tipo bit, debido a que incluye los
valores de alta impedancia ('Z) y no importa (–).

● Como ejemplo observemos las siguientes declaraciones de arreglos

type digitos is array (9 downto 0) of integer;


type byte is array (7 downto 0) of bit;
type dirección is array (10 to 62) of bit;
● Otro aspecto a utilizar arreglos es la facilidad que presentan para crear tablas
de verdad:
type tabla is array (0 to 3, 0 to 2) of bit; “01_0”
constant ejemplo: Table := ( “10_0”
“00_0” “11_1”);
● El arreglo declarado en el ejemplo anterior es de dos dimensiones, ya que
tiene un valor para el número binario que toma las entradas (de 0 a 3) y otro
para el número de bits de entrada y salida (dos bits de entrada y uno de
salida). Los guiones colocados entre los bits separan las entradas (lado
izquierdo) de las salidas.

b) tipo archivo (record): A diferencia de los arreglos, los tipos archivos están
formados por elementos de diferentes tipos, los cuales reciben el nombre de
campos, cada uno de los cuales debe tener un nombre que permita
identificarlos con facilidad dentro del tipo.

● Es importante destacar que el nombre de registro no tiene nada que ver con
un registro en hardware utilizado para almacenar valores, ya que aunque los
nombres son similares, en VHDL se toman como conceptos distintos.
● La forma de declarar un tipo archivo es:

type identificador is record identificador : tipo;


end record;
Declaración de entidades
● La declaración de una entidad consiste en describir las entradas y las salidas
de un circuito identificado como entity (entidad); en otras palabras, la
declaración señala las terminales o los pines de entrada y salida con los que
cuenta el circuito.

● Por ejemplo consideremos la tabla de verdad siguiente:

● Podemos observar que esta tabla tiene tres entradas, A, B y C, y dos salidas,
F0 y F1. En este caso, a la entidad identifiquemosla con el nombre de
TABLA, tal como muestra la figura a un lado de la tabla.
● La descripción de este programa se enlista en el código siguiente

1 --Declaración de la entidad en una tabla de verdad


2 entity Tabla is
3 port (A, B, C: in bit;
4 F0, F1: out bit);
5 end Tabla
Declaración de la entidad Tabla para la tabla de verdad anterior

● Vemos que los números de las líneas (1, 2, 3 , 4, 5) no son parte del código y
se utilizan como referencia para explicar alguna sección en particular dentro
de un código.
● Las palabras en negrita están reservadas para el lenguaje de programación,
ellas tiene un significado especial para el programa.
● Ahora analicemos el código linea por línea; La línea 1 inicia con dos guiones
(–), los cuales indican que el texto que esta a la derecha, el úni9co fin de los
comentarios es documentar el programa, ya que estos son ignorados por el
compilador.
● La línea dos empieza la declaración de entidad utilizando la palabra
reservada entity, seguida del identificador o nombre de la entidad “Tabla”.
● Los puertos de entrada y salida (port) son declarados en las líneas 3 y 4
respectivamente; en estos casos, los pines de entrada son A, B y C, mientras
que los puertos de salida están representados por F0 y F1.

● Como de puede observar, el circuito se describe de manera lógica (mediante


la tabla de verdad), por lo que en su descripción solo se utilizan valores
lógicos ('0' y '1'); por tanto es de suponer que el tipo de dato empleado en la
declaración es bit.

● Por último en la línea 5 termina la declaración de entidad con la palabra


reservada end, seguida del nombre de la entidad.

● Aspectos importantes a considerar


● Como en cualquier lenguaje de programación, es importante hacer notar que
VHDL también sigue una sintaxis y una semántica en el código de
programación, las cuales es necesario respetar lo siguiente:

● Punto y coma (;): se utiliza para cerrar y finalizar declaraciones.


● Dos puntos (:): Se usa como separador entre el nombre de los puertos y los
modos de entrada
● El paréntesis (): después del modo de salida out bit cierra la declaración de
los puertos (port).

● El uso de las mayúsculas o minúsculas en la declaración es irrelevante para


el compilador.

● Ejemplo
● Declarar la entidad del circuito lógico que se muestra en la figura siguiente

Solución:
Como se puede observar en la figura,
las entradas y salidas del circuito se
encuentran claramente identificadas.

● Modo in: clk, Reset


● Modo out: Q3, Q2, Q1 y Q0
● Entidad: Contador

● Entonces la declaración de la entidad sería de la siguiente forma


1 --Declaración de la entidad contador
2 entity Contador is
3 port (clk, Reset: in bit;
4 Q3, Q2, Q1, Q0: out bit);
5 end Contador
● Ejemplo
● Declarar la entidad del siguiente circuito lógico
Solución:

● Modo in: a, b, c, d ,e, f, g, h


● Modo out: F1
● Entidad: Circuito

● Aquí el diseñador deberá identificar los pines de entrada y salida para


establecer la entidad.

1 --Declaración de la entidad contador


2 entity Circuito is
3 port (a, b, c, d, e, f, g, h: in bit;
4 F1: out bit);
5 end Circuito
● Ejemplo
● Declarar la entidad del siguiente circuito lógico
Solución:
● En este caso se puede notar que existen
varios módulos individuales, los cuales en
conjunto forman una entidad general.

● Las salidas C3, C2, C1, C0 deben


considerarse como inout, es decir señales
entrada/salida.

● Modo in: A3, A2, A1, A0, B3, B2, B1, B0


● Modo out: S3, S2, S1, S0
● Modo inout: C3, C2, C1, C0
● Entidad: Proyecto

1 --Declaración de la entidad contador


2 entity Proyecto is
3 port (A3, A2, A1, A0, B3, B2, B1, B0: in bit;
4 C3, C2, C1, C0: inout bit;
5 S3, S2, S1, S0: out bit);
6 end Proyecto
Identificadores
● Los identificadores son simplemente los nombres o las etiquetas que se usan
para hacer referencia a variables, constantes, señales, procesos, etc.

● Estos identificadores pueden ser números, letras del alfabeto y/o guiones
bajos que separen caracteres.

● Todos los identificadores deben seguir ciertas especificaciones o reglas para


que puedan ser compilados sin errores.

Regla Incorrecto Correcto


El primer carácter siempre debe ser una letra mayúscula o
4suma Suma4
minúscula
El segundo carácter no puede ser un guión bajo S_4bits S4_bits
No se permite el uso de dos guiones juntos Resta__4 Resta_4_
Un identificador no puede utilizar símbolos Clear#8 Clear_8

● Es importante destacar que VHDL cuenta con una lista de palabras


reservadas, las cuales no pueden utilizarse como identificadores.
Declaración de entidades utilizando vectores
● En la entidad proyecto del último ejemplo, el acomodo de los bits que
componen las entradas, salidas y entradas/salidas pueden ser agrupados en
vectores.

● Estos pueden ser ordenados en forma ascendente o forma descendente, por


ejemplo las entradas A y B se describirían de la siguiente manera:

Arreglo descendente: A → (A3,A2,A1,A0)


B → (B3,B2,B1,B0)
Arreglo ascendente: A → (A0,A1,A2,A3)
B → (B0,B1,B2,B3)

● En VHDL, el conjunto de bits ordenados puede considerarse como vectores


de bits, los cuales deben tomarse en cuenta en grupo y no como bits
individuales.
● Así mismo en VHDL la manera de describir una configuración que use
vectores radica en la utilización de la sentencia bit_vector; así la forma en
que se ordena se indica como ascendente “to” o como descendente “downto”
● Por su parte, el rango o número de bits que utiliza el vector se representa con
la siguiente notación:
0 to 3 (0 hasta 3)
3 downto 0 (3 hacia 0)

● Así, por ejemplo, la sentencia 3 downto 0 involucra un vector de 4 bits (3:0).


Como ejemplo consideremos la entidad proyecto con el código siguiente

1 --Declaración de vectores
2 entity Proyecto is
3 port (A,B: in bit_vector (3 downto 0);
4 C: inout bit_vector (3 downto 0);
5 S: out bit_vector (3 downto 0));
6 end Proyecto
● La descripción de este ejemplo es la siguiente:
● En la línea 3, las entradas A y B se declaran como vectores de entrada de 4
bits ordenados de forma descendente (3:0)
● En la línea 4, la variable C se declara como un vector de salida de 4 bits
ordenado de forma descendente (3:0)
● En la línea 5, la variable de salida S es un vector de 4 bits ordenados de
forma descendente; en esta línea considérese el doble del paréntesis al final
de la instrucción.
● El primero es parte del rango del vector y el segundo marca el cierre de la
declaración de los puertos (port)
● Ejemplo
● Describir en VHDL la entidad del circuito que se muestra a continuación;
utilizar vectores para la solución
Solución:
● En este caso, existen cuatro señales
de entrada: Q3, Q2, Q1, Q0, las
cuales pueden agruparse como un
vector al que llamaremos Q

● Las salidas F0 a F7 las integramos


en un vector denominado F.

● Para la solución, el vector Q se


ordenará de forma descendente y el
vector F de manera ascendente.

● Modo in: Q (3 donwto 0). El vector considera 4 bits de entrada


● Modo out: F (0 to 7). El vector considera 8 bits de salida.
● Entidad: Control
1 --Declaración de vectores
2 entity Control is
3 port (Q: in bit_vector (3 downto 0);
4 F: out bit_vector (0 to 7));
5 end Proyecto
Declaración de entidades utilizando librerías y paquetes

● Un aspecto importante en la programación de VHDL radica en el uso de


librerías y paquetes que permiten declarar y almacenar estructuras lógicas,
seccionadas o completas, y que facilitan el diseño.

● Una librería o biblioteca es un lugar en el cual se accede para emplear las


unidades de diseño predeterminadas por el fabricante de la herramienta
(paquete), y que se aplica para agilizar el diseño, además de que también
permite almacenar el resultado obtenido de la compilación de un diseño, con
el fin de que este pueda ser utilizado dentro de uno o varios programas.

● En VHDL se encuentran definidas diversas librerías; su cantidad depende de


las herramientas que el fabricante del software ha instalado.

● Por lo general, siempre hay dos librerías ieee y work. Al interior de la librería
ieee se ubica el paquete std_logic_1164, mientras que en la librería work se
localizan paquetes nnumeric_std, std_arith y gates.
● Un paquete es una unidad de diseño que permite desarrollar un programa en
VHDL de manera ágil, debido a que en este se encuentran algoritmos
preestablecidos (sumadores, restadores, contadores, etc.) que ya tienen
optimizado un determinado comportamiento.

● Por esta razón, el diseñador no necesita caracterizar paso a paso una nueva
unidad de diseño si esta ya se ubica almacenada en un paquete; en este
caso, solo basta llamarlo y especificarlo dentro del programa.

● Por tanto un paquete no es mas que una unidad de diseño formada por
declaraciones, programas, componentes y subprogramas que incluyen los
diversos tipos de datos empleados en la programaicón en VHDL, y que por lo
general forman parte de las herramientas en este software.
● Cuando en el diseño se utiliza algún paquete, es necesario llamarlo a la
librería que lo contiene, lo cual se leva acabo a través de la siguiente
declaración:

library ieee;

● Esta declaración permite la utilización de todos los complementos incluidos


en la librería ieee.

● En el caso de la librería de trabajo (work), su uso no requiere la declaración


library, dado que la carpeta work siempre esta presente al desarrollar un
diseño.
● Paquetes

● El paquete std_logic_1164, que se encuentra dentro de la librería ieee,


contiene todos los tipos de datos comúnmente utilizados en VHDL, como
std_logic_vector, std_logic, std_signed y std_unsigned, entre otros.

● La forma en que se accede a la información contenida dentro de un paquete


es mediante la sentencia “use” seguida del nombre de la librería y del
paquete, respectivamente; esto es:

use nombre_libreria.nombre_paquete.all
por ejemplo
use ieee.std_logic_1164.all

● En este caso, ieee es la librería, std_logic_1164 es el paquete y all es la


palabra reservada, la cual indica que todos los componentes almacenados
dentro del paquete pueden ser utilizados.

● A continuación se en listan algunos de los paquetes más importantes al


interior de las librerías de VHDL, así como sus características principales
● El paquete numeric_std define funciones para la realización de operaciones
entre diferentes tipos de datos; en este, los tipos pueden representarse con y
sin signo.

● El paquete numeric_bit determina tipo de datos binarios con y sin signo.


● El paquete std_arith define funciones y operadores aritméticos como: suma
(+), resta (–), división (/), multiplicación (*), igual (=), mayor que (>), menor
que (<), entre otros.
● Ejemplo
● Realizar la declaración de la entidad bloque mostrada en la figura siguiente
mediante el uso de librerías y paquetes.
Solución:
● En esta entidad se utiliza la biblioteca
ieee y el paquete std_logic_1164.

● Las entradas y salidas se manejan


de forma individual y en tipo vector.

● Modo in: X vector de 2 bits


● Modo in: A, B entradas individuales de
un bit
● Modo out: Z salida vector de 4 bits
● Entidad: Bloque

1 library ieee;
2 use ieee.std_logic_1164.all;
3 entity Bloque is
4 port( X: in std_logic_vector(1 downto 0);
5 A,B: in std_logic);
6 Z: out std_logic_vector (0 to 3)); 7 end Bloque
● Ejemplo
● La siguiente figura representa una entidad capaz de realizar una suma de 2
bits, A y B, que da como resultado la operación SUMA=A+B. Realizar la
declaración de la entidad correspondiente mediante el uso de paquetes y
librerías

Solución:

1 library ieee;
2 use ieee.std_logic_1164.all;
3 use work.std_arith.all;
4 entity Sumador is
5 port( A,B: in std_logic_vector (1 downto 0);
6 SUMA: out std_logic_vector (1 downto 0));
7 end Sumador;
Como se puede observar, en la línea 3 la librería work utiliza el paquete
std_arith, requerido para que la operación de SUMA = A + B se pueda
efectuar; este paquete permite el uso del operador (+), mismo que hace
posible esta operación.

En el caso de que la librería no esté dentro del programa al momento de su


ejecución, el compilador enviará un mensaje de error.

● La librería de trabajo work es el lugar preestablecido por el software para


almacenar los programas que el usuario va realizando; por tanto, esta
siempre se encuentra presente en la compilación de un diseño.
● Así mientras no sea especificada otra librería, los diseños invariablemente se
guardarán dentro de ella; por dicha razón no requiere el uso de la declaración
library.
Arquitectura
● Una arquitectura define el algoritmo o la estructura de solución de una
entidad, en esta se describen las instrucciones o procedimientos “programa”
que debe llevarse acabo para obtener la solución deseada por el diseñador.

● La gran ventaja que presenta el VHDL con respecto a los compiladores


tradicionales de diseño PALASM, OPAL, PLP, ABEL y CUPL.

● Entre otros disponibles para la programación de Dispositivos Lógicos


Programables, es la extensa variedad de formatos con los que cuenta ya que
utiliza en la descripción de una entidad.

● Es decir, VHDL es posible escribir diferentes niveles de abstracción, que van


desde el uso de ecuaciones y estructuras lógicas, la descripción mediante la
simbología de la transferencia de registros RTL, hasta la simplicidad que
puede representar una caja negra – Sistema –, cuya interpretación “función
de transferencia”, la relación entre entradas y salidas, describe el
funcionamiento de la entidad.
● No obstante, en VHDL no existe de manera formal un procedimiento de
diseño. Como ya se mencionó, la versatilidad en la abstracción y la
descripción de una entidad permiten al usuario la tarea de planear la
estrategia por utilizar para una solución en particular

● Sin duda, la experiencia en programación puede ser un factor importante de


diseño, sin embargo, VHDL posee una estructura de programación tan
amigable que es muy fácil de entender, aun por personas que no han tenido
relación alguna con los lenguajes de programación.

● De manera general y con base en cómo se presenta la entidad (entity), a


primera vista, en VHDL se pueden distinguir los siguientes estilos de
programación.

● Estilo por flujos de datos.


● Estilo funcional.
● Estilo estructural.
Ejercicios
● ¿Qué es un PLD?
● ¿Cuál es el significado de los siguientes términos: GAL, CPLD, FPGA?
● ¿La estructura de programación en VHDL requiere del uso de los módulos;
entidad y arquitectura?, describa la función de cada uno de ellos.
● ¿Cuál es la función de utilizar punto y coma (;) en la estructura de un
programa?
● Mencione los tipos de modos válidos en VHDL
● Considere la siguiente figura y determine qué variables corresponden a cada
tipo de modo

P0,P1,P2:__________
A0,A1: __________
X: __________
● Considere los siguientes datos y dibuje un bloque que muestre la entidad
correspondiente.

●Modo in: C1, Reset


●Modo out: Fa, Fb, Fc

●Modo buffer: Z0

●Entidad secuencia

● En la siguiente declaración de entidad indique:

entity ejemplo is a) el nombre de la entidad ______________


port ( x1, x2: in bit; b) Los puertos de entrada ______________
fa, fb: out bit); c) los puertos de salida ______________
end ejemplo; d) el tipo de dato ______________

● Declare la entidad para los siguientes circuitos:


● Indique cuales de los siguientes identificadores son correctos o incorrectos.

Ejemplo ____________ Desp_laza ____________


con_trol ____________ N_ivel ____________
Pagina ____________ architecture ____________
Contador ____________ S_uma# ____________
2Suma ____________ Res_ _ta ____________

● Declare la entidad para los siguientes circuitos. Utilice vectores.

● Describa que es una librería en VHDL


● Describa que es un paquete en VHDL
● Indique el significado de la siguiente expresión: use ieee.std_logic_1164.all
● Declare la entidad del circuito multiplexor de 4:1 mostrado en la siguiente
figura

● Declare la entidad del multiplexor 4:1 anterior, considerando que cada


entrada esta formada por un vector de 4 bits.

Potrebbero piacerti anche