教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

Verilog中的一些语法和技巧

来源:网络收集 时间:2026-05-03
导读: 1、. 2、. 3、Reg型的数据类型默认初始值为X。reg型数据可以赋正值也可以赋负值,但是当一个reg型数据是一个表达式的操作数的时候,他的值被当做无符号数及正值。 4、在数据类型中?和Z均表示高阻态。 5、Reg型只表示被定义的信号将用在“always”模块内,并

1、.

2、.

3、Reg型的数据类型默认初始值为X。reg型数据可以赋正值也可以赋负值,但是当一个reg型数据是一个表达式的操作数的时候,他的值被当做无符号数及正值。

4、在数据类型中?和Z均表示高阻态。

5、Reg型只表示被定义的信号将用在“always”模块内,并不是说reg型一定是寄存器或触发器的输出。虽然reg型信号常常是寄存器或触发器的输出但是并不一定总是这样。

6、Verilog语言中没有多维数组的存在。Memory型数据类型是通过扩展reg型数据的弟子和范围来生成的。其格式如下reg[n-1:0]存储器名[m-1:0]; 7、在除法和取余的运算中结果的符号和第一个操作数的符号位是相同的。 8、不同长度的数据进行运算:两个长度不同的数据进行位运算时,系统会自动地将两者按有端对齐,位数少的操作数会在相应的高位用0填满以便连个操作数安慰进行操作。

9、= = =与!= = =和= =与!= =的区别:后者称为逻辑等是运算符,其结果是2个操作数的值决定的。由于操作书中某些位可能不定值x和高阻态z结果可能是不定值x。而 = = =和!= = =运算符对操作数的比较时对某些位的高阻态z和不定值x也进行比较,两个操作数必须完全一致,其结果才是1,否则是0. 10、

非阻塞和阻塞赋值方式:非阻塞赋值方式(如a<=b)上面语句所赋得变

量值不能立即被下面语句所用,(2)快结束后才能完成这次赋值操作 3在编写克综合的时序逻辑模块时这是最常用的赋值方法。 阻塞赋值(如a=b) 赋值语句执行完后,块才结束 2 b的值在赋值语句完成后立即执行 3在时序逻辑使用中,可能产生意想不到的结果。 11、

模块的描述方式:(RTL为寄存器传输级描述)

“(1)数据流描述方式:数据流行描述主要用来描述组合功能,具体用“assign”连续赋值语句来实现。分为两种a、显式连续赋值语句;

1

连线型变量类型[连线型变量为快]连线型变量名 Assign #(延时量) 连线型变量名=赋值表达式;

显式连续赋值语句包含了两条语句;第一条是对连线型变量的进行类型说明的说明语句;第二句是对这个已得到声明的连线型变量进行连续赋值语句。 影视赋值语句:连线型变量类型(复制驱动强度)[连线型变量位宽]#(延时量)连线性变量名=赋值表达式。隐式连续赋值语句是把连线性变量说明语句和连线性变量连续赋值语句结合在一条语句中。他可以对连线型变量进行说明的同时进行连续赋值 。

Assign 连续赋值语句的功能是:当赋值表达式中的变量的只发生变化时,重新计算赋值表达式的值,并在指定的时延后将得到的结果赋给左端的连线性变量。Assign只能实现组合功能。而reg型数据可以可以存储过程赋值的最终结果。 端口默认为连线性的不用定义一般,只要输入发生变化输出马上发生变化。 (2)行为描述方式:

A、initial语句:此语句只执行一次。 B、always语句:次语句循环执行。

只有寄存器类型数据能够在这两种语句中被赋值。寄存器类型数据在被赋新值前保持所有值不变。以上两种语句在0时刻并发执行。 (3)、结构描述方式

结构描述是通过实例进行描述的方法,他将verilog中预定义的基本元件实例嵌入到语言中,监控实力的舒服,一旦其中任何一个发生变化,便重新运算并输出。 在verilog HDL中可以使用如下结构描述部件:

A、用户自己定义的模块b、用用户自定义元件UDP c、内置门级元件 d、内置开关级元件 (4)混合型描述

