Está en la página 1de 53

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE QUERETARO


INGENERÍA ELECTRÓNICA

INSTITUTO TECNOLÓGICO DE QUERÉTARO

Práctica # 9

“semáforo VHDL”

Diseño Digital

Profesor: Agustín Barrera Navarro

Alumno:
• Jesús Alejandro Ramírez Tovar
• Roberto Pérez Cuellar

Carrera:
Ingeniería Electrónica

1
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

índice
Marco teórico…………………………………………………. 3
• Dispositivos PLD………………………………………...3
• Clasificación general……………………………………..5
• Estructura interna………………………………………...7
• VHDL…………………………………………………….13
• Máquina virtual…………………………………………..27
• Comandos de máquina virtual……………………………28
Desarrollo………………………………………………………29
• Material…………………………………………………..29
• Definición del problema…………………………………29
• Procedimiento……………………………………………30
Conclusión……………………………………………………..52
Fuentes…………………………………………………………53

2
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

• Marco teórico

Dispositivos lógicos programables (PLD)

➢ Un PLD (Programmable Logic Device, Dispositivo lógico programable)


es un componente electrónico empleado para la fabricación de circuitos
digitales. A diferencia de las puertas lógicas un PLD tiene una función
indefinida. Antes de que un PLD pueda ser usado en un circuito este
puede ser programado.
Un PLD está formado por una matriz de compuertas AND y puertas OR,
que se pueden programar para conseguir funciones lógicas específicas.
Existen cuatro tipos de dispositivos que se clasifican como PLD.

▪ PROM (Programmable Read Only Memory). Memoria


programable de sólo lectura.
▪ PLA (Programmable Logic Array). Matriz lógica programable.
▪ PAL (Programmable Array Logic). Matriz lógica programable.
▪ GAL (Generic Array Logic). Matriz lógica generica.

Todos los PLD están formados por matrices programables.


Esencialmente, una matriz programable es una red de conductores
distribuidos en filas y columnas con un fusible en cada punto de
intersección. Las matrices pueden ser fijas o programable.

Matriz OR.

Está formada por una serie de puertas OR conectadas a una matriz programable
con fusibles en cada punto de intersección de una columna y una fila. La matriz
se programa fundiendo los fusibles para eliminar las variables seleccionadas de
las funciones de salida para un caso específico. Para cada una de las entradas de
una puerta OR sólo queda intacto un fusible que conecta la variable deseada en
la entrada de la puerta. Una vez que el fusible este fundido, no se puede volver
a conectar.

3
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Matriz AND.

Este tipo de matriz está formado por puertas AND conectadas a una matriz
programable con fusibles en cada punto de intersección. al igual que la matriz
OR la matriz AND se programa fundiendo los fusibles para eliminar las
variables de la función salida. Para cada entrada de una puerta AND sólo queda
intacto un fusible que conecta la variable deseada a la entrada de la puerta.
Como para la matriz OR la matriz AND con fusibles se puede programar una
única vez.

Debido a los avances de la tecnología en la realización de nuevas


estructuras y el incremento de la integración, logrando cada vez circuitos
en menor tamaño, ó mayor cantidad de elementos lógicos en el mismo,
es que cualquier diseño digital, que hasta hace poco tiempo se realizaba
en forma discreta, se pueda configurar ó realizar con estos circuitos

4
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

lógicos programables. Podemos decir entonces, en forma generalizada


que estos dispositivos permiten programar todo tipo de componente de la
lógica booleana, desde las compuertas más elementales hasta los
secuenciales más complejos, pasando por decodificadores,
multiplexores, contadores, registros, procesadores digitales, sistemas de
transmisión de datos, etc.

Estos circuitos PLD conforman una estructura básica compacta,


perfectamente estructurada y por lo general realizada en un solo circuito
integrado (aunque a veces puede ser más de uno) fabricados en alta (LSI),
muy alta (VLSI) ó ultra alta (ULSI) escala de integración. Poseen
diferentes características según el fabricante, en cuanto a su capacidad de
programación, tecnología, forma exterior, etc. Al igual que las memorias
programables, están aquellos que permiten una única programación, los
que pueden ser borrados con luz ultravioleta y aquellos borrables y
programables eléctricamente.

Clasificación general

1.- Redes Lógicas Programables, PAL (Programmable Array Logic) ó


PLA (Programmable Logic Array). Se las puede dividir en tres grandes
subfamilias, según el tipo de matriz programable que incluya en su
estructura lógica:

a) Matriz Y programable – matriz O programable: PLA.


b) Matriz Y fija – matriz O programable: PROM
c) Matriz Y programable – matriz Y fija: PAL propiamente dichas, y que
según el tipo de dispositivo lógico que incluya en su estructura interna,
pueden ser:
• PAL combinacionales ó PAL simples.
• PAL secuenciales. ó FPLS. Desde el punto de vista de la tecnología de
programación, se las divide en dos tipos:
a) PAL Bipolares.
b) PAL CMOS.

5
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

2.- EPLD (Erasable Programmable Logic Device) Son circuitos lógicos


programables eléctricamente y borrables con luz ultravioleta, que
permiten desarrollar un diseño, borrando y regrabando hasta sacarle todos
los problemas lógicos ó eléctricos. Tenemos las siguientes familias:
• EPLD Simples ó clásicas: Familia de serie EPXXXX.
• EPLD Complejas ó CPLD (Complex Programmable Logic Device):
Familia MAX ó de la serie EPMXXXX. Múltiple Array matriz. Familia
FLEX ó Flexible Lógic Element Matrix. Familia APEX ó Advanced
Programmable Element Matrix.
• EPLD Específicas: Familia de serie EPB Familia de serie EPS.

3.- GAL (Generic Array Logic) Son equivalente a las memorias


EEPROM, es decir que permiten ser borradas y grabadas eléctricamente.
Se pueden establecer las siguientes subfamilias:
a) Tipo PAL: Matriz Y / Macrocelda programable de salida:

• Borrables y Programables fuera del circuito.


• Borrables y Programables en circuito.

b) TIPO FPLA: Matriz Y / Matriz O / Macrocelda programable de salida.


Se introduce un nuevo concepto más general de redes/macroceldas
programables.

4. ASIC: Son circuitos digitales completos, de uso directo por los


diseñadores, sin necesidad de programación posterior. Aparecieron al
mismo tiempo que las PAL, pero como son programables por máscaras
en fábrica sólo se aplica a grandes producciones en serie, pues su costo
es elevado y su amortización se justifica solo en esos casos.

