Altifigence Academy

1 / 37 · Konsep

RTL: menggambarkan rangkaian yang bekerja bersamaan

Pisahkan urutan perangkat lunak dari struktur perangkat keras paralel serta tentukan keadaan, keadaan berikutnya dan pengamatan.

Rangkaian terus bekerja

RTL menggambarkan aliran nilai antarregister melalui logika kombinasional. Modul adalah batas perangkat keras; dua instans membentuk dua struktur yang berinteraksi, bukan pemanggilan fungsi berurutan. Rangkaian tetap aktif ketika masukan berubah. Ubah gerbang, penyimpanan dan mesin keadaan dari Rangkaian Logika Digital menjadi antarmuka SystemVerilog yang eksplisit dan pemeriksaan berulang. Jelaskan lebar, penggerak, validitas dan reset tiap sinyal sebelum implementasi.

Pisahkan keadaan saat ini dan berikutnya

Modul lengkap ini menambahkan sample empat bit tanpa tanda ke register delapan bit. Reset sinkron aktif tinggi memiliki prioritas di atas enable. Tepi yang diaktifkan menjumlahkan sample; tepi lainnya mempertahankan sum. Aritmetika berputar modulo 256.

SystemVerilog
module accumulator (
  input  logic       clk, rst, enable,
  input  logic [3:0] sample,
  output logic [7:0] sum
);
  logic [7:0] next_sum;
  assign next_sum = sum + {4'b0000, sample};
  always_ff @(posedge clk) begin
    if (rst) sum <= 8'b0;
    else if (enable) sum <= next_sum;
  end
endmodule

next_sum adalah hasil kombinasional: dapat berubah bersama sum atau sample tanpa tepi clock. sum menyimpan keadaan dan berubah pada tepi naik. Deklarasi logic pada keduanya tidak menyamakan peran perangkat keras. else akhir yang tidak ada dalam blok clock berarti menahan register; penugasan kombinasional yang hilang dapat memerlukan latch. Kenali jenis blok terlebih dahulu.

Hitung tabel sebelum simulasi

Setiap baris memakai keadaan dan masukan tepat sebelum tepi. Amati hasil setelah pembaruan nonblocking.

Tepirstenablesamplesum sebelumsum sesudah
E0119Tidak diketahui0
E101303
E200733
E301538
E4111580

Pada E4 reset menang dan tidak ada penjumlahan. sum lama=250 dan sample diterima=10 menghasilkan 4 dalam delapan bit. Mempertahankan bit kesembilan akan mengubah antarmuka dan kontrak aritmetika.

Urutan lokal dan kebersamaan struktural

Penugasan blocking = dalam prosedur kombinasional mengikuti urutan prosedural. Prosedur terpisah dan penugasan kontinu dijadwalkan sebagai proses bersamaan. Nonblocking <= menghitung ruas kanan dengan nilai yang tersedia saat dijalankan lalu menjadwalkan pembaruan. Urutan teks tidak menggantikan spesifikasi latensi. Jangan gunakan #10 pada akumulator untuk menunggu satu clock: delay dan pembangkit clock berada di testbench simulasi umum. Transisi yang dapat disintesis memakai tepi dan keadaan, bukan sleep.

Praktik: ubah satu persyaratan

Ganti putaran dengan saturasi pada 255. Perluas operand secara eksplisit dan hitung penjumlahan sembilan bit. Bila bit 8 aktif, simpan 255; selain itu simpan 7:0. Pertahankan prioritas. Uji 0+0,250+5,250+6, tepi dinonaktifkan dan reset/enable bersamaan: harapkan 0,255,255, keadaan tetap,0. Hanya 250+5 tidak mengungkap carry hilang; sertakan 250+6. Simpan sumber, tabel dan harapan. Tanda pelajaran selesai mencatat belajar, bukan eksekusi simulator.

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