Begin:comparison 程序块中的语句

Begin:comparison Statement in procedural block

作为用于 FPGA 编程的 verilog HDL 系列讲座的一部分,我得到了这段代码来创建一个带符号的 8 位大于比较器。我已经在 xillinx ISE 中对此进行了模拟,它表明语法是正确的。但是我不明白 begin:comparison 行。我知道在程序 @always(*) 块中需要一个开始和结束语句,但是,在这种情况下,当 :comparison 被删除时,模块不再编译。

我最好的猜测是 :comparison 指的是 sgt = intA > int B; 行,但是我不明白为什么,也无法找到有关该形式的开始和结束语句的很多信息。

module sgtc(input [7:0] a,b, output reg sgt);
always@(*) begin:comparison

   integer intA, intB;
   intA = a;
   intB = b;
   sgt = intA > intB;

end

endmodule

comparison 只是块的名称。代码的作者可以称其为任何合法的东西。然而,在 Verilog 中,如果你想在其中声明一个变量,你必须命名一个块,这正是你正在做的:

integer intA, intB;

因此,当您删除名称时,这将成为非法的 Verilog,这就是它无法编译(在仅 Verilog 的编译器中)的原因。

在 System-Verilog 中取消了在块中声明变量时必须命名块的限制。因此,如果您使用理解 System-Verilog 这方面的编译器,那么它就会编译。