5. LCA (Logic Cell Array) ó FPGA (Field Programmable Gate Array) ó


red de celdas lógicas. Podemos decir que es un producto similar a las
ASIC, pero programables por el usuario. Se caracteriza por poseer una
gran cantidad de bloques funcionales básicos, que en el estadio de diseño
e implementación el usuario interconecta para obtener las funciones
lógicas deseadas.

6
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

6. FPGA de anti fusibles: se trata de redes de compuertas lógicas muy


similares a las LCA, pero con una técnica de programación de las uniones
totalmente diferentes, cuya denominación es la que identifica a estos
circuitos, es decir anti fusibles.

PAL: Estructura interna general

En este punto examinaremos los componentes generales de estos


dispositivos, externos e internos. Es decir, aquellos que puede acceder
directamente el usuario, y a los que no lo hace directamente; pero
ambos igualmente programables.
Todas las PAL contienen entradas, salidas, matriz programable arreglos
lógicos combinacionales y celdas de salida. Estas celdas de salida
pueden existir ó no, y en el primer caso pueden ser simples o complejas,
como vemos en una estructura típica y que describiremos a
continuación:

Entradas: Todas ellas poseen un cierto número, que invariablemente


terminan en forma directa y complementada sobre la matriz de
programación.

Salidas: A diferencia de las anteriores pueden tomar varias


configuraciones. Siempre se realiza a través de un buffer de tres estados,
directo ó inversor. Este buffer es controlado por dos posibles tipos de
señales: desde la zona de fusibles, ó desde una entrada dedicada
especialmente a tal función: habilitación de salida (Ouput Enable). Por
ello, esto implica que el estado de salida, lógico ó de alta impedancia,

7
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

puede ser manejado por variables del sistema ó por señales dedicadas.
Puede tratarse de un terminal de salida exclusivamente, ó de un terminal
bidireccional, es decir que cumpla con dos funciones alternativamente, ó
sea entrada/salida. En las PAL secuenciales, la salida no tiene
realimentación, y por lo general es controlada por una entrada dedicada
a esa función, para todas las salidas en conjunto a través de una línea
común llamada “habilitación de salidas” (Ouput Enable).

Realimentación: La salida se reinyecta hacia la zona de fusibles


programables a través de un dispositivo inversor-no inversor como los de
entrada, con la intención de lograr: • Una genuina realimentación de la
salida hacia la zona de entrada. • Utilizar la pata de salida, como una
entrada alternativa cuando el buffer de salida se polariza en alta
impedancia. Este montaje es muy utilizado en todas las PAL, por ser de
mucha utilidad práctica. En el caso de arreglos combinacionales se
realimenta directamente desde la salida. En el caso de arreglos
secuenciales no se realimenta desde la salida, sino desde la salida negada
del correspondiente biestable.

Celda de salida: depende del tipo específico de PAL.

En el caso de PAL secuenciales simples, la celda de salida está realizada


por un biestable, por lo general del tipo D. En estos casos los controles
del reloj de los biestables son comunes a todas las salidas y manejados
por una línea de específica llamada CLOCK.

8
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

En el caso de PAL complejas, la celda de salida está compuesta por varios


elementos digitales, en general programables, como se verá luego,
lográndose estructuras programables mucho más versátiles que las
analizadas. Son ejemplos de este tipo las PAL Versátiles ó VPAL y las
PAL Asíncrona de Registro. En estos casos los controles del reloj
también son totalmente programables, en cuanto a la función que maneja
su lógica, como el flanco que dispara al biestable correspondiente.
También existe un caso especial de arreglo lógico secuencial, que, si bien
no es muy generalizado, existe y es el caso de las PAL O-Exclusivas. Son
muy parecidas a las PAL secuenciales simples, sólo que incluyen una
función O-exclusiva a nivel de la salida de la zona de fusibles. Esto
permite la realización la función de memorización, especialmente en
contadores y secuenciadores.

EPLD:

Son circuitos lógicos programables, cuya característica más importante,


es que se pueden borrar y volver a programar. De allí nace su nombre
Erasable Programmable Logic Device ó sus siglas EPLD. Son
básicamente circuitos lógicos programables eléctricamente y borrables
por la exposición a radiación ultravioleta (UV), de una cierta longitud de
onda y potencia. Fueron desarrollados por la empresa Altera, hacia fines
del año 1984 e introducidos en el mercado de los circuitos lógicos

9
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

programables para competir con las PAL, y las GAL de reciente


aparición.

Se puede llegar a pensar que sólo son una variedad más de PAL CMOS
borrables. Pero no es así, ya que la arquitectura interna, los tipos de macro
celdas y redes de interconexión son totalmente diferentes a las vistas para
las PAL y GAL. También los procesos físicos de fabricación difieren
bastante, ya que los niveles de integración actualmente realizados en los
EPLD son mucho mayores que las PAL CMOS con funciones similares.
En efecto, los EPLD actualmente comercializados integran desde varios
miles (7000 a 8000) compuertas en los dispositivos de las familias
clásicas, a varios millones en las familias de alta performance y
prestación. Podemos decir entonces, que este tipo de circuito puede alojar
comparativamente, esquemas lógicos que incluyan desde algunas
décadas de PAL clásicas hasta varios cientos de ellas en el mismo
encapsulado. También podemos concluir en que alojarán desde cientos a
miles de funciones TTL típicas.

Tipos de PLD

Desde la introducción de las primeras EPLD en el mercado, Altera se ha


esforzado por cumplir con las premisas que se propuso, y esto se ve
reflejado en la gran variedad de productos para usos generales que posee
actualmente: PLD Clásicos (ClassicTM PLD), MAX 3000, MAX 5000,
MAX 7000, MAX, 9000, FLEX 6000, FLEX 8000, FLEX 10K, Y APEX
20K. La familia clásica y MAX ó Multiple Array Matrix utilizan la
arquitectura de sumatoria de productos con una matriz Y-Programable y
una O-Fija. La familia FLEX ó Flexible Logic Element Matrix utiliza la
arquitectura de generador de funciones combinacionales ó LUT (Lookup
table) junto con elementos secuenciales. Y finalmente la familia APEX ó
Advanced Programmable Logic Matrix combina las dos arquitecturas
indicadas.

10
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

1.-EPLD Simples ó clásicas:

Se trata de los primeros circuitos programables de este tipo, incorporados


