Download - 4.v h d l
![Page 1: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/1.jpg)
Ing. Julio Gonzalez Prado
V H D LSOFTWARE PARA
DISEÑO DE CIRCUITOS INTEGRADOS
![Page 2: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/2.jpg)
Ing. Julio Gonzalez Prado
V H D L:
V HSIC
H ARDWARE
D ESCRIPTION
L ANGUAGE
(LENGUAJE DE DESCRIPCION DE HARDWARE VHSIC)
![Page 3: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/3.jpg)
Ing. Julio Gonzalez Prado
VHSIC:
V ERY
H IGH
S PEED
I NTEGRATED
C IRCUITS
(CIRCUITOS INTEGRADOS DE MUY ALTA VELOCIDAD)
![Page 4: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/4.jpg)
Ing. Julio Gonzalez Prado
Por lo tanto, el lenguaje VHDL es un lenguaje que se usa para describir el hardware de circuito integrados con aplicaciones en alta velocidad.
![Page 5: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/5.jpg)
Ing. Julio Gonzalez Prado
Es un lenguaje que tiene elementos del C++ y el Pascal que se emplea básicamente para realizar implementación de circuitos de alta velocidad.
Por lo tanto, si el C++ y el Pascal tienen aplicaciones para diferentes aspectos, el VHDL se centra en aplicaciones de implementación circuital.
![Page 6: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/6.jpg)
Ing. Julio Gonzalez Prado
ORIGENES
El VHDL nació en el año 1981 cuando el Departamento de Defensa de los Estados Unidos genera un proyecto denominado VHSIC para generar circuito integrados de alta velocidad.
El VHDL se desarrolla para estandarizar los procesos de diseño y optimizar el manejo de la información que se genera.
![Page 7: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/7.jpg)
Ing. Julio Gonzalez Prado
ORIGENES
En 1983, IBM, Texas Instruments e Intermetrics desarrollan el lenguaje VHDL
La IEEE lo propuso como su estandar en 1984, y en 1987 lo adoptó como su lenguaje HDL (mediante el estándar std 1076 – 1987)
![Page 8: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/8.jpg)
Ing. Julio Gonzalez Prado
ORIGENES
Como esta versión demostró algunas carencias relacionadas con la síntesis de circuitos, debido principalmente a la evolución de las herramientas de diseño que usaban el VHDL y la rápida evolución de las tecnologías para implementación de los Circuitos Integrados, se planteó una segunda versión en 1993 (que es la vigente) , mediante el estándar IEEE std 1076-1993,conocido como VHDL’93.
![Page 9: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/9.jpg)
Ing. Julio Gonzalez Prado
ORIGENES
En esencia la versión de 1987 es un subconjunto de la versión de 1993, de modo que cualquier programa de la versión antigua puede ser procesada por la versión mas reciente.
Una excepción de esta norma es lo relacionado con la declaración y el uso de ficheros.
![Page 10: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/10.jpg)
Ing. Julio Gonzalez Prado
AMBIENTE DE DESARROLLO
El diseño con lenguaje VHDL se basa en el concepto de DISEÑO CON HERRAMIENTAS CAD – EDA.
![Page 11: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/11.jpg)
Ing. Julio Gonzalez Prado
AMBIENTE DE DESARROLLO
El proceso CAD (Computer Aided Design), diseño asistido por computador es un proceso de diseño que emplea técnicas graficas de computadora apoyadas en paquetes de software para ayudar a los diseñadores.
![Page 12: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/12.jpg)
Ing. Julio Gonzalez Prado
AMBIENTE DE DESARROLLO
La aplicación de las herramientas CAD en el diseño de circuitos y sistemas electrónicos es fundamental ya que permite la adición de interfases graficas y simuladores.
![Page 13: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/13.jpg)
Ing. Julio Gonzalez Prado
ESCALAS DE INTEGRACION
Los procesos de integración implican la continua reducción del tamaño de los componentes, así como el incremento del numero de compuertas en cada integrado.
![Page 14: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/14.jpg)
Ing. Julio Gonzalez Prado
ESCALAS DE INTEGRACION
SSI (Small Scale Integrated): menos de 10 compuertas por integrado.
MSI (Medium Scale Integrated): entre 10 y 99 compuertas por integrado.
LSI (Large Scale Integrated): entre 100 y 9999 compuertas por integrado.
VLSI (Very Large Scale Integrated): entre 10000 y 99999 compuertas.
ULSI (Ultra Large Scale Integrated): 100000 compuertas ó mas.
![Page 15: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/15.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DE LA INTEGRACION Mayor numero de dispositivos por IC. Menor numero de componentes/sistemas. Mayor velocidad de calculo. Menor consumo. Mayor esfuerzo en diseño. Mayor costo de fabricación.
![Page 16: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/16.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
Es un lenguaje concurrente aunque permite definir dominios en los cuales las acciones son del tipo secuencial.
Permite diseños modulares y jerárquicos, es útil para emplear con la metodología “Top Down”.
Permite simular el diseño y generar formas de onda.
![Page 17: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/17.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
Es un lenguaje que debe ser compilado antes de ser simulado.
![Page 18: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/18.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
Soporta distintos niveles de descripción: FUNCIONAL: modelamiento en alto nivel. ESTRUCTURAL: la descripción se realiza
mediante interconexión de componentes. FISICO: se realiza la implementación real del
circuito.
![Page 19: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/19.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
A partir del modelo se puede sintetizar el Hardware a nivel de compuertas con herramientas de síntesis:
ALTERA : Max + Plus II
CADENCE : Synergy
CYPRESS : Warp II, III
MENTOR GRAPHICS : Autologic
SYNOPSYS : Design Compiler
VIEWLOGIC : ViewSynthesis
![Page 20: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/20.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
VHDL no distingue las mayúsculas de las minúsculas: CASA, casa son iguales.
Las variables deben empezar con una letra, no deben contener ni espacios ni símbolos como &, %, $, #, ¡. Su longitud no esta limitada. No pueden terminar en _ ó _ _
![Page 21: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/21.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
OBJETO: es un elemento que tiene asignado un valor de un tipo determinado.
Según sea el tipo de dato, el objeto poseerá un conjunto de propiedades y se le podrá aplicar un conjunto de operaciones.
![Page 22: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/22.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
IDENTIFICADORES: Son un conjunto de caracteres dispuestos de una forma adecuada y siguiendo unas normas propias del lenguaje, para dar un nombre a los elementos en VHDL.
![Page 23: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/23.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
Los identificadores deben empezar con un carácter alfabético, no pudiendo terminar en _
No esta fijada la extensión del identificador, pero no debe ser extremadamente larga.
Los identificadores pueden tener caracteres numéricos (0 al 9) pero estos no deben aparecer en el principio.
No puede usarse como identificador una PALABRA RESERVADA.
![Page 24: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/24.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
PALABRAS RESERVADAS: Son un conjunto de identificadores que tienen un significado especifico en VHDL.
Son palabras empleadas dentro del lenguaje para realizar un diseño.
No pueden ser empleadas como identificadores definidos por el usuario.
![Page 25: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/25.jpg)
Ing. Julio Gonzalez Prado
PALABRAS RESERVADAS
abs acces after alias all
and architecture array asser attribute
begin block body buffer bus
case component configuration constant downto
else disconnect elsif end entity
exit function generate file for
generic guarded inout if in
is label library linkage loop
map mod nand new next
![Page 26: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/26.jpg)
Ing. Julio Gonzalez Prado
PALABRAS RESERVADAS
nor not null of on
open or others out package
port procedure process range record
register rem report Return select
severity signal subtype then to
transport type units until use
variable walt when while with
xor
![Page 27: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/27.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
SIMBOLOS ESPECIALES: Son símbolos que se usan para representar funciones diferentes y especificas.
Los símbolos especiales son:
+ - / ( ) . , : ; & ‘ < > = | # <= => := _ _
![Page 28: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/28.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
NUMEROS: Se considera que cualquier numero se encuentra en base 10.
Se admite notación científica para números en coma flotante.
Para números en otras bases:
2#11000100# 16#C4#
![Page 29: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/29.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
TIPO DE DATOS: Delimita los valores que puede tener un objeto y las operaciones que se pueden realizar con él.
![Page 30: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/30.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
TIPOS ESCALARES: Son tipos que contienen algún tipo de magnitud.
Pueden ser: Enteros, Reales, Físicos y Enumerados.
![Page 31: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/31.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
ENTEROS: Son datos cuyo contenido constituye un valor numérico entero.
Se definen por la palabra reservada range que indica que esta comprendido entre un cierto intervalo especificando sus limites.
Ejemplo: type byte is range 0 to 255;
type index is range 7 downto 0;
type integer is range -2147483648 to 2147483647;
![Page 32: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/32.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
REALES: Son los que define un numero real. type nivel is range 0.0 to 5.0;
type real is range -1,0E38 to 1,0E38;
![Page 33: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/33.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
FISICOS: Son datos que se corresponden con magnitudes físicas, es decir, tienen valor y unidades.
type long is range 0 to 1,0e9
units
um;
mm=1000um;
m=1000mm;
end units;
![Page 34: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/34.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
ENUMERADOS: Son datos que pueden tomar cualquier valor especificado en un conjunto finito ó lista.
Este conjunto se indica mediante una lista encerrada entre paréntesis de elementos separados por comas.
type nivel _ lógico is (alto,bajo,Z);
type bit is (‘0’, ‘1’);
![Page 35: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/35.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
TIPOS COMPUESTOS MATRICES: Son una colección de elementos
del mismo tipo a los que se accede mediante un índice.
Pueden ser de una dimensión ó de varias dimensiones.
Pueden estar definidas para un rango ó el índice puede ser libre teniendo la matriz una dimensión teórica infinita.
![Page 36: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/36.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
MATRICES: EJEMPLOS type palab is array (31 downto 0) of bit; type transform is array (1 to 4, 1 to 4) of real; type bit_vector is array (natural range <>) of
bit;
![Page 37: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/37.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
REGISTROS: Es el equivalente al tipo registro de otros lenguajes.
type alumno is
record
nombre: string;
curso: integer;
end record;
![Page 38: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/38.jpg)
Ing. Julio Gonzalez Prado
CARACTERISTICAS DEL VHDL
ATRIBUTOS: Son condiciones ó características que pueden tomar las señales ó variables.
![Page 39: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/39.jpg)
Ing. Julio Gonzalez Prado
ATRIBUTOS
Suponiendo que “t” es un tipo enumerado, entero, flotante ó fisico se tienen:
t’left : limite izquierdo del tipo “t” t’right : limite derecho del tipo “t” t’low : limite inferior del tipo “t” t’high: limite superior del tipo “t”
![Page 40: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/40.jpg)
Ing. Julio Gonzalez Prado
ATRIBUTOS
Suponiendo un tipo “t”, un miembro “x” de este tipo y un entero “N” :
t’pos(x): posicion “x” dentro del tipo “t” t’val(N): elemento (N) del tipo “t” t’leftof(x): elemento que esta a la izquierda de “x” en
“t” t’rightof(x): elemento que esta a la derecha de “x” en
“t” t’pred(x): elemento que esta delante de “x” en “t”. t’succ(x): elemento que esta detrás de “x” en “t”
![Page 41: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/41.jpg)
Ing. Julio Gonzalez Prado
ATRIBUTOS
Si “a” es un tipo matriz, “n” elemento de este, “N” numero entero desde 1 hasta el numero de dimensiones de la matriz:
a’left(N): limite izquierdo del rango de dimension N de a.
a’right(N):limite derecho del rango de dimension N de a.
a’low(N): limite inferior del rango de dimension N de a.
![Page 42: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/42.jpg)
Ing. Julio Gonzalez Prado
ATRIBUTOS
a’high(N): limite superior del rango de dimension N de a.
a’range(N): Rango del indice de dimension N de a.
a’length(N): Longitud del indice de dimension N de a.
![Page 43: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/43.jpg)
Ing. Julio Gonzalez Prado
ATRIBUTOS
Suponiendo que “s” es una señal: s’event: Devuelve “V” si se ha producido un
cambio en la señal “s”. s’stable (tiempo): Devuelve V se la señal
estuvo estable durante el ultimo periodo de “tiempo”.
El atributo s’event es util en la definicion del circuitos secuenciales para detectar el flanco de subida o bajada de la señal de reloj.
![Page 44: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/44.jpg)
Ing. Julio Gonzalez Prado
TERMINOLOGIA
ACCIONES CONCURRENTES: son aquellas que se realizan en forma simultanea en un circuito. Un ejemplo son los circuitos combinacionales.
ACCIONES SECUENCIALES: son aquellas que se realizan siguiendo una secuencia ó un orden determinado, no todas en forma simultanea. Un ejemplo de ellas son los procesos que se describen las sentencias de un programa: CASE, IF-ELSE, DO-WHILE, FOR.
![Page 45: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/45.jpg)
Ing. Julio Gonzalez Prado
TERMINOLOGIA
PROCESO (PROCESS): son los dominios que emplea el VHDL para emplear acciones de tipo secuencial.
La asignacion de eventos secuenciales dentro de una estructura concurrente se ejecutará de forma concurrente, es decir, al mismo tiempo que las demás sentencias.
![Page 46: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/46.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
MODO: Describe la dirección en la cual la información es transmitida a través del puerto.
Puede ser: Modo IN
Modo OUT
Modo BUFFER
Modo INOUT
![Page 47: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/47.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
MODO IN: Es cuando por el puerto la información solo puede entrar a la entidad.
Se usa generalmente en relojes, entradas de control (load, reset, enable) y datos de entrada unidireccionales.
![Page 48: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/48.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
MODO OUT: Es cuando la información en el puerto fluye hacia fuera de la entidad.
Este modo no permite realimentación, es decir, el compilador no puede leer este dato.
![Page 49: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/49.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
MODO BUFER: Es usado para una realimentación interna (se usa como un driver dentro de la entidad)
Es similar al MODO OUT pero permite realimentación.
No es un puerto BIDIRECCIONAL y solo puede ser conectado directamente a una señal interna ó a un puerto de modo buffer de otra entidad.
![Page 50: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/50.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
MODO INOUT: Es usado para señales bidireccionales.
Permite realimentación interna. Puede reemplazar a cualquiera de los modos
anteriores.
![Page 51: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/51.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
TIPO: Son las diferentes clases de valores que puede tomar la señal.
Pueden haber tantos tipos como se quiera, ya que en VHDL se pueden definir por el usuario.
También existen los tipos de forma estándar y los creados por librerías normalizadas.
La norma internacional IEEE 1076/93 define 4 tipos nativos: BOOLEAN, BIT, BIT_VECTOR, INTEGER.
![Page 52: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/52.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
TIPO BOOLEAN: Pueden tomar valores VERDADERO (TRUE) ó FALSO (FALSE).
Un ejemplo son las salidas de los comparadores.
TIPO BIT: Pueden tomar valores 0 (LOW) ó 1(HIGH).
TIPO BIT_VECTOR: Es un vector de bits. TIPO INTEGER: Puede manejar números
enteros.
![Page 53: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/53.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
Posteriormente la norma IEEE 1164 amplió el ámbito del bit definiendo un nuevo tipo llamado std_logic, std_ulogic y sus derivados: std_logic_vector, std_ulogic_vector.
![Page 54: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/54.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
ARCHIVOS DE CABECERA: Se colocan al inicio de la entidad y permiten al programa cargar diversas librerías y archivos que contienen tipos y definiciones que serán usadas por el programa.
library ieee; use ieee.std_logic_1164.all; use work.std_arith.all;
![Page 55: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/55.jpg)
Ing. Julio Gonzalez Prado
library (biblioteca)
Es un lugar al que se tiene acceso para utilizar las unidades de diseño predeterminadas por el fabricante permitiendo agilizar el diseño.
En VHDL existen dos bibliotecas: ieee y work.
![Page 56: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/56.jpg)
Ing. Julio Gonzalez Prado
library (biblioteca)
La biblioteca work permite almacenar los programas que el usuario va generando.
Cuando el diseño utiliza algun paquete es necesario llamar a la biblioteca que lo contiene.
En el caso de work no se necesita la declaracion library porque la carpeta siempre esta presente al desarrolar el diseño.
![Page 57: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/57.jpg)
Ing. Julio Gonzalez Prado
library (biblioteca)
La biblioteca std_logic_1164 contiene: El paquete numeric_std: define funciones
para realizar operaciones entre diferentes tipos de datos que pueden representarse con signo y sin signo.
El paquete numeric_bit: define tipos de datos binarios con signo ó sin signo.
El paquete std_arith: define funciones y operadores aritmeticos tales como = > <
![Page 58: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/58.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
El programa en VHDL esta formado de dos partes principales:
![Page 59: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/59.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
ENTIDAD (entity): Es la interfaz del dispositivo con el exterior.
Es decir, describe los puertos (ports) que son las entradas y salidas del circuito.
![Page 60: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/60.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
Su estructura es:
entity nomb_ent is
[generic (lista de parametros)];
ports(
lista de puertos);
end nomb_ent;
![Page 61: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/61.jpg)
Ing. Julio Gonzalez Prado
EJEMPLO: Entidad para un comparador de igualdad de dos números de 4 bits.
a
b
COMP IGUAL
![Page 62: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/62.jpg)
Ing. Julio Gonzalez Prado
EJEMPLO: Entidad para un comparador de igualdad de dos números de 4 bits. entity comp is port (
a,b: in bit_vector(3 downto 0);
igual: out bit);
end comp;
![Page 63: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/63.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
ARQUITECTURA (architecture): describe la funcionalidad del dispositivo, es decir las transformaciones que se realizaran sobre los datos que ingresan por los puertos para producir la salida.
Es decir describe el funcionamiento del dispositivo.
![Page 64: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/64.jpg)
Ing. Julio Gonzalez Prado
SINTAXIS
Su estructura es:
architecture nomb_arch of nomb_ent is
[declaraciones]
begin
sentencias concurrentes;
end nomb_arch;
![Page 65: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/65.jpg)
Ing. Julio Gonzalez Prado
ESTILOS DE ARQUITECTURA
Son las formas de descripción que se utilizan dependiendo cada uno de su propio nivel de abstracción.
![Page 66: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/66.jpg)
Ing. Julio Gonzalez Prado
ESTILO BEHAVIORAL(COMPORTAMIENTO) Este estilo se caracteriza por incluir
sentencias y ordenes típicas de un lenguaje de programación: when, do-while, if-then.
Como estas sentencias son de tipo secuencial se usan en el PROCESO (process).
No interesa la estructura interna del dispositivo.
![Page 67: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/67.jpg)
Ing. Julio Gonzalez Prado
ESTILO BEHAVIORAL
architecture ejem1of comp isbegin
process(a,b)begin
if(a=b) then igual <= ‘1’;else igual <= ‘0’;end if;
end process;end ejem1;
![Page 68: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/68.jpg)
Ing. Julio Gonzalez Prado
ESTILO DATAFLOW(FLUJO DE DATOS)
Describe como la información será transmitida usando señales a través del dispositivo de modo que realice el trayecto entre entrada y salida SIN USO DE ASIGNACIONES SECUENCIALES.
En este estilo no se pueden usar procesos.
![Page 69: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/69.jpg)
Ing. Julio Gonzalez Prado
DIAGRAMA CIRCUITAL
IGUAL
U4
B(3)
A(3)
B(2)
A(2)
B(1)
A(1)
B(0)
A(0)
U3
U2
U1
U0
![Page 70: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/70.jpg)
Ing. Julio Gonzalez Prado
ESTILO DATAFLOW
architecture ejem2 of comp is
begin
igual <= (a(0) xnor b(0))
and (a(1) xnor b(1))
and (a(2) xnor b(2))
and (a(3) xnor b(3));
end ejem2;
![Page 71: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/71.jpg)
Ing. Julio Gonzalez Prado
ESTILO STRUCTURAL(ESTRUCTURAL) Describe detalladamente como se conectan y
evalúan los componentes con señales. Es el estilo mas difícil de usar ya que detalla
las conexiones y es una forma de descripción circuital del dispositivo.
![Page 72: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/72.jpg)
Ing. Julio Gonzalez Prado
ESTILO STRUCTURAL(ESTRUCTURAL) Su utilidad se presenta cuando se desea
crear una estructura grande y deseamos descomponerla en partes para manejarla mejor y hacer una simulación de cada parte.
Suele requerir el uso de señales auxiliares, paquetes y librerías de accesorios se deben declarar al comienzo de la entidad.
![Page 73: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/73.jpg)
Ing. Julio Gonzalez Prado
ESTILO STRUCTURAL
architecture ejem3 of comp issignal x: bit_vector(0 to 3);begin
u0: xnor2 port map(a(0),b(0),x(0));u1: xnor2 port map(a(1),b(1),x(1));u2: xnor2 port map(a(2),b(2),x(2));u3: xnor2 port map(a(3),b(3),x(3));
u4: and4 port map(x(0),x(1),x(2),x(3),igual);end ejem3;
![Page 74: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/74.jpg)
Ing. Julio Gonzalez Prado
CONSTANTES
Son elementos que se inicializan en un determinado valor y que no puede ser cambiado una vez inicializado.
Ejemplos: constant pi: real := 3.14;
constant delay: time := 20 s;
![Page 75: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/75.jpg)
Ing. Julio Gonzalez Prado
VARIABLES
Son elementos cuyo valor puede ser asignado en cualquier instante y también con un valor inicial.
Ejemplos: variable alfa:natural:= 1;
![Page 76: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/76.jpg)
Ing. Julio Gonzalez Prado
SEÑALES
Son elementos que se declaran igual que las variables y las constantes.
Se diferencian de las variables en que guardan un valor y lo pueden hacer visible en el momento adecuado.
O sea puede como un elemento que tiene dos partes: la parte donde se escribe el dato y la parte donde se lee.
![Page 77: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/77.jpg)
Ing. Julio Gonzalez Prado
SEÑALES
Pueden ser de tres tipos: NORMAL: no se pueden desconectar; BUS: tiene un valor por defecto cuando están
desconectadas; REGISTER: no tienen un valor por defecto
pero conservan el ultimo valor que se escribió.
![Page 78: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/78.jpg)
Ing. Julio Gonzalez Prado
SIGNIFICADO FISICO
Las VARIABLES son elementos abstractos, es decir, solo tiene significado para el lenguaje.
Las SEÑALES tienen significado físico: representan las conexiones entre elementos del circuito.
![Page 79: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/79.jpg)
Ing. Julio Gonzalez Prado
DIFERENCIA
La diferencia principal es que una asignación a una variable se realiza en forma INMEDIATA, o sea toma el valor que se le asigna en el momento de la asignación.
En cambio una señal no recibe el valor que se le ha asignado HASTA EL SIGUIENTE PASO DE SIMULACION.
![Page 80: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/80.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA PROCESS
Es una instrucción típica de VHDL, se usa en el estilo BEHAVIORAL.
Es la forma que tiene el VHDL para incluir las sentencias secuenciales.
Para el compilador, todo el PROCESS se considera solo un paso de simulación.
LISTA SENSIBLE: es la relación de las señales que deben cambiar para que se ejecute el process.
![Page 81: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/81.jpg)
Ing. Julio Gonzalez Prado
PROCESS
Sintaxis:
[etiqueta] process (lista sensible)
[zona de declaración]
begin
sentencias secuenciales;
end process [etiqueta];
![Page 82: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/82.jpg)
Ing. Julio Gonzalez Prado
FORMA 1:
process (lista sensible)begin
sentencias secuenciales;end process;
Se continua ejecutando el process mientras alguna e las señales de la lista sensible continúe cambiando.
Al llegar a end se suspende el proceso y se realiza la asignacion de señal.
![Page 83: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/83.jpg)
Ing. Julio Gonzalez Prado
FORMA 2:
processbegin
sentencias secuenciales;wait;sentencias secuenciales;wait;sentencias secuenciales;
end process;
![Page 84: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/84.jpg)
Ing. Julio Gonzalez Prado
FORMA 2:
No tiene lista sensible. Usa la palabra wait. Tiene la forma de lazo infinito. El proceso se suspende cada vez que se
encuentra un wait, para realizar la asignación a señal.
![Page 85: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/85.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA WAIT
Suspende el proceso y realiza las asignaciones respectivas a las señales.
Sintaxis:
wait on (señales);
wait until (condición);
wait for (tiempo);
![Page 86: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/86.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA IF
Se usa con then – else ejecutar un conjunto de sentencias según la evaluación de una condición ó conjunto de condiciones, cuyo resultado puede ser verdadero ó falso.
![Page 87: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/87.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA IF
Sintaxis:If (condición) then
sentencia 1;
else
sentencia 2;
end if;
![Page 88: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/88.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA IF
Si la condición es VERDADERA, se ejecuta la sentencia 1.
Si la condición es FALSA, se ejecuta la sentencia 2.
![Page 89: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/89.jpg)
Ing. Julio Gonzalez Prado
ELSIF
Es una extensión de la sentencia if-then que permite incluir una segunda condición
Sintaxis:If (condicion1) then sentencia 1;
elsif (condicion2) then sentencia 2;
else sentencia 3;
end if;
![Page 90: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/90.jpg)
Ing. Julio Gonzalez Prado
ELSIF
Funcionamiento:Si condición 1 es verdadera, se ejecuta la
sentencia 1,
Si la condición 1 es falsa, se evalúa la condición 2,
Si la condición 2 es verdadera, se ejecuta la sentencia 2,
Si la condición 2 es falsa, se ejecuta la sentencia 3.
![Page 91: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/91.jpg)
Ing. Julio Gonzalez Prado
ELSIF(EJEMPLO)
process (e,s)
begin
if (e = ‘0’) then c <= ‘0’;
elsif (s = ‘0’) then c <= a;
else c <= b;
end if;
![Page 92: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/92.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA CASE
Es una sentencia que permite ejecutar un conjunto de opciones de acuerdo a la señal de selección.
Sintaxis:
case (señal a evaluar) is
when (valor1) => accion_1;
when (valor2) => accion_2;
when (valor n) => accion_n;
end case;
![Page 93: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/93.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA CASE
Funcionamiento: Si “señal a evaluar” toma “valor 1”, se ejecuta
“accion_1”, pasando luego el programa a la linea siguiente de “end”, continuando luego el programa.
Si “señal a evaluar” toma “valor 2”, se ejecuta “accion_2” y así sucesivamente.
![Page 94: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/94.jpg)
Ing. Julio Gonzalez Prado
CASE(EJEMPLO)
case control is
when “00” => d <= a;
when “01” => d <= b;
when “10” => d <= c;
when others => d <= ‘0’;
end case;
![Page 95: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/95.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA LOOP
Se usa para ejecutar un grupo de sentencias un numero determinado de veces.
Consiste en un ciclo for ó un ciclo while. La sentencia for ejecuta un numero
especifico de iteraciones basado en el valor de una variable.
La sentencia while continuará ejecutando una operación mientras una condición de control local sea cierta.
![Page 96: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/96.jpg)
Ing. Julio Gonzalez Prado
EJEMPLO 1
process(a)
begin
ciclo1: for i in 7 downto 0
loop
entrada(i) <= ‘1’
end loop;
end process;
![Page 97: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/97.jpg)
Ing. Julio Gonzalez Prado
EJEMPLO 2
process (a)variable i: integer := 0;beginciclo2: while i < 7 loop
entrada (i) <= ‘0’;i = i + 1;
end loop;end process;
![Page 98: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/98.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA EXIT
Se usa dentro del loop y permite salir del lazo si se alcanza una condición fijada por nosotros.
Su verdadera utilidad se encuentra si se diseña controladores de memoria.
![Page 99: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/99.jpg)
Ing. Julio Gonzalez Prado
EJEMPLO
process (a)beginciclo1:for i in 7 downto 0loop
if a’length < i then exit ciclo1;entrada(i) <= ‘0’;
end if;end loop;end process;
![Page 100: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/100.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA NEXT
Se encuentra también dentro de un ciclo loop y sirve para saltarnos una ó más de las ejecuciones programadas.
![Page 101: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/101.jpg)
Ing. Julio Gonzalez Prado
EJEMPLO
process (a)
begin
ciclo1: for i in 7 downto 0
loop
if i=4 then next;
else
entrada (i) <= ‘1’,
end if;
end loop;
end process;
![Page 102: 4.v h d l](https://reader033.vdocuments.mx/reader033/viewer/2022061213/5497e35eac795925288b5647/html5/thumbnails/102.jpg)
Ing. Julio Gonzalez Prado
SENTENCIA NULL
Se utiliza para que dada una condición especial no pase nada, es decir, que ninguna señal ó variable cambie y que el programa siga su curso habitual. Su comportamiento dentro de un loop es similar al de la sentencia next.