Verilog关于signed、有符号数、算数移位、$signed()的使用

关于signed、有符号数、算数左移、算数右移、$signed()、$unsigned()的理解。

1、signed可以和reg和wire联合使用,用于定义有符号数。在代码中使用负的十进制数赋值给有符号数,在电路中是按该数值的补码形式存储的。如下:

wire signed a;
assign a = -8'd1;

使用display显示a的二进制=11111111,十进制= -1,如下:

$display("signed a =%b=%d",a,a);		 //signed a =11111111=         -1

2、使用signed定义的类型,做加法或乘法时,对操作数扩位处理时高位补符号位;即负数补1,正数补0;不使用signed的无符号类型,高位默认补0。

reg signed [7:0]a,b;
wire signed [8:0]sum1;
reg [7:0] c,d;
wire [8:0]sum2;
initial
begin 
  a = -8'd1;
  b = 8'd2;
  c = 8'b1000_0001;
  d = 8'b0000_0010;
end
assign sum1 = a+b;
assign sum2 = a+b;

其中有符号计算时,在电路中a=1111_1111,b=0000_0010;sum1比a和b多1bit,在加法结构中a扩位为1_1111_1111,b扩位为0_0000_0010,相加为10_0000_0001,保留9bit后sum1=1

  • 46
    点赞
  • 230
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Verilog中,有符号移位可以通过算术右移实现。算术右移需要考虑符号位,右移一位时,如果符号位为1,则在左边补1;否则,补0。这种移位操作可以进行有符号的除法运算,每右移一位相当于除以2的n次方。 Verilog语言可以使用移位减方式实现64位除以32位据的除法器。这种方式资源消耗较少,运算速度约为64个时钟周期,也可以方便地自动修改运算位。 在Verilog中,使用移位运算符进行移位操作。a >> n表示逻辑右移,左边补零;a << n表示逻辑左移,右边补零。这两种移位运算都用0来填补移出的空位。 举个例子来说明:假设有一个有符号start,初始值为0001,我们进行start << 2移位操作,移位后start的值为0100,然后赋给result。这样就实现了有符号移位操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Verilog 中的移位(算术移位, 逻辑移位, 循环移位)](https://blog.csdn.net/Reborn_Lee/article/details/89813616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [FPGA 64位除法器(Verilog)](https://download.csdn.net/download/XingouChen/13216328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值