避坑!MATALB与RTL数据对比
避坑笔记!
例如:如果需要计算一个数据除256。
公式
a
y = ————————————
256
计算过程如下:
正数:
a = 353 = (161)H = (0_0001_0110_0001)B
计算器计算结果
353 / 256 = 1.390625
硬件计算结果
(0_0001)B = 1
负数:
a = -353 = (1_E9F)H = (1_1110_1001_1111)B
计算器计算结果
-353 / 256 = -1.37890625
硬件计算结果
(1_1110)B 补码
=(1_0001)B + (1)B 原码
=(1_0010)B = -2
当使用MATALB搭建好model时,如果涉及到带符号为的除法的时候,就需要重点注意了!因为带符号位的数进行除法可能会涉及到取整的问题,MATLAB取整有多个函数。
| 函数 | 功能 |
| round | 四舍五入 |
| fix | 保留整数部分 |
| floor | 向下取整 |
| ceil | 向上取整 |
| sign | 提取符号 |
| rem | 取余数 |
| mod | 取模数 |
floor:向下取整

ceil: 向上取整

例子
eg:四舍五入
a = -353
round(a/256)
答案:ans = -1
a = 353
round(a/256)
答案:ans = 1
eg:保留整数部分
a = -353
fix(a/256)
答案:ans = -1
a = 353
fix(a/256)
答案:ans = 1
eg:向下取整
a = -353
floor(a/256)
答案:ans = -2
a = 353
floor(a/256)
答案:ans = 1
eg:向上取整
a = -353
ceil(a/256)
答案:ans = -1
a = 353
ceil(a/256)
答案:ans = 2
eg:提取符号
a = -353
sign(a/256)
答案:ans = -1
a = 353
sign(a/256)
答案:ans = 1
eg:取余数
a = -353
rem(a,256)
答案:ans = -1
a = 353
rem(a/256)
答案:ans = 97
eg:取模数
a = -353
mod(a,256)
答案:ans = -1
a = 353
mod(a/256)
答案:ans = 97
硬件通过移位实现的除法,往往都是向下取整,因此MATLAB使用floor取整,同步RTL的硬件除法。

浙公网安备 33010602011771号