条件:数据data为signed
目的操作:将数据取相反数。即8变-8,-7变7。
误区:仅仅是“取反加1”
误区操作的后果: 若data=1000,表示为-8,取反加一后仍为1000,仍为-8
module minusdata;
reg clk;
reg [3:0]cnt;
wire [3:0]minuscnt;
wire [3:0]notadd1cnt;
wire [4:0]extcnt;
initial begin
cnt = 4'd0;
clk = 0;
forever #10 clk = !clk;
end
always @(posedge clk) begin
cnt <= cnt + 1'b1;
end
assign minuscnt = -cnt;
assign notadd1cnt= ~cnt + 1'b1;
assign extcnt = -{cnt[3],cnt}; //求相反数,符号位扩展必须
endmodule
ModelSim仿真图如下:
所以,从该实验得出的结论如下,
1, verilog中直接加“负号”,等效于讲数据取反加一。
2, 位宽为N


1261

被折叠的 条评论
为什么被折叠?



