Lattice isplever. Características. Gestión de proyectos

Documentos relacionados
Lenguaje ABEL-HDL. Departamento de Electrónica. Fundación San Valero

GAL 22V10 Herramientas software

Lenguaje ABEL-HDL. Departamento de Electrónica. Fundación San Valero

Máquinas de Estados en la GAL22V10 Usando ABEL-HDL

Tutorial introductorio al Lenguaje Abel ( Advanced Bolean Equations Language).

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Septiembre 2016

Lenguaje ABEL. Introducción. Estructura de un archivo fuente ABEL. Estructura de un archivo fuente ABEL

Preparación: Para el diseño secuencial será necesario que utilices una señal de reloj. Para generar este pulso de reloj, refiérete a la práctica 2.

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 1

ABEL Para Síntesis. Dr. Juan C. Herrera Lozada

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2013, Segunda Semana

Cuatro Tipos de Flip-Flop en la GAL22V10

TEMA 1 FUNDAMENTOS DEL DISEÑO DEL HARDWARE DIGITAL

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2017, Primera Semana

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 4

Ejemplos y tipos de datos 4.1 Ejemplos simples 4.2 Definición de nuevos tipos de datos 4.3 Ejemplos de máquinas de estados 4.

Tema 2: Circuitos Secuenciales

PARTE I. TÉCNICAS DE DISEÑO ELECTRÓNICO MEDIANTE LENGUAJES DE DESCRIPCIÓN HARDWARE

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

INGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2014

5.1. Introducción a los sistemas digitales

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 10

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2014, Segunda Semana

Registros de Tres Estados con la GAL22V10

Practica 9 Estilos de codificar a estados FCE

LABORATORIO DE SISTEMAS DIGITALES. PRÁCTICA No. 8. Fecha: 03/07/ /07/2017

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 8

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

Diseño de Sistemas Secuenciales Síncronos. Registros y contadores. Tema 9

9-Sistemas Secuenciales

Multiplexor de 3 a 1 Cuádruple con una GAL

Nota: Para los diseños, anexar los respectivos códigos y simulaciones según el caso.

Índice. VHDL Lección 2.9 Máquinas de Estados Finitos (FSM) 1

Circuitos Secuenciales: concepto de estado

LECCIÓN Nº 06 DISEÑO DE CONTADORES SINCRONOS

Síntesis de circuitos secuenciales síncronos: Máquinas de estados finitos

Es un lenguaje para describir diseños de sistemas digitales en forma jerárquica. Advanced Boolean Equation Language.

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 5

