我试图通过VGA创建32色条纹。
generate
genvar i;
always @(posedge vga_clk) begin
if (x_num == 10'h3FF)
RGB = 16'b00000_000011_00011;
for (i = 1; i < 32; i = i + 1) begin: rgb_gen
40: else if ((i * 20 < x_num) && (x_num < (i + 1) * 20)) begin
RGB = RGB << i;
end
end
end
endgenerate
但是有一个错误:
Error (10170): Verilog HDL syntax error at top.v(40) near text "else"; expecting "end"
在我看来,结果必须遵循:
always @(posedge vga_clk) begin
if (x_num == 10'h3FF)
RGB = 16'b00000_000011_00011;
else if ((0 < x_num) && (x_num < 20))
RGB = RGB << 0;
else if ((20 < x_num) && (x_num < 40))
RGB = RGB << 1;
..................
end
我做错了什么?
答案 0 :(得分:1)
您不能在程序代码块的中间嵌入generate
块。我想你想要的是
integer i;
always @(posedge vga_clk) begin
RGB = 0;
if (x_num == 10'h3FF)
RGB = 16'b00000_000011_00011;
else
for (i = 1; i < 32; i = i + 1)
if ((i * 20 < x_num) && (x_num < (i + 1) * 20))
RGB = RGB << i;
end