Menu
CoddyTech

Mesin keadaan

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

challenge icon

Tantangan

Mesin status adalah sirkuit yang dapat berada dalam salah satu dari beberapa status. Untuk UART, kita memiliki status berbeda untuk setiap bit: idle, start, bit data 0-7, dan stop. Penghitung bit (cnt) memberi tahu kita status yang sedang aktif. Berdasarkan cnt, kita menentukan nilai yang akan dikirim pada jalur tx.

Kamu sudah memiliki penghitung bit dari pelajaran sebelumnya. Kamu perlu mengubahnya agar berfungsi sebagai pemancar UART.

Nilai bit yang dikirim (untuk huruf 'A')

cntnilai tx
01
10
21
30
40
50
60
70
81
90
101

Yang perlu dilakukan

  1. Tambahkan input bernama start
  2. Tambahkan output reg bernama tx
  3. Di blok initial, tetapkan tx = 1 (idle bernilai high)
  4. Ubah logika penghitung:
    • Saat cnt == 0 dan start == 1, tetapkan cnt <= 1 (mulai mengirim)
    • Saat cnt berada di antara 1 dan 9, tambahkan nilainya: cnt <= cnt + 1
    • Saat cnt == 10, reset ke 0

Coba sendiri

module uart_tx (
  input clk,
  output reg [3:0] cnt
);

  initial begin
    cnt = 0;
  end

  always @(posedge clk) begin
      cnt <= cnt + 1;
  end

endmodule

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Verilog online