演算の精度

表記

精度書式

{符号}{整数ビット幅}.{小数ビット幅}で表します。

符号

符号あり・なしを大文字英字1文字で示します。
記号 種類 ビット数
S 符号あり 1
U 符号なし 0

ビットアサイン
符号 数字部
S7 [7] [6:0]
U5 - [4:0]

ビット幅

整数のみの場合はドット以降を省略、或いは「.0」とします。

ビットアサイン
符号 整数部 小数部
S2.5 [7] [6:5] [4:0]
U2.6 - [7:6] [5:0]
U8.0 - [7:0] -

概要

加算、減算

{m1}±{m2} = {max(m1,m2)+1}
{m1.n1}±{m2.n2} = {max(m1,m2)+1}.{max(n1,n2)}

  • S7 + S7 = S8
  • U8 - S8 = S9
  • U1.7 + U4.1 = U5.7
  • S4.4 - U4.0 = S5.4

乗算

m1 * m2 = {m1+m2}
m1.n1 * m2.n2 = {m1+m2}.{n1+n2}

  • S7 * S7 = S14
  • U8 * S8 = S16
  • U1.7 * U4.1 = U5.8
  • S4.4 * U4.0 = S8.4

除算

循環小数となることもあるので、LSB側の精度については検討が必要です。
m1 / m2 = {max(m1,m2)}
m1.n1 / m2.n2 = {max(m1,m2)}.{max(n1,n2)}

  • S7 / S7 = S7

処理をする場合は、事前に被除数を左シフト等しておくと精度落ちに効果があります。

被序数U4.2、法数U1.9、解の小数精度を9とする場合:
U4.2 << 7 ⇒ U4.9
U4.9 / U1.9 = U5.18 >> 9 ⇒ U5.9 本当かなぁ

動作確認

ツール バージョン 結果
NC-Verilog 未確認
VCS-MX 未確認
ModelSim 未確認
Cver 未確認

テストコード

(概要を記述予定)
(実行方法を記述予定)

パタン1

(パタン内容を記述予定)
initial begin
  //verilogテストパタン1
end
 


(実行結果1)

ソースコード


ファイル1

(verilogソースコード1)
 
(概要を記述予定)

ファイル2

(verilogソースコード2)
 
(概要を記述予定)


Top > 言語 > verilog > Tips > 演算の精度
link_pdfプラグインはご利用いただけなくなりました。























-

最終更新:2008年12月11日 01:50