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