了解Verilog HDL语法规则吗,看完这篇就知道了

本节介绍Verilog HDL语法规则,包括文字规则、数据对象及运算符的使用等。

Verilog HDL文字规则

1.关键词与标识符

关键词是Verilog HDL中预先定义的单词,它们在程序中有特别的使用目的。已经被用作关键词的单词不可以在程序中另作他用,见表3-1。不同版本的Verilog HDL硬件描述语言中定义的关键词数目略有变化,Verilog 1995的关键词有97个,Verilog 2001共102个。

标识符是用户编程时给对象定义的名称,对象包括:常量、变量、模块、寄存器、端口、连线、示例和beginend块等元素。定义标识符时应遵循如下规则:

只能由26个大小写英文字母、数字和下划线组成。

标识符的第一个字符必须是英文字母或下划线。

字符中的英文字母区分大小写。

【例3-7】判断下面标识符是否合法。

2.注释

与C语言一样,硬件描述语言中的注释也不会被编译。在Verilog HDL中有两种形式的注释方式:

采用/* */,多用于多行注释。

采用//,用于单行注释。

【例3-8】注释举例。

在实际使用中,很多公司的编程规范明确表明,注释行中不提倡采用第一种/**/的注释方式,不允许使用中文注释。

3.常数的表示

在Verilog HDL中,常数用来表示在程序中不随意变化的量,常数分为整数、实数及字符串三大类型。

(1)整数型常数

是数字电路中最常用到的类型,在Verilog HDL中有两种表示方法:

简单的十进制格式,例如-50、6等。

基数格式,其表达方式一般如下:

〈位宽〉是十进制数值表示的常数化成二进制时对应的宽度,〈进制符号〉用进制符号b或B(二进制)、o或O(八进制)、d或D(十进制)、h或H(十六进制)表示常数的进制格式,即二进制、八进制、十进制、十六进制这4种进制表示。数字的位宽可以默认,如果没有定义长度,数的长度由具体机器系统决定(至少是32位)。

【例3-9】常数表示方法举例。

(2)实数型常数

通常用来表示带小数点的常数。实数也有两种表示方法:一种是十进制计数法;另一种是科学计数法。注意小数点两侧必须有数字,否则是错误的表示。

【例3-10】实数表示方法举例。

(3)字符串型常数

字符串是双引号内的字符序列。它必须写在同一行中。例如:

"Hi kitty"。在表达式和赋值语句中,字符串要转换成无符号整数,每一个8位ASCII码代表一个字符。例如:字符串"ab"等价于16'h5758。因此字符串是8位ASCII值的序列。例如,存储字符串"Hi kitty",需要定义8×8位的变量。

数据对象

在Verilog HDL中,凡是可以被赋值的对象就称为数据对象,它类似于一种容器,可以接受不同类型的赋值,在Verilog HDL中,数据对象有两种:常量和变量。

1.常量

常量就是在设计过程中不会发生变化的数据对象,Verilog HDL允许用参数定义语句定义一个标识符来代表一个常量,称为符号常量。符号常量的定义和设置通常是为了设计中的常数更容易阅读和修改。

符号常量定义的格式为:

【例3-11】符号常量定义举例。

2.变量

变量是在设计过程中数值可以改变的数据对象。在Verilog HDL中,变量有两大数据类型:线网类型(nets type)和寄存器型(register type)。

(1)线网类型变量

线网类型变量可以看做硬件电路中元件之间实际连线。它不能存储值,必须受到驱动器或者连续赋值语句的驱动,它是输出值始终根据输入变化而更新的变量,如果没有驱动,那么它将会是高阻态。Verilog HDL提供的常见线网类型变量如表3-2所示。

在表3-2所列若干线网类型中,常用的是wire类型。对于wire类型的变量,其定义的格式如下:

[n-1:0]表示信号的位宽为n位,若没有特别的说明,被定义的信号往往被默认为1位宽度的wire类型变量。

【例3-12】线网类型变量定义举例。

(2)寄存器类型

寄存器类型表示一个抽象的数据存储单元,不与具体硬件对应。它具有状态保持作用,通过赋值语句可以改变寄存器存储的值。寄存器变量的初始值为不确定态。寄存器类型变量共有4种数据类型,见表3-3所示。

