verilog generate用法求助
时间:10-02
整理:3721RD
点击:
写了一个小程序 想测试一下Verilog generate的用法 程序如下:
`timescale 1ns/1ps
module test_gen(corStart,corEnable,q1,q2,cor1to0);
input [63:0] q1,q2;
input [15:0] corEnable;
input corStart;
output [63:0] cor1to0;
generate
genvar i;
genvar j;
j=0;
for(i=0;i<=63;i=i+1)
begin:cor1to0_gen
assign cor1to0[i] = (corEnable[j/4]&corStart)?q2[i]&q1[i]:1'b0;
j=j+1;
end
endgenerate
endmodule
quartus编译总是在j=0;和j=j+1;这两句上报错,想问一下各位大神 generate块里面能不能这样写,其中i,j都不应该存在于最后的逻辑中;
如果能的话,该怎样改呢。
错误报告:
Error (10170): Verilog HDL syntax error at test_gen.v(14) near text "="; expecting ".", or an identifier, or "(", or "["
Error (10170): Verilog HDL syntax error at test_gen.v(18) near text "="; expecting ".", or an identifier, or "(", or "["
`timescale 1ns/1ps
module test_gen(corStart,corEnable,q1,q2,cor1to0);
input [63:0] q1,q2;
input [15:0] corEnable;
input corStart;
output [63:0] cor1to0;
generate
genvar i;
genvar j;
j=0;
for(i=0;i<=63;i=i+1)
begin:cor1to0_gen
assign cor1to0[i] = (corEnable[j/4]&corStart)?q2[i]&q1[i]:1'b0;
j=j+1;
end
endgenerate
endmodule
quartus编译总是在j=0;和j=j+1;这两句上报错,想问一下各位大神 generate块里面能不能这样写,其中i,j都不应该存在于最后的逻辑中;
如果能的话,该怎样改呢。
错误报告:
Error (10170): Verilog HDL syntax error at test_gen.v(14) near text "="; expecting ".", or an identifier, or "(", or "["
Error (10170): Verilog HDL syntax error at test_gen.v(18) near text "="; expecting ".", or an identifier, or "(", or "["
for循环嵌套能否解决?将j也放在for循环当中。
j的上限是多少?
for循环应该是需要写很多次的东西,通过循环,并行执行,简化Code。这里面j=j+1明显不行,肯定不符合你的设计意图。
其实这个例子里的j和i的作用一样,所以有点多余 把j去掉,原来j地方改成i就行了 但还是想知道通过genvar声明的变量,难道只能用在for(;;)里面吗 既然改变了不会被综合 为什么不能用在像j=j+1;这样的语句里呢
把J循环放进去
