MATLAB仿真定点数转浮点数(对比VIVADO定点转浮点)

MATLAB仿真定点数转浮点数

定点数可设置位宽,小数位宽;浮点数是单精度浮点数

对比VIVADO定点转浮点

目录

前言

一、定点数

二、浮点数

三、定点数转浮点数

四、函数代码

总结


前言

在FPGA上实现算法时,相比MATLAB实现往往需要更长的开发周期,且调试过程更为复杂。因此,可以先用MATLAB对基于FPGA的定点和浮点运算的算法进行仿真验证,只要仿真结果正确,在FPGA上实现时通常只需解决资源和时序问题即可。笔者在仿真算法时,需要模拟一个定点转浮点的IP核功能,为此专门编写了MATLAB定点转浮点转换函数。本文将对此进行介绍。


++创作不易,有用请一键三连!++

一、定点数

之前的文章Vivado IP核之定点数转为浮点数Floating-point_vivado 浮点数-CSDN博客介绍过VIVADO定点转浮点IP核的使用,笔者在仿真算法时用MATLAB编写了一个模拟VIVADO IP核定点转浮点的函数,本文再说明一下。

定点数(Fixed-Point Number)是一种在计算机中表示实数的方法,有符号定点数 是一种可以表示正数、负数和零的数值格式,其特点是小数点的位置固定,以补码形式存储,并通过最高位(符号位)区分正负(0为正,1为负),其余位按约定分配整数和小数部分。与浮点数(Floating-Point)不同,定点数不需要存储指数部分,因此计算更简单、速度快,但范围和精度相对固定。

工程师常用 Qm.n 表示定点数格式:m = 整数位数(含符号位)n = 小数位数,总位数 = m + n。

例如Q3.4表示的a=8'b01100100,其代表的十进制数是6.25。Q3.4表示的b=8'b10011100,其代表的十进制数是-6.25。

二、浮点数

一个浮点数可以这样表示:浮点数的实际值等于符号位(sign bit)乘以指数偏移值(exponent bias)再乘以分数值(fraction),其实就是科学计数法。浮点数表示方法中,不存在原码反码补码的转换,正负都是原码。常见的几类浮点数如下表所示:

|----------------------|------------------------|------------------------------------------------------------------------|
| IEEE 754 半精度浮点数:16 位 | 符号 1 位,指数 5 位,尾数 10 位 | 范围 [-6.55 × 10⁴, -5.96 × 10⁻⁸] ∪ [5.96 × 10⁻⁸, 6.55 × 10⁴] |
| IEEE 754 单精度浮点数:32 位 | 符号 1 位,指数 8 位,尾数 23 位 | 范围 [-3.40 × 10³⁸, -1.18 × 10⁻³⁸] ∪ [1.18 × 10⁻³⁸, 3.40 × 10³⁸] |
| IEEE 754 双精度浮点数:64 位 | 符号 1 位,指数 11 位,尾数 52 位 | 范围 [-1.80 × 10³⁰⁸, -2.22 × 10⁻³⁰⁸] ∪ [2.22 × 10⁻³⁰⁸, 1.80 × 10³⁰⁸] |

下面是一个半精度浮点数 16 bit 浮点数计算过程的例子:

三、定点数转浮点数

VIVADO中不仅支持半精度、单精度、双精度的浮点数,还支持自定义位宽的浮点数。

笔者要用到的算法是用单精度浮点数计算,所以本文以定点数转单精度浮点数为例进行说明。

IP核中定点数设置如下:

假设现在有一个48位的定点数,"111101101101000000101100111000011000110011101110",MATLAB和VIVADO的仿真结果如下,可见二者转换结果一模一样。

fixed_in="111101101101000000101100111000011000110011101110"

int_bits=25;

frac_bits=23;

float_out = fixed2float(fixed_in, int_bits, frac_bits)

num2hex(float_out)

其中fixed2float是自己编写的函数。

编写的该函数最大支持80位的定点数转换。

四、函数代码

需要该函数的可以去下载。

https://download.csdn.net/download/m0_66360845/90761870https://download.csdn.net/download/m0_66360845/90761870


总结

以上就是本文的全部内容,MATLAB实现了定点转浮点函数。

相关推荐
电力程序小学童39 分钟前
IEEE5节点系统潮流仿真模型(simulink+matlab全功能模型)
matlab·毕设·仿真·simulink·5节点系统·ieee 5·三相仿真模型
我爱C编程4 小时前
基于强化学习的5G通信网络基站资源动态分配策略matlab性能仿真
5g·matlab·强化学习·基站资源动态分配
kaikaile19951 天前
matlab基于图像的人员计数
人工智能·计算机视觉·matlab
liulilittle1 天前
OPENPPP2 VMUX 技术探秘(高级指南)
网络·信息与通信·ip·通信·mux
昂子的博客2 天前
Springboot仿抖音app开发之Nacos 分布式服务与配置中心(进阶)
java·spring boot·redis·后端·mysql·ip
zzc9212 天前
不同程度多径效应影响下的无线通信网络电磁信号仿真数据生成程序
网络·matlab·数据集·无线信道·无线通信网络拓扑推理·多径效应
liulilittle2 天前
主流防火墙策略绕过漏洞的修复方案与加固实践
网络·安全·网络安全·信息与通信·ip·通信
XuX032 天前
MATLAB 山脊图绘制全解析:从数据生成到可视化进阶
matlab·科研·绘图
我爱C编程3 天前
基于Stackelberg博弈论的频谱共享调度算法matlab仿真,对比Bertrand博弈论
matlab·stackelberg博弈·bertrand博弈·频谱共享调度
鱼会上树cy3 天前
空间解析几何10:三维圆弧拟合【附MATLAB代码】
开发语言·matlab