以下の内容はhttps://msyksphinz.hatenablog.com/entry/2025/12/02/040000より取得しました。


Common Cellsの各種レジスタ実装詳細解析 (2. フォールスルー動作レジスタ)

github.com

2. fall_through_register.sv:フォールスルー動作レジスタ

基本設計方針

fall_through_register.svは、フォールスルー(fall-through)動作を実装したレジスタである。 出力側のモジュールが同じクロックサイクル内でデータを受け取る準備ができている場合、データを直接転送する(レジスタをバイパスする)。

このレジスタは、fifo_v3モジュールをDEPTH=1FALL_THROUGH=1で使用して実装されている。

パラメータ定義

module fall_through_register #(
    parameter type T = logic  // Vivado requires a default value for type parameters.
) (
    input  logic    clk_i,          // Clock
    input  logic    rst_ni,         // Asynchronous active-low reset
    input  logic    clr_i,          // Synchronous clear
    input  logic    testmode_i,     // Test mode to bypass clock gating
    // Input port
    input  logic    valid_i,
    output logic    ready_o,
    input  T        data_i,
    // Output port
    output logic    valid_o,
    input  logic    ready_i,
    output T        data_o
);

実装詳細

    logic   fifo_empty,
            fifo_full;

    fifo_v3 #(
        .FALL_THROUGH   (1'b1),
        .DEPTH          (1),
        .dtype          (T)
    ) i_fifo (
        .clk_i          (clk_i),
        .rst_ni         (rst_ni),
        .flush_i        (clr_i),
        .testmode_i     (testmode_i),
        .full_o         (fifo_full),
        .empty_o        (fifo_empty),
        .usage_o        (),
        .data_i         (data_i),
        .push_i         (valid_i & ~fifo_full),
        .data_o         (data_o),
        .pop_i          (ready_i & ~fifo_empty)
    );

    assign ready_o = ~fifo_full;
    assign valid_o = ~fifo_empty;

フォールスルー動作の仕組み

fifo_v3のフォールスルーモードでは、FIFOが空(empty_o = 1)で、かつpush_iが有効な場合、データを直接data_oに出力する:

        // FIFO is in pass through mode -> do not change the pointers
        if (FALL_THROUGH && (status_cnt_q == 0) && push_i) begin
            data_o = data_i;
            if (pop_i) begin
                status_cnt_n = status_cnt_q;
                read_pointer_n = read_pointer_q;
                write_pointer_n = write_pointer_q;
            end
        end



以上の内容はhttps://msyksphinz.hatenablog.com/entry/2025/12/02/040000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14