verilog学习笔记

一、数据类型

1.1 物理数据类型

1.1.1 连线型

连线型数据类型功能说明
wire.tri标准连线〔缺省为该类型)
wor,trior多重驱动时,具有线或特性的连线型
wand,trand多重驱动时,具有线与特性的连线型
trireg具有电荷保持特性的连线型数据〈特例)
tri1上拉电阻
tri0下拉电阻
supply1电源线,用于对电源建模,为高电平1
supplyo电源线,用于对“地”建模,为低电平0
wire/tri01xz
00xx0
1x1x
xxxxx
z01xz
wor/trior01xz
001x0
11111
xx1xx
z01xz

 1.1.2 寄存器类型


reg型是数据储存单元的抽象类型,其对应的硬件电路元件具有状态保持作用,能够存储数据,如触发器、锁存器等
reg型变量常用于行为级描述,由过程赋值语句对其进行赋值
 

举例

reg a;//定义一个一位的名为a的reg变量
reg [3:0]b;∥定义一个4位的名为b的reg型变量
reg[8:1]c,d,e;∥定义了三个名称分别为c、d、e的8位的reg型变量 

reg型变量一般为无符号数,若将一个负数赋给g型变量,则自动转换成其二进制补
码形式。

举例 

reg signed[3:0]rega:
rega=-2;∥reg0的值为1110(14),是2的补码

1.2寄存器和连线器的声明

1.2.1连线型数据类型的声明

<net_declaration><drive_strength><range><delay>[list_of_variables];
//net_declaration:包括wire、tri、tri0、tri1、wand.、triand、trior、wor中的任意一种。
//range:用来指定数据为标量或矢量。若该项默认,表示数据类型为1位的标量,超过1位则为矢量形式。
//delay:指定仿真延迟时间.
//list_of_variables:变量名称,一次可定义多个名称,之间用逗号分开,
//drive_strength:表示连线变量的驱动强度,

1.2.2寄存器型数据类型的声明 

reg<range><list_of_register_variables>;
//range为可选项,它指定了reg型变量的位宽,缺省时为1位
//<list of register variables>为变量名称列表,一次可以定义多个名称,之间用逗号分开。
reg [n-1:0]a;
//声明一个n位寄存器a
reg a[n-1:0];
//声明一个寄存器a,由n个1位寄存器构成

1.3抽象类型

 抽象数据类型主要包括整型(integer)、时间型(time)、实型(real)及参数型(parameter)

//整型
integer<list_of_register_variables>;
//例
integer index;
∥简单的32位有符号整数
integer i[31:0]
∥定义了整型数组,它有32个元素

2运算符和表达式

2.1算数运算符

“+”,“-”,“*”,“/”,“%”

2.1.1运算符的位宽

算术表达式结果的长度由最长的操作数决定。在赋值语句下,算术操作结果的长度由操作左端目标长度决定。
 

reg[3:0]A,B,C;
reg[5:0]D;
A=B+C;//4位
D=B+C;//6位

2.2关系操作符

“>”,“<”,“>=”,“<=”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

左岚

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

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

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

打赏作者

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

抵扣说明:

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

余额充值