使用10的除法求出余数

时间:2016-01-25 13:37:56

标签: verilog system-verilog

我需要找到任何整数的最右边一位。所以,我可以发现该值的余数除以10(即)a = rem(Num1,10);在Matlab中。如何使用Verilog做同样的事情。我有Xilinx 14.1和9.1 ..

1 个答案:

答案 0 :(得分:0)

%是verilog中的模数运算符,就像在C

中一样

查看评论,看起来你想要制作一个舍入函数:这里有一些能做到这一点:

一个注意事项:下面的代码非常低效,因为%在硬件上很昂贵。考虑除以2的幂,如8或16而不是10。

module round
(
    input   wire[31:0] x,
    output  reg[31:0] rounded
);

    reg[31:0]   remainder;

    always @(*) begin

        // % operator is VERY slow and expensive!!!
        remainder = (x % 32'd10);

        // the lines below are decently efficient
        if (remainder < 32'd5)
            rounded = x - remainder;
        else
            rounded = x + (32'd10 - remainder);

    end


endmodule