Julio. [ Programación en VHDL ] Guía rápida. [ h t t p : / / w w w. o p e n b o x e r m b. c o m / a s i g n a t u r a s / d s d.

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27

DISEÑO DE CIRCUITOS SECUENCIALES

Tema 3 - Modelado con HDL a nivel RTL

UNIVERSIDAD CARLOS III DE MADRID. Ejercicios de VHDL. Circuitos Integrados y Microelectrónica. Luis Entrena. Celia López.

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2014, Primera Semana

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2015, Segunda Semana

INGENIERÍA DE COMPUTADORES III. Solución al examen de Junio 2012, Primera Semana

Laboratorio 07. Diseño Jerárquico de Sistemas Digitales

TOTAL DE HORAS: Semanas de clase: 5 Teóricas: 3 Prácticas: 2. SERIACIÓN OBLIGATORIA ANTECEDENTE: Ninguna SERIACIÓN OBLIGATORIA SUBSECUENTE: Ninguna

Circuitos Digitales Avanzados

Arquitecaura de Computadoras Tema 1 - Introducción a la Arquitectura de Computadoras

TECNOLOGÍA DE COMPUTADORES / SISTEMAS DIGITALES EXAMEN FINAL. 13 ENERO TIEMPO 1h 30m SOLUCIÓN

Asignaturas antecedentes y subsecuentes Diseño de Sistema Digital I

SISTEMAS DIGITALES VHDL

Problema - Junio 2ª semana:

Circuitos Secuenciales: concepto de estado

Secuenciales II. Diseño de Sistemas con FPGA Patricia Borensztejn

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 6

DISEÑO F.S.M DIGITAL2 YESID SANTAFE

MIGRACIÓN DEL HDL PARA LA SÍNTESIS LÓGICA SOBRE DISPOSITIVOS GAL

Laboratorio 02. Ambiente de Mediciones Digitales

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27

CÓMO FUNCIONA UN PLC Control Combinacional Programación del PLC

Tema 2: Análisis y diseño de circuitos digitales

INTRODUCCIÓN AL SOFTWARE ISE (Integrated Software Environment) DE XILINX

3 - DISEÑO RTL. Existen dos tipos de descripciones a nivel de comportamiento en Verilog:

13-Bloques Básicos Secuenciales

Electrónica Digital. Actividad Dirigida. Implementación de un Cronómetro Digital

Diseño Lógico en el Mundo Real. Tema V. ABEL (Advanced Boolean Equation Language) Lenguajes de programación de PLD

Tema V. Diseño Lógico en el Mundo Real

ÍNDICE CAPÍTULO 1. CÓDIGOS DE NUMERACIÓN CAPÍTULO 2. ÁLGEBRA DE CONMUTACIÓN Y FUNCIONES LÓGICAS... 37

Lógica Secuencial. Dr. Andrés David García García Escuela de Ingeniería y Ciencias Campus Estado de México

Figura 1.1 Diagrama en bloque de un Circuito Lógico Secuencial

BOLETIN 7: Subsistemas secuenciales

INTRODUCCIÓN AL LENGUAJE VHDL PARA CIRCUITOS

Universidad Carlos III de Madrid Electrónica Digital Ejercicios

El código concurrente está destinado para el diseño de circuitos combinacionales.

Práctica I.- Introducción a los Sistemas Secuenciales

CREAR PROYECTO EN ISE v9.2 DE XILINX

INGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2012

HOJA DE PROBLEMAS 8: ELEMENTOS DE MEMORIA

4.5. Procedimiento de síntesis

Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores

2. DISPOSITIVOS LÓGICOS PROGRAMABLES SIMPLES

TEMA 8. REGISTROS Y CONTADORES.

ELO211: Sistemas Digitales. Tomás Arredondo Vidal 1er Semestre 2009

Circuitos electrónicos digitales

2. Biestables asíncronos. Biestables R-S. Tecnología Industrial II. Tema 4.- Elementos básicos de un circuito secuencial.

Práctica 4. Sistemas Digitales. Objetivos particulares

VHDL. Lenguaje de descripción hardware

CIRCUITOS ELECTRÓNICOS DIGITALES ESCUELA POLITÉCNICA SUPERIOR UNIVERSIDAD AUTÓNOMA DE MADRID

UNIVERSIDAD DE CASTILLA LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA. CIUDAD REAL

El objetivo de la práctica es conocer el software Xilinx ISE 9.1 mediante la captura de esquemáticos.

DISEÑODE SISTEMAS ELECTRÓNICOS DIGITALES AVANZADOS.

Introducción a VHDL. Por: Carlos A. Fajardo UIS - Sistemas Digitales

Transcripción:

Lattice isplever Características Conjunto de herramientas para el diseño con CPLD y FPGA Versión isplever starter gratuita (licencia 6 meses) Entorno de desarrollo integrado -> incluye Gestión de proyectos Diseño Validación del diseño Simulación Programación de dispositivos Gestión de proyectos El Project Navigator permite gestionar proyectos y acceder a todas las herramientas de isplever Creación del proyecto: Creación del proyecto en un directorio Especificación del tipo de proyecto Selección del dispositivo

Diseño Permite usar esquemáticos o HDL (ABEL, verilog o VHDL) Esquemáticos Uso de celdas prediseñados (librerías) Celdas se corresponden con ecuaciones lógicas y/o biestables Diseños jerárquicos -> un bloque diseñado se puede usar como una celda prediseñada Posicionamiento celdas conexiones etiquetas + puertos (pines) de E/S Validación/compilación del diseño A partir del diseño se compila, generando las ecuaciones y preparando las conexiones en el dispositivo Genera el fichero JEDEC para la programación Simulación Uso de vectores de test Simulación previa a la programación

XILINX ISE Webpack Características Versión gratuita del ISE Foundation Soporte de la mayoría de los dispositivos de xilinx Versiones Windows/Linux. Muy similar a Lattice isplever Posibilidad de entrada como Esquemáticos HDL (ABEL, Verilog, VHDL) Diagramas de estados Entorno de desarrollo integrado -> incluye Gestión de proyectos Diseño Validación del diseño Simulación Programación de dispositivos

ABEL HDL = Hardware Description Language Verilog VHDL ABEL Estructura de un programa: Cabecera Declaraciones Descripciones lógicas Vectores de test Cabecera MODULE nombre -> nombre del módulo (obligatorio) INTERFACE -> declaración del interfaz con el exterior: E y S (opcional) TITLE 'título' -> título del diseño. aparece en la cabecera de los ficheros de salida

Declaraciones pines Define los pines conectados al exterior, su función, polaridad y les asigna nombre Sintaxis: [!] nombre_pin1 [, [!] nombre_pin2... ] PIN [num1 [, num2]..] [ISTYPE atributos]! -> activo a nivel bajo nombre_pin = nombre que se asigna al pin. Definición de varios pines a la vez: Pines sueltos -> pin1,!pin2 PIN 1,2 Buses -> pin3..0 PIN 1..4 num1 -> número de pin asignado a cada etiqueta (opcional) atributos nodos definen características de señales (pines o nodos internos ) sintaxis: señal [, señal2...] [PIN NODE [num] ] ISTYPE atributos Algunos atributos: reg (registro), invert (salida mediante inversor), reg_jk, reg_t (tipos de registro), com (combinacional) Define nodos internosr, su función, polaridad y les asigna nombre Sintaxis: [!] nombre_nodo1 [, [!] nombre_nodo2... ] NODE [num1 [, num2]..] [ISTYPE atributos]

constantes Sintaxis: nombre1 [, nombre2... ] = expresión1 [, expresión2..] ejemplos: valor = 16*3 dato = [1, 0, 0, 1] constantes predefinidas:.x. (no importa).z. (alta Z),.C. (flanco de subida)...

Descripción lógica Distintas posibilidades: Ecuaciones Tablas de verdad Diagramas de estados Fusibles Factores XOR Extensiones punto Permiten referirse de forma precisa a señales internas del circuito asociadas a puertas, biestables, etc. Ejemplo: Q1 PIN ISTYPE 'reg_g.invert' Q1.clk = Clock; Q1.D =!Q1.Q # Preset;

Expresiones pin-a-pin y expresiones detalladas Pin a pin -> se refieren a las señales en los pines => independientes de la arquitectura del dispositivo Q1 :=!Q1 Detalladas -> utilizan señales internas para describir en detalle => dependientes de la arquitectura del dispositivo Operadores Q1.D =!Q1 Lógicos ->bit a bit.! (negación=complemento a 1), & (and), # (or), $(XOR) Relacionales -> resultado = 1/0. igual que en C ( ==,!=, >=... ) Aritméticos -> operan sobre símbolos o conjuntos de bits: -A (cambio de signo -complemento a dos) A B (resta) A + B (suma) A * B (multiplicación) A / B (división entera) A % B (resto de la división entera) A >> b (rotación a derecha b bits) A << b (rotación a izquierda)

de asignación = -> asignación combinacional y = (!a & b) Q1.D =!Q1 -> vale también para registros pero con expresiones detalladas := -> asignación registrada (efectiva en el siguiente flanco de reloj) Q1 =!Q1 Ecuaciones -> asignación p. clave EQUATIONS No importa el orden -> sólo válido para registros en expresión pin a pin

Ecuaciones -> sentencias when-then-else Sintaxis: WHEN condición THEN ecuación1 [ ELSE ecuación2 ] ; Se pueden anidar Pueden afectar a bloques de expresiones ( entre {} ) Ejemplo (control de luz con interruptor y sensor): MODULE luz; Interruptor, bombilla, sensor_luz PIN; EQUATIONS WHEN (interruptor == 0) THEN bombilla = 0; ELSE WHEN ( sensor_luz=0) THEN bombilla = 0; ELSE bombilla = 1;

ejemplo de contador módulo 10 realizado con ecuaciones registradas MODULE mapa TITLE 'Prueba de mapas registrados' [S3..S0] pin istype 'reg'; reloj, reset pin; las 4 salidas del contador salida=[s3..s0]; Equations [S3..S0].CLK=reloj; [S3..S0].AR=reset; reset asíncrono del contador when salida==9 then salida=0 da la vuelta al llegar a 9 else salida = salida+1; o si no, sigue contando END

Tablas de verdad Permiten introducir tablas de verdad directamente Posibilidad de combinaciones no importa Dos posibilidades Tablas combinacionales -> tablas de verdad normales Sintaxis: Ejemplo: TRUTH_TABLE ( entradas -> salidas ) entradas -> salidas ; TRUTH_TABLE ( [en, A, B ] -> C ) [ 0,.X.,.X.] ->.X.; [ 1, 0, 0 ] -> 0 ; [ 1, 0, 1 ] -> 1 ; [ 1, 1, 0 ] -> 1 ; [ 1, 1, 1 ] -> 0 ; Tablas registradas -> tablas de estados Sintaxis: TRUTH_TABLE ( entradas :> salidas_registradas [-> salidas_combinacionales] ) entradas -> salidas_registradas [-> salidas_combinacionales] ; Salidas_registradas -> valor de la salida registrada correspondiente que se activará en el siguiente flanco de reloj (síncrona) Salidas_combinacionales -> valor de la salida combinacional que cambia al cambiar la entrada (asíncrona) Se pueden usar para especificar tablas de estados si entradas = estado actual + entradas y salidas_registradas=estado próximo. Si se usan las salidas_combinacionales => autómata de MEALY, si no, de MOORE.

Ejemplo (contador módulo 4, con fin de cuenta -MEALY-) TRUTH_TABLE ( [Q1,Q0] :> [D1,D0] -> Fin_cuenta ) 0 :> 1 -> 0; 1 :> 2 -> 0 ; 2 :> 3 -> 0 ; 3 :> 0 -> 1 ; Ejemplo (contador módulo 4, con fin de cuenta -MOORE-) TRUTH_TABLE ( [Q1,Q0] :> [D1,D0, Fin_cuenta] ) [0,0] :> [0,1,0]; [0,1] :> [1,0,0]; [1,0] :> [1,1,1]; [1,1] :> [0,0,0];

Diagramas de estado Dos tipos de máquinas de estados Con codificación binaria -> mínimo número de biestables, más lógica (normalmente mejor para CPLDs) Con codificación one-hot -> un biestable por estado, menos lógica (puede ser mejor en FPGAs) Autómatas con codificación one-hot Declaración de la máquina de estado (sección de declaraciones, al principio) Declara una máquina de estados (sólo para codificación one-hot) Sintaxis: nombre1 [, nombre2... ] STATE_REGISTER [ISTYPE atributos] ejemplo: automata STATE_REGISTER; -> declara una maquina de estados llamada automata Estados (sección de declaraciones, al principio) Definen los distintos estados y los biestables que se va a a usar para cada estado (un biestable por estado) Sintaxis: nombre1 [, nombre2... ] STATE [valor1 [, valor2]..] [ISTYPE atributos] nombre -> señales asociadas al estado valor -> valor asociado al estado (opcional, si no se especifica, el programa intenta optimizar) ejemplos: S0..S3 state; -> define 4 pines (y cuatro estados) S0..S3Definición del diagrama de estados: Asignación de reloj (en la sección de ecuaciones) Asignación del reloj a los relojes de los biestables. ejemplo: [S3..S0].CLK=reloj; -> conecta a los CLK de los biestables la señal reloj, que será la señal de reloj en el circuito.

Definición del diagrama de estados Incluye Cabecera Descripción de cada estado -> una entrada por estado Descripción de las transiciones -> dentro de cada estado, una entrada para cada transición Cabecera Define las señales implicadas en el autómata: bits de estado y salidas Sintaxis: STATE_DIAGRAM registros_estado [-> salidas ] Donde ejemplo: registros_estado -> lista de las señales de estado (o bien maquina de estado declarada con STATE_REGISTER) salidas -> listas de salidas para cada estado (MOORE) STATE_DIAGRAM MiAutomata; -> donde MiaAutomata estará declarado en la seccion STATE_REGISTER Descripción del estado Después de la cabecera. Una entrada para cada estado sintaxis: donde STATE estado_actual : [ salidas_síncronas ] transiciónes; salidas_síncronas (MOORE) -> ecuación (o ecuaciones) salida = expresión transiciones -> especifica transiciones y salidas (MEALY) con expresiones IF-THEN-ELSE, CASE, GOTO o WITH.

Transiciones Sentencia IF-THEN_ELSE Sintaxis: IF condición THEN [ ELSE Donde: Sentencia GOTO estado_próximo [WITH salidas].; estado_próximo [WITH salidas] ] ; condición = expresión lógica salidas = ecuación (o ecuaciones) salida = expresión Define una transición incondicional Sintaxis: GOTO estado_próximo [WITH salidas]; Sentencia CASE sintaxis: CASE condición : estado_próximo [WITH salidas]; [ condición : estado_próximo [WITH salidas]; ]... ENDCASE ;

Ejemplo de realización de un autómata

Explicación del circuito Problema 1 del bloque de problemas de combinacionales (semáforo de la rampa del garaje) Solución hecha con un único temporizador de 22s. El temporizador se dispara en flanco de subida de su señal de disparo Su salida se pone a nivel alto durante 22s. El temporizador se va disparando en los distintos estados: Se dispara una vez para temporizar la subida de la puerta del garaje (22s) Se dispara dos veces consecutivas para temporizar el tiempo que la puerta está abierta (44s) Se dispara una vez para temporizar el cierre de la puerta del garaje (22s)

Ejemplo de codificación one-hot MODULE semaforo clock, P, T, Re, Ri, Vi, DISP pin; declaracion de pines automata state_register; declaramos el automata cerrado,abriendo,abierto1, abierto2,cerrando state; declaramos los estados equations automata.clk = clock; state_diagram automata definimos el automata state cerrado: if (P==1) then cerrado with {Re=0; Ri=0; Vi=0; DISP=0;} else abriendo with {Re=1; Ri=1; Vi=0; DISP=1;} state abriendo: if (T==1) then abriendo with {Re=1; Ri=1; Vi=0; DISP=0;} else abierto1 with {Re=1; Ri=0; Vi=1; DISP=1;} state abierto1: if (T==1) then abierto1 with {Re=1; Ri=1; Vi=0; DISP=0;} else abierto2 with {Re=1; Ri=0; Vi=1; DISP=1;} state abierto2: if (T==1) then abierto2 with {Re=1; Ri=1; Vi=0; DISP=0;} else cerrando with {Re=1; Ri=1; Vi=0; DISP=1;} state cerrando: if (T==1) then cerrando with {Re=1; Ri=1; Vi=0; DISP=0;} else cerrado with {Re=0; Ri=0; Vi=0; DISP=0;} END

Autómatas con codificación binaria No hay declaración de la máquina de estado Declaración de los estados (sección de declaraciones) se da nombre a los estados y se le asigna un valor a cada uno. Ejemplos cero = [0,0]; uno =[0,1], dos=[1,0] A=0; B=1; C=2; Asignación de reloj -> igual que en los one-hot Definición del diagrama de estados Igual que en los one-hot, excepto la cabecera, que en vez del nombre de la máquina de estados lleva una lista de las señales de estado usadas ejemplo: STATE_DIAGRAM [Q2,Q1,Q0] Ejemplo codificación binaria

Ejemplo codificación binaria MODULE semaforo clock, P, T, Re, Ri, Vi, DISP pin; declaración de pines [Q2..Q0] pin istype 'reg'; declaramos los biestables de estado definimos la codificación de los estados cerrado=[0,0,0]; abriendo=[0,0,1]; abierto1=[0,1,0]; abierto2=[0,1,1]; cerrando=[1,0,0]; equations [Q2..Q0].clk = clock; state_diagram [Q2..Q0] definimos el automata state cerrado: if (P==1) then cerrado with {Re=0; Ri=0; Vi=0; DISP=0;} else abriendo with {Re=1; Ri=1; Vi=0; DISP=1;} state abriendo: if (T==1) then abriendo with {Re=1; Ri=1; Vi=0; DISP=0;} else abierto1 with {Re=1; Ri=0; Vi=1; DISP=1;} state abierto1: if (T==1) then abierto1 with {Re=1; Ri=1; Vi=0; DISP=0;} else abierto2 with {Re=1; Ri=0; Vi=1; DISP=1;} state abierto2: if (T==1) then abierto2 with {Re=1; Ri=1; Vi=0; DISP=0;} else cerrando with {Re=1; Ri=1; Vi=0; DISP=1;} state cerrando: if (T==1) then cerrando with {Re=1; Ri=1; Vi=0; DISP=0;} else cerrado with {Re=0; Ri=0; Vi=0; DISP=0;} END