如何在verilog中实现一个代码,该代码解析一个必须表示为固定点的数字的指数方程。
例如,我在C ++上有这个等式,并希望转换为Verilog或VHDL:
double y = 0.1+0.75*(1.0/(1.0+exp((x[i]+40.5)/6.0)));
'y'和'x'必须是定点数。 'x'也是一个矢量。
我查找了具有固定点但没有一个具有指数的模块和库。
答案 0 :(得分:0)
Verilog具有真实数据类型,可为浮点数提供模拟时支持。它还有一个取幂运算符,例如,a ** b计算b的幂。
但是,使用实数据类型编写的代码通常不可合成。相反,在实际硬件设计中,通常通过实现实现例如IEEE浮点标准的算术逻辑单元来实现对固定和浮点数的支持。
大多数情况下,即使对于加法和乘法等基本操作,这样的设计也至少需要几个周期。更复杂的算法,如除法,正弦,余弦等,通常使用基于近似多项式的算法来实现。
如果你真的想要理解如何表示和操纵定点和浮点数,你应该得到一本数学课程的教科书,如数值方法,或计算机算术的EE课程。