您当前的位置: 首页 >  算法

lu-ming.xyz

暂无认证

  • 0浏览

    0关注

    115博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

记录一个matlab仿真定点数处理算法时获取数据位宽的函数

lu-ming.xyz 发布时间:2022-01-14 14:50:30 ,浏览量:0

1 函数
  • 函数名:get_width
  • 变量:
    • var 输入:待处理有符号数。
    • width_i 输入:定点数处理过程的数据位宽。
    • width_o 输出:输出有符号数的实际位宽。
  • 说明: 返回有符号数的数据位宽,如果未溢出,则输出“info”,如果溢出则输出“warning”。 值得注意一点的是,为了避免2^N的误判,取出最大值后加1再计算位宽。而对于负数的边界,留有2裕量不影响FPGA位宽的设计。 代码:
function width_o = get_width(var,width_i)
% 获取变量的位宽,判断是否溢出
% var:待处理变量
% width_i:数据最大位宽
% width_o:实际位宽 

% matlab 版本低于2018 max函数不支持all选项。
% width_o = ceil(log2(max(max(max(max(var)))) )) + 1;
width_o = ceil(log2( max(abs(var) + 1, [], 'all') )) + 1; % 增加一位符号位
var_name = inputname(1);
fprintf("info: width of "+var_name + " = %d\n",width_o) ;

if nargin > 1
    if width_o > width_i
        fprintf(2,"warning: "+var_name + "overflow!\n") ;
    end
end

end
2 使用

在这里插入图片描述

关注
打赏
1655639048
查看更多评论
立即登录/注册

微信扫码登录

0.0341s