inicialmente por Altera, aunque luego fueran también fabricados por
otras empresas. Su estructura interna está compuesta por arreglos lógicos
interconectados en forma global; agrupándose en macrocelads que toman
señal lógica desde las entradas dedicadas, entradas/salidas, y
realimentaciones varias en forma directa y complementada, conformando
una serie de buses adecuados para la distribución de esta información.
Las mencionadas macro celdas están conformadas por redes de suma de
productos y registros programables. PLD Página 37 de 68 Son del tipo
UV-EPROM, es decir grabables eléctricamente y borrables por
ultravioleta. En los encapsulados con ventana de borrado pueden ser el
100 % testeados en fábrica.

2.-EPLD Complejas ó CPLD (Complex Programmable Logic


Device):

Se trata de circuitos programables complejos, fundamentalmente


caracterizados por una nueva etapa en la densidad de integración, pues
como hemos mencionado mientras un EP1810 de la serie clásica tiene
alrededor 1000 compuertas lógicas utilizables, en uno de la serie
compleja puede superar ampliamente las 20000. Este incremento en la
densidad de integración trae aparejado cambios y mejoras de arquitectura
y tecnología. Si bien se trata de una serie compleja, su uso está orientado
a aplicaciones de propósitos generales, como la serie EP; pero con mayor
densidad de integración. Está orientada a reemplazar lógica realizada con
varias decenas de dispositivos PAL ó cientos de componentes TTL
normales. Vienen encapsulados en circuitos Integrados de 28 a 780 patas,
en DIP , flat-pack, PLCC, PGA, tc. con densidades de integración de 600

11
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

a 2.500.000 compuertas efectivamente utilizables. Las velocidades de


trabajo típicas están en el orden de 3 a 4 nseg, y con versiones cuyo
funcionamiento puede llegar a los 500 Mhz. Existen en la actualidad 3
familias, en las cuales se han realizado mejoras estructurales para lograr
una mayor densidad de interconexiones que las EPLD con Inter
conexionado clásico, y tenemos:

a) Familia MAX ó de la serie EPMXXXX.ó Múltiple Array matriX.,


Actualmente Altera posee varios productos, como las MAX 5000,
MAX 7000 y MAX9000.
b) Familia FLEX ó Flexible Lógic Element Matrix. Tenemos las
subfamilias FLEX 6000 y FLEX 8000.
c) Familia APEX ó Advanced Programmable Element Matrix. Tenemos
las subfamilias APEX 10K y APEX 20K. (año 2000).
3) EPLD Específicas ó SEPLD (Specific Erasable Programmable
Logic Device):
Se trata de circuitos programables orientados a una determinada
aplicación, y por lo tanto se ha introducido una mejora interna orientada
a tal fin.
Uso: Propósitos especiales.
Tipo:
a) Familia de serie EPB X Orientados al Bus. Incorpora toda la lógica
necesaria para interfacear con el bus adecuado. Nació para el Micro
Channel Bus.
b) Familia de serie EPS X Orientados al diseño de secuenciadores.
Función: Reemplazar lógica de uso general, orientada a circuitos
específicos.
Densidad de Integración: Circuitos Integrados de 20 a 68 patas, en DIP,
flat-pack, PLCC, PGA, etc. con densidades de integración de 300 a 900
compuertas. Velocidades de trabajo: Bajas, pues en general no es el
objetivo fundamental.

12
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

VHDL:
Generalidades
A partir del desarrollo de circuitos Integrados Digitales programables con
una gran cantidad de componentes lógicos y la necesidad de sistema
digitales para aplicaciones más complejas, las herramientas de diseño
tradicionales se vuelven cada vez más ineficientes y poco efectivas para
lograr desarrollos adecuados, por lo tanto, las empresas fabricantes de
circuitos integrados desarrollan herramientas más útiles, originándose así
los HDL ó Lenguajes de Descripción de hardware.
Así cada empresa crea el suyo estableciendo una diversidad de lenguajes
muy grande. Para tratar de unificar estas herramientas, entre los años
1984 y 1987, el IEEE y el Departamento de Defensa de los Estados
Unidos (DoD) patrocinan el desarrollo de un Lenguaje llamado VHDL.
Su nombre viene de VHSIC HDL, o sea Lenguaje de Descripción de
hardware para circuitos integrados de muy alta velocidad.
Características
• Cada elemento de diseño tiene una interfaz única y perfectamente
definida, que permite conectarla a otros elementos.
• Cada elemento tiene un comportamiento preciso y unívocamente
definido, que permiten su posterior simulación.
• La especificación de comportamiento que permite definir la
operatividad puede realizarse a través de un algoritmo ó de una estructura
de hardware real.
• Los diseños mantienen una estructura jerárquica, que permite
descomponerlo adecuadamente.
• Las características concurrentes, temporizadas y de sincronismo (por ej.
reloj) pueden ser modeladas adecuadamente.
• Se puede simular cualquier operación lógica y de temporización.
Ambiente y flujo de diseño

13
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

En cualquier diseño basado en VHDL podemos subdividir el flujo de diseño en dos partes
bien diferenciadas:

1. Etapa de Desarrollo: Tiene varios pasos, a saber:


• Planteo General del Sistema: Consiste en hacer un Diagrama en
Blocks funcional y jerárquico del sistema a desarrollar. Definición
de módulos e interfaces generales del sistema.
• Codificación: Consiste en escribir el código VHDL para todos los
componentes planteados, módulos específicos e interfaces. Se trata
de un simple discurso de texto, por lo que puede realizarse en
cualquier editor conocido por el diseñador. Sin embargo, los
ambientes de diseño incluyen un Editor VHDL especializado, por
lo que el desarrollo de esta etapa es más sencillo. Estos editores
incluyen características propias del lenguaje, como sangría
automática, resaltado de palabras clave, verificación sintáctica, etc.
• Compilación: En esta etapa el compilador VHDL transforma el
programa fuente en objeto, por lo cual analiza la sintaxis de lo
escrito y verifica la compatibilidad con cualquier otro módulo
ingresados como fuente del presente programa. Junto a esto
produce toda la información necesaria para la posterior simulación
del proyecto.
Nota: A veces, en proyectos complejos conviene realizar
compilaciones parciales, ganando así tiempo posterior de desarrollo.
• Verificación: Esta etapa es muy importante, pues permite
establecer si el circuito obtenido funciona como se pretendió al
fijar las pautas de diseño. Existen dos características a verificar, y
ellas son las Funcional y la Temporal. En el primer caso se analiza
el funcionamiento lógico del circuito, sin considerar el tiempo
como variable. Aquí los elementos lógicos son considerados como
ideales, es decir sin retardos. En la verificación temporal se
analizan los resultados del circuito real, considerando retardos
estimados, ya que aún no se han seleccionado los circuitos reales
de síntesis. De esta manera se verifica la funcionalidad temporal
de circuitos combinacionales y especialmente los secuenciales con

