Menu
CoddyTech

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;
end

Data dan validitasnya bergerak melalui jumlah register yang sama.

Selaraskan data dan validitas di setiap tahap pipeline, lalu kosongkan validitas saat reset.

challenge icon

Tantangan

Sedang

Implementasikan 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;
endmodule
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Desain dan Verifikasi RTL

Latihan sendiri: Compiler Verilog online