Verilog 在for循环中使用assign
为了节省空间,我尝试在for循环中分配I/O向量。我不确定这是否是不可能的,或者我遇到了语法问题 我尝试过使用generate,但仍然遇到问题 我目前的代码如下: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
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