我想接受一个参数并将一个等于参数的零分配给一个常量,并使用此常量进行比较.我该怎么做 ?
例如,说参数是3,我想创建一个常量
n=3'b000;
Run Code Online (Sandbox Code Playgroud)
并在另一个声明中使用此n.唯一的问题是,我不知道n.我如何初始化'n'零和我分配给它的verilog数据类型?
Gre*_*reg 22
您正在寻找复制运算符.语法是{replication_constant{value}}.
创建大小WIDTH为全零的总线的示例.
parameter WIDTH = 3;
wire [WIDTH-1:0] n = {WIDTH{1'b0}};
Run Code Online (Sandbox Code Playgroud)
有关复制运算符的完整说明,请参阅IEEE std1800-2012§11.4.12.1"复制运算符"
Mor*_*gan 12
要扩展Gregs的答案并回答如果你想要1然后全部0的话.
使用串联{a,b}和复制的混合{width{c}}:
wire [WIDTH-1:0] n = { 1'b1, {WIDTH-1{1'b0}} } ;
Run Code Online (Sandbox Code Playgroud)
虽然在SystemVerilog中使用'0or '1语法来'b0进行宽度匹配,但在较旧的Verilog中有效.在verilog-95中,它只能与32位宽度匹配,但此后已得到纠正.
定义触发器上的复位值的示例:
reg [7:0] a;
always @(posedge clk or negedge rst_n) begin
if(~rst_n) begin
a <= 'b0 ;
...
Run Code Online (Sandbox Code Playgroud)