njithjw的个人空间 https://blog.eetop.cn/505866 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

四舍五入

已有 887 次阅读| 2011-12-21 22:34 |个人分类:FPGA_Verilog

//若舍入数为正数,舍入相邻位为1,舍入时必须进1;反之不用。
//若舍人数为负数,舍入相邻位为1且舍人相邻位后面还有一位为1,则舍入时需加1;反之,不加1

module round
    #(
    parameter   DATA_IN_WIDTH = 16,
    parameter   DATA_OUT_WIDTH = 15
    )
    (
    input   [DATA_IN_WIDTH-1:0]     data_in,
    output  reg [DATA_OUT_WIDTH-1:0]    data_out
    );

localparam  CUT_WIDTH = DATA_IN_WIDTH - DATA_OUT_WIDTH;

generate
    if (CUT_WIDTH == 1)
    begin:ROUND_1BIT
        always @ (*)
        begin
            if (data_in[DATA_IN_WIDTH-1] == 1'b0)
            begin
                if ((&data_in[DATA_IN_WIDTH-2:1] == 1'b0) && (data_in[0] == 1'b1))
                    data_out = data_in[DATA_IN_WIDTH-1:1] + {{(DATA_OUT_WIDTH-1){1'b0}},1'b1};
                else
                    data_out = data_in[DATA_IN_WIDTH-1:1];
            end
            else
                data_out = data_in[DATA_IN_WIDTH-1:1];
        end
    end
    else
    begin:ROUND_NBIT
        always @ (*)
        begin
            if (data_in[DATA_IN_WIDTH-1] == 1'b0)
            begin
                if ((&data_in[DATA_IN_WIDTH-2:CUT_WIDTH] == 1'b0) && (data_in[CUT_WIDTH-1] == 1'b1))
                    data_out = data_in[DATA_IN_WIDTH-1:CUT_WIDTH] + {{(DATA_OUT_WIDTH-1){1'b0}},1'b1};
                else
                    data_out = data_in[DATA_IN_WIDTH-1:CUT_WIDTH];
            end
            else
            begin
                if ((|data_in[CUT_WIDTH-2:0] == 1'b1) && (data_in[CUT_WIDTH-1] == 1'b1))
                    data_out = data_in[DATA_IN_WIDTH-1:CUT_WIDTH]+ {{(DATA_OUT_WIDTH-1){1'b0}},1'b1};
                else
                    data_out = data_in[DATA_IN_WIDTH-1:CUT_WIDTH];
            end
        end
    end
endgenerate

endmodule


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 17

    评论
  • 3512

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 19:19 , Processed in 0.017591 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部