Altifigence Academy

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.

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

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};
endmodule

Cara menjalankan

Di New analysis, pilih Two-state single-clock v1, Clock port=clk, periode=1000ps. Jalankan Preflight lalu Run RTL simulation dengan:

PengaturanNilai
Nilai awal register, mulai LSB[false,false,false]
Reset portrst · Active high · 1 cycle
Maximum cycles / time5 / 5000ps

Stimulus

json
[
  {
    "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.

Stimulus masukan dan perpindahan keadaan tiga bit
Lihat data gelombang
Data gelombang: setiap karakter mewakili satu interval; titik mempertahankan keadaan sebelumnya; p adalah satu siklus clock.
SinyalGelombangNilai bus
edge23452E0 → E1 → E2 → E3 → E4
reset10...
din0101.
q sesudah23452000 → 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.

Qk+1=(2Qk+dk) mod 8Q_{k+1}=(2Q_k+d_k)\bmod 8

Setelah reset, masukan 1,0,1,1 menghasilkan 0→1→2→5→30\to1\to2\to5\to3. Dalam tiga bit, hasil harus sesuai gelombang. Pada langkah terakhir, 2⋅5+1=112\cdot5+1=11; hanya tiga bit tersisa sehingga hasilnya 3.

Bit diterimaMasukanq setelah tepiNilai bulat
0Reset0000
110011
200102
311015
410113

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.

Prediksi urutan bit sebelum menjalankan RTL

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 kk mencapai bit 2 setelah tepi k+2k+2. 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.

Lesson files

shift-top.sv ↓shift-inputs.json ↓

Pilihan berlaku di peramban ini. Ubah kapan saja di bagian bawah halaman.