Teach Lecciones con laboratorios remotos

Lección Teach

Lógica digital en la DE1-SoC (1/6): tus primeras puertas en hardware real

El alumnado escribe Verilog para puertas lógicas básicas, sintetiza y sube el diseño a la DE1-SoC, y verifica tablas de verdad con interruptores y LEDs reales.

  • Altera DE1-SoC
  • 50 min
  • Secundaria (16–18 años)
  • Español
  • Sistemas digitales y FPGA
Altera DE1-SoC
Altera DE1-SoC

Resultados de aprendizaje

  • Explicar que Verilog describe hardware, no un programa que se ejecuta línea por línea.

  • Usar el flujo de trabajo de la DE1-SoC en LabsLand: editar, Sintetizar, Enviar a la FPGA y observar.

  • Construir las seis puertas lógicas básicas y verificar su tabla de verdad en hardware real.

  • Reconocer los LED activos en alto y los pulsadores activos en bajo en la DE1-SoC.

Vista previa de la actividad del estudiante

Contenido de la actividad

Solo vista previa. En una sesión de clase, los estudiantes pueden completar respuestas y entregar su trabajo al docente.

1

Qué vas a hacer

12 min

La mayoría de los programas que conoces se ejecutan en un procesador: las instrucciones van una detrás de otra. En este curso harás algo distinto. Vas a describir un circuito digital en un lenguaje llamado Verilog, y un chip real se configurará para convertirse en ese circuito. No hay un procesador ejecutando tus líneas una por una: tu descripción se convierte en cables y puertas reales que funcionan al mismo tiempo.

El chip es una FPGA (*Field-Programmable Gate Array*): un circuito integrado con una gran red de bloques lógicos y conexiones que se pueden reconfigurar. La placa es una Terasic DE1-SoC con una FPGA Cyclone V de Intel/Altera, muy usada en cursos universitarios de diseño digital. Accedes a una placa real desde el navegador con LabsLand: un servidor usa Intel Quartus para convertir tu Verilog en un archivo de configuración, programa la placa física y te muestra una cámara en directo para ver cómo responden los LED reales.

Partes de la placa que usarás en este curso:

- SW[9:0] - 10 interruptores deslizantes que controlas en pantalla. Un interruptor arriba es lógica 1.
- KEY[3:0] - 4 pulsadores. Son activos en bajo: un botón lee 0 cuando está pulsado y 1 cuando está suelto.
- CLOCK_50 - una señal de reloj de 50 MHz (la usarás a partir de la Lección 3).
- LEDR[9:0] - 10 LED rojos, con LEDR0 en el extremo derecho de la fila y LEDR9 en el izquierdo. Son activos en alto: un LED se enciende cuando lo pones a 1.
- HEX0-HEX5 - seis displays de 7 segmentos. Son activos en bajo: un segmento se enciende cuando su bit vale 0.

El flujo de trabajo será el mismo en cada lección: el editor de Verilog de LabsLand se abre con un archivo, leds_mirror.v, que contiene un módulo de nivel superior llamado leds_mirror. Vas a reemplazar todo el contenido de ese archivo con el diseño del ejercicio (manteniendo siempre el módulo con el nombre leds_mirror), pulsar Sintetizar, esperar a que termine, pulsar Enviar a la FPGA y usar los interruptores en pantalla mientras observas la cámara. Si una guía o ventana de ayuda tapa los botones del editor, ciérrala o sáltala antes de continuar.

Flujo de trabajo de Verilog en la DE1-SoC de LabsLand: editar el módulo de nivel superior leds_mirror.v, pulsar Sintetizar para ejecutar Quartus en el servidor, pulsar Enviar a la FPGA para programar la placa real y después usar los interruptores en pantalla y leer la cámara en directo.

Flujo del curso: editar leds_mirror.v, pulsar Sintetizar (Quartus en el servidor), pulsar Enviar a la FPGA, manejar los interruptores en pantalla y leer la cámara en directo. Tu módulo Verilog se sintetiza directamente como diseño de nivel superior, así que solo editarás este archivo.

Qué frase describe mejor lo que hace tu Verilog en este laboratorio?

En esta placa, un LED se enciende cuando lo llevas a qué valor, y un pulsador KEY lee qué valor cuando está pulsado? Responde en una frase.

2

Las seis puertas básicas

12 min

Una puerta lógica toma una o más entradas binarias y produce una salida binaria. Seis puertas cubren casi todo lo que usarás en este curso. Con entradas A y B:

Tabla de verdad para A, B:

