Está en la página 1de 19

15/09/2014

Asignatura: Dispositivos Lgicos Programables


Actividad: Reporte programacin de los PLDS
Integrantes: Luis ngel Hernndez Arriaga
(20130676)
Cuatrimestre: 10
Grupo: A
Periodo: Septiembre- Diciembre 2016
Carrera: ING. en Mecatrnica
Docente: Ing. Oscar Aldahir Hernndez Amador

Introduccin
VHDL surge a principios de los '80 de un proyecto DARPA (Departamento de Defensa
de los EE.UU.) llamado VHSIC Very High Speed Integrated Circuits VHDL aparece
como una manera de describir circuitos integrados
Hoy en da, el lenguaje de programacin VHDL es una de las herramientas
de programacin que tiene mayor uso en el sector industrial y en el mbito universitario,
debido a la permeabilidad con la cual se pueden describir y sintetizar circuitos y sistemas
digitales en la bsqueda de soluciones de aplicacin inmediata.
El uso correcto del lenguaje hace obsoleto el diseo tradicional, que organiza bloques
lgicos de baja y mediana escala de integracin, compuertas, contadores, registros,
decodificadores, etctera.
Al emplear dispositivos programables de muy bajo costo, conocidos como GAL
(ArreglosLgicos Genricos), los cuales se utilizan con mucha frecuencia en proyectos
donde lo que se requiere de manera primordial es la interconexin de algunos dispositivos
convencionales como multiplexores, comparadores, sumadores, etctera; estos chips
pueden adquirirse de manera individual y ser programados en grabadores convencionales

Interfaz de VHDL Simili

Esta seccin explora las diversas partes del marco Sonata. Una vez que est
familiarizado con el diseo general de la Sonata y el propsito / funcionalidad de las

distintas partes, que est listo para aprender acerca de Sonata de gestin de proyectos
conceptos. La siguiente es una interfaz de la Sonata:

Sonata se divide en cuatro grandes re-paneles de tamao considerable (reas). Es til estar
familiarizado con las funciones de estos cuatro paneles.
Panel de gestin de proyectos
Esta ventana (superior izquierda) muestra el estado del proyecto actual que se est
editando en Sonata. Este panel contiene las siguientes fichas dispuestos en una ventana con
pestaas:
Ficha Archivos:
Esta pestaa muestra el proyecto utilizando la vista "Archivo". En la vista Archivo",
se puede ver las diferentes bibliotecas registrados con el proyecto y para cada biblioteca,
tambin se muestran los archivos de origen asociados a ella. Anidado dentro de cada
archivo, se puede ver las distintas unidades de diseo (si los hay) que contiene el archivo.

Estas unidades de diseo se muestran en base a un anlisis rpido del archivo y esta
informacin se actualiza cada vez que el archivo se guarda.

Se puede utilizar el mecanismo de arrastrar y soltar para cambiar el orden en que se


muestran los archivos y bibliotecas. Sin embargo, tenga en cuenta que no se puede volver a
ordenar los archivos en caso de auto-pedido est habilitada; si intenta volver a pedir cuando
se activa automticamente el pedido, Sonata volver a ordenar los archivos slo despus
promting el usuario para desactivar el auto-pedido.

Puede hacer doble clic con el botn izquierdo del ratn sobre un archivo o una unidad de
diseo para abrir el archivo en un editor de texto.
Pestaa Mdulos: Esta pestaa muestra el proyecto en su forma compilada. Mientras
que los "Ficheros" muestran informacin referente a proyecto desde el punto de vista del
cdigo fuente, esta pestaa muestra la informacin del proyecto en base a lo que realmente
estaba compilado en cada biblioteca.
Pestaa Jerarqua : Esta ficha slo se utiliza cuando una sesin de simulacin est
activo actualmente. Se muestra la estructura (jerarqua) de la unidad de diseo actual que se
est simulando.
Al hacer doble clic con el botn izquierdo del ratn sobre una seccin especfica de la
jerarqua mostrar los objetos contenidos en esa seccin de la jerarqua en el rea de la
pantalla "Seal / Variable".
Panel Documento
Esta ventana (superior derecha) se encarga de gestionar todos los documentos abiertos.
Un documento es un archivo de texto o un archivo de forma de onda. Todos los documentos

