代码之家  ›  专栏  ›  技术社区  ›  andowt

开始:程序块中的比较语句

  •  -1
  • andowt  · 技术社区  · 10 年前

    作为FPGA编程的verilogHDL系列讲座的一部分,我得到了这段代码,用于创建一个有符号的8位大于比较器。我在xillinx ISE中对此进行了模拟,结果表明语法是正确的。但是我不明白 begin:comparison 线我理解在程序中 @always(*) 但是,在这种情况下,当 :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
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   Matthew Taylor    10 年前

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

    integer intA, intB;
    

    所以,当你删除了这个名字,这就变成了非法的Verilog,这就是为什么它不能编译(在Verilog-唯一的编译器中)。

    在SystemVerilog中,如果您在块中声明变量,则必须为其命名的限制被解除。因此,如果您使用的编译器了解System Verilog的这一方面,那么它将进行编译。