verilog学习记录(2)——数据类型

本文详细解释了VerilogHDL中的常量(包括数字、二进制等表示及x/z值)、wire型、reg型和memory型变量的区别,以及它们在设计电路中的作用。重点介绍了参数的使用和变量的驱动特性。
摘要由CSDN通过智能技术生成

目录

一、常量

1.1数字

1.1.1 整数

1.1.2x和z值

2.参数(parameter)型

二、变量

2.1wire型

2.2reg型

2.3memory型

三、三种变量的区别

3.1wire型变量

3.2reg型变量

3.3memory变量


一、常量

1.1数字

1.1.1 整数

二进制(b或B)、十进制(d或D)、十六进制(h或H)、八进制(o或O)。

表达方式:

<位宽><进制><数字>省略位宽默认数据位宽32,省略位宽与进制默认数据为32位十进制。
例:
8'b10101111位宽为8的二进制表示,'b表示二进制
8'ha2位宽为8的数十六进制表示

1.1.2x和z值

x和z值在数字电路中,x代表不定值,z代表高阻值。

例:

4'b10x0 //位宽为4的二进制数从低位数起第2位为不定值
4'b101z //位宽为4的二进制数从低位数起第1位为高阻值
1.1.3负数
注意:减号不可以放在位宽和进制之间,也不可以放在进制和具体的数之间。

4. 8'd5 //这个表达式代表5的补数(用八位二进制数表示)
8'd- 5 //非法格式

2.参数(parameter)型

在VerilogHDL中用parameter来定义常量,即用parameter来定义一个标识符代表一个常量,称为符号常量,即标识符形式的常量,采用标识符代表一个常量可提高程序的可读性和可维护性。

例:

parameter msb=7;           //定义参数msb为常量7
parameter e=25, f= 29;     //定义两个常数参数

二、变量

2.1wire型

常用来表示用以assign关键字指定的组合逻辑信号。

2.2reg型

寄存器数据类型。

2.3memory型

通过对reg型变量建立数组来对寄存器建模,可以描述RAM型存储器,ROM存储器和reg文件。

三、三种变量的区别

3.1wire型变量

a,连线型数据,网线类型,一般指RTL生成内部网线

b,表示元器件之间的物理连线,无法保存数据

c,可被连续赋值语句或元件输出驱动

d,值由驱动源提供

e,无驱动源网线缺省值为Z

总结:即wire代表verilog构建模型时内部生成网线。

3.2reg型变量

a,寄存器数据类型,通常用于描述存储单元

b,可保持自身数据直至该变量被赋予新值

c,常用于表示“always”内,代表触发器(触发器,由事件进行触发,即触发端接收到事件发生信号,输出端状态发生反转)。

d,用于表示无符号数

总结:用于数据存放

3.3memory变量

使用方法:reg[n-1:0]存储器名[m-1:0]

reg[n-1:0]定义寄存器大小,存储器名[m-1:0]定义存储器中有多少个这样的寄存

例:reg[7:0] mema[255:0]

一个名为mema的存储器,内部包含256个8位寄存器。

个人认为可以将一个memory变量看作一个书架,reg是书架上排列的书籍,我们需要的具体数据为书中具体内容。我们根据存储器名[a]可以锁定书籍编码即其在书架上的具体摆放位置,从而锁定到我们寻找的是哪一本书(即哪个寄存器),reg[7:0] 则定义书籍大小,从而我们可以获取想要的值。

这样的读取数据相较于reg直接读取会相对慢一些,因为多了一步通过memory寻找reg的过程。

注:一个n位寄存器可以直接赋值,而一个完整存储器不行。

例: rega=0;      //合法赋值语句

        mema=0;   //不合法赋值语句

原因如同我们不能直接将数据具体内容写在书架上一样,memory只能存放reg具体位置,不能存放reg的具体内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

钱多多小姐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值