📜  Verilog块语句

📅  最后修改于: 2021-01-11 14:45:47             🧑  作者: Mango

Verilog阻止语句

块语句是两个或多个语句的组合,在语法上类似于单个语句。 Verilog中有两种类型的块:

  • 顺序块
  • 平行块

如果应执行多个语句,则可以使用这些块。顺序块中的所有语句将以给定顺序顺序执行。

如果时序控制语句出现在一个块中,则在该延迟后将执行下一条语句。顺序块应由关键字begin和end分隔。

并行块中的所有语句都同时或并行执行。这意味着即使前一条语句包含时序控制语句,也不会延迟下一条语句的执行。并行块应由关键字fork和join分隔。

顺序块

语句使用beginend关键字包装,并以给定顺序顺序执行。相对于上一条语句的执行时间来处理延迟值。

在执行块中的所有语句之后,控制权可能会传递到其他地方。

句法

顺序块语句遵循以下语法:

begin: name
      statement1;
      …………..
end

特点

顺序块具有以下特征,例如:

  • 语句将按顺序依次执行。
  • 相对于前一条语句执行的模拟时间来处理每个语句的延迟值。
  • 最后一条语句执行后,控制权可以从块中传递出去。

module design0;
    bit [31:0] data;

       // initial block starts at time 0
    
            initial begin

        // After 10 time units, data becomes 0xfe
        #10   data = 8'hfe;
        $display ("[Time=%0t] data=0x%0h", $time, data);

        // After 20 time units, data becomes 0x11
        #20   data = 8'h11;
        $display ("[Time=%0t] data=0x%0h", $time, data);
    end
endmodule

在上面的示例中,由于相对性,开始和结束块中的第一条语句将以10个时间单位执行,第二条语句将以30个时间单位执行。执行上一条语句后,这是20个时间单位。

ncsim> run
[Time=10] data=0xfe
[Time=30] data=0x11
ncsim: *W,RNQUIE: Simulation is complete.

平行块

并行块可以同时执行语句,并且可以使用延迟控制来提供分配的时间顺序。通过将语句包装在forkjoin关键字中来并行启动语句。

句法

并行块具有以下简化语法:

fork: name
        statement;
        …………
join

特点

并行块具有以下特征:

  • 语句将同时执行。
  • 考虑每个语句的延迟值相对于进入块的模拟时间。
  • 延迟控制可用于提供分配的时间顺序。
  • 当最后一个按时间顺序执行的语句执行时,控制权可以从块中传递出去。

initial begin
    #10   data = 8'hfe;
    fork
       #20 data = 8'h11;
       #10 data = 8'h00;
    join
end

在上面的示例中,fork和join块将在以10次为单位执行该语句后启动。

该块中的语句将并行执行,并且第一个语句将为数据分配8'h00的值,因为该延迟是在fork-join启动后的10倍单位。

再经过10个时间单位后,将启动第一个语句,数据将获得值8'h11。

initial begin
    #10 data = 8'hfe;
    fork
        #10 data = 8'h11;
        begin
            #20 data = 8'h00;
            #30 data = 8'haa;
        end
    join
end

上面的示例中有一个begin-end块,并且begin-end块中的所有语句将顺序执行。尽管如此,该块本身将与其他语句一起并行启动。数据将以20时间单位为8'h11,以30时间单位为8'h00,以60时间单位为8'haa。

块命名

通过在beginfork关键字之后添加name_of_block ,可以命名顺序块和并行块。这样,可以在disable语句中引用该块。

begin: name_seq
    [statements]
end
fork: name_fork
    [statements]
join