Desain Mux 4-ke-1
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 65 dari 90.
Tantangan
Multiplexer 4-ke-1
Multiplexer 4-ke-1 memiliki empat input data (in0, in1, in2, in3), dua bit pemilih (sel[1:0]), dan satu output (out). Dua bit pemilih menentukan input mana yang diteruskan ke output:
- Saat
sel = 2'b00, output adalahin0 - Saat
sel = 2'b01, output adalahin1 - Saat
sel = 2'b10, output adalahin2 - Saat
sel = 2'b11, output adalahin3
Kamu akan membuat multiplexer ini dengan dua cara: pertama menggunakan pernyataan if-else, lalu pada pelajaran berikutnya menggunakan pernyataan case. Kedua cara ini berfungsi, tetapi case sering kali lebih rapi saat kamu memiliki banyak pilihan.
Multiplexer 4-ke-1 memilih satu dari empat input dan meneruskannya ke output berdasarkan sinyal pemilih 2-bit.
Tabel Kebenaran
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
Saat sel bernilai 00, output mengikuti in0. Saat sel bernilai 01, output mengikuti in1. Saat sel bernilai 10, output mengikuti in2. Saat sel bernilai 11, output mengikuti in3.
Yang harus kamu lakukan:
- Buat module bernama
mux4to1 - Tambahkan input
in0(1 bit) - Tambahkan input
in1(1 bit) - Tambahkan input
in2(1 bit) - Tambahkan input
in3(1 bit) - Tambahkan input
sel(2 bit) - Tambahkan output
out(1 bit, bertipereg) - Tambahkan blok
always @(*) - Di dalamnya, tambahkan pernyataan
if-elseyang memeriksasel:- Jika
sel == 2'b00, tetapkanout = in0 - Jika tidak, jika
sel == 2'b01, tetapkanout = in1 - Jika tidak, jika
sel == 2'b10, tetapkanout = in2 - Jika tidak, tetapkan
out = in3
- Jika
- Akhiri dengan
endmodule
Coba sendiri
// Langkah 1: Buat module bernama mux4to1
// Langkah 2: Tambahkan input in0
// Langkah 3: Tambahkan input in1
// Langkah 4: Tambahkan input in2
// Langkah 5: Tambahkan input in3
// Langkah 6: Tambahkan input sel (2 bit)
// Langkah 7: Tambahkan output out (tipe reg)
// Langkah 8: Tambahkan blok always @(*)
// Langkah 9: Tambahkan pernyataan if-else
// jika sel == 2'b00, out = in0
// jika tidak, jika sel == 2'b01, out = in1
// jika tidak, jika sel == 2'b10, out = in2
// jika tidak, out = in3
// Langkah 10: 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