避坑!MATALB与RTL数据对比

避坑笔记!
例如:如果需要计算一个数据除256。

公式
	a 
y = ————————————
	256 
由于除数是2的6次方,因此RTL实现上为了减少资源,肯定不会使用除法器,而是选择右移6位。这个时候如果是正数,例如a = 353
计算过程如下:
正数:
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 + (1B 原码
=(1_0010)B  = -2    

当使用MATALB搭建好model时,如果涉及到带符号为的除法的时候,就需要重点注意了!因为带符号位的数进行除法可能会涉及到取整的问题,MATLAB取整有多个函数。

函数 功能
round 四舍五入
fix 保留整数部分
floor 向下取整
ceil 向上取整
sign 提取符号
rem 取余数
mod 取模数

floor:向下取整
image
ceil: 向上取整
image

例子
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的硬件除法。

posted @   森是林上木  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示