FPU 拡張を追加したい (FMUL)

次は FMUL を追加したいのですが、その前に乗算器を改造する必要があります。前に作った乗算器は 32bit 版で、5サイクル乗算器でした。単精度 FPU では 24bit で良いので、4サイクルで終わらせたいのです。整数と FPU で乗算器を共有すると、↓みたいになります。
f0054075_22281511.png
赤枠が FPU の範囲で、3サイクルで水色と橙色の結果が1個ずつになります。4サイクル目にこれを足して1個にします。整数の場合は4サイクル目に水色と橙色の結果に加えて、余っている3個の部分積の内の1個を足します。5サイクル目が残りの2個です。赤い塗りつぶしのS(最上位の部分積の符号反転)の行き場がないかと心配したのですが、どうやらこれは常時 0の様でした(最上位の部分積は符号なし乗算でしか使わない)。
後半は FADD で作った正規化と丸めが使えます。正規化はサブノーマルが入力された時に必要です。
また、サブノーマル出力をサポートするために、指数が負になった時は正規化の前に固定ビットの右シフトをします。とりあえず 26bit で足りるかな?その後の正規化シフトでサブノーマルの位置まで左シフトすれば良いはずです。
FMUL 全体を Veriloator 用のテストベンチと共に Github に置いておきます。

[PR]
トラックバックURL : http://tom01h.exblog.jp/tb/27464361
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
by tom01h | 2017-01-21 17:54 | PCとか | Trackback | Comments(0)