estn dispuestos en una ventana con pestaas porttil con cada ficha alberga un nico
documento de un tipo determinado. Los archivos de texto se muestran utilizando un editor
de texto que es capaz de realizar el resaltado de sintaxis. Las ondas se muestran utilizando
un visor de forma de onda que es capaz de mostrar millones de transiciones de la seal.
Panel de la consola
Esta ventana (parte inferior derecha) muestra todos los mensajes de diversas herramientas
(incluyendo el IDE en s). Sinfona EDA prev un futuro brillante para el panel de
"consola". Hay muchas cosas posibles utilizando la interfaz Tcl / Tk, pero esta
documentacin excluye intencionalmente, tales como la documentacin de la API est
todava en evolucin y puede causar problemas de compatibilidad para los usuarios que
dependen en gran medida de los comandos de Tcl / Tk. El rea de la consola contiene las
siguientes fichas:
Ficha Consola: La consola es en realidad un personalizado TCL ventana de
comandos (Tool Control Language). Uno puede entrar en varios comandos en la lnea de
mando y la consola evaluar estos comandos como si fueran comandos de TCL. Si el
comando introducido no es un comando vlido TCL, a continuacin, la consola se busque
un comando externo con el mismo nombre y que si es posible ejecutar. La consola tambin
cuenta con las siguientes caractersticas.
1.

Mantener un historial de los comandos que se ejecuta y tambin ingrese los

comandos para el "registro del comando". Utilice la tecla de flecha arriba / abajo para
desplazarse por el historial de comandos. Al pulsar la tecla de funcin F9 muestra la lista
del historial de comandos.
2.

Mostrar todos los mensajes resultantes de los comandos que se ejecutan.

3.

Cdigo de color diferentes mensajes (como errores, avisos, etc.), siempre que sea

posible haga doble clic sobre estos mensajes especiales, intentar abrir el archivo (en el
panel de documento) que fue el origen del mensaje.
Es importante recordar que al introducir comandos en la ventana de consola que el
comando es en realidad interpretado por un intrprete Tcl. Como tal, una barra invertida,
individuales y dobles comillas, punto y coma, y {} [] son caracteres especiales. Siempre
que sea posible, utilizar una barra diagonal en lugar de una barra invertida dentro de las
rutas de acceso de Windows (la mayora de las herramientas de entender esta convencin).
Como alternativa, se puede usar dos barras invertidas para representar una sola barra
invertida. Las comillas simples y dobles son tiles para combinar palabras con espacios
incrustados en un solo argumento a favor de un comando.
Ficha de registro de comandos : En esta ventana se registra todos los comandos
introducidos en la pestaa de la consola. Mientras que la "ficha Consola" muestra toda la
entrada y la salida, la "ficha de registro de comandos" slo muestra los comandos
introducidos. Esta ventana puede ser til en la copia de comandos en un archivo de script.
Se puede utilizar la fuente de comando TCL para ejecutar los comandos almacenados en
dicho archivo.
Panel Objetos
Esta ventana contiene datos vlidos slo cuando una sesin de simulacin est activo
actualmente. El contenido de esta ventana se sincronizan con el alcance actual seleccionado
en la pestaa "Jerarqua". Esta ventana contiene las siguientes fichas:
Pestaa Signals: Esta pestaa muestra todas las seales y sus valores actuales en el
mbito actual. Usted puede arrastrar y soltar las seales seleccionadas de esta pestaa a la
ventana de forma de onda que se asocia con una simulacin activa.

Pestaa Variables: Esta pestaa es similar a la pestaa de "Seales", excepto que