在表3-3所列若干寄存器型中,reg型变量是数字系统中存储设备的抽象,常用于具体的硬件描述,因此是最常用的寄存器型变量。对于被定义的reg类型变量,其定义的格式如下:

[n-1:0]表示信号的位宽为n位,若没有特别的说明,被定义的信号往往被默认为1位宽度的reg类型的变量。

【例3-13】寄存器变量类型举例。

若把一个变量定义成integer、real和time等寄存器类型,其方法同定义reg类型一样。integer型变量通常用于对整型常数进行存储和运算。必须注意,integer、real和time等寄存器类型宽度是固定的,因此在定义时不能加入位宽。

【例3-14】

数组类型并不是一种新的数据类型,它是寄存器类型二维数组的形式,是将reg变量进行地址扩展而得到的,它常用来对存储器ROM、RAM进行建模。

数组类型变量的定义格式如下:

【例3-15】数组类型定义及赋值举例。

数据对象被定义后,无论定义成哪种类型,都可以采用如下多种赋值形式:

【例3-16】赋值举例。

运算符

Verilog HDL中定义了多种运算符,按照类别共分为9类,分别是算术运算符、关系运算符、等式运算符、逻辑运算符、位运算符、缩位运算符、移位运算符、条件运算符、位拼接运算符。

1.算术运算符

算术运算符包括+(加)、-(减)、*(乘)、/(除)、%(求模)这5种。

需要注意的是,两个整数做相除运算,商的整数部分作为结果,小数部分截掉。两个整数做求模运算,商的余数部分作为结果,整数部分截去。如果任意一个操作数中含有X或Z,那么整个结果为X。例如:'b001 x+'b0101结果为不确定数'bxxxxx。

【例3-17】算术运算举例。

2.关系运算符

关系运算符包括>(大于)、<(小于)、>=(大于等于)、<=(小于等于)4种。

在关系运算中,如果表达式成立,关系结果为真(逻辑1),否则关系结果为假(逻辑0)。如果操作数中有一位为X或Z,那么结果为X。

【例3-18】关系运算举例。

3.等式运算符

等式运算符包括==(逻辑相等)、!=(逻辑不等)、===(全等)、!==(非全等)4种。

相等运算对两个操作数进行逐位比较,当两个数完全相等时,结果为真(逻辑1),否则结果为假(逻辑0)。若任意一个操作数中含有X或Z,那么结果为X。在全等运算中,允许操作数的某些位为X或Z,只要被比较的两个数对应位完全相同,则全等运算结果就为真。

【例3-19】相等运算举例。

4.逻辑运算符

逻辑运算符包括!(逻辑非)、&&(逻辑与)、||(逻辑或)3种。

在逻辑运算中,将操作数看成一个整体,当操作数不为0时,把它作为逻辑1,否则作为逻辑0,若任意一个操作数中含有X或Z,那么结果为X。

【例3-20】逻辑运算举例。

5.位运算符

位运算符包括~(按位取反)、&(按位与)、|(按位或)、^(按位异或)、^~或~^(按位同或)5种。位运算用于对两个操作数对应位进行运算。

【例3-21】位运算举例。

6.缩位运算符

缩位运算符包括&(与缩位)、~&(与非缩位)、|(或缩位)、~|(或非缩位)、^~或~^(同或缩位)5种。

位运算和缩位运算虽然运算符相同,但是运算过程不同。位运算的操作数有两个,操作数是几位,运算结果也是几位。而缩位运算只有一个操作数,运算时对一个操作数由左向右进行运算,运算结果为1位。

【例3-22】缩位运算举例。

7.移位运算符

移位运算符包括<<(向左移位)、>>(向右移位)。移位操作符将操作数向左、向右移动指定的位数,空出的位置用“0”补充。

【例3-23】移位运算举例。

8.条件运算符

条件运算符为?:(条件运算)。

其格式是:条件表达式?表达式1:表达式2

该运算符的运算过程为:如果条件表达式为真,结果为表达式1的值,否则为表达式2的值。

