40 / 63 · Praktikum
Praktikum: perpindahan data serial dan urutan bit
Verifikasi arah, bit hilang, dan latensi setelah reset dengan pola biner serta acuan bilangan bulat.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
Rangkaian uji dan pengamatan
Pada setiap tepi naikTepi naik Saat clock berubah 0 ke 1, berbeda dari tingkat yang mencakup seluruh interval CLK=1. Selengkapnya, dua bit rendah q lama bergeser ke kiri dan din masuk pada bit 0. Terapkan 1,0,1,1 lalu bandingkan perpindahannya.
Sebelum memulai
Siapkan proyek Desktop Digital Design Studio dan izin eksekusinya. Setiap contoh ditempatkan dalam folder tersendiri sebagai rtl/top.sv.
Sumber SystemVerilog
module top (
input logic clk,
input logic rst,
input logic din,
output logic [2:0] q
);
// Old q[1:0] and din are captured together at each rising edge.
always_ff @(posedge clk)
if (rst) q <= 3'b000;
else q <= {q[1:0], din};
endmoduleCara menjalankan
Di New analysis, pilih Two-state single-clock v1, Clock port=clk, periode=1000ps. Jalankan Preflight lalu Run RTL simulation dengan:
| Pengaturan | Nilai |
|---|---|
| Nilai awal register, mulai LSB | [false,false,false] |
| Reset port | rst · Active high · 1 cycle |
| Maximum cycles / time | 5 / 5000ps |
Stimulus
[
{
"inputs": {
"din": [
false
]
}
},
{
"inputs": {
"din": [
true
]
}
},
{
"inputs": {
"din": [
false
]
}
},
{
"inputs": {
"din": [
true
]
}
},
{
"inputs": {
"din": [
true
]
}
}
]Setiap kolom mengamati tepi naik: masukan sebelum, keadaan after sesudah pembaruan. Penjajaran bukan tundaan fisikTundaan propagasi Waktu sejak masukan berubah hingga keluaran stabil pada nilai benar. Kesetaraan logika berbeda dari karakteristik waktu. Selengkapnya. Kolom pertama adalah resetReset Kontrol yang mengembalikan keadaan ke nilai awal tertentu. Sifat sinkron/asinkron dan prioritas terhadap kontrol lain harus ditetapkan. Selengkapnya; din=0 di sana tidak dihitung sebagai data diterima. Bandingkan empat masukan berikutnya dengan urutan JSON.
Lihat data gelombang
| Sinyal | Gelombang | Nilai bus |
|---|---|---|
| edge | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| din | 0101. | |
| q sesudah | 23452 | 000 → 001 → 010 → 101 → 011 |
Hasil
5 cycles · q=011. Setelah setiap tepi: 000→001→010→101→011.
Praktikum memakai RTL 0/1 satu clock tanpa testbench #delay, initial, atau X/Z. Tanda selesai belajar adalah catatan pembelajaran, bukan hasil simulasi.
Periksa konkatenasi dengan acuan independen
Menyalin konkatenasiKonkatenasi Penyambungan pola bit berdampingan. Lebar hasil adalah jumlah lebar operand, berbeda dari penjumlahan numerik. Selengkapnya RTL sebagai jawaban dapat menggandakan kesalahan. Gunakan model bilangan bulat unsignedUnsigned Interpretasi pola bit sebagai bilangan bulat nonnegatif. Rentang n bit adalah 0 hingga 2^n−1 dan dapat berbeda dari interpretasi signed pola yang sama. Selengkapnya.
Setelah reset, masukan 1,0,1,1 menghasilkan . Dalam tiga bit, hasil harus sesuai gelombang. Pada langkah terakhir, ; hanya tiga bit tersisa sehingga hasilnya 3.
| Bit diterima | Masukan | q setelah tepi | Nilai bulat |
|---|---|---|---|
| 0 | Reset | 000 | 0 |
| 1 | 1 | 001 | 1 |
| 2 | 0 | 010 | 2 |
| 3 | 1 | 101 | 5 |
| 4 | 1 | 011 | 3 |
Dengan reset=0 dan enable=1, pilih din=1,0,1,1 dan majukan clock setiap kali: q=001,010,101,011. Prediksi melalui model bertahap ini, lalu bandingkan hasil RTL nyata. enable juga disediakan untuk menguji penghentian pada tugas pengembangan.
Reset sinkron lebih diprioritaskan daripada enable. Jika enable=0, pertahankan nilai tersimpan. q=000; q_next = (2q + din) mod 8
Lacak satu bit untuk memverifikasi arah
Setelah reset, masukkan satu 1 lalu tiga 0: 001 → 010 → 100 → 000. Bit 1 harus melewati bit 0,1,2 lalu hilang. Pola hanya semua-0 atau semua-1 dapat menyembunyikan arah yang salah.
Pada registerRegister Rangkaian penyimpan beberapa bit keadaan. Register sinkron mata kuliah ini menangkap masukan yang ditentukan pada tepi clock. Selengkapnya tiga tahap, bit yang pertama ditangkap pada tepi mencapai bit 2 setelah tepi . Menghitung dari tepi peluncuran register luar memakai titik awal berbeda; tulis titik awal dan akhir dalam laporan.
Pengembangan: geser hanya masukan valid
Menambahkan valid dengan menahan q saat valid=0 berbeda dari pipeline yang maju setiap siklus sambil membawa bit valid terpisah. Yang pertama bergerak menurut jumlah bit diterima; yang kedua menurut siklus waktu nyata. Jangan memverifikasi keduanya dengan urutan harapan sama.
Coba sendiri
Setelah reset, bit valid adalah 1,0,1. Satu siklus valid=0 terjadi sebelum dan sesudah bit kedua; q ditahan saat itu. Tentukan q akhir dan waktu bit 1 pertama mencapai bit 2.
Baca penjelasan
Hanya tiga masukan valid mengubah keadaan: q akhir=101. Bit 1 pertama mencapai bit 2 pada tepi yang menerima masukan valid ketiga. Diperlukan dua perpindahan tambahan setelah tangkapan pertama, ditambah dua siklus invalid dalam waktu nyata.