您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制Verilog HDL语言基础之赋值语句和块语句 正文
Verilog HDL语言基础之赋值语句和块语句

Verilog HDL语言基础之赋值语句和块语句

点击数:7160 次   录入时间:03-04 11:54:21   整理:http://www.55dianzi.com   电脑-单片机-自动控制

  (2)块内说明语句可以是参数说明语句、reg型变量声明语句、integer型变量声明语句、real型变量声明语句、ime型变量声明语句或者事件(event)说明语句。

  下面举例说明。

  例5:并行块1。

  fork

  #50   r = 'h35;      //在绝对时间50单位后,r被赋值

  #100  r = 'hE2;      //在绝对时间100单位后(非绝对时间150),r再次被赋值

  #150  r = 'h00;

  #200  r = 'hF7;

  #250  ->  end_wave;  //在绝对时间250单位后,触发事件end_wave

  join

  在这个例子中用并行块来替代前面例子中的顺序块来产生波形,用这两种方法生成的波形是一样的。

  3.块名

  在Verilog HDL语言中,可以给每一个块取名字,只需将名字加在关键词begin或fork后面即可,这样做的原因有以下几点。

  (1)这样可以在块内定义局部变量,即只在块内使用的变量。

  (2)这样可以允许块被其他语句调用,如被disable语句调用。

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

  基于以上原因,块名就提供了一个在任何仿真时刻确认变量值的方法。需要注意的是,块名和变量名一样,都不能是关键词。

  4.起始时间和结束时间

  在并行块和顺序块中都有一个起始时间和结束时间的概念。对于顺序块,起始时间就是第一条语句开始被执行的时间,结束时间就是最后一条语句执行完的时间。而对于并行块来说,起始时间对于块内所有的语句是相同的,即程序流程控制进入该块的时间,其结束时间是按时间排序在最后的语句执行完的时间。

  当一个块嵌入另一个块时,块的起始时间和结束时间是很重要的。跟在块后面的语句只有在该块的结束时间到了才能开始执行,也就是说,只有该块完全执行完后,后面的语句才可以执行。

  在fork_join块内,各条语句不必按顺序给出,因此在并行块里,各条语句在前还是在后是无关紧要的,如下所示。

  例6:并行块2。

  fork

  #250  -> end_wave;       //按下面几条语句顺序执行结果和例[6]的执行结果一样

  #200  r = 'hF7;

  #150  r = 'h00;

  #100  r = 'hE2;

  #50   r = 'h35;

  join

  在这个例子中,各条语句并不是按被执行的先后顺序给出的,但同样可以生成前面例子中的波形。

  关键词

  在Verilog HDL中,所有的关键词是事先定义好的确认符,用来组织语言结构。关键词是用小写字母定义的,因此在编写原程序时要注意关键词的书写,以避免出错。下面是Verilog HDL中使用的关键词(请参阅附录:Verilog语言参考手册):

  always、and、assign、begin、buf、bufif0、bufif1、case、casex、casez、CMOS、deassign、default、deFParam、disable、edge、else、end、endcase、endmodule、endfunction、endprimitive、enDSPecify、endtable、endtask、event、for、force、forever、fork、function、higHz0、highz1、if、initial、inout、input、integer、join、large、macromodule、medium、module、nand、negedge、nmos、nor、not、notif0、notifl、or、output、parameter、pmos、posedge、primitive、pull0、pull1、pullup、pulldown、rcmos、reg、releses、repeat、mmos、rpmos、rtran、rtranif0、rtranif1、scalared、small、specify、specparam、strength、strong0、strong1、supply0、supply1、table、task、time、tran、tranif0、tranif1、tri、tri0、tri1、triand、trior、trireg、vectored、wait、wand、weak0、weak1、while、wire、wor、xnor、xor。

  在编写Verilog HDL程序时,变量名、端口名、块名等的定义不要与这些关键词冲突。



上一页  [1] [2] [3] 


本文关键字:暂无联系方式电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制