FPGA学习日记——03Verilog的数据类型与基本运算符

Verilog的数据类型、变量与运算符

1、数据类型

Verilog数据类型共有19种,但经常使用的有reg、wire、parameter等。

  • reg是寄存器数据类型的关键字,通过赋值语句能改变寄存器中的值,与触发器储存器值类似,其定义方式如下:

    reg [n-1:0] 数据名1,数据名2,...,数据名i;//[n-1:0]表示数据宽度,即该数据有几位
    reg [n:1] 数据名1,数据名2,...,数据名i;//一次定义多个时使用逗号分隔
    

    reg型数据初始值是不固定的,赋值时可以赋正值也可以赋负值,但是它的值作为操作数时当作无符号数。

  • wire常用来表示指定的组合逻辑信号。Verilog程序模块中输入、输出信号均默认为wire型。定义方式与reg类型类似:

    wire [n-1:0] 数据名1,数据名2,...,数据名i;//[n-1:0]表示数据宽度,即该数据有几位
    wire [n:1] 数据名1,数据名2,...,数据名i;//一次定义多个时使用逗号分隔
    

2、常量

在程序运行过程种不能改变的量称为常量

1. 数字

在verilog中数字有整数、负数、下画线和X/Z值的区别

  • 整数,表示方式有4种进制形式:B、O、D、H分别表示二进制、八进制、十进制、十六进制,对大小写不敏感。表达方式有三种

    • <位宽>、<进制>和<数字>,最全面的描述形式
    • <进制>、<数字>这种方式采用默认位宽,具体宽度由机器结构决定,但是不少于32位
    • <数字>这种方式采用默认位宽、默认的十进制

    表达式中,位宽指明了数字所占用的位数

    8'b10101100 //位宽为8的二进制数表示法
    8'h3a //位宽为8的十六进制表示法,因为每个十六进制占用4个而二进制位
    
  • 负数,在位宽表达式前加上“-”,必须加在表达式的最前面

    -8'd5  //表示-5的补数,八进制表示法
    8d'-5  //错误格式 
    
  • 下画线,用来分隔数字表达式提高程序的可读性,只能用在具体数字之间

    16'b1111_0011_110_00_101  //合法格式
    8'b_1100_0011  //非法格式,只能用在具体数字之间
    
  • X/Z值,X代表不定值,Z代表高阻值,一般不使用

2.参数型parameter

使用parameter定义标识符代表一个常量,能提高程序的可读性和可维护性,多个定义时,使用逗号分隔,其格式如下:

parameter 参数名1 = 表达式,参数名2 = 表达式,...,参数名n = 表达式;

等号右侧的表达式必须是常数表达式,即是数字或已经定义过的参数。

parameter msb = 7, msa = 6; 
parameter e = msb + 1;

3、变量

变量是一种在程序中可以改变值的量,设计时只用reg和wire两种信号类型表示变量,且仅在以下情况使用reg类型

  • 可综合代码:由本模块中的always产生的信号
  • 测试代码:用initial产生的信号

以上情况之外的均使用wire类型。一般来说reg类型信号是寄存器或触发器的输出,但也存在不产生寄存器的可能,夏老师的书中也强调了reg型只表示定义的信号将用到always块内。

4、运算符

赋值运算符按功能可以分为:

  • 算术运算符(+、-、*、/、%)
  • 赋值运算符(=、<=,时序逻辑用<=,组合逻辑用=)
  • 关系运算符(>、<、=、<=)
  • 逻辑运算符(&&、||、!)
  • 位运算符(~、|、^、&)
  • 移位运算符(<<、>>)
  • 拼接运算符({})
  • 条件运算符(?:)
1.算数运算符
  • +加法运算符,msb + msa
  • -减法运算符,msb - 3
  • ×乘法运算符,msa * 2
  • /除法运算符,msb / 4,整数的除法运算要舍去小数点后的值
  • %求余运算符,a % 7,结果的符号采用第一个操作数的符号位
2.位运算符
  • ~按位取反
  • &按位与
  • |按位或
  • ^按位异或
  • ^~按位同或
  • 24
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

功成狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值