我sqauring一個16.16定點二進制數,然後將結果與比較整數。平方後,16.16數字變爲64位二進制數。 我不知道我的代碼是否正確,並且每個16.16定點數的平方都在範圍內。 另外我無法設置正確的語句來表示32.32定點結果。比較定點二進制數與的整數
僞代碼
reg [31:0] n; //the 32 Bit number we want to square
reg [63:0] res; //out result register after squaring n
integer i;
...
res = n * n; // squaring n
i = 1;
/* compare with some integer - bigger than i */
if(res[63:32] >= i && res[31:0] > 0)
begin ...do something ... end
/* compare with some integer - less/equal than i */
if((res[63:32] < i && res[31:0] >= 0) || (res[63:32] <= i && res[31:0] == 0))
begin ...do something... end
...
在測試平臺我想代表該結果爲32.32定點二進制數 - 但顯示當這表示不會給我正確的浮點值:
res[63:32] + $bitstoreal({1'b0,15'b011111111111111,{fer3[31:0],{81{1'b0}} }) -1;
是,這個偉大的工程。你幫了很多忙,我的錯誤更根本。我在代碼中的錯誤位置做了實際的平方。它是在我的代碼中的順序部分完成的。接下來的是,這個數字的平方在兩個時鐘週期內沒有改變,但是要平方的數量應該改變。非常感謝! –
@kt很高興幫助。 – Morgan