带有always块的verilog语法错误

带有always块的verilog语法错误,verilog,Verilog,我是verilog的新手。我不知道我的代码到底出了什么问题。程序会显示给定时刻0到16小时的计数器值。 键[2]是增加计数器的按钮,而sw[0]重置计数器 else if(sw[9:5]==5'b00100) begin counter = 0; hex2 = 7'b1000000; always@(negedge sw[0],posedge key[2]) begin if(~sw[0]) counter = 0; else if

我是verilog的新手。我不知道我的代码到底出了什么问题。程序会显示给定时刻0到16小时的计数器值。
键[2]
是增加计数器的按钮,而
sw[0]
重置计数器

else if(sw[9:5]==5'b00100)
begin
    counter = 0;
    hex2 = 7'b1000000;
    always@(negedge sw[0],posedge key[2])
    begin
        if(~sw[0]) counter = 0;
        else if(key[2])begin
            if(counter == 16'hFFFF) counter = 0;
            else                    counter = counter +1;
        end
    end
end
我得到的错误是veriloghdl语法接近文本“总是”;应为“;”或“@”、或“end”或标识符(“始终”是保留关键字)、系统任务或“{”或顺序语句

my counter=0;
在我最上面的模块外的顶部定义为整数计数器


非常感谢您的帮助。

在按顺序执行的if..else块中不允许始终块

您可以尝试的一种方法是: @(negedge sw[0],posedge键[2])

这将触发上述两个信号的任何变化,但它将只检测到一个变化

看起来您希望在sw[9:5]==5'b00100时启用计数器
为什么不尝试在此处设置一个标志,然后使用always@flag块来实现运行计数器。

能否粘贴完整代码?还有确切的错误?if..else块中不能有always块