五、赋值语句和块语句
5.1 赋值语句
在Verilog HDL中,信号有两种赋值方式:非阻塞赋值和阻塞赋值;
(1)非阻塞赋值(b<=a)
在语句块中,非阻塞赋值语句所赋的变量值不能立即就为下面的语句所用;
块结束后才能完成这次赋值操作,而所赋的变量值时上一次赋值得到的;
在编写可综合的时序逻辑模块时,这是最常用的赋值方法;
(2)阻塞赋值(b=a)
赋值语句执行完后,块才结束;
b的值在赋值语句执行完后立即就改变的;
在时序逻辑中使用时,可能会产生意想不到的结果。
在Verilog中,always程序块中的reg型信号都采用非阻塞赋值方式,always块内的下一条语句执行后,b不等于a,而是保持原来的值,always块结束后才进行赋值。
5.2 块语句
在Verilog HDL中,块语句有两种:
(1)begin_end 通常用来标示顺序执行的语句,用它来标示的块称为顺序块。
顺序块有以下特点:
块内的语句按顺序执行,即只有上面一条语句执行完后下面的语句才能执行;
每条语句的延迟时间是相对前一条语句的仿真时间而言的;
直到最后一条语句执行完,程序流程控制才跳出该语句块。
(2)fork_join 通常用来标示并行执行的语句,用它来标示的块称为并行块。
并行块有以下特点: