我需要在generate语句中声明一个寄存器来存储一些临时值,
用于实例化。
我有
generate
for(i=0; i< N; i=i+1)
begin: i_loop
Inst_file u(S1(i),P1(i),S(i),P(i));
/* S1 and P1 have N bits and
S = S1 ^ P1;
P = S1 & P1
*/
end //i_loop
S1和P1是简单的组合逻辑,我将它们用作第一个
的电线迭代。但是在i的每次迭代之后,我需要将输出S和P分配为输入
(即用S和P代替S1和P1)。
我知道我应该使用寄存器而不是电线(我是对的吗?)
在这种情况下,我需要S1和P1作为reg。我尝试在
中使用always语句生成。它给出了错误。
请你建议出路..
答案 0 :(得分:2)
您应该使用N + 1位宽的总线,并将所有初始化拉出生成块之外。 我相信这样的事情会做:
wire [N:0]Sarray;
wire [N:0]Parray;
// initialize Sarray[0] and Parray[0] here using continuous assignment
generate
for(i=0; i< N; i=i+1)
begin: i_loop
Inst_file u(Sarray[i],Parray[i],Sarray[i+1],Parray[i+1]);
end //i_loop
应该初始化Sarray [0]和Parray [0]以用于第一次迭代; Sarray [N]和Parray [N]将是模块链的最终输出值。