Verilog HDL基础语法

一、概念

        verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

二、基础知识

在数字电路中一般使用逻辑值0和1代表逻辑的假和真;

逻辑0:表示低电平,对应电路的GND;

逻辑1:表示高电平,对应电路的VCC;

逻辑X:表示未知,有可能是高电平,也有可能是低电平;

逻辑Z:表示高阻态,外部没有激励信号,是一个悬空状态。

1、进制转换

Verilog数字进制格式包括二进制(B)、八进制(O)、十进制(D)和十六机制(H)。

一般常用的为二进制、十进制和十六进制。

例子:

二进制表示如下:4‘b0101表示4位二进制数字0101

十进制表示如下:4‘d2表示4位十进制数字2(二进制0010)

十六进制表示如下:4'ha表示4韦十六进制数a(二进制1010)

2、数制转换

R 进制数转换为十进制数: 按权展开,相加。
十进制数转化为 R 进制数 :整数部分,除 R 取余法,除到商为 0 为止。小数部分,乘 R
取整法,乘到积为 0 为止。
二进制数转化八进制数 :三位一组,整数部分左边补 0,小数部分右边补 0。反之亦然。
二进制数转化十六进制数 :四位一组,整数部分左边补 0,小数部分右边补 0。反之亦然。

3、标识符

        标识符用于定义模块名、端口名、信号名等。

        标识符可以使一组任意字母、数字、$符号和_下划线)符号的组合;

        但是标识符的第一个字符必须是字母或下划线;

        标识符是区分大小写的。

三、数据类型

        在verilog语言中,主要有三大数据类型:

                寄存器型(reg)、线网型(wire)和参数型,真正在数字电路中起作用的类型是reg型和wire型 。

1、寄存器类型(reg):

寄存器表示一X个抽象的数据存储单元,通过赋值语句可以改变寄存器存储的值。

寄存器数据类型的关键字是reg,reg数据的默认初始值为不定值X。

reg类型的数据只能在always语句和initial语句中被赋值。

        如果该过程语句描述的是时序逻辑,即always语句带有时钟信号,则该寄存器变量对应为触发器;

        如果该过程语句描述的是组合逻辑,即always语句不带有时钟信号,则该寄存器对应为硬件连线;

2、线网类型(wire)

        线网数据类型表示结构实体(例如门)之间的物理连线。

        线网类型的变量不能储存值,它的值是由驱动它的元件所决定的。

驱动线网类型变量的元件有门、连续赋值语句、assign等。

如果没有驱动元件连接到线网类型的变量上,则该变量就是高组的,即其值为z。

线网数据类型包括wire型和tri型,其中最常用的就是wire类型。

3、参数类型(parameter):

        参数其实就是一个常量,在Verilog HDL中用parameter定义常量。

        可以一次定义多个参数,参数与参数之间需要逗号隔开。

        每个参数定义的右边必须是一个常数表达式。

        参数型数据常用于定义状态机的状态、数据位宽和延迟大小等。

        采用标识符来代表一个常量可以提高程序的可读性和可维护性。

        在模块调用时,可通过参数传递来改变被调用模块中已定义的参数。

四、运算符                                                                                                                                          Verilog中的操作符按照功能可以分为以下几种类型:

①算数运算符

②关系运算符(比较两个参数的大小)

③逻辑运算符(与或非)

④条件运算符(Verilog特有的运算符)

a?b:c 中a表示一个判断条件,?表示是否满足a这个样判断条件,如果判断条件满足执行第一项(b),不满足则执行第二项(c)

result = (a>=b) ? a : b;这个例子说明如果(a>=b)则把a的值赋值给result,反之。

⑤位运算符(按位操作)

        注意:如果A和B位宽不一致,需要在位宽少的数前面补0(高位补0),补成相同的位宽,然后再进行按位操作。

⑥移位运算符(verilog中常用)

⑦拼接运算符(verilog特有)

     运算符的优先级:(最后一个问号表示条件运算符)

注意注意注意!在使用verilog编写表达式,一定要考虑运算符的优先级,否则实际计算出来结果可能与预期不一致,编写比较长的表达式要多用括号,整个结构会比较明了,减少出错概率。   

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值