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 这方面的编译器,那么它就会编译。
作为用于 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 这方面的编译器,那么它就会编译。