当前位置: 首页 > news >正文

【FPGA开发】Verilog-数据截断时实现四舍五入效果

目录

  • 实现目标
  • 直接截断低位
  • 考虑四舍五入

实现目标

由于FPGA以定点数运算为主,随着数字信号处理的流程增加,数据位宽会逐渐变大,有时,考虑到资源量问题,会对定点数进行截断处理。

对于定点数来说,低位表示小数部分,截断低位,意味着抛弃小数,也就是损失精度。

假设一乘法器的运算结果是32-bits,后续要对该结果进行滤波处理,由于32-bits过大,需要对齐进行截断处理。

直接截断低位

直接截断低位是最简单的办法,相当于FLOOR()函数。

考虑四舍五入

以32-bits截断成17-bits为例。
在这里插入图片描述

想保留的是[31:15]这部分数据,如果直接截断,直接舍弃[14:0]即可,也就是说,把[14:0]这部分看成了小数。

所以在理解定点数的四舍五入时,把[31:15]看做整数,把[14:0]看做小数,小数部分大于等于0.5,就进位1;小数部分不超过0.5,就舍弃。

得到下述代码:

module fixed_point_rounding (
    input wire [31:0] in_data,  // 假设输入是 32位定点数,小数点在第 15 位后
    output reg [17:0] out_data   // 输出是 17 位整数
);

always @(*) begin
    // 判断要舍弃部分的最高位
    if (in_data[14]) begin
        // 如果该位为 1,向前进位
        out_data = in_data[31:15] + 1;
    end else begin
        // 如果该位为 0,直接舍弃
        out_data = in_data[31:15];
    end
end

endmodule

再次基础上,考虑正数和负数在四舍五入时的区别。

1.3 四舍五入成 1
1.6 四舍五入成 2
-1.3 四舍五入成 -1
-1.6 四舍五入成 -2

正数向0的方向(数值变小的方向)舍,向数值变大的方向 入。
负数向0的方向(数值变大的方向)舍,向数值变小的方向 入。

这里的实现方法有很多,可以参考Verilog对数据进行四舍五入(round)与饱和(saturation)截位

这里再补充一种写法:

 assign buf_data = in_data[31] ? in_data + 15'b011_1111_1111_1111 : in_data + 15'b100_0000_0000_0000 ;

 assign out_data = buf_data[31:15];

考虑正数情况,把要截断的尾数看成小数,要截断15位, .100_0000_0000_0000 就是0.5,比这个大,就应该进位,所以正数情况要加 15’b100_0000_0000_0000,这样就能保证大于等于0.5的情况都能进位上去。

考虑负数情况,同样把要截断的尾数看成小数,要截断15位,.100_0000_0000_0000也是0.5,不过要注意的是,对于负数的补码来说,符号位的权值是负数((10.10) = (-2+0.5=-1.5)),对于负数来说,-1.5四舍五入后是要变成-2的,如果-1.5的小数位要是进位给整数位,会变成-1,这与实际不符合!所以,要保证.100_0000_0000_0000正好不产生进位,也就是要加15’b011_1111_1111_1111。

相关文章:

  • 机器学习数学基础:38.统计学变量与相关系数
  • MybatisPlus从入门到精通
  • 【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(未成功版)
  • Linux--基础命令3
  • 解决docker认证问题 failed to authorize: failed to fetch oauth token
  • 【Office-Word】如何自动生成中英文目录
  • 决策树(Decision Tree):机器学习中的经典算法
  • 用vscode开发微信云函数一键打包cloudfunctions(vite创建)
  • for循环相关(循环的过程中对数据进行删除会踩坑)
  • wxWidgets长图浏览控件实现,不区分图片类型加载
  • 低空监视-无人机专用ADS-B应答机
  • CSS设置文字渐变色样式(附带动画效果)
  • Vue.js事件处理
  • 利用python开发自己的小工具
  • c++线程池的实现
  • 计算机毕业设计SpringBoot+Vue.js客户关系管理系统CRM(源码+文档+PPT+讲解)
  • 【区块链 + 绿色低碳】郑州数据交易中心双碳数据服务专区 | FISCO BCOS 应用案例
  • HashMap 的底层结构详解:原理、put和get示例
  • PMP项目管理—资源管理篇—3.获取资源
  • 文本处理Bert面试内容整理-BERT的基本原理是什么?
  • 在电脑上做二建题 哪个网站好/海外品牌推广
  • 上海十大国企/搜索引擎的优化方法
  • phpcms 怎么做视频网站/企业培训计划
  • 临西网站建设/海淀区seo搜索优化
  • 英语写作网站/2021年十大热点事件
  • 大理装饰公司做网站/网页设计与制作期末作品