Verilog 在for循环中使用assign

Verilog 在for循环中使用assign,verilog,Verilog,为了节省空间,我尝试在for循环中分配I/O向量。我不确定这是否是不可能的,或者我遇到了语法问题 我尝试过使用generate,但仍然遇到问题 我目前的代码如下: module Test_IO ( output [7:0] led, input [7:0] sw ); genvar i; generate for(i = 0;i < 8; i = i + 1) { assign led<i> = sw<i>; } endgen

为了节省空间,我尝试在for循环中分配I/O向量。我不确定这是否是不可能的,或者我遇到了语法问题

我尝试过使用generate,但仍然遇到问题

我目前的代码如下:

module Test_IO
(
     output [7:0] led,  
     input  [7:0] sw 
);

genvar i;
generate
for(i = 0;i < 8; i = i + 1)
{
     assign led<i> = sw<i>;
}
endgenerate

endmodule

我假设您正在使用verilog。请尝试下面的代码。对于正在执行的任务,您确实不需要genvar

module Test_IO
 (
 output [7:0] led,  
 input  [7:0] sw 
 );

 genvar i;
 generate
 for(i = 0;i < 8; i = i + 1)
    assign led[i] = sw[i];
 endgenerate

 endmodule
模块测试
(
输出[7:0]发光二极管,
输入[7:0]开关
);
genvar i;
生成
对于(i=0;i<8;i=i+1)
分配led[i]=sw[i];
最终生成
端模
或者你也可以试试下面的一个

module Test_IO
 (
 output reg [7:0] led,  
 input  [7:0] sw 
 );

 integer i;

 always@(*)
 begin
   for(i=0;i<8;i=i+1)
     led[i] = sw[i];
 end

 endmodule
模块测试
(
输出调节[7:0]发光二极管,
输入[7:0]开关
);
整数i;
始终@(*)
开始

对于(i=0;i您的问题是语法。在verilog中使用开始结束,而不是{}

genvar i;
generate
for(i = 0;i < 8; i = i + 1)
{
     assign led<i> = sw<i>;
}
endgenerate
genvari;
生成
对于(i=0;i<8;i=i+1)
{
分配led=sw;
}
最终生成
变成

genvar i;
generate
for(i = 0;i < 8; i = i + 1) begin
    assign led[i] = sw[i];
end
endgenerate
genvari;
生成
对于(i=0;i<8;i=i+1)开始
分配led[i]=sw[i];
结束
最终生成
有时编译器要求在开始后使用:NAME命名生成循环

genvar i;
generate
for(i = 0;i < 8; i = i + 1) begin : ASSIGN_GEN
    assign led[i] = sw[i];
end
endgenerate
genvari;
生成
对于(i=0;i<8;i=i+1)开始:分配
分配led[i]=sw[i];
结束
最终生成

您用什么语言编写它?它不是verilog。它将如何节省空间?在这种情况下,For-loop是没有意义的…只需简单的赋值即可。请阅读手册。您对语法没有清晰的掌握。
genvar i;
generate
for(i = 0;i < 8; i = i + 1) begin : ASSIGN_GEN
    assign led[i] = sw[i];
end
endgenerate