25 / 63 · Praktikum
Praktikum: pengujian menyeluruh MUX dan analisis keluaran berregister
Terapkan masukan sama ke jalur kombinasional dan register, lalu verifikasi melalui tabel kebenaran serta waktu sampling.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
Rangkaian uji dan kondisi pengamatan
Saat sel=0, y menerima a; saat sel=1, y menerima b. sampled_y menyimpan y pada tepi naikTepi naik Saat clock berubah 0 ke 1, berbeda dari tingkat yang mencakup seluruh interval CLK=1. Selengkapnya. Walaupun masukan berubah, sampled_y bertahan hingga tepi naik berikutnya.
Sebelum memulai
Siapkan proyek Desktop Digital Design Studio dan izin eksekusi yang diperlukan. Simpan setiap contoh dalam folder tersendiri sebagai rtl/top.sv.
Mulai dengan a dan b berbeda. Periksa y=a saat sel=0 dan y=b saat sel=1, lalu bandingkan setiap baris berkas masukan.
y = sel ? b : a
Sumber SystemVerilog
module top (
input logic clk,
input logic a,
input logic b,
input logic sel,
output logic y,
output logic sampled_y
);
assign y = sel ? b : a;
// Explicit observation register: y remains purely combinational.
// The register makes this design eligible for logic-netlist-1 simulation.
always_ff @(posedge clk) sampled_y <= y;
endmoduleCara menjalankan
Di New analysis, pilih Two-state single-clock v1. Clock port adalah clk dan periodenya 1000ps. Gunakan pengaturan berikut untuk Preflight, lalu Run RTL simulation dan bandingkan hasilnya.
| Pengaturan | Nilai |
|---|---|
| Nilai awal register, mulai LSB | [false] |
| Reset port | Kosong |
| Maximum cycles / time | 8 / 8000ps |
Setiap kolom adalah satu entri berkas masukan berikut. Nilai y kombinasional yang diharapkan adalah 0,0,0,1,1,0,1,1. Gambar memprediksi fungsi menurut urutan masukan, bukan waktu pembaruan sampled_y.
Lihat data gelombang
| Sinyal | Gelombang | Nilai bus |
|---|---|---|
| a | 0...1... | |
| b | 0.1.0.1. | |
| sel | 01010101 | |
| y harapan | 0..1.01. |
Stimulus masukan
[
{
"inputs": {
"a": [
false
],
"b": [
false
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
false
],
"b": [
false
],
"sel": [
true
]
}
},
{
"inputs": {
"a": [
false
],
"b": [
true
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
false
],
"b": [
true
],
"sel": [
true
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
false
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
false
],
"sel": [
true
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
true
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
true
],
"sel": [
true
]
}
}
]Membandingkan hasil
8 cycles · y=1 · sampled_y=1. Pada 3000ps, periksa y=1 dan sampled_y=0.
Praktikum memakai RTL 0/1 satu clock tanpa testbench #delay, initial, atau X/Z. Tanda selesai belajar adalah catatan pembelajaran, bukan hasil simulasi nyata.
Tuliskan hasil yang diharapkan dahulu
Sebelum menjalankan simulator, hitung untuk urutan masukan: . Ini mencakup delapan kombinasi dan menjadi bukti lebih kuat daripada satu nilai akhir yang benar.
Keluaran registerRegister Rangkaian penyimpan beberapa bit keadaan. Register sinkron mata kuliah ini menangkap masukan yang ditentukan pada tepi clock. Selengkapnya diperbarui pada tepi naik, bukan saat stimulus berubah. Catat terpisah y tepat sebelum tepi dan keluaran tersimpan tepat sesudahnya.
Masukan yang disampel pada tepi mendefinisikan keadaan setelah tepi; sampled_y mewakili keadaan itu. Walaupun koordinat waktu sama, periksa urutan kejadian penerapan masukan dan pembaruan register.
Tiga pemeriksaan untuk membedakan cacat
- Seleksi terbalik: sebelum mengganti menjadi
sel ? a : b, prediksi vektor pertama yang gagal. Vektor tidak mendeteksi kesalahan ini. - Titik pengamatan: jelaskan mengapa membandingkan
sampled_y, bukany, langsung dengan jawaban kombinasional membuat rangkaian benar tampak gagal. - Penahanan masukan: ubah hanya masukan yang tidak dipilih dan pastikan bertahan. Sebaliknya, harus mengikuti perubahan masukan terpilih.
Dalam setiap laporan kesalahan, catat masukan, waktu pengamatan, nilai harapan, dan nilai nyata. Catatan “gelombangnya aneh” tidak membedakan kesalahan seleksi dari latensi satu siklus.
Tugas pengembangan
Dengan data empat bit, ruang masukan kombinasional menjadi kasus. Pengujian menyeluruh masih mungkin; mulai dengan 0, maksimum, 0101, 1010, dan pola walking-one untuk cepat menemukan kesalahan posisi bit. Perbarui juga konfigurasi rangkaian dan berkas masukan sesuai lebar baru.
Coba sendiri
Setelah menangkap pada tepi naik, ubah hanya menjadi 1 sebelum tepi berikutnya. Tentukan setelah tundaan logika serta sampled_y sebelum dan sesudah tepi naik berikutnya.
Baca penjelasan
Keluaran kombinasional . sampled_y tetap 0 hingga tepi naik berikutnya, lalu menyimpan 1. Diasumsikan masukan stabil selama waktu yang dibutuhkan sampling.