muestra todos los objetos que no son seales que tienen valores - stos incluyen los
genricos, constantes, variables, etc.
Cada vez que la simulacin avanza el tiempo, los valores que aparecen en los objetos
de cristal, podr cambiar de color de negro a rojo o viceversa. Un valor marcado en rojo
indica un cambio en el valor de la pantalla anterior y un cambio de rojo a negro indica que
no hay cambio.

VHDL su estructura
El lenguaje de descripcin en hardware VHDL se estructura en mdulos o unidades
funcionales, identificados mediante una palabra reservada y particular de este lenguaje
(vase figura 1.2). En tanto, a su vez, cada mdulo tiene
una secuencia de instrucciones o sentencias, las cuales, en conjunto con las declaraciones
de las unidades involucradas en el programa, permiten la descripcin, la comprensin, la
evaluacin y la solucin de un sistema digital.
Al interior de la estructura de un programa, las unidades Entidad (Entity) y Arquitectura
(Architecture) en conjunto forman la columna vertebral de este lenguaje. Por su parte,
los mdulos restantes, no necesariamente utilizados en la bsqueda de una solucin, sirven
entre otras cosas para optimizar y generalizar la aplicacin en futuros desarrollos, como se
ver cuando la ocasin se presente. Sin embargo, en este momento nuestra atencin se
centra en describir la funcin de la entidad y la arquitectura.

Entidad (entity)
Una entidad bsicamente representa la caracterizacin del dispositivo fsico; es decir,
exhibe las entradas y las salidas del circuito (llamados pins) que el diseador ha
considerado pertinentes para integrar su idea o aplicacin; en la figura 1.3, se puede
observar con detalle la secuencia de desarrollo.

Con base en esta idea, una entity por la palabra reservada del programa constituye
un bloque de diseo 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 travs de su relacin entre entradas y salidas, las cuales
representan los puntos de observacin o de conexin a elementos perifricos propios de la
aplicacin.

Programacin de los PLDs


Opciones de Programacin
one-time programmable
el dispositivo es programado una vez y mantiene su programacin para siempre
usualmente usa fusible para crear/romper una unin de interconexin
no se puede re-programar, pero normalmente es muy barato

si se debe hacer alguna modificacin a la lgica interna del CPLD, el dispositivo se


descarta y se usa uno nuevo (no programado)

Borrable por UV
la programacin del CPLD es borrada por emisin UV
tiene un encapsulado cermico con una ventana arriba del rea del chip
este encapsulado especial es bastante caro
normalmente se debe remover el CPLD del zcalo para borrarlo/reprogramarlo
programacin es retenida despus de cortar Vcc (no-volatile)
Programacin/borrado es limitada a unos 1000s ciclos

Borrable elctricamente
borrado y programado del CPLD se hace con una corriente elctrica
el CPLD puede ser programado/borrado en el PCB, no es necesario capsulado especial o
zcalo
tiempo de borrado es mucho menor que el borrado UV
no-voltil
Programacin/borrado es limitada a unos 1000s ciclos
Programacin/borrado se lleva a cabo mediante la conexin del CPLD a una
computadora (una PC cualquiera con un software del fabricante del CPLD).
Como el CPLD no necesita ser sacado del sistema/plaqueta en que esta soldado, esto es
conocido como In-System-Programmable (ISP).

Simulacin en VHDL

VHDL realiza la simulacin siguiendo la tcnica de simulacin por eventos discretos