14
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

características de memorización. La verificación funcional y


temporal se realiza a través de un proceso complejo conocido como
simulación, el cual permite detectar errores en el diseño obtenido,
y de esta forma hacer las correcciones adecuadas antes de pasar a
la etapa de síntesis.
• Simulación: Este procedimiento de verificación permite definir
entradas y aplicarlas al prototipo de software, analizar el
comportamiento de los diversos módulos definidos y observar las
salidas. Todo esto sin tener que realizar el prototipo físico con
circuitos reales. Para proyectos pequeños se pueden generar
entradas y verificar salidas en forma manual; pero en grandes
sistemas se crean ¨bancos de prueba” con la capacidad de
establecer entradas, verificar salidas y realizar las comparativas
con los valores esperados. La simulación funcional es completa y
precisa, sin embargo, la temporal sólo es aproximada pues se basa
en valores estimados, y sirve para establecer que vamos en el
camino correcto. Esto es así pues es muy dependiente de la síntesis,
dónde se establecen los circuitos específicos y es allí dónde salen
los verdaderos valores de retardos de acuerdo con el circuito, a la
tecnología, al layout, tipo de componentes discretos, etc.
2. Etapa de Realización: Las características y herramientas son algo
diferentes de la anterior. Tiene varios pasos, a saber:
• Síntesis: Convierte el modelo descripto por VHDL en un
conjunto de primitivas ó componentes que se articularán en un
circuito real en una tecnología adecuada. Generalmente estas
herramientas presentan la posibilidad de establecer filtros,
premisas ó restricciones específicas del tipo de circuito ó
tecnología. Por ejemplo, en los circuitos lógicos programables,
como PAL, GAL, CPLD, FPGA las herramientas de síntesis
pueden generar ecuaciones booleanas; y en el caso de ASIC ó
ASSP generar una lista de compuertas y la malla que fija el
cableado correspondiente de interconexión.
• Ajuste y Enrutamiento: Son herramientas que mapean las
ecuaciones ó componentes de acuerdo a los recursos

15
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

disponibles de cada dispositivo. Como en el paso anterior, el


diseñador puede especificar restricciones ó asignaciones
específicas para lograr el módulo correcto.
• Verificación temporal y total del circuito: Este es la etapa
crucial ya que establece la funcionalidad temporal correcta
basada en todos los parámetros reales introducidos en el diseño,
como circuitos integrados reales, longitud de los buses
incorporados, longitud de los alambres, cargas de los elementos
físicos, etc. Generalmente se aplican las mismas señales ó
bancos de prueba utilizadas en la etapa de desarrollo.

Programación de VHDL: Estructura


Este lenguaje está diseñado con principios de programación estructurada basado
en Pascal y ADA. Damos las siguientes definiciones:

16
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

• Entidad VHDL: Declaración de los vectores del módulo, generalmente


entradas y salidas. En otras palabras, podemos decir que se trata de identificador
Vectorial del sistema.
• Arquitectura VHDL: Descripción detallada de la estructura interna ó
comportamiento del módulo.

vemos que la entidad implica los lazos que tiene un sistema para ser excitado
y entregar información a otros, es decir, implica todo lo externo del diagrama
en blocks, mientras que la arquitectura describe el interior del bloque. En el
desarrollo jerárquico se definen como entidades de nivel bajo ó inferior a
aquellas que no usan de otras entidades para describir su comportamiento, y
entidades de nivel superior a aquellas que hacen uso de las de menor grado ó
nivel.
Para realizar un circuito a través de VHDL se deben declarar ambas
características, la entidad y la arquitectura. Por lo tanto, un programa VHDL es
un archivo de texto dónde se declara en primer lugar la entidad y luego se define
la arquitectura, para una compuerta AND.

Descripción general

17
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

VHDL ignora los saltos de línea y espacios, por lo tanto, el contexto formal de
la escritura del programa depende de la mejor inteligibilidad de este.
▪ Comentarios: Comienzan con dos guiones – y finaliza automáticamente
con el final de línea.
▪ Palabras clave, especiales ó reservadas: Son cadenas de caracteres
especiales reservados por VHDL para su sintaxis. En el ejemplo pueden
leerse varias ENTITY, PORT, IN, OUT, ACHITECTURE, ETC.
▪ Identificadores: Son aquellas cadenas de caracteres que el diseñador
utiliza para nominar o identificar algo del diseño. En nuestro ejemplo: X,
Y, Z, BIT, Compuerta, etc. Hay algunos identificadores especiales que se
usan para ciertos tipos de definiciones. Es el caso de “BIT” en este
ejemplo.
▪ Las palabras clave y los identificadores no reconocen diferencia entre
mayúsculas y minúsculas.
▪ Como mencionamos, hay tres tipos de descripción. Planteamos el
desarrollo general, para el siguiente sistema lógico:

➢ Planteo verbal: circuito lógico de dos entradas y una salida, que, a


condición de una entrada de control, deja pasar a la salida una u otra de
las entradas.
➢ Desarrollo circuital por el método tradicional:

➢En VHDL todas las versiones tendrán la misma entidad:

18
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Y veamos ahora en forma simple los tres tipos de descripciones previstos.


cabe indicar que se trata solo de una presentación preliminar, y como aún
no sabemos la sintaxis específica es posible que algunos detalles no los
entendamos.

La instrucción de presentación de componentes COMPONENT implica


una descripción anterior de la estructura y funcionalidad de los mismos.
También pueden introducirse a través de la librería correspondiente
donde están descriptos.

19
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Sintaxis general
1.-Entidad: La declaración básica tiene el siguiente propósito:
a. Nombrar la entidad
b. Declaración de puertos, la cual define sus puertos ó señales de
interfaz externa, que se manifiesta y representa de la sig. forma
sintáctica:
ENTITY nombre-entidad IS
PORT (nombre-señales : mode tipo-señal ;
nombre-señales : mode tipo-señal;
……………………………………………………….
nombre-señales : mode tipo-señal) ;

