Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

RvSoc

RV32I ソフトコアの SoC (docs/riscv.md「メモリマップ」)

コア・ブート ROM・データ RAM・MMIO をアドレスデコードで束ねる.

範囲内容
0x0000_0000–0x0000_1FFFブート ROM(8 KB 相当,リードのみ)
0x0000_2000–0x0000_3FFFデータ RAM(RamWords x 4 byte,最大 8 KB)
0x1000_0000–0x103F_FFFFPSRAM ch0(AXI4-Lite マスタとして外へ出す)
0x2000_0000–0x2000_0FFFMMIO レジスタ(UART / LED / TOHOST / タイマ / TF)

デコードは addr[29] で MMIO,addr[28] で PSRAM, 残りを addr[13] で ROM / RAM に分ける. コアは完了まで o_mem_addr を保持するため,組合せデコードで足りる.

PSRAM サブシステム本体(PLL / phy / ctrl / ブリッジ)はクロックドメインが 異なるため SoC の外に置き,ここでは AXI4-Lite マスタ端子だけを出す.

Parameters


RamWords u32 データ RAM の語数(`addr[13]` で選ぶので最大 2048 語 = 8 KB)
TfInitDivider u32 TF カードの初期化クロック分周比(`TfCtrl` へ渡す.テストで短縮する)

Ports


i_clk input clock クロック
i_rst input reset リセット
tx modport stream_if source UART TX へ
rx modport stream_if sink UART RX から
m_psram modport $std __axi4_lite_if__$std___axi4_lite_pkg__22__4__1 master PSRAM へ(AXI4-Lite)
o_leds output logic<6> LED(active-high)
o_tohost_valid output logic 終了通知
o_tohost output logic<32> 終了コード
o_pc output logic<32> 現在の PC(観測用)
o_trap output logic トラップ受理(観測用)
o_cause output logic<32> トラップ原因(観測用)
o_illegal output logic 不正命令例外を起こした(診断用)
o_tf_sclk output logic TF SCK
o_tf_mosi output logic TF MOSI
o_tf_cs_n output logic TF CS#
i_tf_miso input logic TF MISO