verilog数据类型运算符和表达式
(2012-09-24 20:57:37)
标签:
数据名数据类型寄存器常量表达式 |
分类: FPGA学习 |
数据类型
常量的数据类型
1、二进制b八进制o十进制d十六进制h
<位宽> <进制> <数字>;
<进制> <数字>;//缺省位宽为32位
<数字>;//缺省进制十进制
8'b10101000
12'o2547
8'ha8
168
'b1010
2、x和z值
x为不确定值z代表高阻值
z可以写成?
3、parameter常量的定义
格式
parameter 参数名1=表达式,参数名2=表达式,。。。
用parameter定义一个标识符代表一个常量称为符号常量。。。。。类似于c语言中的宏定义。
常用数据类型
1、连线类型
格式
wire 数据名1,数据名2,。。。//位宽为1位
wire[n:1] 数据名1,数据名2,。。。。
[n:1]代表数据的位宽
连线类型不能出现在过程语句中(initial或always)
2、寄存器类型
寄存器类型变量反映具有状态保持功能的变量,在新的赋值语句执行以前,寄存器类型变量的值一直保持原值。
在always块中,被赋值的信号都必须定义为寄存器类型。
如果仿真时未进行赋值,则仿真工具认为其不确定
格式
reg 数据名1,数据名2.。。。
多位寄存器类型
reg[n-1:0] 数据名1,数据名2,。。。
reg[n:1] 数据名1,数据名2,。。。
运算符和表达式
1、算术运算符
+ - * / % **(平方运算符)
2、关系运算符
!= 不等于
<
>
<=
>=
===等于(包含高阻态z和不确定状态x)
!== 不等于(包含高阻态z和不确定状态x)
声明关系假返回0,真返回1,不确定返回x
3、逻辑运算符
运算结果都是一位逻辑值
||
!
4、位运算符
按位进行逻辑运算
1)取反 ~
2)与&
3)或|
4)异或^
5)同或^~
5、缩减运算符
单目运算符包括与&
与非~&
或|
或非~|
异或^
同或~^
缩减运算符是对单个操作数进行逻辑运算,最后结果为一位的二进制数。
reg [3:0] a;
b= &a;//等效于b=((a[0]&a[1])&a[2])&a[3];
6、移位运算符
>>右移
<<左移
7、条件运算符
?:是三目运算符
格式
sigal = condition ?true_expression:false_expression;
类似c中的表达式
8、位连接运算符
可以将多个信号的某些位连接起来进行运算操作,其符号为{}