Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

RvMem

RvCore 用のワードメモリ (docs/riscv.md「メモリマップ」)

32 bit ワード x Words.バイトイネーブル付きで,SB / SH のために 8 bit 幅の RAM を 4 面並べる($std::ram はバイトイネーブルを持たないため).

レイテンシは 1 サイクル(BUFFER_OUT: true で BSRAM の登録読み出しになる)。 プロトコル:

  • コアが i_valid を上げ,アドレス等を保持する
  • メモリは受理した次のサイクルに o_done を 1 サイクル上げ, リードならこのとき o_rdata が有効
  • コアは o_done で i_valid を下ろす(同一サイクルに次の要求は出さない)

i_dbg_* はテストベンチからの直接書き込み(プログラムのプリロード)用で, 合成時は 0 固定にする.i_dbg_we の間はコアの要求を受け付けないため, コアはリセット解除後でも o_done 待ちで停止したままプリロードできる.

Parameters


Words u32 語数(32 bit ワード)

Ports


i_clk input clock クロック
i_rst input reset リセット
i_valid input logic アクセス要求
i_addr input logic<32> バイトアドレス
i_write input logic 1 でストア
i_wdata input logic<32> ストアデータ(バイトレーンへ整列済み)
i_wstrb input logic<4> バイトイネーブル
o_done output logic 完了(1 サイクル)
o_rdata output logic<32> リードデータ(o_done のサイクルで有効)
i_dbg_we input logic テストベンチからの直接書き込み
i_dbg_word input logic<32> 書き込むワード番号
i_dbg_wdata input logic<32> 書き込むデータ