[Verilog][初学]语法基础(1)逻辑系统、常量与变量

做一些关于Verilog的简要笔记,方便日后快速复习,如有错漏希望您能够不吝赐教

  1. 四值逻辑系统
    ‘0’ ‘1’ ‘x’ ‘z’(x:表示未确定的值;z:表示高阻抗)
  2. 整数常量和实数常量
    整数表示:<位数(缺省则为32位)>’<数基b/o/d/h(缺省为十进制d)><有效数字(包含x,z;超出有效范围则截去高位)>
    实数表示:可以用十进制或者科学记数法表示
    以下是常量举例:
//整数举例
12
'h83a			//默认32bits
8'b1100 0z1x	//可使用x、z,且不区分大小写
//实数
6.3
32e-4
  1. 数据类型
    net(线网类型) 实际上net是个大类
    常用的net_kind有wire、tri、supply1(电源)、supply0(地)、wor(线或)、wand(线与)
    如何定义net?
    net_kind [msb:lsb] net1,net2…
    下面用wire举例实现定义net:
wire data; 			//定义1位数据线
wire [7:0]Addr;		//定义8位地址线

net需要被持续驱动,驱动它的元件可以是门和模块。常用assign关键字指定赋值。若没有驱动它的元件,那么它的缺省值为z。

register(寄存器类型)
常见的寄存器类型:

regintegerrealtimerealtime
无符号型32位有符号整型变量(通常用作不会由硬件实现的数据处理)双精度带符号的浮点变量64位无符号整型变量,用于仿真时间与real内容一致,但可以用作实数仿真时间

那么如何定义reg?
reg [msb: lsb] reg1,reg2…
下面举例说明:

reg [3:0]counter1;	//定义了一个四位寄存器
integer A,B,C;		//定义三个整型寄存器

register表示抽象出来的数据存储单元,只能在always和initial等过程语句中被赋值,其变量具有缺省值x。

reg与wire的不同点

赋值环境不同待发现
wire在assign关键字后进行赋值,reg在关键字always、initial等关键字后被赋值

最后来一些个人想法和补充:
net类型很大程度上是为了信号量的传输,所以其缺省值为z(高阻态);
而register类型多用于表示数据变量,时间或者其他的类型的数据存储量,所以其缺省值为x。

module中,若未加声明那么它的端口一般为wire型,想要修改这个默认的话,可以由下面这句编译指导改变:
'default_nettype

(漏讲了module等概念放在下次吧,我将且理解为模块,其内部是对于各个端口和信号的逻辑描述)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值