Verilog里一个always语句的问题

2024-11-06 08:13:09
推荐回答(1个)
回答(1):

begin...end是用来界定多条语句的 和for循环无关
如果你需要在“一步”操作中执行多条语句 就需要用begin...end
如果只有一条语句(以分号结尾)则可写可不写

比如
initial
begin
for (i=0;i<8;i++)
mem[i] = i;//begin...end可写可不写
done = 1;
end
这次循环操作就是把mem初始化为递增数(执行8次赋值) 而done的赋值只执行一次

再如
always @(a)
#1
$display("a = %0d.", a);


always @(a)
begin
#1;
$display("a = %0d.", a);
end
第二段代码认为有两步(两个分号) 因此需要写begin...end