Electrónica IIIngeniería Electromecánica DISPOSITIVOS LÓGICOS PROGRAMABLES Mayo 2012 PROGRAMACIÓN PLDS Desarrollo De PLDs Programación PLD Diseño Verificación Del dispositivo Compilación Y Verificación Lógica NO ¿Correcto? SI FIN PROGRAMACIÓN PLDS PROGRAMACIÓN PLDS PROGRAMACIÓN PLDS: ABEL - ABEL es una marca registrada de Data I/O Corporation y es el acrónimo de Advanced Boolean Expression Language. - Permite implementar diseños lógicos en dispositivos lógicos programables. - Puede ser utilizado para programar cualquier tipo de PLD y, por tanto, es un lenguaje independiente del dispositivo. - El lenguaje ABEL se ejecuta en un computador conectado a un programador de dispositivos. - Proporciona tres formatos para describir e introducir el diseño lógico: ecuaciones, tablas de verdad y diagramas de estado. PROGRAMACIÓN PLDS: ABEL Funciones lógicas: A A B A B A B !A A# B A& B A$ B ABC ( AB C ) A B(C D) ? PROGRAMACIÓN PLDS: ABEL Ejemplo: multiplexor 12 entradas y 4 salidas PROGRAMACIÓN PLDS: ABEL Ejemplo: multiplexor 12 entradas y 4 salidas PROGRAMACIÓN PLDS: ABEL Las variables de entrada o salida múltiples se pueden agrupar usando corchetes para simplificar una ecuación. PROGRAMACIÓN PLDS: ABEL Tablas de verdad: PROGRAMACIÓN PLDS: ABEL Secciones Básicas: Declaraciones Descripciones lógicas Vectores de prueba PROGRAMACIÓN PLDS: ABEL Secciones Básicas: Declaraciones Descripciones lógicas Vectores de prueba Los vectores de prueba examinan el diseño lógico antes de programar el hardware, aplicando todas las combinaciones de entrada y comprobando que las salidas son correctas. PROGRAMACIÓN PLDS: ABEL Secciones Básicas: Declaraciones Descripciones lógicas Vectores de prueba Los vectores de prueba examinan el diseño lógico antes de programar el hardware, aplicando todas las combinaciones de entrada y comprobando que las salidas son correctas. PROGRAMACIÓN PLDS: ABEL Secciones Básicas: Declaraciones Descripciones lógicas Vectores de prueba Los vectores de prueba examinan el diseño lógico antes de programar el hardware, aplicando todas las combinaciones de entrada y comprobando que las salidas son correctas. PROGRAMACIÓN PLDS: ABEL Ejemplo: multiplexor cuádruple 1 de 4 con GAL20V8 PROGRAMACIÓN PLDS: ABEL Ejemplo: multiplexor cuádruple 1 de 4 con GAL20V8 Aout = !S1 & !S0 & A0 # !S1 & S0 & A1 # S1 & !S0 & A2 # S1 & S0 & A3; Bout = !S1 & !S0 & B0 # !S1 & S0 & B1 # S1 & !S0 & B2 # S1 & S0 & B3; Cout = !S1 & !S0 & C0 # !S1 & S0 & C1 # S1 & !S0 & C2 # S1 & S0 & C3; Dout = !S1 & !S0 & D0 # !S1 & S0 & D1 # S1 & !S0 & D2 # S1 & S0 & D3; PROGRAMACIÓN PLDS: ABEL Ejemplo: multiplexor cuádruple 1 de 4 con GAL20V8 PROGRAMACIÓN PLDS: ABEL Ejemplo: multiplexor cuádruple 1 de 4 con GAL20V8 A0A1A2A3B0B1B2B3C0C1-S0 -S1 -Aout -Bout -Cout -Dout -D3 -D2 -D1 -D0 -C3 C2- PROGRAMACIÓN PLDS: ABEL Ejemplo: multiplexor cuádruple 1 de 4 con GAL20V8 Module cuad_1_de_4_mux Title ‘Multiplexor cuadruple 1 de 4 en GAL20V8’ mux device ‘P20V8’ A0, A1, A2, A3 pin 1, 2, 3, 4; B0, B1, B2, B3 pin 5, 6, 7, 8; C0, C1, C2, C3 pin 9, 10, 11, 13; D0, D1, D2, D3 pin 14, 15, 16, 17; Aout, Bout, Cout, Dout pin 21, 20, 19, 18; S0, S1 pin 22, 23; Equations Aout = !S1 Bout = !S1 Cout = !S1 Dout = !S1 & & & & !S0 !S0 !S0 !S0 & & & & A0 B0 C0 D0 # # # # !S1 !S1 !S1 !S1 & & & & S0 S0 S0 S0 & & & & A1 B1 C1 D1 # # # # S1 S1 S1 S1 & & & & !S0 !S0 !S0 !S0 & & & & A2 B2 C2 D2 # # # # S1 S1 S1 S1 & & & & S0 S0 S0 S0 & & & & A3; B3; C3; D3; PROGRAMACIÓN PLDS: ABEL Ejemplo: multiplexor cuádruple 1 de 4 con GAL20V8 Test_vectors ([S1,S0,A0,A1,A2,A3,B0,B1,B2,B3,C0,C1,C2,C3,D0,D1,D2,D3]-> [Aout,Bout,Cout,Dout]) “S S A A A A B B B B C C C C D D D D outputs “1 0 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 A B C D [0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]->[1,0,0,0]; [0,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]->[0,1,0,0]; [1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]->[0,0,1,0]; [1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]->[0,0,0,1]; [0,0,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0]->[0,1,1,1]; [0,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0]->[1,0,1,1]; [1,0,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0]->[1,1,0,1]; [1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0]->[1,1,1,0]; END PROGRAMACIÓN PLDS PROGRAMACIÓN PLD: CUPL CUPL = Universal Compiler for Programable Logic CUPL es uno de los estándares de la industria electrónica utilizado para generar el mapa de fusibles de un dispositivo lógico programable a través de una descripción lógica de alto nivel. Desarrollado por Logical Devices, Inc. y consiste básicamente de tres programas: - CUPL : Compilador Universal de lógica programable. Permite escribir y compilar descripciones lógicas para asignar a dispositivos lógicos programables (PLD), a través de programadores de dispositivos. - CSIM : Simulador de CUPL, compara los valores esperados con los calculados en la operación de CUPL. - CBLD : Manejador de librerías, permite manejar las librerías del programa para crear más pequeñas con dispositivos específicos. PROGRAMACIÓN PLD: CUPL CUPL = Universal Compiler for Programable Logic CUPL es uno de los estándares de la industria electrónica utilizado para generar el mapa de fusibles de un dispositivo lógico programable a través de una descripción lógica de alto nivel. Desarrollado por Logical Devices, Inc. y consiste básicamente de tres programas: - CUPL : Compilador Universal de lógica programable. Permite escribir y compilar descripciones lógicas para asignar a dispositivos lógicos programables (PLD), a través de programadores de dispositivos. - CSIM : Simulador de CUPL, compara los valores esperados con los calculados en la operación de CUPL. - CBLD : Manejador de librerías, permite manejar las librerías del programa para crear más pequeñas con dispositivos específicos. PROGRAMACIÓN PLD: CUPL CUPL = Universal Compiler for Programable Logic CUPL es uno de los estándares de la industria electrónica utilizado para generar el mapa de fusibles de un dispositivo lógico programable a través de una descripción lógica de alto nivel. Desarrollado por Logical Devices, Inc. y consiste básicamente de tres programas: - CUPL : Compilador Universal de lógica programable. Permite escribir y compilar descripciones lógicas para asignar a dispositivos lógicos programables (PLD), a través de programadores de dispositivos. - CSIM : Simulador de CUPL, compara los valores esperados con los calculados en la operación de CUPL. - CBLD : Manejador de librerías, permite manejar las librerías del programa para crear más pequeñas con dispositivos específicos. PROGRAMACIÓN PLD: CUPL CUPL = Universal Compiler for Programable Logic CUPL es uno de los estándares de la industria electrónica utilizado para generar el mapa de fusibles de un dispositivo lógico programable a través de una descripción lógica de alto nivel. Desarrollado por Logical Devices, Inc. y consiste básicamente de tres programas: - CUPL : Compilador Universal de lógica programable. Permite escribir y compilar descripciones lógicas para asignar a dispositivos lógicos programables (PLD), a través de programadores de dispositivos. - CSIM : Simulador de CUPL, compara los valores esperados con los calculados en la operación de CUPL. - CBLD : Manejador de librerías, permite manejar las librerías del programa para crear más pequeñas con dispositivos específicos. PROGRAMACIÓN PLD: CUPL ARCHIVOS: Archivos de Entrada. *.PLD Archivo con las descripciones lógicas. *.SI Archivo con valores esperados (para simulador). Archivos Intermedios *.ABS Archivo generado por CUPL, para ser usado por CSIM. Archivos de Salida *.LST Archivo con listado de errores *.DOC Archivo con documentación *.SO Archivo con resultado de la simulación *.JED(1) Archivo con mapa de fusible en formato JEDEC *.JED(2) Archivo con mapa de fusible y vectores de prueba en formato JEDEC *.HL Archivo con mapa de fusible en formato HL *.HEX Archivo con mapa de fusible en formato HEX PROGRAMACIÓN PLD: CUPL ARCHIVOS: Archivos de Entrada. *.PLD Archivo con las descripciones lógicas. *.SI Archivo con valores esperados (para simulador). Archivos Intermedios *.ABS Archivo generado por CUPL, para ser usado por CSIM. Archivos de Salida *.LST Archivo con listado de errores *.DOC Archivo con documentación *.SO Archivo con resultado de la simulación *.JED(1) Archivo con mapa de fusible en formato JEDEC *.JED(2) Archivo con mapa de fusible y vectores de prueba en formato JEDEC *.HL Archivo con mapa de fusible en formato HL *.HEX Archivo con mapa de fusible en formato HEX PROGRAMACIÓN PLD: CUPL ARCHIVOS: PROGRAMACIÓN PLD: CUPL PROGRAMACIÓN PLD: CUPL COMPONENTES: Programa: Descripción de funciones PROGRAMACIÓN PLD: CUPL COMPONENTES: PROGRAMACIÓN PLD: CUPL COMPONENTES: PROGRAMACIÓN PLD: CUPL COMPONENTES: PROGRAMACIÓN PLD: CUPL EJEMPLO: : Implementar las operaciones booleanas NOT, AND, OR, XOR, NAND, NOR y XNOR para tres variables de entrada en el dispositivo lógico programable GAL22V10. ABC ABC A BC A BC A BC A BC A AND = A & B & C ; NAND = !(A & B & C) ; OR = A # B # C ; NOR = !(A # B # C) ; XOR = A $ B $ C ; XNOR = !(A $ B $ C) ; NOTA = !A ; PROGRAMACIÓN PLD: CUPL EJEMPLO: : Implementar las operaciones booleanas NOT, AND, OR, XOR, NAND, NOR y XNOR para tres variables de entrada en el dispositivo lógico programable GAL22V10. PROGRAMACIÓN PLD: CUPL EJEMPLO: : Implementar las operaciones booleanas NOT, AND, OR, XOR, NAND, NOR y XNOR para tres variables de entrada en el dispositivo lógico programable GAL22V10. Plastic Leaded chip carrier Small Outline Integrated Circuit Dual In Line Package http://oretano.iele-ab.uclm.es/~arodenas/Encapsulados/encapsulados.swf PROGRAMACIÓN PLD: CUPL EJEMPLO: : Implementar las operaciones booleanas NOT, AND, OR, XOR, NAND, NOR y XNOR para tres variables de entrada en el dispositivo lógico programable GAL22V10. ABC-AND -NAND -OR -NOR -XOR -XNOR -NOTA PROGRAMACIÓN PLD: CUPL EJEMPLO: : Implementar las operaciones booleanas NOT, AND, OR, XOR, NAND, NOR y XNOR para tres variables de entrada en el dispositivo lógico programable GAL22V10. CUPL CON WINCUPL WinCupl para generar el archivo .jed: http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2759 http://www.atmel.com/dyn/products/tools_card.asp?category_id=172&family_id=653&subfamily_id=734&tool_id=2759 CUPL CON WINCUPL WinCupl para generar el archivo .jed, se puede descargar desde: http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2759 http://www.atmel.com/dyn/products/tools_card.asp?category_id=172&family_id=653&subfamily_id=734&tool_id=2759 CUPL CON WINCUPL Una vez instalado: Pasos: 1. Ir a File > New > Design File 2. En Device se cambia virtual por g22v10 (para generar el archivo .jed). 3. En Name nombrar como quieran. 4. Presionar OK CUPL CON WINCUPL Una vez instalado: 5. Numero de entradas: según diseño, por ejemplo 3 6. Numero de salidas: según diseño por ejemplo 5 7. Número de nodos: 0 CUPL CON WINCUPL Una vez instalado: 8. Editar las entradas y salidas según el diseño. HAGA EL MISMO EJEMPLO. CUPL CON WINCUPL 9. Compilar: Ir a Options > Compiler Output Files, en el recuadro Download, debe estar activado la opción JEDEC General: JEDEC name CUPL CON WINCUPL 10. Ejecutar: VARIAS OPCIONES PARA SIMULAR CUPL CON WINCUPL 11. Depurar: COMPILACIÓN DEPENDENTE DEL DISPOSITIVO Identifique errores de compilación. CUPL CON WINCUPL 12. Ejecutar: una vez corregidos los errores, compare el árbol del proyecto y determine si hay más archivos CUPL CON WINCUPL 13. Rescatar archivo .jed. Identifique la ruta de archivos y copie el archivo *.jed en una carpeta en el escritorio. CUPL CON WINCUPL 14. Generar archivo de simulación y analizar con WinSim: CUPL CON WINCUPL ADEMÁS: SE PUEDE CAMBIAR LA RUTA DE TRABAJO DEL COMPILADOR CUPL CON WINCUPL ADEMÁS: PARA TRABAJAR CON WINDOWS 7 CUPL CON WINCUPL ADEMÁS: PARA TRABAJAR CON WINDOWS 7 VERIFICAR PRESENCIA DE ARCHIVOS *.JED CUPL CON WINSIM 15. Antes de usar el winsim necesitamos tener el archivo .pld que se crea con el programa wincupl (PASOS 1-14): - Presionar el botón de la función winsim dentro del wincupl o bien abrirlo desde la barra de inicio. - Saldrá una ventana nueva donde se indica: New. CUPL CON WINCUPL 15…. Presionar Design File y buscar el archivo PLD del proyecto que se acabo de generar con wincupl. CUPL CON WINSIM 15…. Se abrirá el programa con extensión .si y presionar el botón Add signal. Agregar las entradas deseadas presionando OK. CUPL CON WINSIM 15…. Agregar las SALIDAS deseadas presionando OK. Al finalizar Presionar “Done” Las señales aparecerán en el costado izquierdo de la pantalla. CUPL CON WINSIM 15…. Definir un valor lógico para las entradas, que puede ser: 0, H, L, Z, etc. Esto se hace presionando el botón derecho del ratón y seleccionando el valor lógico deseado CUPL CON WINSIM 15….Una vez sean asignados los valores a las entradas, correr la simulación presionando el botón Simulate. Analizar los estados de las salidas. CUPL CON WINSIM 15….Agregue un vector para tener más pulsos de las señales de entrada con estados independientes según se definan. Corra la simulación presionando el botón Simulate. Analizar los estados de las salidas. CUPL CON WINSIM 15….Cambie todos los estados de las entradas y analice las salidas, cumplen la función lógica diseñada? CUPL Y PROTEUS 16. Simular con Proteus: ubique el archivo .jed que copio en el paso 13. Abra un nuevo archivo .dsn desde proteus ISI. Busque el dispositivo AM22V10 que es equivalente a la gal G22V10: CUPL Y PROTEUS 16… compare la distribución de pines para el simulador con el datasheet del dispositivo. Faltan pines? Cuales? de acuerdo a la función lógico y distribución de entradas y salidas que haya realizado en el proyecto pld desde wincupl, conecte puntas de prueba (logic probe) para las entradas y salidas habilitadas. AB- C-AND -NAND -OR -NOR -XOR -XNOR -NOTA CUPL Y PROTEUS 16… de click derecho sobre el dispositivo y abra “Edit propierties” De click en el icono de la carpeta para ubicar el archivo jedec relacionado con el proyecto. Busque el archivo .jed y de OK. CUPL Y PROTEUS 16… Si el archivo se compilo correctamente desde wincupl, la simulación correrá sin problemas. Ejecute la simulación y pruebe el circuito. EJEMPLOS DISPOSITIVOS LÓGICOS PROGRAMABLES Conversor BCD 7segmentos con GAL22V10 GAL22V10 Se pueden incluir directamente las tablas! EJEMPLOS DISPOSITIVOS LÓGICOS PROGRAMABLES Conversor BCD 7segmentos con GAL22V10 EJEMPLOS DISPOSITIVOS LÓGICOS PROGRAMABLES Multiplexor + Conversor BCD 7segmentos con GAL22V10 PROGRAMACIÓN GAL CON SUPERPRO 1. Instalar PROGRAMACIÓN GAL CON SUPERPRO 2. Verificar conexión física y Ubicar dispositivo PROGRAMACIÓN GAL CON SUPERPRO 3. Cargar archivo *jed PROGRAMACIÓN GAL CON SUPERPRO 4. Programar RECOMENDADOS http://sites.google.com/site/jaimepsantos/software/wincupl http://sites.google.com/site/jaimepsantos/software/winsim CAPÍTULO 7 FUNDAMENTOS DE SISTEMAS DIGITALES. FLOYD
[email protected]