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 所有数据的对数都算出来。
x = 1:255;y = log(x); 可以看到 y 取值如下图:
计算的结果是有小数的,fpga表示小数不方便,为了保证精度,可以先将小数的结果乘上1000,之后再将运算后的值除以1000。。当然如果你对结果的精度要求不高,乘上100也行。
下图是乘上1000之后取整的结果:
之后将数据提取出来,使用 rom 来将这些已经算好的数据存起来。便于rom使用这些数据,我们可以将这些数据转换相对应的 mif 文件或者 coe文件。
将待求对数的数据当成 rom 的读地址,rom 的输出就是对数的结果了。
如何将对数的结果值转成 coe 文件或者 mif 文件呢?可以参考如下 matlab 代码:
% 转成coe文件close all;clear all;clc;x = 1:255;y = log(x);y1 = uint16(y*1000);% 输出 coe 文件fid = fopen('./log.coe','w+');fprintf(fid,'; copyright (c) 2017-endless, opensoc studio corporation');fprintf(fid,'memory_initialization_radix = 16;');fprintf(fid,'memory_initialization_vector =');for i = 1 : 255 fprintf(fid,'%d',i-1); fprintf(fid,':'); fprintf(fid,[dec2hex(y1(i)) ';']);endfprintf(fid,';');fclose(fid); 关于将对数的结果值转成 mif 文件,大家可参照上述代码自行更改。
关于上述代码,可直接将代码 copy下来放在 matlab 中运行。
对于用fpga实现指数运算,也可以采用相同的方法,怎么写代码,就交给大家自己来完成了!
关于使用查找表方式来实现对数运算的方法,希望对大家有所启示。


从汗液看出健康
Kubernetes网络部署方案
小米电视2018年Q4出货量再度称王 一举斩获全国冠军
2012年影响科技界的十大历史性产品
关于化学废料焚烧的介绍和应用
fpga实现加法和减法运算的方法是什么
TCP字段介绍 TCP 数据包的大小
打造智能化运维极致体验 软通动力AIOps体系亮相GOPS全球运维大会
齐纳二极管和压敏电阻在电路中分别起到什么作用
什么是代币都有哪些类型的
三星Galaxy A72 5G泄露了照片
谷歌疯狂速度推进AI革命,让人们在深度学习系统中实现民主化
富士康高管与美国威斯康星州领导人面洽谈建厂计划
科华数据:看得见的智慧金融,看不见的数据中心
台湾IC设计产业未来或陷入失落10年
Mini LED明年在苹果产品渗透率提升至30%左右
电路的基本物理量讲解
简析实时空气监测的移动 GC-MS GRIFFIN G465
新电商时代传统电商如何破局?
深入了解GPU、FPGA和ASIC