【例3-24】条件运算举例。

9.位拼接运算符

位拼接运算符为{}。位拼接运算是将小表达式合并形成大表达式的操作。形式如下:

{expr1,expr2,……,exp N}

【例3-25】拼接运算举例。

10.运算符的优先等级

Verilog HDL运算符的优先等级见表3-4,若想改变运算的优先等级,可以加圆括号。

(0)

相关推荐

  • day05_运算符入门

    2020-11-19 21:31:42  阅读:6  来源: 互联网 运算符概述 运算符是指对操作数的运算方式.组成表达式的 Java 操作符有很多种(什么是操作数和操作符,例如 1+2,其中 1 和 ...

  • FPGA的Veilog HDL语法、框架总结

    摘要:Verilog HDL硬件描述语言是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,具有灵活性高.易学易用等特点.Verilog HDL可以在较短的时间内学习和掌握,FPGA的Veilo ...

  • SCL语言基本语法规则:表达式

    SCL:Structured Control Language,结构化控制语言. SCL是一种类似于计算机高级语言的编程方式,只是这种语言编写的程序,可以在PLC中运行.如果学过C语言或者VB语言,就 ...

  • 语法干货:看完这篇,How的用法全都能掌握

    how是一个非常神奇的特殊疑问词,在它后面 加上某些特定的单词,就可以 构成另外一些特殊疑问词,并且这些疑问词 具体询问的类型还都不一样.今天我们就来详细讲讲选项中提到的3个: How soon 在h ...

  • 台州市全民医疗保险报销有哪些规则?看完这篇文章就懂了

    医保人人都在用,但对相关的医疗报销细节往往了解不多.今天,我们一起来了解下台州市全民医疗保险的三个基本问题--报销哪些.不报销哪些.报销多少. 一.报销哪些? 地点要求:必须去定点医疗机构(除急诊外) ...

  • 基本医保报销有哪些规则?看完这篇文章就懂了

    ┃来源:周小白历险记 医保人人都在用,但对相关的医疗报销细节往往了解不多.今天,小保就来带您了解一下基本医疗保险的三个基本问题--报销哪些.不报销哪些.报销多少. 报销哪些? 地点要求:必须去当地定点 ...

  • 《红楼梦》中暗藏社交潜规则,看完受用终身

    "世事洞明皆学问,人情练达即文章." 与人交往是一门人生的必修课,人际关系,就像一门镜子,可以照见我们为人处世的能力. 真正高情商的人,在人际关系中都做到了游刃有余. 其实人和人之 ...

  • 10条高情商社交潜规则,看完豁然开朗

     01  人前不能说的话,人后也不要说. 因为你永远猜不到谁会把你的话传出去.  02  别人可以自嘲,但你不能附和. 别人自嘲是幽默,你一附和就成了贬低.  03  不要高估你和任何人的关系. 人走 ...

  • 想不到交通事故中竟然有这些潜规则,看完恍然大悟……

    交通事故一向是民事案件的一大案源.每年因道路交通事故死亡人数超过10万,道路伤害达50万起,每5分钟约有1人死亡,每1分钟都会有1人因为交通事故而伤残. 可以说,交通事故案件是很多律师躲也躲不掉的.有 ...

  • 中国最狠的潜规则!看完醍醐灌顶,太精辟了!

    中国最狠的潜规则!看完醍醐灌顶,太精辟了!

  • 全国道路命名规则,看完这一篇就足够了

    [卡车之家 原创]最近,小编整理出了一篇国家全新道路的命名规则整体概述了关于普通公路及高速公路的命名方式及编号特点,有需要的卡友不妨耐心的看一下,相信你一定会对国家道路的命名方式豁然开朗! ● 普通公 ...

  • 「新旧大PK」19版新规则,看完之后你是暗爽还是心塞?

    不知道各位球友对于高尔夫规则知道多少呢?相信很多人都只是熟悉基本的或者常用的规则,甚至熟悉都谈不上.(毕竟高尔夫规则书那么厚一本,谁会认真背完啊?又不是要做裁判 ) 你猜这个抛球的动作在新规则里还能用 ...