Verilog 错误:HDL编译器806
我已经编写了一个verilog代码,用于在BASYS2板的七段显示器上滚动hello world。但是在编译了这段代码之后,我得到了一个类似这样的错误- “错误:HDLCompiler:806-”C:/Users/vishakha.ramani/Xilinx/scrollsevensegment/ssevenseg.v“第214行:endmodule附近的语法错误。” 请告诉我哪里出错了Verilog 错误:HDL编译器806,verilog,Verilog,我已经编写了一个verilog代码,用于在BASYS2板的七段显示器上滚动hello world。但是在编译了这段代码之后,我得到了一个类似这样的错误- “错误:HDLCompiler:806-”C:/Users/vishakha.ramani/Xilinx/scrollsevensegment/ssevenseg.v“第214行:endmodule附近的语法错误。” 请告诉我哪里出错了 enter code here module ssevenseg( input clock, input
enter code here
module ssevenseg(
input clock,
input reset,
output a,
output b,
output c,
output d,
output e,
output f,
output g,
output [3:0] en
);
reg [3:0] in0, in1, in2, in3; // registers to hold the LED value i.e data to be displayed
reg [28:0] tick_tock; // to count for every 1s i.e holds count of 50 M
wire click;
always @(posedge clock or posedge reset)
begin
if(reset)
tick_tock <= 0;
else if ( tick_tock==50000000)
tick_tock <= 0;
else
tick_tock <= tick_tock+1;
end
assign click = (( tick_tock==50000000)?1'b1:1'b0); // click every second
reg [3:0] count1; // to hold the count upto 9
always @(posedge click or posedge reset)
begin
if (reset)
count1 <= 0;
else
count1 <= count1 + 1;
end
always @ (*)
begin
case (count1)
8'b00000000 :
begin
in0 = 4'b0001; // H
in1 = 4'b0010; // E
in2 = 4'b0011; // L
in3 = 4'b0011; // L
end
8'b00000001 :
begin
in0 = 4'b0010; // E
in1 = 4'b0011; // L
in2 = 4'b0011; // L
in3 = 4'b0100; // O
end
8'b00000010 :
begin
in0 = 4'b0011; // L
in1 = 4'b0011; // L
in2 = 4'b0100; // O
in3 = 4'b0101; // E
end
8'b00000011 :
begin
in0 = 4'b0011; // L
in1 = 4'b0100; // O
in2 = 4'b0101; // E
in3 = 4'b0100; // O
end
8'b00000100 :
begin
in0 = 4'b0100; // O
in1 = 4'b0101; // E
in2 = 4'b0100; // O
in3 = 4'b0110; // r
end
8'b00000101 :
begin
in0 = 4'b0101; // E
in1 = 4'b0100; // O
in2 = 4'b0110; // r
in3 = 4'b0011; // L
end
8'b00000110 :
begin
in0 = 4'b0100;
in1 = 4'b0110;
in2 = 4'b0011;
in3 = 4'b0111;
end
endcase
end
localparam N = 18;
reg [N-1:0]count; // the 18 bit counter that allows us to multiplex at 1000Hz
always @ (posedge clock or posedge reset )
begin
if (reset)
count <= 0;
else
count <= count +1;
end
reg [3:0] display;
reg [3:0] temp_en;
always @ (*)
begin
case(count[N-1:N-2])
2'b00 :
begin
display = in0;
temp_en = 4'b0111;
end
2'b01:
begin
display = in1;
temp_en = 4'b1011;
end
2'b10:
begin
display = in2;
temp_en = 4'b1101;
end
2'b11:
begin
display = in3;
temp_en = 4'b1110;
end
endcase
end
assign en = temp_en;
reg [6:0] temp_display;
always @(*)
begin
case (display)
4'b0000 : temp_display = 7'b1111110; // if we give input '0' nothing except '-' will be displayed
4'b0001 : temp_display = 7'b1001000; // This will display 'H'
4'b0010 : temp_display = 7'b0110000; // to display 'E'
4'b0011 : temp_display = 7'b1110001; // to display 'L'
4'b0100 : temp_display = 7'b0000001; // to display 'O'
4'b0101 : temp_display = 7'b1111010; // to display 'r'
4'b0110 : temp_display = 7'b1000010; // to display 'd'
default : temp_display = 7'b1111111; // blank
endcase
end
assign {a,b,c,d,e,f,g} = temp_display
endmodule
在此处输入代码
模块ssevenseg(
输入时钟,
输入复位,
输出a,
产出b,
产出c,
产出d,
产出e,
产出f,
产出g,
输出[3:0]en
);
reg[3:0]in0,in1,in2,in3;//用于保存LED值的寄存器,即要显示的数据
reg[28:0]勾选每1秒计数,即保持50米计数
线击;
始终@(posedge时钟或posedge重置)
开始
如果(重置)
勾选“\u tock您似乎在第二个最后一个语句后缺少分号:
assign {a,b,c,d,e,f,g} = temp_display
你能帮我写下它的verilog测试夹具吗。我对这种语言很陌生。谢谢你的帮助。