五分钟快速过完Verilog HDL基本概念(5)数据类型

数据类型

数据类型是用来表示数字电路中的数据存储和传送单元。

  • Verilog HDL中共有19种数据类型;其中4个最基本的数据类型为:
    integer型
    parameter型
    reg型
    wire型
    
  • 其它数据类型:large型、medium型、 scalared型、 small型、time型、tri型、tri0型tri1型、triand型、trior型、trireg型、vectored型、wand型、wor型等

常量

在程序运行过程中,其值不能被改变的量,称为常量。

数字(包括整数,x和z值,负数)
parameter常量(或称符号常量)
  • 整数型常量(即整常数)的4种进制表示形式:
    二进制整数(b或B);
    十进制整数(d或D);
    十六进制整数(h或H);
    八进制整数(o或O)。
    
  • 整常数的3种表达方式:
表 达 方 式说 明举 例
<位宽> ’<进制> <数字>完整的表达方式8’b11000101或8’hc5
<进制> <数字>缺省位宽,则位宽由机器系统决定,至少32位hc5
<数字>缺省进制为十进制,位宽默认为32位197

这里位宽指对应二进制数的宽度。

  • parameter常量(符号常量)
用parameter来定义一个标识符,代表一个常量——称为符号常量。
parameter 参数名1 = 表达式,参数名2 = 表达式, ……;
参数型数据的确认符	赋值语句表
  1. 每个赋值语句的右边必须为常数表达式,即只能包含数字或先前定义过的符号常量!
    parameter addrwidth = 16; //合法格式
    parameter addrwidth = datawidth*2; //非法格式
  2. 常用参数来定义延迟时间和变量宽度。
  3. 可用字符串表示的任何地方,都可以用定义的参数来代替。
  4. 参数是本地的,其定义只在本模块内有效。
  5. 在模块或实例引用时,可通过参数传递改变在被引用模块或实例中已定义的参数!

符号常量:标识符形式的常量
parameter datawidth =8,addrwidth = datawidth*2; //合法格式
为什么要使用parameter常量?——这样便于多处数字的一次性修改和书写的简洁、有意义。

变量

在程序运行过程中,其值可以改变的量,称为变量。

  • 其数据类型有19种,常用的有3种:
    网络型(nets type)
    寄存器型(register type )
    数组(memory type)
    

    nets型变量不能储存值!即不能存储输入

  1. nets型变量
    定义——输出始终随输入的变化而变化的变量。表示结构实体(如门)之间的物理连接。
    常用nets型变量:
    wire,tri:连线类型(两者功能一致)
    wor,trior:具有线或特性的连线(两者功能一致)
    wand,triand:具有线与特性的连线(两者功能一致)
    tri1,tri0:上拉电阻和下拉电阻
    supply1,supply0:电源(逻辑1)和地(逻辑0)	
    
  2. register型变量
    定义——对应具有状态保持作用的电路元件(如触发器、寄存器等),常用来表示过程块语句(如initial,always,task,function)内的指定信号 。
    常用register型变量:
    reg:常代表触发器
    integer:32位带符号整数型变量
    real:64位带符号实数型变量
    time:无符号时间变量
    

    register型变量与nets型变量的根本区别是: register型变量需要被明确地赋值,并且在被重新赋值前一直保持原值。
    register型变量必须通过过程赋值语句赋值!不能通过assign语句赋值!
    在过程块内被赋值的每个信号必须定义成register型!