如何解决Verilog中参数化的赋值:赋全0,赋全1,赋全Z,赋全x

转载自:http://www.fpga-design.net/site/html/52/t-1152.html


如何解决Verilog中参数化的赋值:赋全0,赋全1,赋全Z,赋全x

yuelengyueming 发表于: 2008-11-24 14:36 来源: FPGA设计网

如何解决Verilog中参数化的赋值:赋全0,赋全1,赋全Z,赋全x

赋全0:指各位均为二进制0,其余依此类推。

以WIDTH表示din/dout位宽。

为了说明方便定义这样一个模块
==============================================================
module evaluate  #(parameter WIDTH = 16)
  ( input clk,
    input rst,
    input [WIDTH-1:0] din,
    output reg [WIDTH-1:0] dout
    );

  always @(posedge clk)
  begin
    if (rst)
      dout <= 'b0; //如何赋值
    else
      dout <= din;
    end
endmodule
===============================================================
由于位宽已经参数化,那么如何解决参数化赋值问题,以使赋值能“适应参数”。

赋全0的方法:

(1)直接赋0
dout <= 0;此种情况下默认0为十进制以32位表示,如果din位宽大于32位,则高位补零,如果din位宽小于32位,则截取低位,仍为0。
(2)直接赋'b0
dout <= 'b0;
(3)利用位拼接
dout <= {WIDTH{1'b0}};
(4)supply0
定义supply0 [WIDTH-1:0] dout_gnd,dout <= dout_gnd;

赋全1的方法:

(1)直接赋~0
dout <= ~0;
(2)直接赋-1
dout <= -1;
(3)利用位拼接
dout <= {WIDTH{1'b1}};
(4)利用supply1
定义supply1 [WIDTH-1:0] dout_vcc dout <= dout_vcc;
需要注意的是Verilog中并没有'b1的赋全1方式。

赋全x或者全z均可采用'bx或者'bz的方式

结论:赋全0、全x或者全z可采用'b0、'bx或者'bz的方式;
      赋全1可采用赋~0或赋-1的方式较为简洁。
  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值