Menu
Coddy logo textTech

Transmitter Design

Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 89 de 90.

challenge icon

Desafío

En esta lección, completarás el transmisor UART agregando el shift register para enviar cualquier byte, no solo la letra fija 'A'.

El shift register carga el frame completo (bit de Stop + 8 bits de Data + bit de start) y lo desplaza un bit a la vez.

Formato del frame

Stop (1)Data (8 bits)Start (0)
1data_in0

Por ejemplo, si data_in = 8'b01000001 (letra 'A'), el shift register se convierte en: 1 01000001 0

Tu tarea

Se te proporciona la máquina de estados de la lección anterior (transmite un byte fijo). Debes modificarla para enviar cualquier byte desde la entrada data_in.

Qué hacer:

  1. Agrega un input [7:0] llamado data_in a la lista de puertos (dentro de los paréntesis)
  2. Agrega un reg de 10 bits llamado shift_reg fuera de los paréntesis (dentro del cuerpo del módulo, porque es una señal interna)
  3. Cuando cnt == 0 y start == 1:
    1. Carga shift_reg con {1'b1, data_in, 1'b0}
  4. Cuando cnt esté entre 1 y 8:
    1. Envía tx <= shift_reg[0]
    2. Desplaza a la derecha: shift_reg <= shift_reg >> 1
  5. Cuando cnt == 9:
    1. Envía tx <= shift_reg[0]
    2. Desplaza a la derecha: shift_reg <= shift_reg >> 1

Pruébalo tú mismo

module uart_tx (
  input clk,
  input start,           // NEW: señal de inicio para comenzar la transmisión
  output reg tx,         // NEW: línea de salida serial
  output reg [3:0] cnt   // Mantener como salida para pruebas
);

  initial begin
    cnt = 0;
    tx = 1;              // NEW: establecer tx en HIGH (estado inactivo)
  end

  always @(posedge clk) begin
    // NEW: Lógica del contador con condición de inicio
    if (cnt == 0 && start) begin   // NEW: comenzar a transmitir
      cnt <= 1;
    end
    else if (cnt > 0 && cnt < 9) begin   // NEW: contar mientras se transmite
      cnt <= cnt + 1;
    end
    else if (cnt == 9) begin      // NEW: reiniciar después del último bit
      cnt <= 0;
    end
  end

endmodule

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Verilog online