(Discrete Event Time Model). Esta es una tcnica que permite avanzar el tiempo a
intervalos variables, en funcin de la planificacin de ocurrencia de eventos (cambio de
valor de alguna seal). Esto significa que no se simula el comportamiento del circuito picosegundo a pico-segundo, si no desde que ocurre un evento hasta el siguiente, donde puede
pasar un pico-segundo o varios segundos. Durante el intervalo de tiempo en el que no se
produce ningn evento se mantiene el valor de todas las seales.
Fases de la simulacin
La simulacin consta de tres fases:
- Fase 0: la simulacin comienza en la fase de inicializacin donde a las seales se les
asignan unos valores iniciales y se pone el tiempo a cero. La asignacin se hace rellenando
una lista de eventos para el instante t = 0.
- Fase 1: todas las transiciones planificadas para ese tiempo son ejecutadas. Es decir, se
ejecuta el cdigo ordenadamente teniendo en cuenta cuales son las seales que se han
modificado, cumpliendo las normas de ejecucin explicadas para los process.
- Fase 2: Las seales que se han modificado como consecuencia de las transiciones
planificadas en el instante t se escriben en la lista de eventos planificndose para el instante
t + . Donde es un instante infinitesimal.
Se repiten la fase 1 y 2 hasta que no existen ms transiciones. Adems en los instantes entre
eventos se mantienen los valores de las seales.
A continuacin para ilustrar como se realiza la simulacin se describirn 3 ejemplos.

El primer y el segundo ejemplo simularemos asignaciones fuera del process, donde A tiene
valor 0 en el instante 0 ns y valor 1 en el instante 5 ns.

Asignaciones concurrentes
B <= A;
C <= B;

Asignaciones concurrentes
C <= B;
B <= A;

En el tercer ejemplo se muestran dos asignaciones dentro de un process con lista de


sensibilidad.
process (A)
begin
B <= A;
C <= B;
end process;

En el instante 0 ns se entra dentro del process y se asigna el valor de A a B y el de B


(valor que tena cuando se entr al process) a C y se escriben los cambios para el siguiente
paso de simulacin. En este siguiente paso de simulacin 0 + no ha cambiado A por lo
que no se entra al process y se mantienen los valores anteriores. No se vuelve a realizar la
simulacin hasta el instante 5 ns que es cuando vuelve a cambiar una seal, en este caso A.
Como cambia A se vuelve a entrar al process y se asigna el valor de A a B y el de B (valor
que tena cuando se entr al process) a C y se escriben los cambios para el siguiente paso de
simulacin. En este siguiente paso de simulacin 5 + no ha cambiado A por lo que no se
entra al process y se mantienen los valores anteriores. En la siguiente figura se puede
observar lo que veramos grficamente en cualquier simulador de VHDL. Ntese que es
infinitesimal y por lo tanto no es visible en simulacin.
Resultados para los dos primeros ejemplos

Plantillas para simulacin en VHDL


Muchas herramientas de simulacin y sntesis con VHDL tienen un asistente grfico para
crear los estmulos (valores de las entradas) necesarios para comprobar que nuestro diseo
funciona correctamente. Sin embargo, a nivel profesional son los mismos diseadores los que
crean un fichero con los estmulos que quieren probar para comprobar que su diseo funciona
correctamente.

Independientemente de que tenga un asistente grfico o no, lo que termina haciendo la


herramienta es creando un fichero vhdl de simulacin con lo siguiente (ver figura):
- Se crea una entity para la simulacin sin puertos de entrada ni puertos de salida.
- Se instancia un component que se corresponde con la entity del diseo a examinar.
- Se generan dentro de un process y con la ayuda de la sentencia wait los valores de las seales
de entrada y los tiempos en los cuales se van a modificar.

A continuacin describimos cada una de las partes del fichero de simulacin.


El fichero de simulacin tiene obligatoriamente las siguientes bibliotecas:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_TEXTIO.ALL;
use STD.TEXTIO.ALL;
Adems se crea la entity simulacin sin seales de entrada ni de salida:
entity simulacion is
end simulacion;
A continuacin se instancia la arquitectura, que debe tener como componente la entity a
estudio, se definen como seales intermedias las entradas y salidas de la entity a estudio. Y

se escribe al menos un process, donde se describa como cambian los valores de las seales
a lo largo del tiempo. Ntese que slo hay que forzar el cambio de los valores de las seales
intermedias que se corresponden con entradas de la entity a estudio, ya que el valor de las
salidas ser el resultado de la simulacin.
architecture testbench_arch of simulacion is
component circuito
port (entrada: in std_logic;
salida: out std_logic);
end component;
-- seales intermedias, mismos nombres y tipo que los
-- de circuito
signal entrada: std_logic := '0';