20
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

END nombre-identidad ; Para establecer esta declaración hay


dos tipos de textos bien diferenciados:
a. Palabras clave : ENTITY , IS , PORT y END.
b. b. Palabras nominativas:

➢ nombre-entidad: Identificador que nombra la entidad, no puede ser


palabra clave.
➢ nombre-señales: Identificadores que nombran las variables y funciones
de la interfaz externa.
➢ modo: Identificador que especifica la dirección de la señal, usando 4
palabras clave, que son:

• IN : Indica una señal de entrada a la entidad


• OUT : Indica una señal de salida. El valor de la señal no puede
ser leído dentro de la arquitectura de la entidad.
• BUFFER: Indica una señal de salida. El valor de la señal si
puede ser leído dentro de la arquitectura de la entidad.
• INOUT: Indica una señal de entrada o salida de la entidad. Se
utiliza mucho en los terminales entrada/Salida de tercer estado
de los dispositivos lógicos programables.

➢ Tipo-señal: Identificador de la señal definida o integrada por el usuario.

2. Arquitectura: La declaración básica tiene por finalidad especificar la


operatividad y funcionamiento de la entidad. Las señales de puertos
externos de una arquitectura se heredan desde la parte de declaración de
puertos de la correspondiente declaración de entidad, que se manifiesta y
representa de la sig. forma sintáctica:

ARCHITECTURE nombre-arquitectura OF nombre-entidad IS


declaración de señal
declaración de constantes
declaración de tipo definición de funciones
definición de procedimiento
declaración de componentes

21
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

begin
enunciado concurrente
enunciado concurrente
…………………………………..
enunciado concurrente
end nombre-arquitectura

teniendo en cuenta las siguientes características generales:

➢ nombre-arquitectura: Identificador elegido a gusto del usuario,


generalmente relacionado con la entidad, pudiendo tener el mismo
nombre.
➢ nombre-entidad: Debe ser el mismo seleccionado para nominar la
entidad.
➢ declaraciones: son las especificaciones que definen la arquitectura, son
de varias características y pueden aparecer en cualquier orden, a saber:
➢ declaración de señal: Especifica la misma información que en una
declaración de puerto, excepto que no se establece ningún modo.

Signal nombre señal :

tipo señal: Puede definirse desde ninguna a varias señales dentro de una
arquitectura y pueden corresponder a los nodos que se identifican en un
diagrama lógico.

➢ declaración de constante: En VHDL esta declaración sirve para dar


legibilidad, mantenimiento y portabilidad a los programas, como ocurre
en cualquier lenguaje, cuya sintaxis es: constant nombre constante:
nombre tipo := valor; (ver tipo más adelante)
constant nombre constante: nombre tipo:= valor;
Las constantes pueden utilizarse siempre que el valor se pueda
necesitar. El valor de una constante puede ser una expresión ó
función simple.
Librería VHDL:

22
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Se trata de un lugar específico dónde el compilador VHDL


almacena información acerca de un proyecto de diseño en
particular, incluyendo archivos intermedios que se utilizan en el
análisis, simulación y síntesis de diseño. La ubicación de la librería
depende estructuralmente de la implementación, y se trata de un
sistema de archivos.
Considerando un diseño determinado, el compilador VHDL crea y
utiliza en forma automática una librería llamada “work”.
Un diseño completo VHDL tiene muchos archivos, donde cada
uno guarda diferentes unidades del diseño; incluyendo entidades y
arquitecturas. El compilador analiza cada archivo de diseño y
coloca el resultado en la librería “work”.
No toda la información necesaria puede estar en la librería “work”,
pero se puede usar la librería de otro proyecto haciendo mención
de este. Los proyectos modestos pueden hacer uso de alguna
librería estándar, y en cuyo caso el diseñador hace referencia a
través de la cláusula library al comienzo del archivo de diseño. La
cláusula “library work” está incluida en forma implícita al
principio de todo archivo de diseño. Caso contrario se define
específicamente, y en cuyo caso, esa especificación nos da acceso
a cualquier entidad y arquitectura previamente almacenadas en la
librería. Por ejemplo:
Library IEEE; hace referencia a las definiciones estándar IEEE

Descripción de flujo de datos o diseño de flujo de datos


Esta descripción se puede realizar por el uso de otro tipo de
instrucciones concurrentes, que le permiten a VHDL describir un
circuito lógico en términos del flujo de la información y
operaciones activadas en el circuito. Algunas de ellas son:

23
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

▪ Instrucción de asignación de señal concurrente:


Es una de las más usadas y su sintaxis es

nombre-señal <= expresión [ Se lee “nombre señal obtiene expresión”]

▪ Forma condicional de la instrucción de asignación de señal concurrente:


Aquí se aplican las palabras claves when y else, a través de la siguiente
sintaxis es

nombre-señal <= expresión when expresión-booleana else ;


expresión when expresión-booleana else ;
…………………………………………………………………..
expresión when expresión-booleana else ;
expresión ;

En este caso una expresión booleana combina términos booleanos


sencillos y básicos usando operadores booleanos de VHDL, tales como
and, or, nor, not, etc. Los términos booleanos son generalmente variables
booleanas o el resultado de comparaciones, dónde se emplean los
operadores relacionales =, =/; >, >0, etc.

Instrucción process: Es una instrucción de proceso que puede emplearse


en cualquier parte del programa dónde pueda utilizarse una instrucción
concurrente, y tiene la sig. sintaxis:

process ( lista de sensibilidad )


declaración de tipo
declaración de variable
declaración de constante
definición de funciones
definición de procedimiento
begin
enunciado secuencial
enunciado secuencial
…………………………………..

24
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

enunciado secuencial
end process;

(Lista de sensibilidad) = (nombre-señal, nombre-señal, …, nombre-


señal) La lista de sensibilidad es opcional. Cuando no existe dicha lista,
el proceso comienza a ejecutarse en el tiempo cero en la simulación.
Observar algo importante y es que dentro de un proceso no está permitida
la definición de señales

✓ Una instrucción de proceso está escrita dentro del ámbito de una


arquitectura cerrada, tiene visibilidad de los tipos, señales,
constantes, funciones y procedimientos que están demacrados o
son visible dentro de la arquitectura cerrada, pero se pueden definir
tipos, señales, constantes, funciones y procedimientos que sean
locales al proceso

