作为关于用于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
答案 0 :(得分:1)
comparison
只是块的名称。该代码的作者本可以称之为合法的。但是,在Verilog中,如果要在其中声明变量,则必须命名一个块,这正是您正在做的事情:
integer intA, intB;
因此,当您删除名称时,这将成为非法的Verilog,这就是它不能编译的原因(在Verilog编译器中)。
如果在其中声明一个变量,必须为块命名的限制在System-Verilog中解除。因此,如果您使用了解System-Verilog这方面的编译器,那么它将进行编译。