下面是一個和符號位有關的例子:
reg[31:0] A; integer I; ... A=-1; I=-1;//both A and I hold 32'hffffffff // if(I>32'h0) $display("I is positive.") else$display("I is not positive");//PRints "I is not positive" if(A>32'h0) $display("A is positive");//Prints "A is positive" else$display("I is not positive"); |
我用類似的方式在quartus II 中進行了仿真,但得到的結果都是A,這可以看出Q2在比較過程中將integer簡單得看為無符號的數據,并沒有像代碼中所說的結果一樣。但感覺書本中寫的其實挺有道理的,難道是軟件的不同,所以得到的結果不同?
先拋出這個問題吧,有機會下次再去驗證一下。
更新部分:
上次驗證沒成功,今天已驗證居然成功了,上次肯定是哪弄錯了,現在把代碼和圖貼上:
module integer_reg(clk,negA,negI); input clk; wire[31:0]A; integer I; output reg negA; output reg negI; assign A=-3; always @(posedge clk) begin I=-3; if(A<0) negA<=1; else negA<=0; if(I<0) negI<=1; else negI<=0; end endmodule |
對于關系算符,綜合會有不同的結果,這取決于被比較的是有符號還是無符號數,會綜合出無符號關系算符,或又符合關系算符。
建議在能夠使用reg的情況下盡量使用reg
新聞熱點
疑難解答