✓ Un proceso puede declarar solo variables y no señales. Una


variable toma los valores del estado dentro de un proceso y no es
visible fuera de ese proceso.

✓ Una variable puede o no dar origen a una señal dentro del proceso
modelado. La definición de una variable dentro de un proceso es
similar a la declaración de una señal dentro de la arquitectura, a
saber:

variable nombre-variable: tipo-variable

✓ Un proceso tiene dos posibles estados: ejecución ó suspendido.


Todo proceso se encuentra originalmente suspendido, y comienza
ó reanuda su ejecución cuando su lista de sensibilidad cambia de
valor. La ejecución comienza con la primera instrucción secuencial
y así hasta el final. Cuando una señal de la lista de sensibilidad
cambia de valor como resultado de la ejecución de un proceso, el
mismo se ejecuta de nuevo., y esto ocurre hasta que ninguna de las

25
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

señales cambie de valor. En la simulación todo este trámite ocurre


en un tiempo nulo (Tiempo Simulación cero)

✓ Todo proceso se suspenderá luego de una o varias ejecuciones. Sin


embargo, por error se pueden escribir procesos que nunca se
suspenden, por ejemplo “lista de sensibilidad” “(X) “y un
instrucción “X <= not X” . Los simuladores tienen la capacidad de
detectar una ejecución infinita y abortarla indicando el
correspondiente error, luego de algunos miles de pasadas.

Instrucción if-then: Es una instrucción secuencial muy usada y permite


mejorar la descripción de comportamiento del circuito que se pretende
diseñar. Su sintaxis es:

if expresión-booleana then enunciado secuencial


end if ;

En este caso se prueba una expresión booleana y se ejecuta una


instrucción secuencial si se cumple el valor de esa instrucción, es decir si
el valor resulta verdadero (true).

Instrucción case: Es una instrucción que permite seleccionar entre


múltiples alternativas basadas en el valor de una señal o expresión. Se
usa como una alternativa más legible y para producir un circuito mejor
sintetizado frente a las instrucciones if vistas anteriormentes. Su sintaxis
es:

case expresión is
when alternativas => enunciado secuencial
………………………..
when alternativas => enunciado secuencial
end case ;

26
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Esta instrucción evalúa la expresión dada, obteniendo un valor y ejecuta


la instrucción secuencial correspondiente a la alternativa u opción que
coincide con ese valor. - Las opciones puede ser un valor simple u
múltiples valores separados por barras verticales (|).
- Las opciones deben ser mutuamente excluyentes e incluir todos los
posibles valores del tipo de expresión.
- Existe una alternativa para indicar todos los valores que no han sido
cubierto, así:

case expresión is
when alternativas => enunciado secuencial
………………………..
when alternativas => enunciado secuencial
when others => enunciado secuencial
end case;

- La instrucción case resulta ser la instrucción secuencial de su versión


concurrente select, permitiendo ambas apreciar en forma muy sencilla el
comportamiento funcional buscado.
Máquina virtual:
En términos generales, una máquina virtual es un software que permite emular
el funcionamiento de un ordenador dentro de otro ordenador gracias a un
proceso de encapsulamiento que aísla a ambos.
Una máquina virtual es un software que crea una capa independiente donde se
emula el funcionamiento de un ordenador real con todos los componentes de
hardware que necesita para funcionar (disco duro, memoria RAM, tarjetas de
red, tarjeta gráfica, etc.) y que puede ejecutar cualquier sistema operativo o
programa, tal y como lo haría un ordenador real. Toda esta emulación se
encapsula en una serie de archivos que actúan como contendor desde el que se
ejecuta la máquina virtual en una ventana de tu ordenador como si de un
programa más se tratara y sin que nada de lo que suceda en el interior de esa
ventana afecte al ordenador que la ejecuta.

27
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

¿Para qué sirve una máquina virtual?

Existen diversos usos para las máquinas virtuales, pero ya que permiten emular
casi cualquier sistema operativo estándar (Windows, GNU/Linux, MacOS,
Android, etc.), y dado que se ejecutan en una capa de software diferente y
totalmente aislada, uno de los usos más frecuentes es el de probar diferentes
sistemas operativos, programas o configuraciones con total seguridad para tu
ordenador real ya que, si algo falla en la máquina virtual, este fallo no afectará
en absoluto al ordenador que la ejecuta.
Comando de Virtual box

1. Ctrl + D: Accedemos al administrador de medios virtuales.


2. Ctrl + G: Accedemos a las preferencias de VirtualBox.
3. Ctrl + S: Abriremos la ventana de configuración de una máquina
virtual.
4. Ctrl + I: Importar servicio virtualizado.
5. Ctrl + E: Exportar servicio virtualizado.
6. Ctrl + L: Muestra el historial de eventos de una máquina virtual.
7. Ctrl + N: Crear una nueva máquina virtual
8. Ctrl + P: Pausamos una máquina virtual.
9. Ctrl + R: Eliminamos una máquina virtual.
10.Ctrl + Q: Salimos de la aplicación.
11.F1: Muestra la ayuda.
los atajos dentro de la máquina virtual, para ello os aclaro que la tecla Host se
corresponde con la tecla Ctrl que se sitúa a la derecha del teclado (no te
confundas con la tecla Ctrl de la izquierda):

1. Host + F: Entrar en modo pantalla completa.


2. Host + A: Ajustar el tamaño de la ventana.

28
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

3. Host + L: Entrar en modo fluido.


4. Host + G: Deshabilitar autoredimensionado pantalla invitado.
5. Host + I: Inhabilitar integración con el ratón.
6. Host + S: Para tomar una instantánea.
7. Host + N: Diálogo información de sesión (es la información de la
máquina más datos de ejecución).
8. Host + P: Pausar la máquina virtual.
9. Host + R: Reiniciar la máquina virtual.
10.Host + Q: Cerrar la máquina virtual.
11.Host + H: Apagado ACPI.
12.Host + Supr: Es lo mismo que presionar Ctrl + Alt + Supr
13.F1: Muestra la ayuda.

• Desarrollo
Material:
✓ Computadora
✓ Software Warp Galaxy
✓ Maquina virtual (Virtual box)
✓ Software Proteus 8.
✓ Convertidor de archivos .jed a .Jedec
Plantemiento de la practica:
La siguiente practica, debera ser realizada en VHDL programando el CPLD
EMP240 para que opere como un semaforo con el siguiente comportamiento:
-Verde 10 segundos y despues parpadear 3 veces (500ms cada parpadeo).
-Amarillo: 1 segundo y despues 3 parpadeos (500 ms cada uno).
-Rojo 10 segundos.

