下面是一个和符号位有关的例子:
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
新闻热点
疑难解答