顺序块:顺序块中的语句执行都是从上到下顺序执行,和C语言执行过程一样,关键词是begin、end。
initial begin//顺序块关键字
tb_sel = 1'b0;
#5 tb_in1 = 1'b1;//时刻5执行
#10 tb_in2 = 1'b1;//时刻15执行
#20 tb_sel = 1'b1;//时刻35执行
end
编辑
上图为顺序块仿真时序图,可以看到,信号tb_in1在5ns时发生跳变,tb_in2的赋值在上一语句tb_in1执行完后延迟10ns后才发生跳变。同样的,信号tb_sel在延迟35ns后跳变。
并行块:并行块中的语句执行是同时进行,执行时间仅取决于当前语句的延迟,关键词是fork、join。
initial fork//并行块关键字
tb_sel = 1'b0;
#5 tb_in1 = 1'b1;//时刻5执行
#10 tb_in2 = 1'b1;//时刻10执行
#20 tb_sel = 1'b1;//时刻15执行
join
编辑
可以看到并行块中的语句在仿真开始时同时执行,每条语句的赋值时间仅取决于当前语句的延迟。
阻塞过程赋值:下调语句执行前,当前语句必须执行完成,赋值符号“=”。
initial begin//顺序块关键字
tb_sel = 1'b0;
#5 tb_in1 = 1'b1;//时刻5执行
#10 tb_in2 = 1'b1;//时刻15执行
#20 tb_sel = 1'b1;//时刻35执行
end
编辑
非阻塞过程赋值:非阻塞语句在执行时,计算右侧的值,然后在预定时间将右侧的值赋值给左值,它在计算出右值后不会阻塞下一条语句的执行,赋值符号“
initial begin//顺序块关键字
tb_sel
编辑
上图的程序执行过程为:仿真开始时,仿真器读取第一条语句的右值并保存,然后继续往下执行读取第二条语句的右值,保存后继续向下执行第三条语句,与上两条语句不同的是,第三条语句读取后不会向下继续执行,而是要延迟10ns将右值赋值给左值后才继续执行第四条语句,要注意的是,第一和第二条语句的右值会在第5ns时将右值赋值给左值,第四条语句先读取右值,延迟20ns后赋值给左值,此时仿真器运行到第30ns。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: OpenWeatherMap API Weather Condition Codes
http://bugs.openweathermap.org/projects/api/wiki/Weather_Condition_Codes OpenWeatherMap 免费,支持获取实时天气、未来5天每3小时的天气、未来16天每天的天气、历史天气,也支…