不想错失我的推送,记住右上角-检查大众号-设为星标,摘下星星送给我!
开源骚客大众号专心于共享FPGA项目开发经历,期望协助到更多学习FPGA的朋友,欢迎咱们投稿。假如咱们有其他需求,增加Kevin微信:opensoc888,注明:FPGA。
FPGA完成加法和减法运算分外的简略,完成乘法和除法可以用IP,那完成对数和指数运算该用什么呢?
用 IP Core?
当然关于对数和指数运算,FPGA 产商也提供有对应的 IP 。
在 Vivado 里边有个叫 floating-point 的 IP ,可拿来完成对数运算,并且仍是运用浮点数来进行核算。假如你在 FPGA 内部运用的是定点数,那就需求先将定点数转为浮点数。
完成指数运算,大部分的事例,好像都是引荐运用 Cordic 这个 IP 来做。当然也可以用这个算法来做对数运算。
尽管这儿说关于对数和指数运算,FPGA 也可以用IP,不过咱们别觉得有IP 用就简略了。IP 的那些设置,以及 IP 的输入数据等等,也够你忙活半响了。IP Core 功能强大的背面,也是需求付出代价的。
咱们这篇文章来介绍一种快速完成对数和指数运算的办法:根据查找表来完成。
在某些项目中,咱们并不需求对很多数据进行对数和指数运算,亦或是只需求核算少数数据的对数和指数。
在这种情况下,根据查找表来完成,就显得十分方便和简便了!
那用查找表的办法怎样来做呢?
比方,核算 1 - 255 这 255 个数据的对数,怎样用查找表的办法来完成呢?
先用 Matlab 将 1-255 一切数据的对数都算出来。
可以正常的看到 y 取值如下图:
核算的成果是有小数的,FPGA表明小数不方便,为了可以更好的确保精度,可以先将小数的成果乘上1000。当然假如你对成果的精度要求不高,乘上100也行。
下图是乘上1000之后取整的成果:
之后将数据提取出来,运用 ROM 来将这些现已算好的数据存起来。便于ROM运用这些数据,咱们咱们可以将这些数据转化相对应的 mif 文件或许 coe文件。
将待求对数的数据当成 ROM 的读地址,ROM 的输出便是对数的成果了。
如何将对数的成果值转成 coe 文件或许 mif 文件呢?可以参阅如下 Matlab 代码:
关于将对数的成果值转成 mif 文件,咱们可参照上述代码自行更改。
关于用FPGA完成指数运算,也可以运用相同的办法,怎样写代码,就交给咱们自己来完成了!
关于运用查找表办法来完成对数运算的办法,期望对咱们有所启示。
喜爱这篇文章,请共享朋友圈
予人玫瑰,手留余香