1 Verilog 基本语法

一、常量

  常量按类型分为数字常量、字符常量和其他。

1.数字常量

  数字常量分为整数和实数。

  整数的表示形式:<+/-><数字位宽>'<数字类型><数字>

    负号表示为负数,负数通常表示为二进制的补码形式:-6‘d3表示6位的用二进制补码形式存储的十进制3,表示负数;

  数字类型:十进制(D或d)、十六进制(H或h)、二进制(B或b)、八进制(O或o);

  数字:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

  实数表现形式:

    十进制,如:4.0、3.567;

    科学计数法:3.6e2、5e-4;

2.字符串

  双引号括起来的字符队列,字符串不可多行书写,即不能含回车符。如“hello verilog” //为一字符串

3.其他

  x和z值以及下划线“_”和“?”。

  x表示不确定值,z表示高阻值:x或z在二进制中为1位的x或z,在八进制中位3位,在十六进制中为4位。8'b1100zzzz  //相当于8'bcz

  "_"可出现在数字常量的任何位置,只是提高可读性,编译时会被忽略。

  "?"是z的另一种表示,使用问号是增加casex和casez语句的可读性,"?"(高阻抗)表示“不必关心”的情况,如4'b10??  //相当于4'b10zz

二、数据类型  

  Verilog有两大数据类型:线网类型、寄存器类型

1.线网类型

   线网结构相当于硬件电路的各种物理连接,特点是输出值跟随输入值变化而变化

定义格式:

  wire[位宽]<数据名>:位宽缺省默认为1;

  多位wire类型变量:wire[n-1:0]<数据名>或wire[n:1]<数据名>   表示数据宽度为n位

  为避免使用关键字,建议数据名用大写字母

2.寄存器类型

  具有保持状态的电路元件,如触发器。寄存器类型只能在initial和always语中,通过过程赋值

在initial和always过程块中,被赋值的信号必须定义成寄存器类型,即使某些实际设计信号实际上不是寄存器类型

  verilog中共有4种寄存器变量:reg型、integer型(32位带符号整形)、real型(64位带符号实型)、time型(无符号时间变量)。

定义格式:

  与wire类型相似。

  reg[位宽]<数据名>:位宽缺省默认为1;

  多位reg类型变量:reg[n-1:0]<数据名>或reg[n:1]<数据名>   表示数据宽度为n位

3.参数型(parameter)

  用parameter定义的参数代表常量,不能进行赋值操作。

定义格式:

  parameter <参数名>=表达式:parameter WIDTH=256; //定义宽度为常数256

 

posted @ 2018-05-25 15:25  骏骏  阅读(2460)  评论(0编辑  收藏  举报