- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
字符串是双引号内的字符序列。 字符串不能分成多行书写。 例如: INTERNAL ERROR 字符串的作用主要是用于仿真时,显示一些相关的信息,或者指定显示的格式。 字符串变量reg型变量,其宽度为字符串中字符的个数乘以8。 特殊字符必须用字符“\”来说明,见表5.2。 §5.5 字符串(Strings) §5.5 数据类型 Verilog有下面四种基本的逻辑状态。 ◆ 0:低电平、逻辑0或逻辑非 ◆ 1:高电平、逻辑1或“真” ◆ x或X:不确定或未知的逻辑状态 ◆ z或Z:高阻态 Verilog中的所有数据类型都在上述4类逻辑状态中取值,其中x和z都不区分大小写,也就是说,值0x1z与值0X1Z是等同的。 数据类型(Data Type)是用来表示数字电路中的物理连线、数据存储和传输单元等物理量的。 Verilog中的变量分为如下两种数据类型: ◆ net型 ◆ variable型 net型中常用的有wire、tri; variable型包括reg、integer等。 注意:在Verilog-1995标准中,variable型变量称为register型;在Verilog-2001标准中将register一词改为了variable,以避免初学者将register和硬件中的寄存器概念混淆起来。 Net型数据相当于硬件电路中的各种物理连接,其特点是输出的值紧跟输入值的变化而变化。对连线型有两种驱动方式,一种方式是在结构描述中将其连接到一个门元件或模块的输出端;另一种方式是用持续赋值语句assign对其进行赋值。 wire是最常用的Net型变量。 wire型变量的定义格式如下: wire 数据名1,数据名2,……数据名n; Examples: wire a,b; //定义了两个wire型变量a和b wire[7:0] databus; //databus的宽度是8位 wire[19:0] addrbus; //addrbus的宽度是20位 §5.5.1 net型 nets型变量不能储存值! 常用的nets型变量 类 型 功 能 可综 合性 wire,tri 连线类型(两者功能一致) √ wor,trior 具有线或特性的连线(两者功能一致) wand,triand 具有线与特性的连线(两者功能一致) tri1,tri0 上拉电阻和下拉电阻 supply1,supply0 电源(逻辑1)和地(逻辑0) √ trireg 具有电荷保质作用的连线,可用于电容的建模 tri和wire的功能和使用方法完全一样,但后者综合后具有三态功能。 variable型变量必须放在过程语句(如initial、always)中,通过过程赋值语句赋值;在always、initial等过程块内被赋值的信号也必须定义成variable型。 注意:variable型变量并不意味着一定对应着硬件上的一个触发器或寄存器等存储元件,在综合器进行综合时,variable型变量会根据具体情况来确定是映射成连线还是映射为触发器或寄存器。 reg型变量是最常用的一种variable型变量。定义格式如下: reg 数据名1,数据名2,……数据名n; §5.5.2 Variable型 Examples: reg a,b; //定义了两个reg型变量a,b reg[7:0] qout; //定义qout为8位宽的reg型向量 reg[8:1] qout; 常用的variable型变量 类 型 功 能 可综 合性 reg 常用的寄存器型变量 √ integer 32位带符号整数变量,多用于循环变量 √ real 64位带符号实数变量 time 64位无符号时间变量 variable型与net型变量的根本区别是: variable型变量需要被明确地赋值,并且在被重新赋值前一直保持原值。 variable型变量必须通过过程赋值语句赋值!不能通过assign语句赋值! 在过程块内被赋值的每个信号必须定义成variable型! 用reg型变量生成组合逻辑举例: module rw1( a, b, out1, out2 ) ; input a, b; output out1, out2; reg out1; wire out2; assign out2 = a ; always @(b) out1 = ~b; endmodule a out2 BUFF b INV out1 过程赋值语句 连续赋值语句 电平触发 Veril
文档评论(0)