首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用VHDL计算对数

用VHDL计算对数
EN

Stack Overflow用户
提问于 2014-08-06 02:58:44
回答 1查看 5.5K关注 0票数 0

我正在尝试将一个值从线性表示法转换为FPGA上的分贝表示法。

虽然方程式x_dB=10*log(x_lin)是众所周知的,但我一直无法用VHDL语言实现它。

我发现了一些在http://en.wikipedia.org/wiki/Inverse_hyperbolic_function#Logarithmic_representation中可能有用的身份(其中arctanh是最常见的)。

由于反双曲函数可以通过CORDIC ( COordinate Rotation DIgital Computer,CORDIC)获得,因此这似乎很容易--除了CORDIC有两个输入(X和Y),而不是对数所需的单一输入,而且就这一点而言,双曲正切函数!假设我真正想做的是一个log,我该如何计算两个输入值(x & y)的值呢?

EN

回答 1

Stack Overflow用户

发布于 2014-08-06 04:55:58

您的目标是使用以下标识来求解自然对数:

ln(w) =2* atanh((w-1) / (w+1))

您必须在矢量化模式(y --> 0)下设置CORDIC的双曲线版本,以计算atanh(y/x)。这类似于普通CORDIC,通过将y设置为w-1,将x设置为w+1,并将初始角z设置为0来实现。迭代后,应用左移位乘以2后,结果将在z中。请注意,CORDIC的双曲线扩展需要重复某些迭代(4,13,40,...)才能让它收敛。

一旦你有了ln(w),你需要乘以常量10 / ln(10)来得到dB中以10为底的对数。

Ray Andraka's paper很好地概括了CORDIC的实现。它对双曲延伸线稍加掩饰。These slides from Xilinx涵盖了更多关于双曲线CORDIC的细节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25146321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档