我正在编写一个程序。有一个类似于此格式的二进制浮数:xx.xxx。例如,二进制浮点数01.101转换为十进制数为1.625。我尝试了很长时间,但无法解决。
i使用[4:0] NUM存储数字。NUM [4:3]是整数部分,NUM [2:0]是浮动部分。整数零件很容易,当num [2:0] = 3'b101时,这意味着二进制浮动零件为0.101,转换为十进制数为0.625。那么如何转换序列" 101",获取序列" 625"?
最快的方法可能只是使用LUT(查找表)。由于分数部分只有3位,因此只有8种可能性。您可以使用一个12位值,其中每个nibble是一个可以发送到显示等的数字。
reg result[11:0] // each nibble represents a digit
always @(*) begin
case (num[2:0])
3'b000 : result = 12'h000;
3'b001 : result = 12'h125;
3'b010 : result = 12'h250;
3'b011 : result = 12'h375;
3'b100 : result = 12'h500;
3'b101 : result = 12'h625;
3'b110 : result = 12'h750;
default : result = 12'h875;
endcase
end