Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要求在else之后结束的未知Verilog错误 始终@(posedge clk或negedge rst) 开始 如果(~rst) Tp_Verilog - Fatal编程技术网

要求在else之后结束的未知Verilog错误 始终@(posedge clk或negedge rst) 开始 如果(~rst) Tp

要求在else之后结束的未知Verilog错误 始终@(posedge clk或negedge rst) 开始 如果(~rst) Tp,verilog,Verilog,这可能是将您的开始与结束相匹配-它们就像C/C++中的大括号({和}),因为它们需要与所捕获的结构相匹配。因此,将它们相应地缩进是有帮助的 正确缩进后,始终块如下所示: always@(posedge clk or negedge rst) begin if(~rst) Tp <= 0 ; else begin if(g3 == 255) sum_x <= sum_x + x3; else

这可能是将您的
开始
结束
相匹配-它们就像C/C++中的大括号(
{
}
),因为它们需要与所捕获的结构相匹配。因此,将它们相应地缩进是有帮助的

正确缩进后,
始终
块如下所示:

always@(posedge clk or negedge rst)
begin
if(~rst)
Tp <= 0 ;

    else 
    begin 
         if(g3 == 255)
          sum_x <= sum_x + x3;

         else
         begin
               if((x3 == 0) && (y3 == 0))
               Tp<=0;
               sum_x=0;
               x4 = quotient1;

                else
                begin
                     if (x3 == 200)
                         r4 = 200;
                         g4 = 200;
                         b4 = 0;
                 end  
         end 
    end
end
endmodule 
不同于

begin
if (<condition>)
    a = 1;
b = 1;
end
if()
开始
a=1;
b=1;
结束
在第一示例中,
b=1if
的结果如何,代码>行始终执行。在第二种情况下,这两条语句都取决于
if
的结果


If
(和
else
)仅适用于它后面的第一条语句,或者如果第一条“语句”是
begin
,则适用于一组语句。使用
begin
end
仅对由于
if
而运行的语句进行分组,就像在第二个例子中一样。

我遇到的唯一问题是当我添加一个新的else语句时,该语句将要求我添加另一个END,如果您试图将else应用于该END,则该END是
if
行吗?只有当我尝试添加else时才会弹出错误(49)如果(x3==200)r3=200,则开始;g3=200;b3=0;如果
要将
其他
匹配到哪个
?由于您的HDL是在您的问题中编写的,除了第44行的
if
之外,每个
if
都有一个匹配的
else
。在第46行以外的位置添加一个
else
,意味着in没有一个
if
要匹配。我尝试了你的方法,并按照你说的方式添加了新的语句,但问题仍然存在,相同的问题并不重要,这是完全相同的问题。问题可能是相同的,但我尝试了解决方案,但它没有像你在上面看到的那样起作用。我使用你教我的方法,在每个开始添加一个结束,但它没有解决它。这就是为什么我问使用相同的标题,如果这导致误解,我通常可以删除旧帖子,
if
else
仅适用于一条语句。您使用的
begin
end
就像C/C++或Java中的大括号(
{
}
)一样-它们定义了要执行的代码块。然而,它们必须正确匹配,这一点很重要——因此我在下面建议使用正确的缩进。
begin
if (<condition>)
    a = 1;
b = 1;
end
if (<condition>)
begin
    a = 1;
    b = 1;
end