Gerbang XOR, XNOR
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 41 dari 90.
Pelajaran ini membahas dua gerbang logika tambahan: XOR (OR eksklusif) dan XNOR (NOR eksklusif). Gerbang ini berguna untuk membandingkan bit dan memeriksa paritas.
Gerbang XOR
Gerbang XOR menghasilkan 1 saat inputnya berbeda.
Tabel Kebenaran (2 masukan):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Primitif gerbang Verilog:
xor(out, a, b);Setara dengan penugasan kontinu:
assign out = a ^ b;Gerbang XNOR
Gerbang XNOR menghasilkan 1 saat inputnya sama. Gerbang ini adalah kebalikan dari XOR.
Tabel Kebenaran (2 masukan):
| a | b | out |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Primitif gerbang Verilog:
xnor(out, a, b);Padanan penugasan kontinu:
assign out = a ~^ b; // atau ~(a ^ b)Beberapa Input
Gerbang XOR dan XNOR dapat memiliki lebih dari 2 input. Outputnya adalah:
- XOR: 1 jika jumlah input bernilai 1 adalah ganjil
- XNOR: 1 jika jumlah input bernilai 1 adalah genap
xor(out, a, b, c); // XOR dengan 3 input
xnor(out, p, q, r, s); // XNOR dengan 4 inputContoh (XOR 3-input):
| a | b | c | out |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
Penggunaan Umum
| Penggunaan | Contoh |
|---|---|
| Membandingkan apakah dua bit berbeda | xor(diff, a, b) |
| Membandingkan apakah dua bit sama | xnor(same, a, b) |
| Menghasilkan paritas (jumlah 1 ganjil) | xor(parity, data[0], data[1], data[2], data[3]) |
| Memeriksa paritas (jumlah 1 genap) | xnor(parity, data[0], data[1], data[2], data[3]) |
Contoh Kode
module xor_xnor_demo (
input a, b,
output xor_out,
output xnor_out
);
xor(xor_out, a, b);
xnor(xnor_out, a, b);
endmoduleTabel Ringkasan
| Gerbang | Output bernilai 1 jika | Primitif | Operator |
|---|---|---|---|
| XOR | Input berbeda | xor(out, a, b) | ^ |
| XNOR | Input sama | xnor(out, a, b) | ~^ |
Tantangan
Tambahkan primitif gerbang yang belum ada sesuai dengan tugas.
Yang harus dilakukan:
- Buat gerbang XOR dengan output
xor_resultdan inputxdany - Buat gerbang XNOR dengan output
xnor_resultdan inputxdany
Coba sendiri
module xor_xnor_challenge (
input x,
input y,
output xor_result,
output xnor_result
);
// TODO: Tambahkan gerbang XOR (xor_result = x ^ y)
// TODO: Tambahkan gerbang XNOR (xnor_result = x ~^ y)
endmodulePelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua 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