|  | 
 
| 
本帖最后由 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型的又不能作为模块实例化时候的输入啊。
 
 
 麻烦请高手指教!不知道问题在哪里,应该怎么改啊
 | 
 |