29
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

La operación debe de ser continua, y se debe de incorporar un boton de inicio y


de paro.

Procedimiento:
1.-En primera estancia hay que descargar los software e intalar la maquina
virtual configurando para que funcione como windows xp ya que warp galaxy
trabaja en ese sistema operativo, como no necesitamos tanta potencia se
configura la particion con 2 de memoria RAM y 250 gb de almacenamiento.
2.-Una vez teniendo los software y la maquina virtual creamos un archivo en el
programa warp galaxy escogemos un PLD en este caso va a ser un 22v10
exactamente un 22v10 25PC/PI.
3.-Una ves creado el archivo tenemos que guardarlo como archivo .Vhd, ya que
si no se guarda asi el warp no detectara la sintaxis. Nos pedomos dar cuenta de
que el archivo es .Vhd porque las librerias se ponen de color azul.
4.-Tomando en concideracion realizamos el siguiente codigo:

library ieee; (Libaria estandar)


use ieee.std_logic_Arith.all; (Realiza operaciones con std_logic_Vector)
use ieee.std_logic_unsigned.all; (Realiza Operaciones matematicas)

entity Semaforo is port


(
clk: in std_logic; (Declaramos nuestra variable Clk como entrada “Reloj”)
P: in std_logic; (Declaramos nuestra variable P como entrada ”Paro”)
R: in std_logic; (Declaramos nuestra variable R como entrada ”Arranque”)
d: out std_logic_vector (3 downto 0)); (Declaramos d como salida de 4 bits,
esto lo ocuparemos para las salida del semaforo)

30
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

end Semaforo;

architecture Sem of Semaforo is (Inicia la arquitectura)


