Skip to content

Sesión 6: Esto es sólo el comienzo

Juan Gonzalez-Gomez edited this page May 29, 2018 · 37 revisions

Introducción

Biestables (Set y Reset)

Funcionamiento básico

  • Circuito secuencial más sencillo. Tienen memoria. ¡Recuerda!
  • (Nunca te metas con un biestable, porque... recuerda)
  • Los biestables con entradas de Set y Reset se usan para las notificaciones. Recuerdan que ha ocurrido un evento: Botón apretado, alarma disparada, ha ocurrido un error, ha llegado un carácter, un periférico ha cambiado de estado...
  • Ejemplo 1: Biestable S-R conectado a pulsadores SW1 y SW2. Salida a LED
    • Notificación del evento: Botón apretado (al menos una vez)
    • Esta notificación se quita manualmente, al apretar SW2
  • Ejemplo 2: Sirena luminosa activada por pulsador
  • Probar la alarma anterior con los sensores IR, y rearme con pulsador

Temporizador

  • Ejemplo 3: Encender un LED al apretar el pulsador, que esté durante 3 segundos encendido y que luego se apague
  • Ejemplo 4: Sirena luminosa temporizada. Se activa con pulsador. Está activa durante x segundos

Biestable Set-Reset en Verilog

reg q = 0;

always @(posedge clk)
  if (set)
    q <= 1;
  else if (rst)
    q<=0;
  • Ejercicio: Modificar biestable para que esté inicializado a 1 en vez de 0. Con set se pone a 0 y con rst a su estado inicial: 1

Entradas analógicas

  • Ejemplo 5: Lectura de un potenciómetro, y resultado mostrado en los LEDs
  • Ejemplo 5-2: Mismo circuito, pero conectado a un sensor de luz (LDR)

Comunicaciones serie

  • Instalar algún terminal serie: Entorno Arduino, GTKterm (Linux), ScriptCommunicator (Multiplataforma)
  • Desde Debian/Max/Ubuntu: sudo apt install gtkterm
  • El puerto serie en Linux, asociado a la Alhambra es: /dev/ttyUSB1
  • Trabajaremos a la velocidad de: 115200 Baudios
  • Ejemplo 6: Recepción de caracteres y visualización en los LEDs
  • Ejemplo 7: Recepción y transmisión: Eco!
  • Ejemplo 8: Eco + cifrado (descolocando bit)
  • Ejemplo 9: Envío periódico de una constante
  • Ejemplo 10: Envío de valores del potenciómetro al PC

Controlador VGA

  • Información sobre el conexionado: MonsterLED

  • Realizar el conexionado

  • Ejemplo 11: Pantalla verde. Cargar el circuito y comprobar que la pantalla se pone verde

  • Ejemplo 12: Hacer parpadear la VGA manualmente, con un pulsador

  • Ejercicio: Hacerla parpadear a 1Hz, con el corazón

  • Ejemplo 13: Línea verde que se mueve por pantalla con los pulsadores SW1 y SW2

  • Colección iPX de Sergio Cuenca (@sergicuen), de la Universidad de Alicante

  • Descargar el fichero de la colección en .zip e instalar para probar las demos

  • BouncingBallSprintes: Bola que rebota por la pantalla

  • BaouncingGBallSprintes: Bola rebotando, con gravedad

  • ColorBarsStream: Barras verticales de colores: Carta de juste

  • ControlMux2Logos: Logo de FPGAwars moviéndose en un fondo de barras de colores

  • LogoPattern: Logo FPGAs con fonde de Darth Vader

  • Pop Sequence: Movimiento del Prince-of-persia!!

  • XMASfpga: FPGAwars de navidad

Softprocessor: Simplez!

  • Ejemplo de un soft-processor: un procesador descrito en Verilog y metido en la FPGA
  • Información sobre Simplez
  • Ejemplo 14: Simplez-top, de la colección CTIF-MadridCAP-6

Lattuino! Convierte tu Alhambra en un mini-arduino

  • Lattuino en github
  • Desarrollado por Savador Tropea, de Argentina
  • Grabación del bitstream con iceprog (Consola, Linux)
  • Ejemplo 15: Descarga de programas desde el Entorno de Arduino

