verilog语句执行顺序的疑问?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog语句执行顺序的疑问?相关的知识,希望对你有一定的参考价值。
小弟刚学verilog,有些疑问,模块里面always、intial、模块引用、门实例这些语句块是并行执行还是串行?不胜感激
可综合的都是并行执行的。其实也不难理解,verilog是硬件语言,也就可以看成是一个电路。在实际的电路中没办法延迟,没办法让一边先通电,再让另一边通电,所以一切都是同时进行的。这并行的前提都是“可综合”。
如果是写testbench,会用到不可综合的模块,这些模块是行为级的,在实际电路中无法实现。比如task,比如阻塞赋值等等,这些都是有顺序的。 参考技术A 所有块是并行的。always块和forever通电后只要满足触发条件就始终执行,initial是仿真用的,只执行一次。
举例如下:
always@(posedge clk)
begin
a=b;
c=d;
end
always@ (posedge clk or negedge rst)
if(scl)
df=1'b1;
else df=1'b0;
上面的两个块为并行。在时钟上升沿到来时同时判定两个always块内逻辑是否符合,符合则执行相关语句。 参考技术B 各个ALWAYS模块都是并行执行的,这比较难理解,你需要慢慢理解
Verilog学习笔记基本语法篇········ 循环语句
在Verilog中存在着4种类型的循环语句,用来控制执行语句的执行次数。
1)forever语句: 连续执行的语句。
2)repeat语句: 连续执行n次的语句。
3)while语句: 执行语句,直至某个条件不满足。
4)for 语句: 三个部分,尽量少用或者不用for循环。
各语句的格式与注意事项:
1)forever格式:
forever 语句;
或:forever begin 多条语句 end
常用于产生周期性的波形,用来作为仿真测试信号。它与always的不同之处是不能独立在程序中,必须写在initial块中。
2)repeat格式:
repeat(表达式) 语句;
或:repeat(表达式) begin 多条语句 end
在repeat中,其表达式常为常量表达式。(可实现乘法器P60)
3)while格式:
while(表达式) 语句;
或:while(表达式) begin 多条语句 end
4)for的格式:
for(表达式1;表达式2;表达式3)
语句;
执行过程与 c 语言中的for循环相同,注意表达式之间要用分号分割。
以上是关于verilog语句执行顺序的疑问?的主要内容,如果未能解决你的问题,请参考以下文章