如何修改Verilog代码避免语法错误?
How to modify the Verilog code to avoid syntax error?
功能是:当h posedge到来时,开始计数clk,如果计数到105,r置0,如果计数到517,r置1;如果计数超过 600,则什么也不做;
h是一个周期信号;
module make_counter(h, clk, P);
input wire h;
input wire clk;
output wire P;
reg r=1'b1;
reg[9:0] n=0;
always @(negedge clk)
always @(posedge h)
begin
n=0;
end
begin
if(n<600)
n=n+1'b1;
if(n==106)
r<=1'b0;
else if(n==517)
r<=1'b1;
else
;
end
assign P=r;
endmodule
错误 (10170):文本 "always" 附近 main.v(115) 处的 Verilog HDL 语法错误;期待“;”
错误 (10170):文本 "begin" 附近 main.v(119) 处的 Verilog HDL 语法错误;期待 "endmodule"
我要的就是这张图。 flag1开始时设置n=0,并计数clk;
当计数到flag2时,设置P=0;当计数到红色箭头时,设置 P=1;
伙计,你有一些错误的代码,
- 不要在 always 块中使用 always 块
- 使变量名称完整,即
cnt
而不是 n
使用重置,避免在声明时赋值
module make_counter(h, clk, P);
input wire h;
input wire clk;
output wire P;
wire r;
reg[9:0] n=0;
always @ (posedge clk or posedge h)
begin
if(h & (n < 10'd600)) begin
n <= n + 1'd1;
end else begin
n <= n;
end
end
assign r = (n == 10'd105) ? 1'b0 : ( (n == 10'd517) ? 1'b1 : 1'bx );
assign P = r;
endmodule
你没有提到,如果 n
在 0 到 104 和 106 到 516 和 > 517 之间,r
的值应该是多少?
我以为它会是任何东西。
检查它并说它适合你
功能是:当h posedge到来时,开始计数clk,如果计数到105,r置0,如果计数到517,r置1;如果计数超过 600,则什么也不做; h是一个周期信号;
module make_counter(h, clk, P);
input wire h;
input wire clk;
output wire P;
reg r=1'b1;
reg[9:0] n=0;
always @(negedge clk)
always @(posedge h)
begin
n=0;
end
begin
if(n<600)
n=n+1'b1;
if(n==106)
r<=1'b0;
else if(n==517)
r<=1'b1;
else
;
end
assign P=r;
endmodule
错误 (10170):文本 "always" 附近 main.v(115) 处的 Verilog HDL 语法错误;期待“;”
错误 (10170):文本 "begin" 附近 main.v(119) 处的 Verilog HDL 语法错误;期待 "endmodule"
我要的就是这张图。 flag1开始时设置n=0,并计数clk; 当计数到flag2时,设置P=0;当计数到红色箭头时,设置 P=1;
伙计,你有一些错误的代码,
- 不要在 always 块中使用 always 块
- 使变量名称完整,即
cnt
而不是n
使用重置,避免在声明时赋值
module make_counter(h, clk, P); input wire h; input wire clk; output wire P; wire r; reg[9:0] n=0; always @ (posedge clk or posedge h) begin if(h & (n < 10'd600)) begin n <= n + 1'd1; end else begin n <= n; end end assign r = (n == 10'd105) ? 1'b0 : ( (n == 10'd517) ? 1'b1 : 1'bx ); assign P = r; endmodule
你没有提到,如果 n
在 0 到 104 和 106 到 516 和 > 517 之间,r
的值应该是多少?
我以为它会是任何东西。
检查它并说它适合你