Cualquier descripción en VHDL es sintetizable, no importa el nivel de abstracción que la descripción pueda tener. Está descripción en VHDL se puede simular, y si se simula, el simulador es un circuito que funcionalmente se comporta tal como se ha descrito, desde este punto de vista es una síntesis del circuito que se ha diseñado.
La complejidad del circuito resultante, va a depender del nivel de abstracción inicial que tenga la descripción. Como primera solución se puede utilizar un ordenador que ejecute la simulación y ya se tienen la síntesis. La función de las herramientas de síntesis consiste en, partir de la descripción original, reducir el nivel de abstracción hasta llegar a un nivel de descripción estructural.
Por tanto la síntesis es una tarea vertical entre los niveles de abstracción de un circuito, así la herramienta de síntesis comenzaría por la descripción comportamental abstracta algorítmica e intentaría traducirla a un nivel de transferencia entre registros descrita con ecuaciones de conmutación, a partir de esta descripción se intenta transformarla en una descripción estructural donde se realiza, el mapeado tecnológico, es decir, la descipción del circuito utilizando los componentes de una biblioteca concreta que depende de la tecnología con la cual se quiera implementar el diseño.
Restricciones y consejos en la descripción
Evitar las cláusulas temporales
Normalmente los simuladores prohíben expresamente el uso de asignaciones con retraso en las señales, en otras simplemente los ignora, pero el sintetizador intentará implementar el circuito funcionalmente, por lo que estos retrasos no tienen sentido para el sintetizador. No se permiten las asignaciones múltiples a una señal en una única sentencia.
Identificar cada puerta con claridad
Las puertas lógicas y otros elementos tienen generalmente una estructura clara e incluso se pueden utilizar comandos directos que realizan estas funciones.
Utilizar funciones
El uso de funciones ayuda a la herramienta de síntesis a particionar de forma óptima. El particonado es bastante importante, que permite la reutilización de lógica por parte de la herramienta.
Evitar las sentencias de espera
En algunos sintetizadores quizá sea posible utilizar sentencias de espera WAIT dentro de los procesos, pero no es aconsejable puesto que la herramienta puede tener dificultades en interpretar estas sentencias. Es aconsejable el uso de listas sensibles.
Cuidado con las listas sensibles
La mayoría de sintetizadores admiten la lista sensible o una sentencia WAIT al principio, pero no siempre la interpretan como lo haría un simulador, ya que en determinadas ocasiones el resultado de la síntesis hace que se active el proceso cuando cambie alguna señal que se encuentra en el propio proceso pero que no se había puesto en la lista sensible o en el WAIT. Es decir, el sintetizador a veces amplia la lista sensible según le parece y sin avisar, con el objetivo de que la lógica que se describe el proceso sea combinacional.
Permitir discrepancias
Normalmente es fácil sintetizar algo simple como s<=NOT s, ya que no es más que una puerta inversora conectada a sí misma que puede servir muy bien para genera una señal de reloj, con período el doble que el retraso que la puerta presente. Si se intenta simular algo como la instrucción anterior, se comprobará que la simulación se queda colgada en esa instrucción puesto que no hay retrasos y se llama a sí misma una y otra vez. Aunque la simulación es incorrecta, la síntesis no lo es.
La discrepancia no es sólo temporal, también es funcional. Tal y como se comentaba anteriormente, es fácil que una misma descripción tenga un comportamiento diferente en simulación que en síntesis.
Cuidado con la inicialización de variables y señales
En simulación esto funciona, pero no tienen por qué ser así en síntesis. El sintetizador no toma en cuenta ninguna inicialización. Sólo a veces, si el dispositivo dispone de réset o algún mecanismo de inicialización, el valor inicial será tomado en cuenta para inicializar la señal, siempre que la señal describa un registro.
Señales de reloj
Solo se permite una señal de reloj por proceso y , además debe especificarse claramente el flanco de subida del reloj mediante la condición clk="1" AND clk"event. En general ´solo puedeponerse esta condición una vez por proceso y en ningún caso se puede poner ELSE en el IF en el que se usó la condición.
Asignaciones únicas
Aunque en simulación es bastante corriente que a una señal se le asignen varios valores a lo largo de un mismo proceso, en síntesis esto resulta difícil de interpretar y no debe usarse.
Niveles lógicos
No todos los niveles lógicos del std_logic se pueden interpretar y no todas las herramientas lo hacen igual.
Evitar IFS anidados
ormalmente las herramientas tienden a no sintetizar de manera óptima varios condicionales anidados entre sí. Los condicionales es mejor utilizarlos a solas.
Utilizar CASE mejor que varios IFS
Las estructuras CASE tienen para los sintetizadores un modelo optimizado de síntesis, generalmente mejor que lo mismo descrito mediante IFS.
Especificar la arquitectura
Es posible que se creen varias descripciones para un mismo circuito. Normalmente el sintetizador cogerá la primera que le parezca, generalmente la última compilada, por lo que es conveniente especificar cuál de todas las arquitecturas de la entidad se desea sintetizar mediante un bloque de configuración CONFIGURATION, o bien mediante el mecanismo de que disponga la herramienta para ello.
Con estas restricciones expuestas, hay algunas restricciones que dependen del sintetizador, no basta con describir en VHDL, y ver que funciona para poderlo sintetizar, se debe saber que cosas no se pueden describir, y además hacer la descripción lo más optimizada posible.
Lógica Programable
El proceso de síntesis consiste en partir de una descripción del circuito para luego sintetizarlo. El lenguaje VHDL es muy interesante como lenguaje de descripción para síntesis. Las posibilidades de realización física de la descripción VHDL es amplia, sin necesidad de cambiar la descripción.
Tecnologías de programación
La aparición en los años ochenta de los primeros dispositivos lógicos programables ha hecho posible optimizar el silicio utilizado en un sistema digital. Hasta la aparición de los primeros dispositivos lógicos programables, las únicas opciones para diseñar hardware digita eran, o bien el diseño de circuitos integrados hechos a medida, o bien la utilización de componentes estándar LSI-MSI conectados entre sí.
La primera opción es la preferible en cuanto a optimización de silito, velocidad, tamaño, y consumo de potencia. Los problemas de esta opción son la falta de flexibilidad y el alto coste de la fabricación de los circuitos fullcustom (a medida). La segunda opción tiene también el problema de falta de flexibilidad para un diseño hardware y el excesivo silicio no utilizado que ocupa espacio y consume potencia.
Los dispositivos lógicos programables lo son en el sentido de que en el circuito se tienen difundidos de forma fija los dispositivos lógicos, puertas lógicas y registros. Lo que se programa son las interconexiones entre estos dispositivos lógicos. De esta manera se puede tener la velocidad del hardware sin haber hecho un costoso circuito a medida. Basta con programar las conexiones internas de manera adecuada para que la PLD realice la función deseada.
Hay diversas formas de programar un dispositivo programable. Las diversas tecnologías de programación están íntimamente relacionadas con la arquitectura del dispositivo lógico programable.
Tabla 4.12:Tecnologías de programación ventajas y desventajas.
Tecnología | Ventajas | Desventajas |
Antifusible | No volatilidad, Alta integración | No reprogramabilidad |
EEPROM | No volatilidad | No ISP |
EPROM | No volatilidad | No ISP |
SRAM | Reprogramabilidad, ISP | Volatilidad |
FLASH | Reprogramabilidad, No volatilidad, ISP | Baja integración |
La característica ISP en la programabilidad en el sistema o In System Programmability, característica fundamental si se desea que el sistema sea reconfigurable de forma automática.
Se debe realizar un análisis de las diferentes clases de dispositivos; PALs, PLDs y FPGAs clásicas; para tener un criterio de selección del más adecuado.
CAPÍTULO V
Entorno de programación MAX+PLUS II
5.1 Descripción general del ambiente de diseño
Multiple Array MatriX Programmable Logic User System (MAX+PLUS II) de Altera provee una multi-plataforma, un ambiente de diseño de arquitectura independiente que fácilmente se adapta a nuestras necesidades de diseño específico. Si se trabaja con uno de estos sistemas básicos, MAX+PLUS II asegura el diseño fácil de entrada, procesamiento rápido, y programación inmediata en dispositivos lógicos programables. Una representación del software de desarrollo y sus componentes se muestra en la figura 5.01. Este es un paquete enteramente integrado para la creación de diseños lógicos para Dispositivos Lógicos Programables de ALTERA. Estos incluyen las familias de dispositivos: CLASSIC, MAX5000, MAX 7000, MAX 9000, FLEX 6000, FLEX 8000, y FLEX 10K.
El MAX+PLUS II ofrece un espectro lleno de capacidades de diseño lógico. Una variedad de métodos de diseños de entrada para diseños jerárquicos, una poderosa síntesis lógica, tiempo-conducción de compilación, partición, simulación funcional y temporal, simulación de montajes multi-dispositivo, análisis temporal, localización de errores informáticos, programación y verificación de dispositivos. MAX+PLUS II lee archivos Xilinx Netlist, escribe archivos Verilog HDL Netlist, lee y escribe archivos EDIF. Netlist Standard, archivos de diseño VHDL, y archivos de Orcad para una interfase conveniente con otras industrias estándar de Software CAE. También ofrece un ambiente con uso gráfico intenso complementado con ilustraciones, fácil para usar la línea de ayuda del sistema. El sistema completo de MAX+PLUS II ofrece 11 aplicaciones completamente integradas, que utiliza a través de cada paso de la creación de un diseño.
Fig. 5.2: Estructura para el diseño de un proyecto en MAX+PLUS II.
Por lo tanto, el software MAX+PLUS II consiste en 11 programas de aplicación, además del programa Administrador (Manager). Diferentes aplicaciones de proce-dimiento de diseño pueden ser activados simultáneamente. Al mismo tiempo puede hacer correr una de las aplicaciones de la plataforma de distribución (floorplan), el compilador, el simulador, el analizador de tiempos, y el programador.
5.2 Aplicaciones del entorno MAX+PLUS II
En los siguientes párrafo se describen las diferentes aplicaciones del entorno MAX+PLUS II.
5.2.1. Visualización de jerarquía
Visualizar la jerarquía actual de archivos como un árbol de jerarquía con ramas que representan sub-diseños. Se puede visualizar si un diseño de archivo es esquemático, textual, o diseño de forma de señal; cuales de los archivos está actualmente abierto en uso; y cuales son archivos auxiliares que han sido generados por el proyecto.
También directamente se puede abrir o cerrar uno o más archivos en un árbol de jerarquía.
5.2.2. Editor de Gráficos
Permite ingresar un diseño lógico esquemático con la afirmación de "lo que se ve es lo que se obtiene" en el ambiente. Altera provee librerías de funciones primitivas y macrofunciones, que sirven como bloques básicos para la construcción de un proyecto. Se usa símbolos habituales.
5.2.3 Editor de Textos
Permite crear y editar textos basados en diseños de archivos lógicos escritos en lenguajes de descripción de hardware AHDL y VHDL. Con el editor de textos, usted puede también crear, visualizar y editar otros archivos ASCII usados con aplicaciones de MAX+PLUS II.
Aunque se puede crear archivos AHDL y VHDL con otros editores de texto, el editor de textos de MAX+PLUS II, da la ventaja de los textos de ayuda.
5.2.4 Editor de formas de señal
Cumple una doble función:
– Herramienta para procedimiento de diseño.
Herramienta de presentación de vectores de prueba y visualizar resultados de la simulación.
5.2.5. Compilador
Procesa los proyectos lógicos para los dispositivos de las familias: Classic Altera, MAX 5000, MAX 7000, MAX7000E, FLEX8000 y FLEX8000M y FLEX10K. Esto se realiza automáticamente.
5.2.6. Simulador
Habilita la prueba de las operaciones lógicas y tiempos internos de nuestro circuito lógico. Son disponibles el simulador funcional, simulador de tiempos, y el alineado de las simulaciones multi-dispositivos.
5.2.7. Analizador temporal
Analiza el rendimiento de nuestro circuito lógico después de haber sido sintetizado y optimizado por el compilador.
5.2.8. Programador
Proporciona las funciones de Verificación, Exámen, y Prueba en la programación de los dispositivos de Altera.
5.2.9. Procesador de mensajes
Visualiza los errores, da mensajes e información de mensajes sobre el estado del proyecto y permite automáticamente localizar la causa del mensaje en el archivo de diseño original y archivos auxiliares.
Archivos de diseño
Un archivo de diseño es un archivo gráfico, textual o de forma de onda creados con el editor de gráficos, de texto o de formas de onda del MAX+PLUS II; o editor de textos sobre un EDIF o escritor de Netlist VHDL.
El compilador puede automáticamente procesar los siguientes archivos de diseño:
Graphic Design Files (*.gdf)
Text Design Files (*.tdf)
Waveform Design Files (*.wdf)
VHDL Design Files (*.vhd)
Orcad Schematic Files (*.sch)
EDIF Input Files (*.edf)
Xilinx Netlist Format Files (*.xnf)
Altera Design Files (*.adf)
– State Machine Files (*.smf)
Archivos auxiliares
Los archivos auxiliares son archivos asociados con un proyecto de MAX+PLUS II pero no son parte del árbol de jerarquía del proyecto. Los archivos auxiliares no contienen diseño lógico.
Algunos de estos archivos son generados automáticamente por la aplicación MAX+PLUS II, otros tienen que ser seleccionados para su creación. Ejemplos de archivos auxiliares son:
Assignment & Configuration Files (.acf)
Symbol Files (.sym)
Report Files (.rpt)
Vector Files (.vec)
Proyecto
Un proyecto consiste de todos los archivos en una jerarquía de diseño, incluyendo archivos de entradas y salidas auxiliares.
El nombre del proyecto es el nombre del archivo de diseño de nivel alto, sin la extensión de archivo. MAX+PLUS II representa la compilación, simulación, análisis temporal, y programación sobre un proyecto en un tiempo aunque se puede siempre editar archivos pertenecientes a cualquier otro proyecto.
5.3 Procedimiento para el diseño
Todas las herramientas necesarias para crear un diseño lógico son accesibles en el MAX+PLUS II. El procedimiento de diseño se acelera, con ayuda de una librería de funciones lógicas estándar que incluye Librerías Primitivas, Megafunciones, Funciones LPM, y 74, clásicos estilos de macrofunciones. También se provee numerosas ediciones personalizadas, básicas y avanzadas de procedimientos lógicos, y de fácil depuración.
MAX+PLUS II provee 3 editores de procedimiento de diseño: gráfico, texto, y editor de forma de señal. También va incluido 2 editores auxiliares: floorplan (editor de plataforma de distribución), y editor de símbolos que facilitan el procedimiento de diseño.
MAX+PLUS II mantiene una variedad de métodos de procedimiento de diseño:
Diseños esquemáticos son registrados con el editor gráfico del MAX+PLUS II también se puede abrir, editar y salvar esquemáticos creados con el editor esquemático gráfico ORCAD.
Los diseños en: Altera Hardware Description Language (AHDL), VHDL, y Verilog VHDL, son registrados con el editor de texto MAX+PLUS II .
Los diseños de forma de señal, son registrados con el editor de forma de onda MAX+PLUS II.
Los archivos EDIF netlist y Xilinx netlist son generadas por el estándar EDA y puede ser importada al ambiente MAX+PLUS II.
Los recursos físicos asignados a cualquier interconexión o pin en el actual proyecto, pueden ser registrados en un ambiente gráfico con el editor de plataforma de distribución (editor floorplan).
El editor floorplan guarda las asignaciones en los archivos configuración & asignación (*.acf) para el proyecto, el cuál almacena todos los tipos de recursos, pruebas y dispositivos asignados, tan bien como configura, muestra el compilador, simulador y analizador de tiempos.
Los símbolos gráficos que representan cualquier tipo de archivo de diseño puede ser generado automáticamente en cualquier editor de diseño de MAX+PLUS II. Se puede editar los símbolos y crear sus propios clásicos diseños con el editor de símbolos, y para ello usar cualquier archivo de diseño esquemático.
En un proyecto jerárquico se puede libremente juntar archivos de diseño gráfico(*.gdf), archivos de diseño de texto (*.tdf), , archivos de diseño VHDL (*.vhd), archivos esquemáticos Orcad (*.sch), archivos de diseño Verilog (*.v), archivos de entrada EDIF (*.edf) en cualquier nivel de jerarquía.
Sin embargo, los archivos de editor de forma de señal (*.wdf), archivos de formato Xilinx Netlist (*.xnf), archivos de diseño Altera (*.adf), y archivos de estado de máquinas (*.smf), deben estar en el nivel más bajo de jerarquía del proyecto o solo ser archivos de diseño en un proyecto.
Fig.5.3: Jerarquía de los archivos generados y/o registrados en el MAX+PLUS II
V.5.1 Características del editor gráfico MAX+PLUS II
Fig.5.4: Ventana del editor gráfico del MAX+PLUS II.
La selección "inteligente" de herramientas mostradas en la fig. V.04, hace que el procedimiento de diseño sea sencillo. Estas herramientas permiten copiar y mover ítems y entrar nuevos símbolos.
Los símbolos son conectados con líneas de señales llamados nodos o línea de bus que representan grupos múltiples de nodos lógicos. Cuando se asigna un nombre a un nodo, puedes conectarle otros nodos o símbolos por el nombre solamente.
Se puede seleccionar y editar múltiples objetos en un área rectangular. Cuando mueves la selección las características de la línea de conexión preserva la conectividad de señal.
Se puede ver la comprobación, pines, localización, chip, tiempos, ruta local, opción lógica y parámetros asignados en cada símbolo. Todo ello facilita la simulación,
Concluimos que Altera provee librerías primitivas, de megafunciones y macrofunciones que reducen el tiempo en el procedimiento de diseño. También el diseñador, puede crear librerías de sus propias funciones.
V.5.2 Características del editor de símbolos del MAX+PLUS II
Con el editor de símbolos del Max+Plus II, el diseñador:
Fig.5.5: Ventana del editor de símbolos del MAX+PLUS II.
Puede diseñar "a su estilo" el símbolo que representa al archivo de diseño.
Puede entrar y editar grupos de pines. El nombre para este grupo de pines, pueden ser ya sea entradas, salidas, y/o bidireccionales.
Puede especificar sus parámetros y sus opcionales valores de falla.
Puede insertar en el símbolo comentarios y notas de ayuda. Ello solo podrá ser visto en el editor gráfico.
El nombre de un pin es automáticamente duplicado fuera de los límites del símbolo y dan una referencia visual de cuál de los nombres y pines se corresponden.
V.5.3. Características del editor de texto del MAX+PLUS II
Fig. 5. 6: Ventana del editor de texto del MAX+PLUS II.
El AHDL, VHDL, Verilog HDL y el editor de texto son completamente integrados. Dentro del sistema MAX+PLUS II, se puede procesar archivos AHDL, VHDL, Verilog HDL con el compilador, y el procesador de mensajes automáticamente localizara errores de sintaxis en el editor de texto.
Se puede encontrar automáticamente la sección comparativa o delimitar un comentario para una selección delimitada, pues así fácilmente movemos alrededor del archivo de diseño.
Se puede usar las características de edición arrastra-suelta, mover un texto seleccionado y moverlo a una nueva ubicación dentro del archivo.
Se puede manualmente editar archivos de asignación & configuración (*.acf) que especifica comprobaciones, recursos, y asignación de dispositivos, tan bueno como la configuración del proyecto muestra para el compilador, simulador y analizador de tiempos.
Se puede crear archivos vector (*.vec), y pueden ser usados como entrada para el simulador, prueba funcional o procedimiento de diseño con forma de señal. También se puede crear archivos de comando (*.cmd), para el uso del simulador del MAX+PLUS II, tan bueno como el archivo de comando EDIF (*.edc) y librería de archivos de mapeo (*.lmf) para usar con el compilador del MAX+PLUS II.
Cuando se comienza a simular o compilar, el procesador de mensaje del MAX+PLUS II automáticamente localiza cualquier sintaxis de error localizados en el texto-base.
Con la ayuda contextual-sensitiva, se puede conseguir ayuda inmediatamente en elemento de sintaxis AHDL, palabras claves, y estamentos. También se puede conseguir ayuda en todo lo proveído por Altera: Primitivas, megafunciones, y macrofunciones en los archivos de diseño en AHDL, VHDL y Verilog HDL .
5.3.4 Características del editor de forma de señal del MAX+PLUS II
Fig. 5.7: Ventana del editor de forma de señal del MAX+PLUS II.
Se puede crear o editar un nodo que tenga un tipo de entrada/salida que representa un pin de entrada, un pin de salida o un neutral lógico.
Cuando se crea un archivo WDF, se puede especificar el tipo de lógica que conduce cada nodo como pin de entrada, registrado, combinacional o máquina de estado.
Se puede especificar los rangos de nivel lógico: alta (1), baja (0), indefinida (X) o alta impedancia (Z) dentro de un nodo lógico.
– Se puede fácilmente adicionar cualquier, o todos los nodos, desde el archivo del simulador netlist (*.snf) para lograr una total optimización. El proyecto compilado a un SNF simplifica la creación de un vector test.
Se puede copiar, pegar, mover o borrar un intervalo seleccionado de una forma de señal, una completa forma de señal, o un grupo entero de nodos. Con una simple operación, puedes editar múltiples intervalos, completas forma de señal, y nodos entero y grupos. Se puede invertir, insertar, sobrescribir, repetir, expandir o comprimir un intervalo de forma de señal de cualquier duración, con cualquier nivel lógico, señal de reloj, secuencia de contador y nombre de estado.
Se puede opcionalmente definir y mostrar una gráfica guía para alinear transiciones de niveles lógicos aún antes o después de haber sido creados.
Se puede insertar comentarios entre la forma de señal y cualquier punto dentro del archivo.
Se puede aumentar/disminuir la escala y salir de ella.
V.5.5 Características del editor del plano de distribución (floorplan editor)
Fig.5.8: Ventana del editor de plano de distribución (floorplan) del MAX+PLUS II.
Se entra a la asignación de un recurso físico en un medio gráfico arrastrar-soltar. Las asignaciones del compilador también pueden ser anotadas y editadas.
Una leyenda de color claramente indica pines no asignados y asignados, células lógicas, células de entrada/salida, el tipo de fan-salida desde cada item, vcc, gnd y pines reservados.
Se puede ver y editar asignaciones, las cuáles son almacenadas en el archivo asignación & configuración (*.acf). Se puede también mostrar un no-editable (solo lectura) que muestra los resultados de la última compilación, las cuáles son almacenados en el archivo fit (*.fit). Cualquier item que tenga una asignación ilegal será remarcada en la lista de nodos no asignados y nombre de pines. Los nodos que han sido ubicados pero no ruteados son indicados en rojo.
Se puede automáticamente mostrar la fan de entrada y la fan de salida de cualquier item seleccionado, o las rutas entre ítems múltiples seleccionados.
El nombre de una función lógica asignada a un pin o célula lógica son mostradas automáticamente en el "texto global".
Si múltiples ítems son seleccionadas en una simple localización, se puede ver la lista de todos los ítems y seleccionar un simple ítem para editar.
5.4 Jerarquía, proceso y verificación de un proyecto de diseño
5.4.1 Jerarquía del proyecto de diseño
El visualizador de jerarquía del MAX+PLUS II, muestra un diseño lógico de jerarquía, como un árbol de jerarquía, donde el más bajo nivel de archivos de diseño son representados como ramas. Diferentes métodos de procedimiento de diseño pueden existir en un simple proyecto.
Fig. 5.09: Visualizador de jerarquía del MAX+PLUS II.
El visualizador de jerarquía nos muestra la total jerarquía de archivos de diseño llamado "árbol de jerarquía", para el actual proyecto, o otra jerarquía de archivo de diseño.
Si uno o más archivos de jerarquía están abiertos, el más alto en los iconos de archivos figura en la barra remarcada. El visualizador de jerarquía muestra la entera jerarquía del archivo de diseño tan bueno como el grupo de archivos para el archivo de diseño de alto nivel, si el proyecto ha sido compilado con el módulo compilador extractor netlist.
Las características del visualizador de jerarquía hace fácil el moverse entre los diferentes tipos de archivos para un proyecto. Por ejemplo, se puede abrir y cerrar uno o más archivos en la ventana del visualizador de jerarquía, los editores apropiados son automáticamente abiertos o cerrados.
Se puede también aumentar o disminuir en varias escalas de visualización para observar todas las partes de la jerarquía o escoger un visualizador compacto para observar muchas ramas del largo árbol de jerarquía.
5.4.2 Procesamiento del proyecto de diseño
MAX+PLUS II procesa proyectos para dispositivos Altera Classic, MAX 5000, MAX 7000, MAX 9000, FLEX 6000, FLEX 8000 y FLEX 10K. MAX+PLUS II compila proyectos automáticamente, pero también detalla las especificaciones del procesamiento.
Fig. 5.10: Esquema del procesamiento de un proyecto de diseño.
Compilador MAX+PLUS II.
El compilador MAX+PLUS II consiste de una serie de módulos y utilidades que chequean errores del proyecto, sintetizan la lógica, ajustan el proyecto dentro de uno de los dispositivos Altera y genera archivos de salida para la simulación, análisis de tiempos y para el dispositivo de programación.
El compilador enlaza las aplicaciones del procedimiento de diseño MAX+PLUS II: editores gráfico, texto, forma de señal, símbolo y fondo (floorplan) con el post-procesamiento: análisis de tiempos, simulador y programador.
Fig. 5.11: Ventana del proceso del compilador MAX+PLUS II.
Archivos de entrada del compilador.
Archivos de diseño gráfico (*.gdf).
Archivos de diseño de texto (*.tdf).
Archivos de diseño VHDL (*.vhd).
Archivos de diseño Verilog (*.v).
Archivos de entrada EDIF (*.edf).
Archivos de diseño de forma de señal (*.wdf).
Archivos esquemáticos ORCAD (*.sch).
Archivos de formato netlist xilinx (*.xnf).
Archivos de diseño Altera (*.adf).
Archivos máquinas de estado (*.smf).
Archivos hexadecimal (*.hex).
Archivos comando EDIF (*.edc).
Archivos de asignación & configuración (*.acf).
Archivos de símbolos (*.sym).
Proceso de la compilación.
El compilador extrae información que define la jerarquía de la conexión entre los archivos de diseño del proyecto, chequea el error del proceso de diseño básico del proyecto. Crea un mapa del proyecto y combina todos los archivos de diseño dentro de una completa base de datos que puede ser procesado eficientemente.
El compilador aplica una variedad de técnicas para incrementar la eficiencia del proyecto y minimizar el uso de recursos del dispositivo. Si el proyecto es grande para ajustarlo en un simple dispositivo, el compilador puede automáticamente particionar en múltiples dispositivos desde la misma familia del dispositivo, mientras minimiza el número de conexiones entre dispositivos. Un archivo de reporte (.rpt) muestra como el proyecto será implementado en uno o más dispositivos.
El compilador también crea archivos programadores que el programador MAX+PLUS II y otros programadores estándar usan a programar uno o más dispositivos Altera.
Mientras el compilador puede compilar el proyecto con una mínima de ayuda, también permite personalizar procesamiento de diseño, según tus especificaciones. Puedes escoger también cuántos pines y células lógicas deben permanecer sin uso durante la compilación, reserva adicionalmente capacidades lógicas para futuro uso.
Puedes empezar la compilación del proyecto desde cualquier aplicación MAX+PLUS II o desde el compilador. El compilador procesa automáticamente todos los archivos de entrada del proyecto.
Si cualquier error o problema potencial son detectados durante la compilación, la ventana del procesador de mensaje abre automá-ticamente; lista la información, error, y mensajes de advertencia y provee inmediatamente ayuda, como corregir el error y permite localizar la fuente de mensaje en el archivo de diseño del proyecto.
Módulos del compilador & archivos de salida.
El compilador MAX+PLUS II procesa un proyecto con los siguientes módulos y utilidades.
Extractor netlist compilador.
Constructor de la base de datos.
Sintetizador lógico.
Particionador.
Ajuste.
Extractor SNF funcional.
Extractor SNF regulador.
Escritor netlist EDIF.
Escritor netlist Verilog.
Escritor netlist VHDL.
Asembler.
Extractor netlist compilador.
El extractor netlist compilador convierte cada archivo de diseño en el proyecto dentro de uno o más archivos netlist compilados binarios (*.cnf, compiler netlist files).
Porque el extractor netlist compilador resuelve los valores de cualquier parámetro usados en funciones parametrizadas, el contenido de una CNF puede cambiar en una subsecuente compilación si el parámetro cambia de valor. El extractor netlist compilador también crea un archivo de interconexión jerárquica (*.hif, hierarchy interconnect files) esos documentos las conexiones jerárquicas entre los archivos del proyecto, provee la información necesaria muestra el árbol de jerarquía del proyecto en el visualizador jerárquico. En adición el extractor netlist compilador genera el archivo base de datos de nodos (*.ndb, node database file), aquello contiene nombres nodo proyecto para los recursos de la base de datos de la asignación.
Constructor de base de datos.
El constructor de base de datos usa el HIF, enlaza los CNF, aquello describe el proyecto. Basado en datos HIF, el constructor de base de datos copia cada CNF, dentro de un simple, completo base de datos del proyecto. Así la base de datos preserva la conectividad eléctrica del proyecto.
Así creado la base de datos, el constructor de base de datos examina la lógica completa y consistente del proyecto, y chequea para conectividad límite y errores sintácticos. Muchos errores son detectados y pueden ser corregidos fácilmente en esta etapa del proceso. Cada módulo del compilador subsecuentemente procesa y actualiza esta base de datos.
El primer paso para procesar un proyecto, todos los archivos de diseño de un proyecto son compilados. Se puede usar el compilador "recompilador inteligente" característica en crear base de datos del proyecto expandido, aquello ayuda acelerar subsecuentemente la compilación.
Esta base de datos permite cambiar los asignados recursos del dispositivo físico, cada pin y célula lógica asignados, y recompila el proyecto sin reconstruir la base de datos y resintetizando la lógica del proyecto.
Con las características de la "recompilación total", puedes escoger entre recompilar solo aquellos archivos que han sido editados desde la última compilación o el completo recompilación al proyecto.
Sintetizador lógico.
El módulo del sintetizado lógico aplica un número de algoritmos que reduce los recursos usados y remueve redundancias lógicas, asegura que cada estructura de célula lógica sea usada tan eficientemente como sea posible por la arquitectura de la familia del dispositivo objetivo.
Este módulo del compilador también aplica técnica de síntesis lógicas, ayudan a implementar usuario-tiempo especificado y otros requerimientos de implementaciones. En adición, el sintetizador lógico busca la lógica para no conectar nodos. Si encuentra un nodo no conectado, remueve la primitiva asociada con aquel nodo.
Particionador.
Si el proyecto no ha sido ajustado a un simple dispositivo, el particionador divide la base de datos actualizada por el sintetizado lógico dentro de múltiples dispositivos desde la misma familia del dispositivo, intentando dividir el proyecto dentro del más pequeño número de dispositivos.
Un proyecto es particionado a lo largo de los límites de la célula lógica, y el número de pines usados para intercomunicar dispositivos es minimizado.
La partición puede ser totalmente automático, ya sea parte usuario-controlador, o totalmente usuario-controlador. La asignación de dispositivo y selección automática de dispositivo permite ejercitar el nivel apropiado de control para el proyecto.
Ajuste.
Usando la base de datos actualizadas por el particionador, el ajuste iguala los requerimientos del proyecto con los disponibles recursos de uno o más dispositivos. Asigna cada función lógica a la mejor localización de célula lógica y selecciona apropiadamente rutas de interconexión y pin asignados.
El ajuste compara los recursos asignados con los recursos disponibles. No importando que el ajuste se este realizando, el ajuste genera un archivo de reporte (*.rpt), aquel documento da la información sobre, nombres de los pines de entradas y salida, regulador del proyecto, recursos no usados de cada dispositivo del proyecto.
El compilador también genera automáticamente un archivo de ajuste (*.fit). Se puede visualizar el ajuste, partición y ruta de información desde el archivo ajuste con el editor de plano de distribución (floorplan).
Puede opcionalmente el ajuste generar un archivo de salida de diseño de texto AHDL (*.tdo). para una completa optimización, del proyecto ajustado.
Extractor SNF funcional.
El opcional extractor SNF funcional crea el archivo netlist simulador funcional (*.snf) requerido para simulaciones funcionales. La compilación genera estos archivos después de sintetizar el proyecto, por lo tanto contiene todos los nodos presentes en el archivo de diseño original.
El SNF funcional no contiene información de tiempos, pero es generado rápidamente. El archivo es creado sólo si el proyecto compila sin errores.
Extractor SNF de tiempos.
El opcional extractor SNF de tiempos crea el archivo netlist simulador de tiempos (*.snf), la cuál contiene el dato de tiempo para la completa optimización del proyecto.
Este archivo es usado para simulador de tiempos y analizador de tiempos. El SNF de tiempos es creado sólo si el proyecto compilado no tiene errores.
Extractor SNF de enlace.
El opcional extractor SNF de enlace crea un enlace archivo netlist simulador (*.snf), la cuál contiene los datos funcionales y/o de tiempos para un multi-proyecto, simulación tipo-nivel-tabla.
Los enlaces SNF combinan información desde el SNF de tiempo y/o SNF funcionales para múltiples proyectos separados. Proyectos que son enlazados y que pueden usar dispositivos de diferentes familias. Si un SNF de enlace contiene información sólo de tiempos, puedes usarlo para correr análisis de tiempos. El archivo es creado si el proyecto compilado no tiene errores.
Escritor Netlist EDIF.
El compilador MAX+PLUS II se puede interfasar con herramientas CAE estándar que puede ser leído desde archivos netlist en el formato estándar EDIF 2.0 y 3.0.
El opcional escritor netlist EDIF produce uno o más archivos de salida EDIF (*.edo) contiene post-síntesis funcional y opcionalmente información de tiempos.
La información de tiempos puede ser escrito o separados en archivos de salida formato de retardo estándar (SDF), (*.sdo). Estos archivos pueden ser utilizados por simuladores estándar. Los archivos de salida EDIF y SNF son creados solamente si el proyecto compilado no tiene errores.
Escritor Netlist Verilog.
El opcional escritor netlist verilog produce uno o más archivos de salida verilog (*.vo) que contiene la post-síntesis funcional y opcional información de tiempos del proyecto. La información de tiempos puede ser también escrita o separada en archivos de salida SDF.
Estos archivos pueden ser usados con un simulador HDL Verilog estándar. Los archivos de salida Verilog HDL y SDF son creados solamente si el proyecto compilado no tiene errores.
Escritor Netlist VHDL.
El opcional escritor netlist VHDL produce uno o más archivos de salida VHDL (*.vho), en sintaxis VHDL del 87 o 93, la cuál contiene la post-síntesis funcional y información de tiempos opcional del proyecto.
La información de tiempos puede también ser escrita o separada en archivo de salida SDF. Estos archivos pueden ser utilizados con un simulador estándar VHDL. Los archivos de salida VHDL y SDF son creados solamente si el proyecto compilado no tiene errores.
Asembler.
El asembler convierte las células lógicas del ajuste y dispositivos asignados en una imagen programada para el dispositivo en la forma de una o más archivos objetos de programador binarios (*.pof) o archivos objetos SRAM (*.sof); para algunos dispositivos, el compilador también genera archivos JEDEC (*.jed), archivos texto tabular (*.ttf) y archivos hexadecimales (formato INTEL) (*.hex).
Los archivos POF, SOF, y JEDEC son entonces procesados por el programador MAX+PLUS II, y el hardware del programador ALTERA, u otro programador estándar, a produce dispositivos de trabajo.
Los archivos Hex y TTF puede ser usado y configurado en dispositivos FLEX 6000, FLEX 8000 y FLEX 10K por otros medios. El asembler crea los archivos programadores solo si el proyecto compilado no tiene errores.
Después que la compilación ha sido completada, el compilador MAX+PLUS II y programador permite generar adicionalmente archivo programador de dispositivos para usar en otros medios de programación.
Por ejemplo puede crear archivos bitstream serial (*.sbf) y archivos binarios nuevos (*.rbf, raw bynari files) para configurar dispositivos FLEX 6000, FLEX 8000 y FLEX 10K.
Puede también crear archivos formato vector serial (*.svf, serial vector format files) y archivos de apretura (*.jam, jam files) para dispositivos programadores en tipo-equipos de prueba automático (ATE) y medios de programación tipo-procesador incrustado, respectivamente.
5.4.3. Verificación del proyecto
Para ello MAX+PLUS II provee tres aplicaciones: Simulador, Analizador de tiempos y Editor de forma de señal, que ayudan a testear la lógica del proyecto compilado.
Fig. 5.12: Estructura de la Verificación de un proyecto de diseño en MAX+PLUS II.
Simulador MAX+PLUS II.
El simulador MAX+PLUS II prueba la operación lógica y de tiempo interno de un proyecto, permitiendo modelar un diseño de circuito después que es programado en un dispositivo.
Fig. 5.13: Ventana del Simulador MAX+PLUS II.
Al simular un proyecto, se debe primero compilar e instruir el compilador que genere un archivo netlist simulador gráfico (*.snf) funcional, de tiempos, o enlace de simulación multi-proyecto. El funcional, de tiempos, o enlaces SNF para el proyecto actual es entonces cargado automáticamente cuando se abre el simulador.
El simulador usa una forma de señal gráfica, un archivo canal simulador (*.scf, simulator chanel file) o un archivo vector ACSII (*.vec) como la fuente de vectores de entrada. Para proyectos que contienen memoria, puedes especificar una memoria inicial que contiene archivos hexadecimales (*.hex) o con Archivos de inicialización de memoria (*.mif, memory initialization files).
El editor de forma de señal puede crear automáticamente un error SCF, la cuál edita y provee los vectores de entrada deseados, si creas un archivo vector en lugar de ello, el simulador automáticamente genera un SCF desde allí.
El simulador permite chequear las salidas del simulador frente a cualquier salida en el SCF, semejante como usuario-definido espera salidas o salidas desde una previa simulación.
Usando opciones del simulador, puedes monitorear el proyecto para oscilaciones, y organizar retenciones de violación de tiempos. Una vez que la simulación es completada, puede abrir el editor de forma de señal y visualizar la actualizada SCF o guardar los archivos de tabla (*.tbl) y visualizar los resultados en el editor de texto.
Simulación funcional.
Cuando el compilador MAX+PLUS II crea un SNF funcional, genera la SNF después sintetiza el proyecto. Consecuentemente, en una simulación funcional, todos los nodos en el proyecto puede ser simulado.
Durante la simulación funcional, el simulador ignora todos los retardos de propagación. Porque no hay retardos en el SNF funcional, los niveles lógicos de salida cambian al mismo tiempo como los vectores de entrada.
Simulación de tiempos.
Cuando el compilador MAX+PLUS II crea un SNF de tiempos, genera los SNF después que el proyecto ha sido completamente sintetizado y optimizado. Por eso, un SNF de tiempos contiene solo esos nodos que no han sido eliminados durante la lógica de la síntesis.
El simulador usa la información desde el SNF de tiempos, el cuál contiene la información de hardware desde el archivo de modelos del dispositivo (*.dmf, device model files) que provee el MAX+PLUS II, simula el proyecto.
Si un proyecto ha sido particionado en uno o más dispostivos, el compilador crea un SNF para el proyecto como un entero y para cada dispositivo. Sin embargo la simulación de tiempos es performado para el completo proyecto solamente.
Simulación multi-proyecto de enlace.
Cuando el compilador MAX+PLUS II crea un enlace SNF, combina la funcional y/o SNF de tiempos para múltiples proyectos individuales. Los separados "sub-proyectos" en los SNF de enlace, puede ser objetivos para diferentes familias de dispositivos Altera.
En adición, porque SNF funcional no son completamente compilados, puede incorporar sub-proyectos que representa la lógica que no es implementado en un dispositivo Altera.
Editor de forma de señal MAX+PLUS II.
El editor de forma de señal MAX+PLUS II es usado como herramienta de procedimiento de diseño y como una herramienta para entrada de vector completa y visualizar los resultados de la simulación.
Se puede crear archivos de diseño de forma de señal (*.wdf, waveform design files), que contienen diseño lógicos para el proyecto y archivos de canal del simulador (*.scf, simulator chanels files) que contiene vectores de entrada para simulación.
Fig. 5.14: Ventana del editor de forma de señal MAX+PLUS II.
Al simular un proyecto, debes proveer vectores de entrada. Con un SCF, puedes describir simulador de vectores de entrada como forma de señales, las cuáles son alternativas gráficas a los archivos vector ACSII (*.vec) de entradas para el simulador.
Se puede crear un SCF que contiene la forma de señal de los vectores de entrada que conducen la simulación, y los nodos enterrados y nombres de los nodos de salida en la simulación. Los nodos ocupados y enterrados tienen niveles lógicos indefinidos pueden ser editados a incluir valores lógicos esperados.
El editor de forma de señal puede usar el archivo netlist del simulador (*.snf, simulator netlist files) a crear un error SCF que contienen algunos o todos los nodos y grupos en el proyecto compilado.
Puedes editar esta SCF y conocer sus especificaciones o puede crear un SCF "desde el raspado". En adición, puede importar un archivo vector o automáticamente crea su equivalente forma de señal gráfica.
Analizador de tiempos MAX+PLUS II.
Con el analizador de tiempos MAX+PLUS II, puede analizar el performance de tiempos de un proyecto después de haber sido optimizado por el compilador. Puedes trazar todas las rutas de señales y rutas que limitan la preformase del proyecto.
Fig. 5.15: Ventana del analizador de tiempos MAX+PLUS II.
El analizador de tiempos usa la red y la información de tiempos desde un archivo netlist simulador (*.snf) de tiempos, genera por el compilador. El analizador de tiempos puede también usar un SNF de enlace que enlaza el SNF de tiempos de otros proyectos.
El analizador de tiempos genera tres tipos de análisis:
La matriz de retardo muestra el más bajo y el más alto rutas de retardo de propagación entre fuentes múltiples y nodos de destino en un proyecto.
La matriz sistema/retenedor muestra los requerimientos mínimos del sistema y retenedor de tiempos desde los pines de entradas a los datos, relojes, relojes habilitados, cerrojos o match habilitados, direcciones, y escritor habilitado a entradas de flipflops, match y RAM asíncrona.
El visualizador de performance registrado muestra los resultados de un análisis de performance registrado, incluyendo un usuario-definido numerando el visualizador performance-limitado, período de reloj mínimo, y frecuencia de circuitos máximos.
5.5 Programador de dispositivos
Altera provee todo el hardware y software necesario para programar, configurar, y verificar dispositivos Altera. El hardware incluye en adición una tarjeta programador lógico (para 486 o Pentium para PC) que conduce la Unidad de Programación Maestro Altera (MPU).
La performance del MPU es continuamente chequeado, asegura adecuadamente el contacto eléctrico entre el adaptador del programador y el dispositivo. Con el apropiado adaptador programador, el MPU también soporta una comprobación funcional, que puede aplicar vectores creados para la simulación a un dispositivo programado para verificar su funcionalidad.
Altera también soporta programabilidad en sistema (ISP, in-system programmability) y reconfiguración en circuito (ICR, in-circuit reconfiguration) con el cable de descarga FLEX (para PC), el cable paralelo de descarga ByteBlaster (para PC), y el cable serial de descarga ByteBlaster (para PC, y estación de trabajo UNIX).
El cable de descarga FLEX puede conectar cualquier adaptador de programador configuración EPROM, la cuál es instalada en el MPU, el objetivo de los dispositivos FLEX en un sistema de prototipo. La conexión ByteBlasterII en puerto paralelo y el cable de descarga serial ByteBlaster conectado a un puerto RS-232 estándar conecta a dispositivos a tarjetas del sistema. Esos cables permiten configurar o programar uno o más dispositivos compatibles en ICR o ISP en una cadena FLEX o cadena JTAG.
Tabla 5.1 Hardware Programador de Altera.
Fig. 5.16: Dispositivo Programador MAX+PLUS II.
5.5.1 Programador MAX+PLUS II
El Programador MAX+PLUS II usar archivos de programación generados por el compilador a programar dispositivos Altera. Esto permite programar, configurar, verificar, examinar, chequear, y probar funcionalidad en los dispositivos.
Fig. 5.17: Ventana del Programador de Hardware.
El programador de hardware de Altera habilita el programa de dispositivos Altera con los archivos de programación generados por el compilador. Cuando abres la ventana del programador, el archivo de programación para el actual proyecto es automáticamente cargado. El programador MAX+PLUS II acepta los siguientes formatos de archivo:
Archivo de objeto de programación (*.pof, programmer object file) que programa la familia Classic de Altera, los dispositivos MAX 5000, MAX 7000 y MAX 9000; tan bien la configuración EPROM es usado para configurar dispositivos FLEX 6000, FLEX 8000 y FLEX 10K.
Archivo de objeto SRAM (*.sof, SRAM object file) a configurar dispositivos FLEX 6000, FLEX 8000, y FLEX 10K.
Archivo JEDEC (*.jed), a programar dispositivos Classic Altera y los dispositivos EPM 5016 y EPM 5032 desde la familia MAX 5000.
Archivo cadena JTAG (*.jcf, JTAG Caín file) que describe el orden en las cuáles archivos POF, SOF, y JEDEC para múltiples dispositivos en una tabla de circuito serán programadas o configuradas en una cadena de múltiples dispositivos que son conectadas por circuiteria JTAG.
Archivo cadena FLEX (*.fcf, FLEX chain file) que describe el orden cuáles SOF son para dispositivos FLEX múltiples en una tabla de circuito que son configuradas en una cadena FLEX.
El Programador MAX+PLUS II puede desarrollar las siguientes tareas:
Programa datos en archivos POF o JEDEC en dispositivos blancos Classic, MAX 5000, MAX 7000 y MAX 9000, para producir dispositivos de trabajo.
Descarga los datos de configuración desde un archivo de objeto SRAM (*.sof, SRAM object file) o archivo JEDEC (*.jed) que configura dispositivos FLEX 6000, FLEX 8000 y FLEX 10K.
Convierte un POF en archivos formato JEDEC o viceversa y opcionalmente guarda vectores de prueba funcionales en el archivo, así puedes programar y probar dispositivos con otros programadores de hardware y software estándar.
Verifica el archivo de programador que contiene frente al contenido de un dispositivo programado.
Examina un dispositivo programado y guarda datos de programación y datos de vectores de prueba en archivos de formato POF o JEDEC.
Cambia a encendido o apagado el bit de seguridad antes de los datos de proyecto es programado en un dispositivo. Cuando el bit de seguridad está encendido, el dispositivo no puede ser examinado.
Opcionalmente crea un archivo de salida informático de programación (*.plf, programmer log file) que graba la sesión de comandos de programación y mensajes para futuras referencias.
CAPÍTULO 6
Diseño, analisis e implementacion del controlador PID sobre un CPLD y del sistema del control de velocidad
6.1 Generalidades.
Básicamente el sistema de control de velocidad, se puede dividir en dos partes bien definidas:
– Etapa de control
– Etapa de potencia
En la siguiente gráfica se muestra un diagrama de bloques completo que será implementado en el proyecto:
Fig. 6.1: Diagrama de bloques del sistema de control de velocidad.
La etapa de control, consiste en el comparador, el controlador PID, el control mediante PWM, el contador, y el tacómetro. El comparador, regulador PID, control mediante PWM y contador se desarrollara en el CPLD MAX 7000S EPM 7128, mediante técnicas de programación VHDL.
El tacómetro, será desarrollado en un circuito, este tacómetro de pulsos cuenta en término de revoluciones por unidad de tiempo. El tacómetro estará conformado por un diodo emisor infrarrojo y por un fotodiodo receptor, para su funcionamiento se provee de un disco sobre el eje del motor con cuatro ranuras, la cual servirá para indicar cada revolución del motor, por cada revolución del motor se producirá un pulso el cual será enviado hacia un contador dentro del PLD.
El CPLD MAX 7000S EPM 7128 no se conecta directamente al motor DC, para ello utilizamos una etapa de aislamiento mediante un optoacoplador (4N25), el cual evitará dañar el CPLD por posibles corrientes inversas.
La etapa de potencia, consiste en un circuito de aislamiento óptico, un circuito puente H, y el motor DC.
La entrada o variable manipulada serán 32 tipos de velocidades, teóricamente, cuyos rangos son:
Tabla 6.1: Rango de velocidades que deberán ser las variables manipuladas o entradas, teóricamente.
Velocidad 01 | 75 rpm. | Velocidad 09 | 675 rpm. | Velocidad 17 | 1275 rpm. | Velocidad 25 | 1875 rpm. |
Velocidad 02 | 150 rpm. | Velocidad 10 | 750 rpm. | Velocidad 18 | 1350 rpm. | Velocidad 26 | 1950 rpm. |
Velocidad 03 | 225 rpm. | Velocidad 11 | 825 rpm. | Velocidad 19 | 1425 rpm. | Velocidad 27 | 2025 rpm. |
Velocidad 04 | 300 rpm. | Velocidad 12 | 900 rpm. | Velocidad 20 | 1500 rpm. | Velocidad 28 | 2100 rpm. |
Velocidad 05 | 375 rpm. | Velocidad 13 | 975 rpm. | Velocidad 21 | 1575 rpm. | Velocidad 29 | 2175 rpm. |
Velocidad 06 | 450 rpm. | Velocidad 14 | 1050 rpm. | Velocidad 22 | 1650 rpm. | Velocidad 30 | 2250 rpm. |
Velocidad 07 | 525 rpm. | Velocidad 15 | 1125 rpm. | Velocidad 23 | 1725 rpm. | Velocidad 31 | 2325 rpm. |
Velocidad 08 | 600 rpm. | Velocidad 16 | 1200 rpm. | Velocidad 24 | 1800 rpm. | Velocidad 32 | 2400 rpm. |
Para la selección de velocidades, se hará uso de los DIP switchs. Esta velocidad será comparada con la realimentación que proviene desde el motor, como salida se tiene una señal que será codificada por el PID y convertida en valores de ancho de pulso los cuales serán ingresados al modulador PWM el cual a su salida enviará el tren de pulsos que controlará el motor DC
6.2 Diseño de la etapa de potencia
6.2.1 Circuito de acoplamiento óptico
Se adjunta el plano del circuito correspondiente.
6.2.2 Circuito puente H
Se adjunta el plano del circuito correspondiente.
6.2.3 Planta
La planta del sistema de control de velocidad, es un motor velocidad-estable DC magnético EG-520ED-3B.
Fig. 6.2: Motor velocidad-estable DC magnético EG-520ED-3B.
Aplicaciones
El motor velocidad-estable DC magnético EG-520ED-3B es usado típicamente en el núcleo del eje de la grabadora de casete.
Principales especificaciones técnicas y características
Los principales datos técnicos se muestran en la siguiente tabla y figura:
Tabla 6.2: Variables características del motor velocidad-estable DC magnético EG-520ED-3B.
Fig.6.3 Características de la velocidad nominal (r/min) y el torque (mN.m).
Es de pequeño tamaño, gran torque, baja vibración, ruido bajo son las características para esta clase de motor y hasta ahora elimina la radio interferencia.
La regulación de velocidad puede esta el rango de 2200 a 2600 rev/min.
La temperatura de operación es: -20 a 70 ºC. Humedad relativa: 95%. Periodo de carrera: 1000 horas. Resistencia de armadura: 0.2.
Instalación y uso
La apariencia exterior y las dimensiones para la instalación es mostrado en la siguiente figura:
Fig. 6.4: Vista frontal, perfil, y contra frontal del motor velocidad-estable DC magnético 0EG-520ED-3B.
El polo negativo es conectado con la carcaza.
6.2.4 Análisis de la función de transferencia de la planta
Sea la función de transferencia de un motor DC controlado por armadura:
Sea los datos de las especificaciones técnicas: velocidad nominal, y fluctuación de carga, transformando sus respectivas unidades:
Analizando la función de transferencia de la planta, para aplicar los métodos de las reglas de Ziegler – Nichols.
Sea para la primera regla de Ziegler – Nichols, donde a la planta se le aplica una entrada de escalón unitario, y salida debe dar una curva con aspecto de S.
Tabulando valores para la ec.6.7 se obtiene:
Tabla 6.03: Valores tabulados de la ec. 6.7.
T | c(t) | |
0 | 0 | |
0.002 | 6.75282378 | |
0.004 | 11.0684146 | |
0.006 | 13.8264199 | |
0.008 | 15.5890044 | |
0.01 | 16.7154359 | |
0.02 | 18.4973711 | |
0.03 | 18.6873329 | |
0.04 | 18.7075836 | |
0.05 | 18.7097424 | |
0.06 | 18.7099725 | |
0.07 | 18.7099971 | |
0.08 | 18.7099997 | |
0.09 | 18.71 | |
0.1 | 18.71 | |
0.11 | 18.71 | |
0.12 | 18.71 | |
0.13 | 18.71 | |
0.14 | 18.71 | |
0.15 | 18.71 |
Se obtiene la gráfica:
Fig.6.6: Curva de respuesta c(t) de la ec.6.7.
La curva de respuesta c(t) de la ec.6.7 no tiene la forma de S, por lo que no se puede aplicar la primera regla de Ziegler-Nichols.
Ubicar los polos y ceros de lazo abierto en el plano complejo:
C(s)/R(s) = 4189.18 Kcc / (s (s + 223.87))………(ec.6.13)
Los polos están ubicados en 0 y -223.87, no hay ceros.
Se determina las asíntotas del lugar de raíces:
Angulo de asíntotas = ( 180º (2k + 1) / (n – m)…….(ec.6.14)
Donde
n : cantidad de polos
m: cantidad de ceros
Angulo de asíntotas = ( 90º, 270º
Determinar los puntos de ruptura:
Por lo tanto el diagrama del lugar de raíces es:
Aplicando las reglas de sintonización de Ziegler-Nichols basadas en la ganancia crítica Kcc y en el período crítico Pcc, obtenemos:
6.2.5 Análisis de la estabilidad del sistema de control con los valores teóricos de kp, td, ti obtenidos por el segundo método de Ziegler-Nichols.
Sea el sistema de control de velocidad diseñado:
Fig.6.9: Sistema de control de velocidad diseñado.
Analizando la función de transferencia a lazo cerrado:
Sea G(s), es el producto de la función de transferencia del controlador PID y de la planta.
G(s) = [1.79 (1 + 0.028 s + ( 1 / 0.007 s ) )]x [4189.18 / ( s (s + 223.87) ) ] ….ec.6.24
G(s) = 209.96 (s2 + 35.71 s + 5101.82 ) / ( s2 (s + 223.87) )…..ec.6.25
Sea la función de transferencia a lazo cerrado, del sistema de control de velocidad diseñado:
C(s) / R (s) = 209.96 (s2 + 35.71s + 5101.82 )/(s3 + 433.83s2 + 7497.67s + 1071178.12)
……………ec.6.26
Aplicamos el criterio de estabilidad de Routh:
Sea la ecuación característica de la función de transferencia a lazo cerrado, del sistema de control de velocidad diseñado:
La condición necesaria y suficiente para que todas las raíces de la ec.6.27 queden en el semiplano izquierdo del plano s, es que todos los coeficientes de la ec.6.27 sean positivos y que todos los términos de la primera columna del conjunto tengan signos positivos.
Por la ec. 6.27, y la aplicación del criterio de Ruth, satisface las condiciones necesarias y suficientes, por lo tanto el sistema de control de velocidad diseñado es estable.
6.3 Diseño de la etapa de control.
Se adjunta los plano del circuito correspondiente.
El disco adjunto al motor tiene 4 ranuras, esto debido a lo siguiente: la velocidad máxima de la planta o motor es 2400 rev/min, es decir 40 rev/seg. Al realizar un muestreo del tacómetro a 200ms, se calcula que a 200ms realizara 8 revoluciones, y como tiene 4 ranuras, entonces a velocidad máxima realizara 32 lecturas, y por ello teóricamente se asignará 32 velocidades
6.4 Diseño de la etapa de control en el CPLD MAX 7000S EPM 7128 utilizando técnicas VHDL
El desarrollo de la etapa de control, comparador, regulador PID, control mediante PWM y contador, ha sido realizado en lenguaje VHDL en su totalidad, sobre el CPLD MAX 7000S EPM 7128.
Sea el programa principal representado en bloques, como se muestra en la fig.6.02:
Fig. 6.10: Programa principal de la etapa de control, en el editor gráfico MAX+PLUS II.
Donde las entradas al programa principal, desarrollado en el MAX 7000S EPM 7128S son:
Al comparador y controlador PID, entrada [0,1,2,3,4]
Proporciona la entrada se selección de velocidad que se requiere para el motor, tiene un rango de 0 a 32 posibles valores de velocidades, teóricamente, este valor indica el valor de revoluciones por minuto (rpm) dividido entre 75.
Contador del tacómetro, conteo de pulsos del tacometro
A través de esta entrada se ingresa los pulsos que envía el tacómetro y que son almacenados en un contador, dentro del CPLD para se enviado al bloque PID, este es la entrada que permite la realimentación del sistema. La realimentación [0,1,2,3,4], proporciona el valor del conteo que se hace en el dispositivo, de las revoluciones del motor en cada periodo de muestreo.
Reloj externo a 256KHz.
El reloj externo a 256KHz, por medio de este reloj, se hace dos divisores de frecuencia, para realizar dos relojes a 200ms de período y a 201ms de período. El reloj de 256KHz alimenta al bloque de programa del PWM, el reloj a 200ms de período alimenta al controlador PID, y el reloj a 201ms de período alimenta al bloque del tacómetro y al bloque del acumulador.
La salida al programa principal, desarrollado en el MAX 7000S EPM 7128S es:
Modulación PWM, respecto al sentido
E0s la salida final del sistema, envía la señal a la etapa de potencia, que controlará la velocidad de giro del motor.
6.4.1 Primer y segundo reloj, reloj a 200ms de periodo y a 201ms de periodo.
Fig.6.11: Bloque del primer y segundo reloj.
En este primer bloque del programa, tiene una entrada de reloj de 256KHz. Mediante una programación de conteo, se tiene dos nuevos relojes un reloj a 200ms de periodo y otro reloj a 201ms. de periodo. La característica principal de estos dos relojes, es su pulso positivo, es de periodo muy pequeño.
Desarrollo del programa.
Primerysegundoreloj:
PROCESS (reloj)
–se define las cuatro variables aux0,aux1,aux2,aux3 las dos primeras –correspondientes al reloj a 200ms de periodo y los otros al reloj a –201ms
VARIABLE aux0 : INTEGER RANGE 0 TO 52000;
VARIABLE aux1 : std_logic :='0';
VARIABLE aux2 : INTEGER RANGE 0 TO 52000;
VARIABLE aux3 : std_logic :='0';
BEGIN
–las variables aux0 y aux2, realizan el conteo de acuerdo al pulso –positivo del reloj externo de 256KHz
IF (reloj'EVENT AND reloj = '1')THEN
aux0 := aux0 + 1;
aux2 := aux2 + 1;
END IF;
IF (aux0 = 0 and aux2 = 0)THEN
aux1:='0';
aux3:='0';
end if;
–si la variable aux0 llega al conteo 51282, a transcurrido un tiempo de –200ms, el reloj de 200ms de periodo, necesita un flanco positivo –pequeño, por ello aux0 llega al conteo de 51000, asume el valor "1" — hasta el conteo de 51282
IF (aux0 = 51000)THEN
aux1:='1';
end if;
if(aux0 = 51282) then
aux1:='0';
aux0:=0;
end if;
–si la variable aux0 llega al conteo 51583, a transcurrido un tiempo de –201ms, el reloj de 201ms de periodo, necesita un flanco positivo –pequeño, por ello aux0 llega al conteo de 51300, asume el valor "1" — hasta el conteo de 51583
IF (aux2 = 51300)THEN
aux3:='1';
end if;
if(aux2 = 51538) then
aux3:='0';
aux2:=0;
end if;
–las variables aux1 y aux3, se guardan en las señales t200ms y t201ms, –correspondientemente
t200ms <= aux1;
t201ms <= aux3;
END PROCESS;
6.4.2 Comparador y controlador PID
Fig. 6.12: Bloque del comparador y controlador PID.
Este es el bloque principal del sistema ya que implementa el comparador y control Proporcional, Integrativo y Derivativo del error del sistema.
Para ello toma el error (la diferencia entre el setpoint y la realimentación, la cuál es la función del comparador, en cada periodo de muestreo y le aplica las ecuaciones del control PID, para ello ya se determinaron las respectivas constantes que definen el comportamiento del motor de corriente continua.
Desarrollo del programa.
ControlPID:
PROCESS (t200ms)
–se define las variables error0,error1,errorx, cuyos valores están –limitados desde -128 a 127, y a la vez inicializan en 0.
–las constantes kp,kd,ki, no son correspondientes al cálculo hecho por el –segundo método de Ziegler-Nichols, por el motivo principal de poca –capacidad del CPLD EPM7128
VARIABLE error0,error1,errorx: integer RANGE -128 TO 127 := 0;
constant kp : integer range 0 to 15 := 1;
constant kd : integer range 0 to 15 := 1;
constant ki : integer range 0 to 15 := 0;
BEGIN
IF (t200ms'EVENT AND t200ms = '1')THEN
–por el pulso positivo del reloj a 200ms, se realiza una actualización, y –durante ese tiempo se realiza la fórmula del controlador
errorx := setpoint – retro;
error1 := errorx;
errorx := kp*errorx + kd*(error1 – error0) + ki*(error1 + error0);
error0 := error1;
END IF;
–se almacena en la señal er
er <= errorx;
END PROCESS;
6.4.3 Acumulador
Fig. 6.13: Bloque del Acumulador.
Con este bloque se realiza una suma de todos los errores que envía el PID hacia el generador PWM, cuando el valor del error sea cero, se tendrá el valor que proporcionará el voltaje necesario que hará gira el motor a la velocidad que se indico en el setpoint.
Como el valor de la suma puede sobrepasar el rango permitido en la salida, este valor es limitado al máximo valor permitido ya sea positivo (127) o negativo (-128).
Desarrollo del programa.
Acumulador:
PROCESS (t201ms)
–la señal er, correspodiente al bloque del controlador, se guarda en la –la variable aux5, es limitado entre -128 a 127
variable aux5:integer RANGE -128 TO 127;
BEGIN
–por cada pulso positivo del reloj a 201ms de periódo la señal er, –correspodiente al bloque del controlador, se guarda en variable aux5 –limitado entre -128 a 127
IF(t201ms'event AND t201ms='1') THEN
aux5 := er;
IF(aux5>127 ) THEN
aux5:=127;
ELSIF(aux5<-128)THEN
aux5:=-128;
END IF;
END IF;
–la variable aux5 se guarda en la señal err
err <= aux5;
END PROCESS ;
6.4.4 Signo
Fig. 6.14: Bloque del Signo.
Con este bloque se hace un acondicionamiento de la señal que envía el acumulador, ya que el generador PWM diseñado tiene un rango de entrada de 0 a 127 valores posibles, es decir solo soporta valores de entrada positivos. Además adecua el valor para que sea correctamente interpretada por el bloque PWM.
Desarrollo del programa.
signo:
PROCESS(err)
–la variable aux6 está limitada entre 0 a 255
VARIABLE aux6 : integer RANGE 0 TO 255;
BEGIN
–la señal err, se guarda en la variable aux6
aux6 := err;
–la señal aux6 se le suma 127, este 127 representara la velocidad 0
aux6 := aux6 + 127;
–la variable aux6 se guarda en la señal sel
sel <= aux6;
END PROCESS;
6.4.5 Control por PWM
Fig. 6.15: Bloque de control por PWM
Página anterior | Volver al principio del trabajo | Página siguiente |