Pipeline Data dan Valid
Termasuk bagian Desain dan Verifikasi RTL dalam perjalanan Verilog di Coddy. Pelajaran 18 dari 38.
Pipeline memisahkan pekerjaan di antara register. Sebuah flag valid berjalan bersama setiap item data agar tahap berikutnya dapat membedakan sampel dari gelembung. Dengan assignment nonblocking, tahap yang lebih akhir membaca nilai sebelumnya dari tahap yang lebih awal pada edge yang sama. Reset harus membuat pekerjaan yang sedang berlangsung menjadi tidak valid.
Kutipan yang relevan; deklarasi dan koneksi di sekitarnya disediakan dalam tantangan.
always @(posedge clk) begin
stage <= data;
stage_valid <= in_valid;
result <= stage;
out_valid <= stage_valid;
endData dan validitasnya bergerak melalui jumlah register yang sama.
Selaraskan data dan validitas di setiap tahap pipeline, lalu kosongkan validitas saat reset.
Tantangan
SedangImplementasikan pipeline dua tahap register. Pada setiap tepi clock yang bukan reset, tahap pertama menangkap a dan in_valid. Tahap kedua menggunakan nilai tahap pertama sebelumnya: out_valid menjadi nilai valid sebelumnya, dan y menjadi data sebelumnya ditambah satu modulo 256 saat valid, jika tidak, nilainya nol. rst sinkron menghapus kedua tahap dan output. Kolom output: y, out_valid. Semua kontrol dan data stabil sebelum setiap tepi naik clock; hasil diamati setelahnya.
Lengkapi design.v dan pertahankan nama module serta portnya. testbench.v yang terkunci memberikan perubahan input dan mencetak output setelah stabil. Testbench memilih skenario menggunakan argumen simulator seperti +CASE=1; input standar tidak diperlukan. Jangan tambahkan pencetakan, jeda, atau penghentian simulasi ke dalam design. Output yang diharapkan adalah satu baris nilai desimal untuk setiap pengamatan, dipisahkan satu spasi dan diakhiri dengan baris baru.
Coba sendiri
module dut (input clk, input rst, input in_valid, input [7:0] a, output reg [7:0] y, output reg out_valid);
// Ganti placeholder ini dengan rancanganmu.
initial y = 0;
initial out_valid = 0;
endmodulePelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Desain dan Verifikasi RTL
1RTL Kombinasional yang Andal
Nilai Default Mencegah LatchEncoder PrioritasValidasi One-HotDekode Case yang AmanRangkuman: Router Permintaan4RTL Sekuensial Terkendali
Prioritas Reset dan EnablePencacah SaturasiPipeline Data dan ValidMendeteksi Tepi pada SampelRingkasan: Pencacah Peristiwa2Lebar Bit dan Aritmetika Bertanda
Mempertahankan Bit CarryPerbandingan BertandaPergeseran Kanan AritmetikaOverflow dan SaturasiRangkuman, Selisih Bertanda3RTL yang Dapat Digunakan Kembali
Fungsi KombinasionalParameter yang Aman terhadap LebarGenerate loopGenerate dengan KondisiRingkasan: Masker Bit yang Dapat Digunakan Kembali6Testbench dengan Pemeriksaan Mandiri
Pemeriksaan Empat KeadaanTask Checker yang Dapat Digunakan UlangModel Referensi dan SkorCakupan Batas dan KontrolRangkuman: Audit PenjumlahLatihan sendiri: Compiler Verilog online