lljlljlzh1

赋值语句和块语句

0
阅读(2390)

一赋值语句

非阻塞(Non_Blocking)赋值方式(如b <= a)

(1)在语句块中,上面语句所赋的变量值不能立即就为下面的语句所作用;

(2)块结束后才能完成这次赋值操作,而所赋的变量值是上一次赋值得到的;

(3)在编写可综合的时序逻辑模块时,这是最常用的赋值方法。

eg在always模块中有b<<a;这个语句是在always块结束后,才进行赋值;

 

阻塞(blocking)赋值方式(如b = a;)

(1)赋值语句执行完后,块才结束;

(2)b的值在赋值语句执行完后就立刻改变的;

(3)在时序逻辑中使用时,可能会产生意想不到的结果;

 

二块语句

begin:块名

      块内声明语句

      语句1;

      语句2;

          .,.

       语句n

end

(1)块名即该块的名字,一个标识名

(2)块内声明语句可以是参数语句,reg型变量声明语句,integer型变量,声明语句和real型变量声明语句。

 

并行块

(1)块内的语句是同时执行的,即程序流程控制一进入到该并行块,块内的语句则开始同时并行的执行。

(2)块内每条语句的延时时间是相对于程序控制进入到该块内的仿真时间。

(3) 延时时间是用来给赋值提供执行时序的

(4)当按时间时序排序在最后的语句执行完或一个disable语句执行时,程序流程控制跳出该程序块。

 

并行块格式

fork:块名

块内声明语句

   语句一

  语句二

  。。。

   语句三

join

其中:

(1)块内即标识符的一个名字,相当于一个标识符。

(2) 块内说明语句可以是参数说明语句,reg型变量声明语句,integer型变量声明语句,real型变量声明语句,time型变量声明语句和(event)说明语句

 

块名:在Verilog语言里,所有的变量都是静态的,即所有的变量都只有一个唯一的存储地址,因此进入或跳出块并不影响存储在变量内的值