Menu
CoddyTech

Desain pemancar

Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 89 dari 90.

challenge icon

Tantangan

Dalam pelajaran ini, kamu akan menyelesaikan pemancar UART dengan menambahkan shift register untuk mengirim byte apa pun, bukan hanya huruf tetap 'A'.

Shift register memuat seluruh frame (stop bit + 8 data bit + start bit), lalu menggesernya keluar satu bit setiap kali.

Format Frame

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

Contohnya, jika data_in = 8'b01000001 (huruf 'A'), shift register menjadi: 1 01000001 0

Tugasmu

Kamu diberi state machine dari pelajaran sebelumnya (mengirim byte tetap). Kamu perlu memodifikasinya agar dapat mengirim byte apa pun dari input data_in.

Yang perlu dilakukan:

  1. Tambahkan input [7:0] bernama data_in ke daftar port (di dalam tanda kurung)
  2. Tambahkan reg 10-bit bernama shift_reg di luar tanda kurung (di dalam badan module, karena ini adalah sinyal internal)
  3. Saat cnt == 0 dan start == 1:
    1. Muat shift_reg dengan {1'b1, data_in, 1'b0}
  4. Saat cnt berada di antara 1 dan 8:
    1. Kirim tx <= shift_reg[0]
    2. Geser ke kanan: shift_reg <= shift_reg >> 1
  5. Saat cnt == 9:
    1. Kirim tx <= shift_reg[0]
    2. Geser ke kanan: shift_reg <= shift_reg >> 1

Coba sendiri

module uart_tx (
  input clk,
  input start,           // NEW: sinyal start untuk memulai transmisi
  output reg tx,         // NEW: jalur output serial
  output reg [3:0] cnt   // Pertahankan sebagai output untuk pengujian
);

  initial begin
    cnt = 0;
    tx = 1;              // NEW: atur tx ke HIGH (keadaan diam)
  end

  always @(posedge clk) begin
    // NEW: logika penghitung dengan kondisi start
    if (cnt == 0 && start) begin   // NEW: mulai mengirim
      cnt <= 1;
    end
    else if (cnt > 0 && cnt < 9) begin   // NEW: hitung selama pengiriman
      cnt <= cnt + 1;
    end
    else if (cnt == 9) begin      // NEW: atur ulang setelah bit terakhir
      cnt <= 0;
    end
  end

endmodule

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Verilog online