- A=0, B=0 -> AND 0, OR 0, NOT A 1, NAND 1, NOR 1, XOR 0
- A=0, B=1 -> AND 0, OR 1, NOT A 1, NAND 1, NOR 0, XOR 1
- A=1, B=0 -> AND 0, OR 1, NOT A 0, NAND 1, NOR 0, XOR 1
- A=1, B=1 -> AND 1, OR 1, NOT A 0, NAND 0, NOR 0, XOR 0

En Verilog estas puertas se escriben con los operadores bit a bit & | ~ ^. El diseño de abajo conecta el interruptor SW[0] a A, SW[1] a B y envía el resultado de cada puerta a un LED. assign significa "esta salida es continuamente igual a esta expresión", justo como un cable conectado a puertas lógicas.

// Lección 1 - puertas básicas. Reemplaza TODO el contenido de leds_mirror.v con esto.
module leds_mirror(SW, LEDR);
    input  [9:0] SW;        // SW[0] = A, SW[1] = B (otros interruptores sin usar)
    output [9:0] LEDR;

    wire A = SW[0];
    wire B = SW[1];

    assign LEDR[0] = A & B;      // AND
    assign LEDR[1] = A | B;      // OR
    assign LEDR[2] = ~A;         // NOT A
    assign LEDR[3] = ~(A & B);   // NAND
    assign LEDR[4] = ~(A | B);   // NOR
    assign LEDR[5] = A ^ B;      // XOR

    assign LEDR[9:6] = 4'b0000;  // LED sin usar apagados
endmodule

Antes de ejecutarlo, calcula tu predicción inicial. Con los dos interruptores abajo, A=0 y B=0: busca esa fila en la tabla de verdad y decide, para cada una de las seis puertas, si su salida vale 1. En el siguiente paso compararás tu predicción con la placa real.

Con los dos interruptores abajo (A=0, B=0), cuáles de LEDR[0]-LEDR[5] predices que estarán encendidos? Escríbelos antes de ejecutar el diseño.

3

Sintetizar, cargar y verificar

16 min

Ahora construye el circuito en la placa real y compruébalo con la tabla de verdad.

  1. Abre el laboratorio Verilog de la DE1-SoC. El editor muestra el archivo leds_mirror.v.

  2. Selecciona todo el contenido de leds_mirror.v y reemplázalo por el módulo de puertas básicas de arriba. Mantén el módulo con el nombre leds_mirror.

  3. Pulsa Sintetizar. Si una guía tapa el botón, ciérrala o sáltala primero. Espera a que termine (aprox. 1-3 minutos). Si aparece un error, revisa si falta un punto y coma o hay paréntesis desparejados, corrige y vuelve a pulsar Sintetizar. Puede haber muchas advertencias; continúa solo cuando el estado final diga que la compilación terminó con 0 errores.

  4. Pulsa Enviar a la FPGA y espera a que aparezcan la sesión de la placa y la cámara en directo.

  5. Con los interruptores en pantalla SW0 y SW1 abajo (A=0, B=0), lee los LED encendidos en la cámara y compáralos con tu predicción.

  6. Pon SW1 arriba (A=0, B=1), después SW0 arriba (A=1, B=0) y finalmente los dos arriba (A=1, B=1), leyendo los seis LED en cada caso.

En cada fila, coloca los interruptores y registra lo que muestran los seis LED en la cámara (1 = encendido, 0 = apagado). Compáralo con la tabla de verdad del paso anterior.

A = SW0 B = SW1 LEDR0 AND LEDR1 OR LEDR2 NOT A LEDR3 NAND LEDR4 NOR LEDR5 XOR

Sube tu evidencia. Captura una imagen de la cámara con los dos interruptores arriba (SW = 11): deben verse encendidos LEDR0 (AND) y LEDR1 (OR), y los demás apagados. Adjúntala en el cuadro de respuesta.

Qué única puerta da 1 en exactamente una combinación de entradas: la fila A=1, B=1?

Qué única puerta da 1 en exactamente una combinación de entradas: la fila A=0, B=0?

Con tus palabras, qué significan NAND y NOR en relación con AND/OR más NOT? Usa tus datos registrados para justificar la respuesta.

4

Comprobación del flujo de trabajo

10 min

Qué secuencia coincide con lo que acabas de hacer?

En tres frases, explica qué hizo Sintetizar, qué hizo Enviar a la FPGA y cómo supiste que las puertas funcionaban. Menciona un lugar donde importó que una señal fuera activa en alto o activa en bajo.