预览加载中,请您耐心等待几秒...
1/2
2/2

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

signed数据取负数的verilog代码 条件:数据data为signed 目的操作:将数据取相反数。即8变-8,-7变7。 误区:仅仅是“取反加1” 误区操作的后果:若data=1000,表示为-8,取反加一后仍为1000,仍为-8。 测试程序,如下, moduleminusdata; regclk; reg[3:0]cnt; wire[3:0]minuscnt; wire[3:0]notadd1cnt; wire[4:0]extcnt; initialbegin cnt=4'd0; clk=0; forever#10clk=!clk; end always@(posedgeclk) begin cnt<=cnt+1'b1; end assignminuscnt=-cnt; assignnotadd1cnt=~cnt+1'b1; assignextcnt=-{cnt[3],cnt}; endmodule 所以,从该实验得出的结论如下, 1,verilog中直接加“负号”,等效于讲数据取反加一。 2,位宽为N的signeddata的范围为,-2^(N-1)~2^(N-1)–1,比如说4bitsigneddata范围为-8到7。若想取相反数,必须符号位扩展1bit,然后取反加1。或者另外一种途径,不扩展,对-8做特殊处理,讲其近似为7。