signal salida: std_logic;


-- las seales out no se inicializan
begin
UUT : circuito port map (entrada, , salida);
process
begin
wait for 200 ns;
entrada <= 1;

----------------------------------------

wait for 100 ns; -- Total: 300 ns


entrada <= 0;

---------------------------------------wait for T ns; -- Total: 300 + T ns


entrada <= 1;

---------------------------------------wait for

---------------------------------------wait for 100 ns;


end process;
end testbench_arch;
La funcin del primer wait que aparece en el cdigo (wait for 200 ns;) es mantener los
valores iniciales durante 200 ns. Ya que no se ejecutara ninguna instruccin posterior,
asignaciones a entrada y wait, hasta que no se cumpla la condicin del primer wait. Una
vez han pasado 200 ns se ejecutan las asignaciones posteriores hasta encontrarnos con el
siguiente wait (wait for 300 ns;). No se ejecutarn las instrucciones posteriores a ese wait
hasta que no hayan pasado 100 ns mas, es decir, hasta que el tiempo total no sea 300 ns, y
as sucesivamente. El ltimo wait nos garantiza que los ltimos valores asignados no se
modifican hasta pasados 100 ns ms.

El siguiente cdigo y su figura asociada ilustra el resultado de aplicar las reglas


anteriormente escritas sobre la seal A (inicializada a 0):
process
begin
wait for 5 ns;
A <= 1;
---------------------------------------wait for 5 ns; -- Total: 10 ns
A <= 0;
---------------------------------------wait for 10 ns; -- Total: 20 ns
A <= 1;
---------------------------------------wait for 5 ns -- Total: 25 ns
A <= 0;
---------------------------------------wait for 10 ns;
end process;

Dentro del fichero de simulacin existe tambin un process particular para definir el
reloj de una manera rpida y sencilla.
process
begin
wait for 10 ns;
CLOCK_LOOP : loop
clk <= '0';
wait for tiempo_en_baja ns;
clk <= '1';
wait for tiempo_ en_alta ns;
end loop CLOCK_LOOP;
end process;
Este process, gracias a la sentencia loop, genera una seal que vara constantemente de
valor segn los tiempos que se impongan. El primer wait tiene el mismo efecto que en el
ejemplo anterior, mantiene el valor inicial durante 10 ns. El segundo wait indica cuanto
tiempo va a estar el reloj en baja. Y el ltimo wait indica cuanto tiempo va a estar el reloj
en alta antes de repetir el loop. Por lo tanto periodo = tiempo_en_baja + tiempo_en_ alta,
en caso de que se quiera un reloj simtrico habr que poner el mismo valor de tiempo a baja
que a alta.

Conclusin
En la elaboracin de este reporte se pudo determinar que las simulaciones funcionales
en VHDL se pueden llevar a cabo fcilmente mediante la descripcin algortmica de los
bancos de prueba. Si bien las simulaciones exhaustivas llevan mucho tiempo, se pueden
realizar de manera sencilla, ya que las diferentes metodologas existentes para describir
bancos de prueba permiten generar gran cantidad de patrones de verificacin.

As tambin se observ que los diseos realizados con VHDL no slo pueden ser
simulados, sino tambin sintetizados con herramientas adecuadas y que los componentes
descriptos con VHDL para un diseo pueden reutilizarse posteriormente en otros diseos.
Con el lenguaje VHDL el diseo de sistemas digitales no slo est limitado a la
ingeniera, sino que abre inmensas posibilidades para programadores en general.
El uso de VHDL no slo es importante en la industria, sino tambin para la enseanza
ya que provee una forma legible y estndar de especificar y describir sistemas digitales.

Bibliografa
Floyd, Thomas. 2003. Fundamentos digitales con VHDL. Prentice Hall;
Pellerin, David y Taylor, Douglas. 1997. VHDL Made Easy! Prentice Hall;
Bhasker, Jayaram. 1999. A VHDL Primer, 3 ed. Prentice Hall

También podría gustarte