Midiendo con el analizador lógico de Saleae y el software libre Sigrok

¡Más información!

  • Tutorial de Verilog, con FPGAs libres
  • Bibliografía: "Digital Design, An Embedded Systems Approach Using Verilog". P. Ashenden. 2007. Es el libro de referencia de diseño digital con lenguajes hdl

Ejercicios

Tutorial 17 (20 Bitpoints)

  • Ejercicio 17.1 (Total 3 Bitpoints): Barrera en modo automática y manual

Diseñar el circuito digital para controlar una barrera de acceso que se levantará automáticamente cuando detecte la presencia de un coche, y se bajará cuando no lo haya. Además, tiene un modo manual para poder subirla mediante un interruptor. La barrera sólo baja si no hay coche detectado y no está activada manualmente

  • Ejercicio 17.2 (Total 5 Bitpoints): Caja fuerte con dos códigos de apertura

Diseñar un circuito digital para que se abra una caja fuerte cuando se introduce el código 101 ó el 010 en tres interruptores externos. Al abrirse se moverá un servo a una posición, y cuando está cerrada se moverá a la contraria

  • Ejercicio 17.3 (Total 7 Bitpoints): Franky en modo defensa, con disparo manual

Diseñar un circuito digital para que franky funcione en modo "defensa". Estará irando de lado a lado con un periodo de 4 segundos (2 segundos en cada lado). En uno de los lados disparará automáticamente una ráfaga por sus ojos, que parpadearán a una frecuencia de 10Hz. Además, durante el disparo, sonarán pitidos de 1Khz, con una cadenacia de 10Hz (pi-pi-pi-pi...). Adicionalmente se colocará
un pulsador para disparo manual. Al pulsarlo realizará los mismos disparos comentados anteriormente (señal luminosa en los ojos y pitidos de 1Khz con cadencia de 10Hz)

  • Ejercicio 17.4 (5 Bitpoints). Ejercicio Libre. Premiar la creatividad

Tutorial 18 (20 Bitpoints)

  • Ejercicio 1 (Total 5 Bitpoints): Notas DO-RE-MI-FA

  • Ejercicio 2 (Total 5 Bitpoints): Movimiento de un Servo con ángulos pequeño y grande

  • Ejercicio 3 (Total 5 Bitpoints): Servo con dos velocidades en cada sentido

  • Ejercicio 4 (5 Bitpoints). Ejercicio Libre. Premiar la creatividad

Tutorial 19 (20 Bitpoints)

  • Ejercicio 1 (Total 5 Bitpoints): Franky en modo defensivo

Diseñar un circuito combinacional, de dos entradas y una salida, mediante su tabla de verdad, para controlar la posición del cuello de Franky con dos sensores de infrarrojos: izquierdo y derecho. Cuando ningún sensor esté activado, o sólo lo esté el izquierdo, Franky mirará hacia la izquierda. Cuando el sensor derecho está activado, o ambos (izquierdo y derecho), Franky mirará hacia la derecha

  • Ejercicio 2 (Total 5 Bitpoints): Apertura de caja fuerte

Diseñar un circuito combinacional, mediante su tabla de verdad, para abrir la puerta de una caja fuerte cuando se introducen los códigos correctos. Se usarán 3 interruptores externos para introducir la clave. Cuando esta clave sea 101 ó 011 se moverá un servo a la otra posición, simulando la apertura de la caja

  • Ejercicio 3 (Total 5 Bitpoints): Detector de paridad de 4 bits

Diseñar un circuito combinacional de 4 bits de entrada y uno de salida, usando su tabla de verdad, capaz de detectar si el número de 1's en sus entradas es par. En ese caso, se encenderá el LED conectado a su salida. Si el número es impar, se apagará. Este tipo de circuitos se llaman detectores de paridad, y se usan mucho en comunicaciones para comprobar la integridad de la información recibida. La entrada 0000 tiene paridad par (0 es par).

  • Ejercicio 4 (5 Bitpoints). Ejercicio Libre. Premiar la creatividad