Mesin keadaan
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 88 dari 90.
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')
| cnt | nilai tx |
|---|---|
| 0 | 1 |
| 1 | 0 |
| 2 | 1 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 7 | 0 |
| 8 | 1 |
| 9 | 0 |
| 10 | 1 |
Yang perlu dilakukan
- Tambahkan input bernama
start - Tambahkan output reg bernama
tx - Di blok
initial, tetapkantx = 1(idle bernilai high) - Ubah logika penghitung:
- Saat
cnt == 0danstart == 1, tetapkancnt <= 1(mulai mengirim) - Saat
cntberada di antara 1 dan 9, tambahkan nilainya:cnt <= cnt + 1 - Saat
cnt == 10, reset ke0
- Saat
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
endmoduleSemua pelajaran di Dasar-Dasar
1Pengantar
Apa Itu VerilogPerangkat Keras vs Perangkat LunakModul PertamamuKomentarTingkat Abstraksi Desain4Operator Bagian 1
Operator AritmetikaOperator ModuloOperator PerbandinganUlasan, Matematika SederhanaOperator Bitwise7Penugasan dan Gerbang
Penugasan KontinuPenugasan dengan OperatorPrimitif Gerbang BawaanGerbang AND, OR, NOTGerbang XOR, XNORUlasan: Rangkaian Gerbang Logika10Pengambilan Keputusan
Pernyataan IfIf - ElseRangkuman: Komparator SederhanaPernyataan CaseCasex dan CasezRangkuman: Desain ALU5Operator Bagian 2
Operator LogikaOperator ReduksiOperator GeserOperator PenggabunganOperator KondisionalRangkuman, Tantangan Operator3Sistem Bilangan
Representasi BinerBilangan BerukuranBilangan Tanpa UkuranBilangan NegatifNilai Khusus X dan ZRingkasan: Format Bilangan6Modul
Struktur ModulPort Input dan OutputPort InoutInstansiasi ModulPemetaan Port Berdasarkan NamaPemetaan Port Berdasarkan UrutanRangkuman: Bangun Modul9Blok Prosedural
Blok alwaysBlok initialDaftar SensitivitasPenugasan BlockingPenugasan Non-BlockingRangkuman: always vs initial15Pengendali Lampu Lalu Lintas
Menentukan StatusLogika Mesin StatusLatihan sendiri: Compiler Verilog online