|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 greenhope 于 2011-5-14 21:59 编辑
一段小程序,如下:
module VNP_cluster(DIN, counter, DOUT);
input [3:0]counter;
input[27:0]DIN;
output [27:0];
//有问题的一段,用红色标出来了
wire [3:0]counter_new;
genvar i;
generate
for(i=0;i<14;i=i+1) begin: VNP_c
assign counter_new=((counter+i)>=14)? (i+counter-14) :(i+counter);
VNP VNP_B( .DIN(DIN), .counter(counter_new), .DOUT(DOUT[2*i+1:2*i]) );
end
endgenerate
endmodule
VNP大概模块接口为:
module VNP( input [27:0]DIN,
input [3:0]counter,
output [1:0]DOUT);
就是generate里面调用VNP模块之前需要对其中一个输入counter进行检测和转换,如果(counter+i)大于等于14的话就减掉14再作为输入。
可是这样弄的话,最后VNP的输出全是X,相当于counter_new没被传到VNP的输入。
请问这种情况应该怎么解决啊?
我尝试过把counter_new设置为reg变量,这样的话直接报错。貌似只能是wire型的,但是好像wire型的又不能作为模块实例化时候的输入啊。
麻烦请高手指教!不知道问题在哪里,应该怎么改啊 |
|