如何使用Verilog?将二进制浮点数转换为十进制数字



我正在编写一个程序。有一个类似于此格式的二进制浮数: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

相关内容

  • 没有找到相关文章

最新更新