1. 关键字:顺序块,并行块,嵌套块,命名块,disable
verilog 语句块提供了将两条或更多语句组成语法结构上相当于一条一句的机制。
主要包括两种类型:顺序块和并行块
。
2. 顺序块
顺序块用关键字 begin
和 end
来表示。
顺序块中的语句是一条一条执行的(非阻塞赋值除外)。
顺序块中每条语句的时延总是与前面语句执行的时间相关。
3. 并行块
并行块用关键字 fork
和 join
来表示。
并行块中的语句是并行执行的。
并行块中每条语句的时延都是与块语句开始执行的时间相关。
4. 嵌套块
顺序块和并行块还可以嵌套使用。
示例如下
initial begin
a = 1 ;
fork
#10 b = 2 ;
#20 c = 3 ;
join
#30 d = 4 ;
end
5. 命名块
还可以给块语句结构命名。
命名的块中可以声明局部变量,通过层次名引用的方法对变量进行访问。
示例如下
module test ;
initial begin:AAA /// 命名模块名字为AAA,分号不能少
integer i ; /// 该变量i,可以通过test.AAA.i,被其它模块使用
i = 0 ;
while(i <= 100) begin: BBB
#10 ;
if(i >= 50) begin /// 累加50次停止累加
disable CCC.clk_gen ; /// stop 外部block:clk_gen
disable BBB ; /// stop 当前block;BBB
end
end
end
reg clk ;
initial begin:CCC
while(1) begin:clk_gen
clk = 0 ; #10 ;
clk = 1 ; #10 ;
end
endmodule
当 i 累加到 50 以后,便不再累加,以后 clk 时钟也不再产生。