signal q:std_logic_vector (5 downto 0); (q Sera señal de 6 bits q funcionara
como un contador)
begin
process (CLK,r,p) begin
if (CLK'event and CLK='1') then (Si CLK recibe un uno realizra lo siguiente)
if p='0'or r='1' then (Si paro esta en 0 y arranque en 1 entonces ocurira lo
siguiente)
q<=q+1; (Esta operacion sera la que lleve el conteo)
end if;
if p='0' then (Si paro es 0 entonces entonces ocurre lo siguiente)
q<="000000";
if p='1' then
if(q="111001") then (Este es el limite de nuestro contador)
q<="000000"; (Por lo cual regresa a repetirse o 0)
end if;
end if;
end if;
end if;
end process;
process (q,p,r) begin
if p='0' then (Si paro es igual a 0 entonces empieza el conteo)

31
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

d<="0000";
end if;
case q is
-------------------------------------------------
when "000000"=> (Aqui lo que pasara es que el contador inicia en 0 entonces
se prende la luz verde)
if p='1'or r='0' then (Siempre y cuando p sea 1 y r sea 0)
d<="0000"; (Luz verde)
end if;
-----------------
when "000001"=>
if p='1' or r='0' then
d<="0001";
end if;
------------------------
when "000010"=>
if p='1'or r='0' then
d<="0001";
end if;
--------------------1 Segundo
when "000011"=>
if p='1'or r='0' then
d<="0001";
end if;
---------------------

32
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

when "000100"=>
if p='1'or r='0' then
d<="0001";
end if;
----------------------2 segundos
when "000101"=>
if p='1'or r='0' then
d<="0001";
end if;
---------------
when "000110"=>
if p='1'or r='0' then
d<="0001";
end if;
----------------------3 Segundos
when "000111"=>
if p='1'or r='0' then
d<="0001";
end if;
---------------
when "001000"=>
if p='1'or r='0' then
d<="0001";
end if;

33
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

----------------------4 Segundos
when "001001"=>
if p='1'or r='0' then
d<="0001";
end if;
---------------
when "001010"=>
if p='1'or r='0' then
d<="0001";
end if;
----------------------5 Segundos
when "001011"=>
if p='1'or r='0' then
d<="0001";
end if;
---------------
when "001100"=>
if p='1'or r='0' then
d<="0001";
end if;
----------------------6 Segundos
when "001101"=>
if p='1'or r='0' then
d<="0001";

34
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

end if;
---------------
when "001110"=>
if p='1'or r='0' then
d<="0001";
end if;
----------------------7 Segundos
when "001111"=>
if p='1'or r='0' then
d<="0001";
end if;
---------------
when "010000"=>
if p='1'or r='0' then
d<="0001";
end if;
----------------------8 Segundos
when "010001"=>
if p='1'or r='0' then
d<="0001";
end if;
---------------
when "010010"=>
if p='1'or r='0' then

35
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

d<="0001";
end if;
----------------------9 Segundos
when "010011"=>
if p='1'or r='0' then
d<="0001";
end if;
---------------
when "010100"=>
if p='1'or r='0' then
d<="0001";
end if;
----------------------10 Segundos
when "010101"=>
if p='1'or r='0' then
d<="0000";
end if;
---------------apagado
when "010110"=>
if p='1'or r='0' then
d<="0001";
end if;
----------------------Prendio
when "010111"=>

36
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

if p='1'or r='0' then


d<="0000";
end if;
---------------apagado
when "011000"=>
if p='1'or r='0' then
d<="0001";
end if;
----------------------Prendido
when "011001"=>
if p='1'or r='0' then
d<="0000";
end if;
---------------Apagado
when "011010"=>
if p='1'or r='0' then
d<="0001";
end if;
----------------------Prendido
when "011011"=>
if p='1'or r='0' then
d<="0000";
end if;
---------------apagado

37
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

when "011100"=>
if p='1'or r='0' then
d<="0010";
end if;
----------------------Enciende Amarillo
when "011101"=>
if p='1'or r='0' then
d<="0010"; (Luz Amarilla)
end if;
---------------1 segundo
when "011110"=>
if p='1'or r='0' then
d<="0000";
end if;
----------------------Apagado
when "011111"=>
if p='1'or r='0' then
d<="0010";
end if;
---------------Encendio
when "100000"=>
if p='1'or r='0' then
d<="0000";
end if;

38
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

----------------------Apagado
when "100001"=>
if p='1'or r='0' then
d<="0010";
end if;
---------------Encendido
when "100010"=>
if p='1'or r='0' then
d<="0000";
end if;
----------------------Apagado
when "100011"=>
if p='1'or r='0' then
d<="0010";
end if;
---------------Encendido
when "100100"=>
if p='1'or r='0' then
d<="0100";
end if;
----------------------Enciende ROjo
when "100101"=>
if p='1'or r='0' then
d<="0100";(Luz Roja)

39
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

end if;
---------------1 segundo
when "100110"=>
if p='1'or r='0' then
d<="0100";
end if;
----------------------
when "100111"=>
if p='1'or r='0' then
d<="0100";
end if;
---------------2 segundo
when "101000"=>
if p='1'or r='0' then
d<="0100";
end if;
----------------------
when "101001"=>
if p='1'or r='0' then
d<="0100";
end if;
---------------3 segundo
when "101010"=>
if p='1'or r='0' then

40
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

d<="0100";
end if;
----------------------
when "101011"=>
if p='1'or r='0' then
d<="0100";
end if;
---------------4 segundo
when "101100"=>
if p='1'or r='0' then
d<="0100";
end if;
----------------------
when "101101"=>
if p='1'or r='0' then
d<="0100";
end if;
---------------5 segundo
when "101110"=>
if p='1'or r='0' then
d<="0100";
end if;
----------------------
when "101111"=>

41
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

if p='1'or r='0' then


d<="0100";
end if;
---------------6 segundo
when "110000"=>
if p='1'or r='0' then
d<="0100";
end if;
----------------------
when "110001"=>
if p='1'or r='0' then
d<="0100";
end if;
---------------7 segundo
when "110010"=>
if p='1'or r='0' then
d<="0100";
end if;
----------------------
when "110011"=>
if p='1'or r='0' then
d<="0100";
end if;
---------------8 segundo

42
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

when "110100"=>
if p='1'or r='0' then
d<="0100";
end if;
----------------------
when "110101"=>
if p='1'or r='0' then
d<="0100";
end if;
---------------9 segundo
when "110110"=>
if p='1'or r='0' then
d<="0100";
end if;
----------------------
when "110111"=>
if p='1'or r='0' then
d<="0100";
end if;
---------------10 segundos
when others=>
if p='1'or r='0' then
d<="0000";
end if;

43
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

end case;
end process;
end Sem

5.-Una vez realizado el programa lo que vamos a hacer es agregar este archivo
al proyecto lo cual podemos hacer en ¨Proyecto¨, despues agregar todos los
archivos o bien podemos hacerlo manueal, si es asi una vez que estas en
proyecto le pones en agrear archivo y te salda “Nombre del proyecto.Vhd” lo
agregas y ya estarian agreados los archivos al proyecto. Warp galaxy separara
en 2 partes la arquitectura y la entidad.
6.-Una vez realizado el agregado de los archivos al proyecto se debe de
complirar para que no tenga errores de sintaxis.
7.-Una vez compilado el programa te arrojara 3 sub indices los cuales son
“Ecuaciones”, “Pinout”, “Utilización”. En ecuaciones veremos como lo indica
el nombre todas las ecuaciones con las que se puede armar el cirucito. En Pinout
nos mostrara como devemos de conectar el PLD. Por ultimo en Utilizacion se a
que porcentaje esta trabajando el PLD.

44
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

45
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

8.-Se nos generaran varios archivos con diferentes terminaciones pero la que
ineteresa es la terminadacion .jed. Guardamos el archivo y salimos de la
maquina virtual.

9.-Arrastramos el archivo a una carpeta en la computadora, despues copiaremos


el archivo .jed y lo pegaremos en la carpeta del convertidor de arcvhivos
cambiando le el nombre a uno con no mas de 5 caracteres ejemplo: AZ.

46
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

10.-Abrimos el convertidor y ponemos el nombre del archivo, a continuacion


se creara un nuevo archivo .Jedec.

47
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

11.-Copiamos el nuevo archivo y lo pegamos en la carpeta donde esta nuestro


archivo original.

12.-Abrimos proteus para despues buscar el PLD AM22v10, algunos salidas y


entradas analogicas de datos.
13.- Armamos el circuito como lo mostraba el pinout, para despues dar doble
click en el PLD y cargar el archivo nuevo generado por el convertidor por que
si no saldran errores y no se podra correr.

48
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

49
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

14.-Como ven no salio ningun error y el programa esta corriendo en optimas


condiciones.

15.- Cambiamos logic probe por Leds. Para el relo se esta ocupando una
frecuencia de 3Hz.

50
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

51
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

• Conclusiones

Para concluir podemos decir que esta practica da un paso mas a los
microcontroladores, ademas esta pracica mas que de hardware o armado
es mas de saber utilizar los software, esto llev a tenr un gran repertorio
de software de diseño de circuitos, si bien el tema es un poco escabroso
creo que fue necesario aprender todos los conceptos del tema ya que una
ves que entiendes los conceptos de VHDL y con un poco de conocimiento
previo de lenguaje C, la programacion resultabastante familiar.

• Fuente

➢ Dispositivos lógicos programables (PLD). (2010, 8 marzo). Recuperado


de https://ecadigitaliiequipo7.wordpress.com/2010/03/08/dispositivos-
logicos-programables-pld/
➢ V. (2020, 25 enero). ¿Qué es VHDL? Introducción a VHDL. Recuperado
de https://vhdl.es/tutorial-vhdl/
➢ Andrés, R. (2017, 31 mayo). Qué es una máquina virtual, cómo funciona
y para qué sirve. Recuperado de

52
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

https://computerhoy.com/noticias/software/que-es-maquina-virtual-
como-funciona-que-sirve-46606
➢ Carlos Rojas. (2014, 16 mayo). Semáforo Código con habilitador VHDL
ISE Xilinx [Archivo de vídeo]. En YouTube. Recuperado de
https://www.youtube.com/watch?v=o6XLSTIuKWA
➢ Code AG. (2014, 10 mayo). Simulacion codigo VHDL en proteus 8
(Conversor de archivo .JED). Recuperado de
https://www.youtube.com/watch?v=AZWH6ApZxnA&t=23s
➢ Lenguaje descripción de hardware: VHDL. (2020). [Ebook]. Retrieved
from
http://www1.frm.utn.edu.ar/tecnicad1/_private/Apuntes/VHDL.pdf
➢ Dispositivos logicos programables. (2020). [Ebook]. Retrieved from
http://www1.frm.utn.edu.ar/tecnicad1/_private/Apuntes/PLD.pdf

53

También podría gustarte