0
我正在嘗試爲FPGA合成生成一個MIF文件,並且我正在用Matlab進行編程來完成它。如何在Matlab中將十進制轉換爲IEEE雙精度浮點二進制文件?
我希望IEEE標準雙精度浮點數範圍從-1到1(-.9,-8, - 7 ... 1),這樣我就可以將它寫入MIF文件中, Verilog的。是否有任何Matlab函數以簡單的方式執行此操作?感謝您提前提出任何建議。
我正在嘗試爲FPGA合成生成一個MIF文件,並且我正在用Matlab進行編程來完成它。如何在Matlab中將十進制轉換爲IEEE雙精度浮點二進制文件?
我希望IEEE標準雙精度浮點數範圍從-1到1(-.9,-8, - 7 ... 1),這樣我就可以將它寫入MIF文件中, Verilog的。是否有任何Matlab函數以簡單的方式執行此操作?感謝您提前提出任何建議。
試試這個:
oldFormat = get(0,'Format');
format('hex'); display(-1:0.1:1);
format(oldFormat);
只有中間線是非常重要的。另外兩個將你的格式恢復到之前的狀態(默認爲「短暫」)。我不確定輸出是否符合IEEE標準,但我懷疑它會。根據documentation,這將顯示「二進制雙精度數字的十六進制表示」。
如果你想將其保存爲字符串,你可以打印後用sprintf與格式%bx
:
x = -1:0.1:1;
for i = 1:length(x)
vals{i,1} = x(i);
vals{i,2} = sprintf('%bx',x(i));
vals{i,3} = dec2bin(hex2dec(sprintf('%bx',x(i))),64);
end
display(vals(:,[1 2]));
display(vals(:,3));
感謝。這會生成16位十六進制數字,但是在verilog的乘法器模塊中,是否可以將16位十六進制與64位二進制數相乘?我對此有點新鮮。 – user2045143
只要你的verilog編譯器接受它。數字以任意方式存儲在系統中,因此處理器,FPGA等中的所有操作都以二進制形式進行。唯一的問題是確保你的編譯器知道你給它的是一個雙精度數字而不是一個整數,但這很可能會以接受雙精度二進制數字的方式完成。 – nispio
我添加了一個更新,將它們轉換爲二進制文件,如果你想這樣做。 – nispio