Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

RvMulDiv

RV32M の乗除算ユニット (docs/riscv.md「ISA スコープ」)

i_start の 1 サイクルパルスで起動し,完了サイクルに o_done を 1 にする. 多サイクルコアから見ると RvMem と同じ「要求 → 完了」の形になる.

  • 乗算は 1 サイクル.符号付き / 符号なしの組み合わせは絶対値を取ってから 符号なし乗算し,結果の符号を戻す(MULHSU があるため被乗数と乗数で 符号の扱いが異なる)
  • 除算は復元法で 32 反復.ハードウェア除算器は持たない

ゼロ除算とオーバフローの扱いは RISC-V 仕様に従う.

条件DIVDIVUREMREMU
除数 0-12^32-1被除数被除数
-2^31 / -1-2^31—0—

Ports


i_clk input clock クロック
i_rst input reset リセット
i_start input logic 起動 (1 サイクルパルス)
i_funct3 input logic<3> 命令の funct3
i_a input logic<32> rs1
i_b input logic<32> rs2
o_result output logic<32> 結果
o_done output logic 完了 (1 サイクル)