verilog,为什么这是对网络的非法引用
我是verilog新手,但我不明白为什么这个非法引用net for signal(计数器的子计数器)。我是说这是组合逻辑 提前感谢:)verilog,为什么这是对网络的非法引用,verilog,hdl,digital,digital-logic,Verilog,Hdl,Digital,Digital Logic,我是verilog新手,但我不明白为什么这个非法引用net for signal(计数器的子计数器)。我是说这是组合逻辑 提前感谢:) wire[n-1:0]计数器的子计数器; 注册[n-1:0]掩码,免费; 始终@(*)开始//命令或id或掩码或计数器的空闲或子计数器 如果(命令==增量)开始 对于(int i=0;i
wire[n-1:0]计数器的子计数器;
注册[n-1:0]掩码,免费;
始终@(*)开始//命令或id或掩码或计数器的空闲或子计数器
如果(命令==增量)开始
对于(int i=0;i 如果(iAwire
是一个nettype,并且不能在始终块或初始块中分配nettype。
将计数器的subcounter\u
从wire
更改为reg
,以解决您的问题。reg
是逻辑类型的关键字,并不明确表示它将合成为寄存器。awire
是网络类型,不能在始终块或初始中分配网络类型块。
将计数器的subcounter\u
从wire
更改为reg
,以解决您的问题。reg
是逻辑类型的关键字,并不明确表示它将合成为寄存器。如果您还可以帮助我处理具有相同代码的另一个位置,请在此:如果您还可以帮助我处理具有相同代码的另一个位置相同的代码,在这里:
wire [n-1:0] subcounter_of_counter;
reg [n-1:0] mask,free;
always @(*) begin //command or id or mask or free or subcounter_of_counter
if (command==increment) begin
for (int i = 0; i < n; i=i+1)begin
if (i<id) begin
subcounter_of_counter[i]=1'b0;
end else if (i==id) begin
subcounter_of_counter[i]=1'b1;
end else begin
if( (|mask[id+1:i]) || (|free[id+1:i]) ) begin
subcounter_of_counter[i]=1'b0;
end else begin
subcounter_of_counter[i]=1'b1;
end
end
end
end
end