11 / 63 · Konsep
Dekoder, seleksi one-hot, dan masukan valid
Ubah alamat biner menjadi jalur seleksi individual dan rancang enable, rentang valid, serta invarian seleksi.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
Mengubah alamat menjadi jalur seleksi
DekoderDekoder Rangkaian yang mengaktifkan jalur keluaran sesuai kode biner. Dengan enable, seluruh keluaran dapat menjadi 0 saat dinonaktifkan. bit mengubah alamat masukan menjadi pilihan satu dari maksimal keluaran. Keluaran dengan enable dapat didefinisikan sebagai:
Pada dekoder 2-ke-4, , , , dan . Jika enable=0, semua keluaran 0; jika enable=1, tepat satu keluaran 1.
Ubah alamat a1a0 saat enable=1 dan pastikan hanya satu d0–d3 menyala. Ubah enable menjadi 0 dan periksa bahwa seluruh jalur seleksi mati.
d[i] = enable AND (2 × a1 + a0 = i)
Nilai awal bawaan melengkapi fungsi
module decoder2 (
input logic en,
input logic [1:0] addr,
output logic [3:0] select
);
always_comb begin
select = 4'b0000;
if (en) begin
case (addr)
2'd0: select = 4'b0001;
2'd1: select = 4'b0010;
2'd2: select = 4'b0100;
2'd3: select = 4'b1000;
default: select = 4'b0000;
endcase
end
end
endmodulePenugasan bawaan di awal mencakup semua jalur eksekusi agar keluaran lama tidak diingat. Penggunaan always_comb tidak otomatis membuat rangkaian benar jika masih ada cabang yang belum didefinisikan.
Jika jumlah keluaran bukan pangkat dua
Sepuluh perangkat membutuhkan alamat empat bit, tetapi kode 10–15 tidak valid. Tetapkan kebijakan, misalnya seluruh keluaran 0 dan flag kesalahan 1. Kode tidak terpakai tidak otomatis mengizinkan keluaran sembarang.
Selain pemetaan masukan-keluaran, periksa tidak ada beberapa seleksi aktif bersamaan dan disable mematikan semuanya. InvarianInvarian Kondisi yang harus selalu benar pada setiap eksekusi yang diizinkan. Misalnya, okupansi FIFO kedalaman 4 selalu berada antara 0 dan 4. Selengkapnya ini penting untuk write enable memori dan seleksi bus. Dekoder yang membesar juga meningkatkan fan-out alamat dan beban pengawatan, sehingga dekode hierarkis perlu dipertimbangkan.
Coba sendiri
Rancang dekoder alamat dengan sepuluh keluaran. Tentukan lebar alamat, jumlah masukan tidak valid, dan syarat wajib ketika en=0.
Baca penjelasan
Alamat memerlukan bit, dengan enam kode tidak valid. Jika en=0, seluruh seleksi harus 0 untuk semua alamat. Alamat tidak valid juga dapat ditetapkan menghasilkan semua 0 dengan penanda kesalahan terpisah.