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.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
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.
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
endmodulenext_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.
| Tepi | rst | enable | sample | sum sebelum | sum sesudah |
|---|---|---|---|---|---|
| E0 | 1 | 1 | 9 | Tidak diketahui | 0 |
| E1 | 0 | 1 | 3 | 0 | 3 |
| E2 | 0 | 0 | 7 | 3 | 3 |
| E3 | 0 | 1 | 5 | 3 | 8 |
| E4 | 1 | 1 | 15 | 8 | 0 |
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.