Verilog HDL 基本概念
Verilog HDL 基本要素
常量
Verilog 中的常量(Constant) 有三种: 整数、实数、字符串
一些整数常数:
8'b11000101 // 宽度为8位的二进制数,数值为 11000101, 等于十进制的197
8‘h8a // 宽度为8位的十六进制,数值为8a,等于十进制的138
5'027 // 宽度为5位的八进制,数值为27,等于十进制的23
4'd10 // 宽度为4位的十进制,数值为10
如果没有明确指明,那么默认是十进制数
变量声明与数据类型
图例
数据类型可以是 net 型、variable 型
net 型变量
net 型相当于硬件电路中各种物理连接,其特点是输出的值紧跟输入值的变化而变化
wire 是最常用的 net 型变量,Verilog HDL 模块中的输入、输出信号在没有明确指定数据类型时,都被默认为 wire型
wire 型信号可以用作任何表达式的输入,也可以用作 assign 语句和实例元件的输出,如Z,其中0表示低电平、逻辑0;1表示高电平、逻辑1
Z表示高阻态。如果没有赋值,默认为高阻态Z
variable 型变量
variable 型变量是可以保存上次写入数据的数据类型,一般对应硬件上的一个触发器或锁存器等存储元件,但并不是绝对的,在综合器综合的时候,会根据其被赋值来具体确定是映射成连线还是映射为存储元件
variable 型变量也包括多种类型
variable 型变量必须在过程语句(inital 或 always )中实现赋值,这种赋值方式称为过程赋值
向量
变量声明格式中的位狂如果为1,那么对应的变量为标量,如果不为1,那么对应的变量为向量,默认为标量。向量的位宽用下面的形式定义
[MSB:LSB]
冒号左边的数字表示向量的最高有效位MSB(Most Significant Bit),冒号右边的数字表示向量的最低有效位LSB(Least Significant Bit)
例如:
wire [3:0] bus; // 4位的 wire 型bus,其中bus[3]是最高位,bus[0]是最低位
reg [31:5] ra; // 27位的reg型向量ra,其中ra[31]是最高位,ra[5]是最低位
reg [0:7] rc; // 8位的reg型向量rc, 其中 rc[0]是最高位,rc[7] 是最低位
向量有两种,一种是向量类向量,另一种是标量类向量,可以使用关键字区分
wire vectored [7:0] databus; // 使用关键字 vectored,表示是向量类向量
reg scalared [31:0] rega; // 使用关键字 scalared,表示是标量类向量
如果没有明确指出,那么默认是标量类向量,对标量类向量可以任意选中其中的一位或相邻几位,分别称为位选择(bit-select) 或域选择(part-select)
A = rega[6]; // 位选择,将向量 rega 的其中一位赋值给变量A
B = rega[5:2]; // 域选择,将向量 rega 的第5、4、3、2 位赋值给变量B
存储器可看作二维的向量。如下就是一个存储器的定义,定义了一个深度为64,每个元素宽度为32bit的存储器
reg [31:0] mem[63:0]; // mem 是深度为64,字长为 32bit的存储器
运算符
Verilong HDL 中定义的运算符包括: 算术运算符、逻辑运算符、位运算符、关系运算符、等式运算符、缩位运算符、移位运算符、条件运算符和拼接运算符
算法运算符
运算符 | 含义 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 求余 |
逻辑运算符
运算符 | 含义 |
---|---|
&& | 逻辑与 |
! | 逻辑非 |
位运算符
运算符 | 含义 |
---|---|
~ | 按位取反 |
& | 按位与 |
^ | 按位异或 |
~^ 或 ^~ | 按位同或 |
关系运算符
运算符 | 含义 |
---|---|
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
等式运算符
运算符 | 含义 |
---|---|
== | 等于 |
!= | 不等于 |
=== | 全等 |
!== | 不全等 |
缩位运算符
运算符 | 含义 |
---|---|
& | 与 |
~& | 与非 |
| | 或 |
~| | 或非 |
^ | 异或 |
~^ 或^~ | 同或 |
移位运算符
运算符 | 含义 |
---|---|
>> | 右移 |
<< | 左移 |
条件运算符
运算符 | 含义 |
---|---|
?: | 条件运算 |
位拼接运算符
运算符 | 含义 |
---|---|
{ } | 拼接 |
总结
(1) 等式运算
原文地址:https://blog.csdn.net/weixin_40398522/article/details/140511120
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!