Verilog分配多个reg';s或电线';s等于相同的值

Verilog分配多个reg';s或电线';s等于相同的值,verilog,Verilog,如何使用更精简的代码将多个reg分配给同一个值?这是我想要改进的代码: a = 0; b = 0; c = 0; d = 0; e = 0; 你可以用左手的concats 下面的示例演示如何执行此操作 reg a,b,c,d,e; initial begin {a,b,c,d,e} = 5'b0; end 除非使用数组,否则没有其他更“压缩”的方法 reg [4:0] var; ... var = 5'b0; 或者对于多维非封装阵列,可以使用循环 reg [1:0] var [4:

如何使用更精简的代码将多个reg分配给同一个值?这是我想要改进的代码:

a = 0;
b = 0;
c = 0;
d = 0;
e = 0;

你可以用左手的concats

下面的示例演示如何执行此操作

reg a,b,c,d,e;
initial begin
    {a,b,c,d,e} = 5'b0;
end
除非使用数组,否则没有其他更“压缩”的方法

reg [4:0] var;
...
var = 5'b0;
或者对于多维非封装阵列,可以使用循环

reg [1:0] var [4:0];

...
for (i = 0; i < 5; i++) var[i] = 0;
reg[1:0]var[4:0];
...
对于(i=0;i<5;i++)var[i]=0;

您可以使用左手边的Concat

下面的示例演示如何执行此操作

reg a,b,c,d,e;
initial begin
    {a,b,c,d,e} = 5'b0;
end
除非使用数组,否则没有其他更“压缩”的方法

reg [4:0] var;
...
var = 5'b0;
或者对于多维非封装阵列,可以使用循环

reg [1:0] var [4:0];

...
for (i = 0; i < 5; i++) var[i] = 0;
reg[1:0]var[4:0];
...
对于(i=0;i<5;i++)var[i]=0;

如果所有变量都具有相同的位宽度,因此要分配给这些变量的值具有相同的位宽度,则可以执行复制串联:

{a,b,c,d,e} = {5{value}};

如果所有变量具有相同的位宽度,因此要分配给这些变量的值具有相同的位宽度,则可以执行复制串联:

{a,b,c,d,e} = {5{value}};

使用循环是否会产生成本开销,或者循环是在合成过程中运行的?合成应该展开循环并将其转换为5线连接的东西,与所有其他情况相同。感谢您的澄清!嗨,我知道我有点晚了,但是可以在作业中添加逻辑运算符吗?e、 g.{a,~b,~c,d,e}=5'b01010;->5'b00110=={a,b,c,d,e};不,您不能在左侧使用它,但您可以在rhs上反转您的数据:
{a,b,c,d,e}=5'b00110
。第二个表达式是正确的,尽管
==
通常是不可合成的。使用循环是否会产生成本开销,或者循环是在合成过程中运行的?合成应该展开循环并将其转换为5线的东西,与所有其他情况相同。感谢澄清!嗨,我知道我有点晚了,但是可以在作业中添加逻辑运算符吗?e、 g.{a,~b,~c,d,e}=5'b01010;->5'b00110=={a,b,c,d,e};不,您不能在左侧使用它,但您可以在rhs上反转您的数据:
{a,b,c,d,e}=5'b00110
。第二个表达式是正确的,尽管通常不可合成。