翻了很长时间的帖子,虽然有介绍关于定点数的概念,但是没有很详细的用法。我用Vivado分别做了加减乘除的定点数仿真。有如下总结:
加法和减法相对容易。(看本帖子之前最好看下其他的帖子)
1 所有的数本质都是二进制数,定点数就是取固定位数作为二进制数,我们在vivado写verilog时不需要做额外的语法上的定义。
2 乘法,我们知道 两个乘数的积的位数,是两个乘数的位数之和。很完美的是,两个定点乘数的位数,也是这两个乘数的位数之和。更完美的是,他们这个积的小数部分的的位数,也是这两个乘数各自小数的位数之和。
3 除法,仍然很完美的是,以a/b=c,余d(c=a/b,d=a%b),其中商,也就是c的小数部分的位数,是a的小数部分的位数 减去 b的小数部分的位数,d的小数部分的位数就是a的小数部分的位数。
总结,数字真的太奇妙了。综上,我们在应用定点数的时候,需要搞清楚这些概念。注意辨析。