Desain pemancar
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 89 dari 90.
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) |
|---|---|---|
| 1 | data_in | 0 |
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:
- Tambahkan
input [7:0]bernamadata_inke daftar port (di dalam tanda kurung) - Tambahkan
reg10-bit bernamashift_regdi luar tanda kurung (di dalam badan module, karena ini adalah sinyal internal) - Saat
cnt == 0danstart == 1:- Muat
shift_regdengan{1'b1, data_in, 1'b0}
- Muat
- Saat
cntberada di antara 1 dan 8:- Kirim
tx <= shift_reg[0] - Geser ke kanan:
shift_reg <= shift_reg >> 1
- Kirim
- Saat
cnt == 9:- Kirim
tx <= shift_reg[0] - Geser ke kanan:
shift_reg <= shift_reg >> 1
- Kirim
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
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