首页 > 解决方案 > 在 for 循环中使用 assign

问题描述

我试图在 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

我希望节省空间,而不必使用 8 个分配语句,但我收到以下错误:

ERROR:HDLCompiler:806 - 
"C:/Users/Danie/Desktop/Digilent/Projects/Test_IO/Test_IO.v" Line 31: 
Syntax error near "{".

标签: verilog

解决方案


我假设您使用的是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

或者你也可以试试下面的

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

推荐阅读