【问题标题】:Fixed-point convesion: 31...24 exponent with 23...0 fractional to Q25 value?定点转换:31...24 指数与 23...0 小数到 Q25 值?
【发布时间】:2017-01-31 10:23:22
【问题描述】:

我需要计算公式的定点值:

e ^ ( Konst/x*y )

我使用第 3 方 divide()antilog() 函数,例如:

div = divide( Konst, x*y );
out = antilog( div ); 

我的divide() 在输出时给出
bits 23…0 fractional part(这实际上是Q0.31 转换时<< 8 时的格式)

bits 31…24 exponent

antilog() 期望输入 Q6.25 值。

如何以Q6.25 格式向antilog() 提供有意义的内容?
在这种特定情况下,我如何从一种格式转换为另一种格式?

附言 如果divide 给出的输出非常大,如果不缩放就无法适应Q6.25,会发生什么?那样的话e^(scale*Q6.25)怎么办?

【问题讨论】:

标签: c signal-processing fixed-point


【解决方案1】:

"bits 23…0 小数部分(这实际上是 Q0.31 格式,当移位 <<0 但可能是 &gt;&gt;127 左右。 (检查文档)。

所以,减去偏差,为 Q6.25 再减去 6,然后移位。

【讨论】:

  • 没有偏见。 This routine performs division of vectors written in Q31 format. It returns the fractional and exponential portion of the division result. Since the division may generate result greater than 1, it returns fractional portion frac in Q(31-exp) format and exponent exp so true division result in the Q0.31 may be found by shifting fractional part left by exponent value.
  • 您能否详细说明“Q6.25 再减去 6,然后移位”?什么被减去,什么被转移?示例会有所帮助...
  • @Danijel:您最好阅读定点和浮点格式。考虑如何在 Q6.25 和 Q4.27 中以 FP 格式表示值 2.0。 FP 指数表示乘以2^exp。乘以 2 的幂是位移。因此,*2^exp 等价于 &lt;&lt;exp。如果我们忽略掉两边的位,&lt;&lt;a &gt;&gt;b&lt;&lt;a-b 提供a&gt;b,否则&gt;&gt;b-a
猜你喜欢
  • 2014-11-02
  • 1970-01-01
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多