11、连续赋值语句与过程赋值语句的区别:

我觉得这个在刚开始学习verilog时,是会有一些疑问的!

a、从语法上来看,连续赋值语句由“assign”关键词来表示,而过程赋值语句中则不包含

b、连续赋值语句中左侧的被赋值数据类型必须是线网型数据,而过程赋值语句

2

中的被赋值数据类型则必须是寄存器类型的变量

c、连续赋值语句不能出现在过程快(initial 过程快或者always过程块)中,而过程赋值语句则只能出现在过程快中

d、连续复制语句主要用来对组合逻辑电路进行建模以及对线网型数据间的连接进行描述,而过程赋值语句主要用来对时序逻辑电路进行行为描述

e、连续赋值语句对被赋值线网型数据的赋值是“连续的”(即连续复制语句产生作用后,赋值表达式中的信号的任何变换都将立即反映到被赋值线网型数据的取值上,这也是我们有时会使用“连续驱动”这个术语的原因),而在过程赋值语句情况下,只有在过程赋值语句被执行时才执行赋值操作,语句执行完后被赋值变量的取值不再受到赋值表达式的影响.

12、间隔符和注释符:verilog HDL中的间隔符包括空格(\\b)、tab(\\t)、换行符(\\n)以及换页符。

注释符有2种://和/*???.*/ 后为多行注释符用于对多行语句注释;前者为单行注释符,只对注释符所在的行有效。

13、数值:下划线除了不可以放于数值的首位意外,可以随意用在整型数和实型数之间,他们对数值的大小没有任何的影响,只是为了提高可读性。

在verilog中有二进制(b或者B)、十进制(d或者D)、八进制(o或者O)、十六进制(h或者H)

格式: 用于指定所表示数的位宽,在数值的表示中式可以缺省的.位宽小于数值的实际位数时,相应的高位部分被忽略;当位宽大于实际的位数,且数值的最高位是0或者1时,相应的高位补零;当位宽高于数值的实际位数,但数值的最高位是x或者z时相应的高位部分补x或者z。二进制中的x或者z表示一位处于x或者z,八进制的表示三位,十六进制的表示4位。 14、实型数及其表示方法

Verilog HDL中的实数可以用十进制与科学计数法两种格式来表示,如果采用十进制数格式,小数点两边必须有数字,否则为非法字符。

3

如 3.8E10 2.1e-9; 15、字符串

字符串是用双引号括起来的字符序列,他必须包含在同一行中,不能分成多行书写。如字符串用作verilog HDL表达式或赋值语句中的操作数,则字符串被看做8位的ASCII值序列 ,即一个对应8位的ASCII码。

在verilog中采用寄存器变量来存储字符串,寄存器变量的位数要大于字符串的最大长度。需要注意的是,verilog HDL中并不需要特殊位来存储终止符。可以采用标准操作符对字符串进行诸如连接类的操作。在操作过程中字符串变量位数大于字符串的实际长度,则字符串变量的高位补零。 Reg[8*12:1]stringvar Initial

Begin string=“hello woeld!”; End

特殊字符:\\n 换行符

\\t tab键 \\\\ 符号\\

\\*符号* \\ddd三位八进制数表示的ASCII值 %%符号% 16、数据类型

(1)、物理数据类型:分为连线性和寄存器型 变量可以取0、1、x、z,中的认可一个。X表示一个位置初始状态的变量,或者由于多个驱动源试图将其设定为不同的值而引起的冲突性连线性变量,z表示高祖状态或浮空量。 物理类型数据分为连线型和寄存器型亮中

连线型数据对应的是硬件电路的物理信号连线,没有电荷的保持作用(trireg除外)。连线型数据必须有去动员驱动,有两种方式对他进行驱动:一种是结构描述中把它连接到一个们或者模块的输出端;二是用连续赋值语句assign对其进行复制。当没有驱动源对其驱动时,他将保持高阻态 连线型数据 Wire,tri Wor,trior Wand,triand Tri1 功能描述 两种常见类 …… 此处隐藏:2573字,全部文档内容请下载后查看。喜欢就下载吧 ……

Verilog中的一些语法和技巧.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/453558.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)