reference:
https://blog.csdn.net/niaolianjiulin/article/details/82764511
https://blog.csdn.net/baidu_24281959/article/details/52015811
而定点与浮点在《计算机组成原理》有很详细的说明,但是电子专业的学生只学《单片机》,而《单片机》并没有介绍定点与浮点的内容,所以电子专业的学生缺了这点基础,导致在FPGA处理运算时遇到拦路虎。
定点
定点数是非常简单的,它最早在小学的时候就已经学了,只不过那个时候并没有使用定点这个术语。
图片.png
如上图所示,31.5米=315分米,显然根据单位的不同,小数点是可以移动的。只要单位固定了,那么小数点也固定,所以叫定点数。那么二进制的定点数,也是同样的原理。
浮点
由于定点数所表示数的范围非常有限,所以才弄了浮点数,以扩充数的范围,以便给精度要求高的场合下使用。于是,得到IEEE754标准的格式,如下图所示。
图片.png
虽然在CPU内部运算时使用,但是在显示给人看的时候,根据实际需求,可以转成10的e次方等形式。
浮点数在运算过程中,需要对阶(也就是让指数位相同),而对阶过程中就常常使小数点移动,所以叫浮点数。
使用浮点数格式处理加、减、乘、除等运算,有两种方法,一种是使用定点模拟浮点,另一种是使用FPU(浮点处理单元)。
定点模拟浮点,运算速度较慢,在一些没有FPU的CPU会用得上(如51单片机)。
FPU是在CPU内部集成的外设,运算速度较快,但是CPU的成本会增加(如STM32F4系列)。
然而大多数FPGA内部没有集成FPU,要么使用IP核(OpenCores有),要么自己用HDL写一个。
浮点:小数点非固定的数,可表示数据范围较广,整数,小数都可表示。包含float,double;
定点:小数点固定,可表示整数,小数。int本质是小数点位于末尾的32位定点数而已;
IEEE 754标准
规定浮点数格式为:
s表示符号位,当s=0,V为正数;当s=1,V为负数
m表示尾数
n表示阶码
图片.png
例如,前面绘出的浮点数的表示形式中,s=0,n=132,m=(1/2+0/4+0/8&