《第4讲 Verilog数据类型与表达式.ppt》由会员分享,可在线阅读,更多相关《第4讲 Verilog数据类型与表达式.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第4讲讲数据类型与表达式数据类型与表达式n nVerilogVerilogHDLHDL提供了丰富的提供了丰富的提供了丰富的提供了丰富的数据类型数据类型数据类型数据类型,本讲把,本讲把,本讲把,本讲把VerilogVerilogHDLHDL的数据分为的数据分为的数据分为的数据分为常量常量常量常量和和和和变量变量变量变量两类,并两类,并两类,并两类,并分别介绍其特点和使用方法。分别介绍其特点和使用方法。分别介绍其特点和使用方法。分别介绍其特点和使用方法。n n表达式表达式表达式表达式是操作符、操作数和标点符号序列,其是操作符、操作数和标点符号序列,其是操作符、操作数和标点符号序列,其是操作符、操
2、作数和标点符号序列,其目的是用来说明一个计算过程。目的是用来说明一个计算过程。目的是用来说明一个计算过程。目的是用来说明一个计算过程。程序中的大部分语句是由表达式构成的。本讲程序中的大部分语句是由表达式构成的。本讲程序中的大部分语句是由表达式构成的。本讲程序中的大部分语句是由表达式构成的。本讲将给出操作符和操作数的种类及正确用法。将给出操作符和操作数的种类及正确用法。将给出操作符和操作数的种类及正确用法。将给出操作符和操作数的种类及正确用法。主要内容主要内容(一)(一)(一)(一)常量常量常量常量n n在程序运行过程中,其值不能被改变的量称在程序运行过程中,其值不能被改变的量称在程序运行过程中
3、,其值不能被改变的量称在程序运行过程中,其值不能被改变的量称为常量。为常量。为常量。为常量。VerilogVerilogHDLHDL有有有有整型、实数型、字整型、实数型、字整型、实数型、字整型、实数型、字符串型符串型符串型符串型3 3种常量。种常量。种常量。种常量。n n在整型或实数型常量的任意位置可以随意插在整型或实数型常量的任意位置可以随意插在整型或实数型常量的任意位置可以随意插在整型或实数型常量的任意位置可以随意插入下划线入下划线入下划线入下划线“_”_”(但是不能当作首符号),这(但是不能当作首符号),这(但是不能当作首符号),这(但是不能当作首符号),这些下划线对数本身并没有意义,但
4、是当数字些下划线对数本身并没有意义,但是当数字些下划线对数本身并没有意义,但是当数字些下划线对数本身并没有意义,但是当数字很长时使用下划线可以提高可读性。很长时使用下划线可以提高可读性。很长时使用下划线可以提高可读性。很长时使用下划线可以提高可读性。一、数据类型一、数据类型n nVerilogVerilogHDLHDL有有有有4 4种种种种基本的基本的基本的基本的逻辑逻辑逻辑逻辑状状状状态态态态:00表示逻辑表示逻辑表示逻辑表示逻辑0 0或或或或“假假假假”;11表示逻辑表示逻辑表示逻辑表示逻辑1 1或或或或“真真真真”;xx表示未知;表示未知;表示未知;表示未知;zz表示高阻。表示高阻。表示
5、高阻。表示高阻。n n注意:注意:注意:注意:x x值和值和值和值和z z值都是不分大小写的,如:值都是不分大小写的,如:值都是不分大小写的,如:值都是不分大小写的,如:值值值值0 x1z0 x1z与值与值与值与值0X1Z0X1Z相同。相同。相同。相同。n nVerilogVerilogHDLHDL的常量是由以上这的常量是由以上这的常量是由以上这的常量是由以上这4 4种基本值组种基本值组种基本值组种基本值组成的。成的。成的。成的。VerilogVerilogHDLHDL的整数有两种书写格式:的整数有两种书写格式:的整数有两种书写格式:的整数有两种书写格式:n n十进制数格式;十进制数格式;十进
6、制数格式;十进制数格式;n n基数格式。基数格式。基数格式。基数格式。(1 1)十进制数格式是一个可以带正负号的数字)十进制数格式是一个可以带正负号的数字)十进制数格式是一个可以带正负号的数字)十进制数格式是一个可以带正负号的数字序列,代表一个有符号数,如下例:序列,代表一个有符号数,如下例:序列,代表一个有符号数,如下例:序列,代表一个有符号数,如下例:n n32/32/十进制数十进制数十进制数十进制数3232n n-15/-15/十进制数十进制数十进制数十进制数-15-151整型常量(整型常量(整数整数)(2 2)基数格式的数通常是无符号数,形式如下:)基数格式的数通常是无符号数,形式如下
7、:)基数格式的数通常是无符号数,形式如下:)基数格式的数通常是无符号数,形式如下:sizebasesizebasevaluevaluen nsizesize定义常量的位数(长度),这是可选项;定义常量的位数(长度),这是可选项;定义常量的位数(长度),这是可选项;定义常量的位数(长度),这是可选项;n nbasebase是基数,规定这个数据的进制,可以是是基数,规定这个数据的进制,可以是是基数,规定这个数据的进制,可以是是基数,规定这个数据的进制,可以是o o或或或或OO(表示八进制),(表示八进制),(表示八进制),(表示八进制),b b或或或或B B(表示二进制),(表示二进制),(表示二
8、进制),(表示二进制),d d或或或或D D(表示十进制),(表示十进制),(表示十进制),(表示十进制),h h或或或或HH(表示十六进制)之一;(表示十六进制)之一;(表示十六进制)之一;(表示十六进制)之一;n nvaluevalue是一个数字序列,其形式应与是一个数字序列,其形式应与是一个数字序列,其形式应与是一个数字序列,其形式应与basebase定义的形定义的形定义的形定义的形式相符。这个数字序列中出现的值式相符。这个数字序列中出现的值式相符。这个数字序列中出现的值式相符。这个数字序列中出现的值x x和和和和z z以及十六进以及十六进以及十六进以及十六进制中的制中的制中的制中的a
9、af f不区分大小写,不区分大小写,不区分大小写,不区分大小写,“?”?”字符可以代替值字符可以代替值字符可以代替值字符可以代替值z z。n n下面给出一些典型书写方法,有正确的也有错误的。下面给出一些典型书写方法,有正确的也有错误的。下面给出一些典型书写方法,有正确的也有错误的。下面给出一些典型书写方法,有正确的也有错误的。n n5O37/55O37/5位八进制数位八进制数位八进制数位八进制数n n4D2/44D2/4位十进制数位十进制数位十进制数位十进制数n n4B1x_01/44B1x_01/4位二进制数位二进制数位二进制数位二进制数n n7Hx/77Hx/7位位位位x(x(扩展的扩展的
10、扩展的扩展的x),x),即即即即xxxxxxxxxxxxxxn n4hZ/44hZ/4位位位位z(z(扩展的扩展的扩展的扩展的z),z),即即即即zzzzzzzzn n2h1?/22h1?/2位十六进制数,与位十六进制数,与位十六进制数,与位十六进制数,与2h1z2h1z相同相同相同相同n n8h2A/8h2A/在位数和字符之间,以及基数和数值之间允在位数和字符之间,以及基数和数值之间允在位数和字符之间,以及基数和数值之间允在位数和字符之间,以及基数和数值之间允许出现空格许出现空格许出现空格许出现空格 n n4d-4/4d-4/非法:非法:非法:非法:数值不能为负数值不能为负数值不能为负数值不
11、能为负n n3b001/3b001/非法:非法:非法:非法:和基数和基数和基数和基数b b之间不允许出现空格之间不允许出现空格之间不允许出现空格之间不允许出现空格n n(2+3)b10/(2+3)b10/非法:非法:非法:非法:位数不能够为表达式位数不能够为表达式位数不能够为表达式位数不能够为表达式n n如果没有定义常量的位数,那么这个数的长度就是相如果没有定义常量的位数,那么这个数的长度就是相如果没有定义常量的位数,那么这个数的长度就是相如果没有定义常量的位数,那么这个数的长度就是相应值的位数,应值的位数,应值的位数,应值的位数,例如:例如:例如:例如:n no721/9o721/9位八进制
12、数位八进制数位八进制数位八进制数n n hAFhAF/8/8位十六进制数位十六进制数位十六进制数位十六进制数n n如果定义的长度大于数字序列的实际长度,通常在数如果定义的长度大于数字序列的实际长度,通常在数如果定义的长度大于数字序列的实际长度,通常在数如果定义的长度大于数字序列的实际长度,通常在数据序列的高位(左侧)补据序列的高位(左侧)补据序列的高位(左侧)补据序列的高位(左侧)补0 0。但是如果这个数字序列。但是如果这个数字序列。但是如果这个数字序列。但是如果这个数字序列最左边一位为最左边一位为最左边一位为最左边一位为x x或或或或z z,就用,就用,就用,就用x x或或或或z z在左边补
13、位,在左边补位,在左边补位,在左边补位,例如:例如:例如:例如:n n10b10/10b10/左边补左边补左边补左边补0,00000000100,0000000010n n10bx0 x1/10bx0 x1/左边补左边补左边补左边补x,xxxxxxx0 x1x,xxxxxxx0 x1n n如果定义的长度小于数字序列的实际长度,这个数字如果定义的长度小于数字序列的实际长度,这个数字如果定义的长度小于数字序列的实际长度,这个数字如果定义的长度小于数字序列的实际长度,这个数字序列最左边超出的位将被截断,序列最左边超出的位将被截断,序列最左边超出的位将被截断,序列最左边超出的位将被截断,例如:例如:例
14、如:例如:n n3b1001_0011/3b1001_0011/与与与与3b0113b011相等相等相等相等n n5H0FFF/5H0FFF/与与与与5H1F5H1F相等相等相等相等n n实数的定义方式有两种:实数的定义方式有两种:实数的定义方式有两种:实数的定义方式有两种:(1 1)十进制格式)十进制格式)十进制格式)十进制格式,由数字和小数点组成(,由数字和小数点组成(,由数字和小数点组成(,由数字和小数点组成(必须必须必须必须有小数点有小数点有小数点有小数点),例如:),例如:),例如:),例如:n n2.02.0n n5.6785.678n n11572.1211572.12n n0.
15、10.1n n2./2./非法非法非法非法:小数点右侧必须有数字:小数点右侧必须有数字:小数点右侧必须有数字:小数点右侧必须有数字2实数型常量实数型常量(浮点数)(浮点数)2 2)指数格式)指数格式)指数格式)指数格式,由数字和字符,由数字和字符,由数字和字符,由数字和字符e e(E E)组成)组成)组成)组成例:例:例:例:n n23_5.1e2/23_5.1e2/其值为其值为其值为其值为23510.023510.0,忽略下划,忽略下划,忽略下划,忽略下划线线线线n n3.6E2/3.6E2/其值为其值为其值为其值为360.0(360.0(e e与与与与E E相同相同相同相同)n n5E5E
16、4/4/其值为其值为其值为其值为0.00050.0005e e的前面必须要有数字而且后面必须为整数的前面必须要有数字而且后面必须为整数的前面必须要有数字而且后面必须为整数的前面必须要有数字而且后面必须为整数3字符串型常量字符串型常量n n字符串常量是由一对双引号括起来的字符序列。字符串常量是由一对双引号括起来的字符序列。字符串常量是由一对双引号括起来的字符序列。字符串常量是由一对双引号括起来的字符序列。例:例:例:例:n nINTERNALERRORINTERNALERRORn n“REACHED“REACHEDHERE”/HERE”/空格出现空格出现空格出现空格出现在在在在/双引号内,所以是
17、字符串的组成部分双引号内,所以是字符串的组成部分双引号内,所以是字符串的组成部分双引号内,所以是字符串的组成部分n n12345_6789_0/12345_6789_0/下划线出现在下划线出现在下划线出现在下划线出现在/双双双双引号内,所以是字符串的组成部分引号内,所以是字符串的组成部分引号内,所以是字符串的组成部分引号内,所以是字符串的组成部分n n实际上,字符都会被转换成二进制数,而且实际上,字符都会被转换成二进制数,而且实际上,字符都会被转换成二进制数,而且实际上,字符都会被转换成二进制数,而且这种二进制数是按特定规则编码的。现在普这种二进制数是按特定规则编码的。现在普这种二进制数是按特
18、定规则编码的。现在普这种二进制数是按特定规则编码的。现在普遍都采用遍都采用遍都采用遍都采用ASCIIASCII码,这种代码把每个字符用码,这种代码把每个字符用码,这种代码把每个字符用码,这种代码把每个字符用一个字节(一个字节(一个字节(一个字节(8 8位)的二进制数表示。所以字符位)的二进制数表示。所以字符位)的二进制数表示。所以字符位)的二进制数表示。所以字符串实际就是若干个串实际就是若干个串实际就是若干个串实际就是若干个8 8位位位位ASCIIASCII码的序列。例如码的序列。例如码的序列。例如码的序列。例如字符串字符串字符串字符串“INTERNALERROR”INTERNALERROR”
19、共有共有共有共有1414个字符,个字符,个字符,个字符,存储这个字符串的变量就需要存储这个字符串的变量就需要存储这个字符串的变量就需要存储这个字符串的变量就需要8*148*14位的存储位的存储位的存储位的存储空间,如下:空间,如下:空间,如下:空间,如下:n nregreg 1:8*14Message;/1:8*14Message;/定义变定义变定义变定义变量量量量MessageMessage并分配存储空并分配存储空并分配存储空并分配存储空n nMessage=INTERNALERROR/Message=INTERNALERROR/给给给给变量变量变量变量MessageMessage赋值为字符
20、串常量赋值为字符串常量赋值为字符串常量赋值为字符串常量参数参数n在在在在VerilogVerilog语语语语言言言言中中中中,用用用用参参参参数数数数parameterparameter来来来来定定定定义义义义符符符符号号号号常常常常量量量量。参数常用来定义时延和变量的宽度。参数常用来定义时延和变量的宽度。参数常用来定义时延和变量的宽度。参数常用来定义时延和变量的宽度。n其定义格式如下:其定义格式如下:其定义格式如下:其定义格式如下:parameter parameter 参参参参数数数数名名名名1=1=表表表表达达达达式式式式1 1,参参参参数数数数名名名名2=2=表表表表达达达达式式式式2
21、 2,参参参参数名数名数名数名3=3=表达式表达式表达式表达式3 3,;n例:例:例:例:parameter parameter selsel=8,code=8ha3=8,code=8ha3;n nVerilogVerilogHDLHDL有线网有线网有线网有线网netnet和寄存器两种类型的变和寄存器两种类型的变和寄存器两种类型的变和寄存器两种类型的变量,每种类型都有其在电路中的实际意义。量,每种类型都有其在电路中的实际意义。量,每种类型都有其在电路中的实际意义。量,每种类型都有其在电路中的实际意义。1 1线网型变量线网型变量线网型变量线网型变量nNet型数据相当于硬件电路中的各种物理连接,型
22、数据相当于硬件电路中的各种物理连接,其特点是输出的值紧跟输入值的变化而变化。其特点是输出的值紧跟输入值的变化而变化。对对net型有两种驱动方式,一种方式是在结构描型有两种驱动方式,一种方式是在结构描述中将其连接到一个门元件或模块的输出端;另述中将其连接到一个门元件或模块的输出端;另一种方式是用持续赋值语句一种方式是用持续赋值语句assign对其进行赋值。对其进行赋值。wire是最常用的是最常用的Net型变量。型变量。(二)(二)变量变量nwire型变量的定义格式如下:型变量的定义格式如下:nwire数据名数据名1,数据名,数据名2,数据名数据名n;n例如:例如:wirea,b;/定义了两个定义
23、了两个wire型变量型变量a和和b2寄存器型变量寄存器型变量n n寄存器表示一个抽象的数据存储单元,可以通过寄存器表示一个抽象的数据存储单元,可以通过寄存器表示一个抽象的数据存储单元,可以通过寄存器表示一个抽象的数据存储单元,可以通过赋值语句改变寄存器内存储的值。赋值语句改变寄存器内存储的值。赋值语句改变寄存器内存储的值。赋值语句改变寄存器内存储的值。n n寄存器只能在寄存器只能在寄存器只能在寄存器只能在alwaysalways和和和和initialinitial过程语句中赋值,过程语句中赋值,过程语句中赋值,过程语句中赋值,在未被赋值时,寄存器的缺省值为在未被赋值时,寄存器的缺省值为在未被赋
24、值时,寄存器的缺省值为在未被赋值时,寄存器的缺省值为x x。n nVerilogVerilogHDLHDL共有共有共有共有5 5种寄存器类型:种寄存器类型:种寄存器类型:种寄存器类型:RegReg(最常用的寄存器型),(最常用的寄存器型),(最常用的寄存器型),(最常用的寄存器型),integerinteger,timetime,realreal,realtimerealtimen n RegReg定义格式如下:定义格式如下:reg数据名数据名1,数据名,数据名2,数据名数据名n;例:例:regreg a,ba,b;/定义了两个定义了两个定义了两个定义了两个regreg型变量型变量型变量型变量
25、a a,b breg7:0q;/reg7:0q;/定义定义定义定义q q为为为为8 8位宽的位宽的位宽的位宽的regreg型向量型向量型向量型向量用用reg声明存储器声明存储器n n在在在在VerilogVerilogHDLHDL中不能直接声明存储器,存储器中不能直接声明存储器,存储器中不能直接声明存储器,存储器中不能直接声明存储器,存储器是通过寄存器数组声明的,即用是通过寄存器数组声明的,即用是通过寄存器数组声明的,即用是通过寄存器数组声明的,即用regreg声明。声明。声明。声明。n n存储器声明形式如下:存储器声明形式如下:存储器声明形式如下:存储器声明形式如下:n nregreg ms
26、bmsb:lsblsbmemory1upper1:lower1memory1upper1:lower1,memory2upper2:lower2,.;,memory2upper2:lower2,.;n n其中其中其中其中msbmsb、lsblsb定义了存储器中单个寄存器的位宽;定义了存储器中单个寄存器的位宽;定义了存储器中单个寄存器的位宽;定义了存储器中单个寄存器的位宽;memory1memory1和和和和memory2memory2是存储器名;是存储器名;是存储器名;是存储器名;upper1upper1、lower1lower1和和和和upper2upper2、lower2lower2分别定
27、义了这两个存储器的分别定义了这两个存储器的分别定义了这两个存储器的分别定义了这两个存储器的大小(有多少个寄存器)。大小(有多少个寄存器)。大小(有多少个寄存器)。大小(有多少个寄存器)。n n下面是两个存储器声明实例:下面是两个存储器声明实例:下面是两个存储器声明实例:下面是两个存储器声明实例:n nregreg 0:30:3MyMemMyMem0:630:63n n/MyMemMyMem是由是由是由是由6464个个个个4 4位寄存器组成的存储器位寄存器组成的存储器位寄存器组成的存储器位寄存器组成的存储器n nregreg Bog1:5Bog1:5n n/Bog/Bog是由是由是由是由5 5个
28、个个个1 1位寄存器组成的数组位寄存器组成的数组位寄存器组成的数组位寄存器组成的数组n n注意:可以只用一条赋值语句就完成对一个注意:可以只用一条赋值语句就完成对一个注意:可以只用一条赋值语句就完成对一个注意:可以只用一条赋值语句就完成对一个寄存器的赋值,但是不能只用一条赋值语句寄存器的赋值,但是不能只用一条赋值语句寄存器的赋值,但是不能只用一条赋值语句寄存器的赋值,但是不能只用一条赋值语句就完成对整个存储器的赋值,应当对存储器就完成对整个存储器的赋值,应当对存储器就完成对整个存储器的赋值,应当对存储器就完成对整个存储器的赋值,应当对存储器中的每个寄存器单独赋值。中的每个寄存器单独赋值。中的每
29、个寄存器单独赋值。中的每个寄存器单独赋值。对存储器赋值的正确方法如下:对存储器赋值的正确方法如下:对存储器赋值的正确方法如下:对存储器赋值的正确方法如下:n nregreg 0:30:3XromXrom1:4/1:4/XromXrom是由是由是由是由4 4个个个个4 4位位位位寄存器组成的存储器寄存器组成的存储器寄存器组成的存储器寄存器组成的存储器对存储器赋值方法一:对存储器赋值方法一:对存储器赋值方法一:对存储器赋值方法一:n nXrom1=4hA;/Xrom1=4hA;/对其中一个寄存器赋值对其中一个寄存器赋值对其中一个寄存器赋值对其中一个寄存器赋值n nXrom2=4h8;/Xrom2=
30、4h8;/对其中一个寄存器赋值对其中一个寄存器赋值对其中一个寄存器赋值对其中一个寄存器赋值n nXrom3=4hF;/Xrom3=4hF;/对其中一个寄存器赋值对其中一个寄存器赋值对其中一个寄存器赋值对其中一个寄存器赋值n nXrom4=4h2;/Xrom4=4h2;/对其中一个寄存器赋值对其中一个寄存器赋值对其中一个寄存器赋值对其中一个寄存器赋值n n对存储器赋值方法二:对存储器赋值方法二:对存储器赋值方法二:对存储器赋值方法二:使用使用使用使用$readmembreadmemb系统系统系统系统任务任务任务任务从指定的文本文件中读取数据并加载到存从指定的文本文件中读取数据并加载到存从指定的文
31、本文件中读取数据并加载到存从指定的文本文件中读取数据并加载到存储器。储器。储器。储器。n n例:例:例:例:regreg 1:41:4RomBRomB1:7;1:7;$readmembreadmemb (ram.pattram.patt,RomBRomB););RomBRomB是存储器名,是存储器名,是存储器名,是存储器名,ram.pattram.patt是包含数据的是包含数据的是包含数据的是包含数据的文本文件,文本文件,文本文件,文本文件,ram.pattram.patt必须包含二进制值,也可必须包含二进制值,也可必须包含二进制值,也可必须包含二进制值,也可以包含空白和注释。以包含空白和注释
32、。以包含空白和注释。以包含空白和注释。11操作数操作数操作数操作数n n操作数就是运算对象,位于操作符左右两侧。操操作数就是运算对象,位于操作符左右两侧。操操作数就是运算对象,位于操作符左右两侧。操操作数就是运算对象,位于操作符左右两侧。操作数有如下作数有如下作数有如下作数有如下8 8种类型:种类型:种类型:种类型:n n常数常数常数常数n n参数(参数(参数(参数(parameterparameter定义的数)定义的数)定义的数)定义的数)n n线网(线网(线网(线网(wirewire定义的数)定义的数)定义的数)定义的数)n n寄存器(寄存器(寄存器(寄存器(RegReg定义的数)定义的数
33、)定义的数)定义的数)n n位选择(位选择(位选择(位选择(线网或寄存器的某个位线网或寄存器的某个位线网或寄存器的某个位线网或寄存器的某个位)n n部分选择(部分选择(部分选择(部分选择(线网或寄存器的部分连续位线网或寄存器的部分连续位线网或寄存器的部分连续位线网或寄存器的部分连续位)n n存储器单元存储器单元存储器单元存储器单元n n函数调用函数调用函数调用函数调用二、表达式二、表达式n nVerilogVerilogHDLHDL的操作符有如下的操作符有如下的操作符有如下的操作符有如下9 9种类型:种类型:种类型:种类型:n n算术操作符算术操作符算术操作符算术操作符n n关系操作符关系操作
34、符关系操作符关系操作符n n相等操作符相等操作符相等操作符相等操作符n n逻辑操作符逻辑操作符逻辑操作符逻辑操作符n n按位操作符按位操作符按位操作符按位操作符n n归约操作符(缩位操作符)归约操作符(缩位操作符)归约操作符(缩位操作符)归约操作符(缩位操作符)n n移位操作符移位操作符移位操作符移位操作符n n条件操作符条件操作符条件操作符条件操作符n n连接和复制操作符连接和复制操作符连接和复制操作符连接和复制操作符其中,除条件操作符从右向左关联外,其余所有操作其中,除条件操作符从右向左关联外,其余所有操作其中,除条件操作符从右向左关联外,其余所有操作其中,除条件操作符从右向左关联外,其余
35、所有操作符均自左向右关联。符均自左向右关联。符均自左向右关联。符均自左向右关联。2操作符操作符(1)算术运算符()算术运算符(Arithmeticoperators)n n常用的算术运算符包括:常用的算术运算符包括:常用的算术运算符包括:常用的算术运算符包括:+加加加加-减减减减*乘乘乘乘/除除除除%求模求模求模求模n n注意:注意:注意:注意:n n整数除法将截断所有小数部分,如整数除法将截断所有小数部分,如整数除法将截断所有小数部分,如整数除法将截断所有小数部分,如7/47/4结果结果结果结果为为为为1 1;n n模操作符将求出与第一个操作数符号相同的模操作符将求出与第一个操作数符号相同的
36、模操作符将求出与第一个操作数符号相同的模操作符将求出与第一个操作数符号相同的余数,如余数,如余数,如余数,如7%47%4结果为结果为结果为结果为3 3,而,而,而,而-7%4-7%4结果为结果为结果为结果为-3-3;n n如果算术操作符的操作数中出现如果算术操作符的操作数中出现如果算术操作符的操作数中出现如果算术操作符的操作数中出现x x或或或或z z,那么,那么,那么,那么整个算术操作的运算结果为整个算术操作的运算结果为整个算术操作的运算结果为整个算术操作的运算结果为x x。例如:。例如:。例如:。例如:b10 x1b10 x1+b01111+b01111的结果为不确定数的结果为不确定数的结
37、果为不确定数的结果为不确定数 bxxxxxbxxxxx。(2 2 2 2)关系操作符)关系操作符)关系操作符)关系操作符n n关系操作符是对两个操作数进行比较,如果关系操作符是对两个操作数进行比较,如果关系操作符是对两个操作数进行比较,如果关系操作符是对两个操作数进行比较,如果比较结果为真则结果为比较结果为真则结果为比较结果为真则结果为比较结果为真则结果为1 1,如果比较结果为假,如果比较结果为假,如果比较结果为假,如果比较结果为假则结果为则结果为则结果为则结果为0 0,关系操作符多用于条件判断。,关系操作符多用于条件判断。,关系操作符多用于条件判断。,关系操作符多用于条件判断。n n关系操作
38、符有如下关系操作符有如下关系操作符有如下关系操作符有如下4 4种:种:种:种:(大于)(大于)(大于)(大于)=(不小于)(不小于)(不小于)(不小于)=45/2345/结果为假(结果为假(结果为假(结果为假(0 0)528hxFF/52=b01110b1000=b01110等价于:等价于:等价于:等价于:b01000=b01110/b01000=b01110/结果为假(结果为假(结果为假(结果为假(0 0)(3)相等操作符)相等操作符n n与关系操作符类似,相等操作符也是对两个与关系操作符类似,相等操作符也是对两个与关系操作符类似,相等操作符也是对两个与关系操作符类似,相等操作符也是对两个操
39、作数进行比较,如果比较结果为假,则结操作数进行比较,如果比较结果为假,则结操作数进行比较,如果比较结果为假,则结操作数进行比较,如果比较结果为假,则结果为果为果为果为0 0,否则结果为,否则结果为,否则结果为,否则结果为1 1。n n相等操作符有如下相等操作符有如下相等操作符有如下相等操作符有如下4 4种:种:种:种:=(逻辑相等)(逻辑相等)(逻辑相等)(逻辑相等)!=!=(逻辑不等)(逻辑不等)(逻辑不等)(逻辑不等)=(全等)(全等)(全等)(全等)!=!=(非全等)(非全等)(非全等)(非全等)n n其中,其中,其中,其中,“=”=”和和和和“!=”!=”是把两个操作数的逻是把两个操作
40、数的逻是把两个操作数的逻是把两个操作数的逻辑值做比较,由于操作数中某些位可能是辑值做比较,由于操作数中某些位可能是辑值做比较,由于操作数中某些位可能是辑值做比较,由于操作数中某些位可能是x x或或或或z z,所以比较结果也有可能是,所以比较结果也有可能是,所以比较结果也有可能是,所以比较结果也有可能是x x。n n而而而而“=”=”和和和和“!=”!=”是按位进行比较,即便是按位进行比较,即便是按位进行比较,即便是按位进行比较,即便在两个操作数中某些位出现了在两个操作数中某些位出现了在两个操作数中某些位出现了在两个操作数中某些位出现了x x或或或或z z,只要它,只要它,只要它,只要它们出现在
41、相同的位,那么就认为二者是相同们出现在相同的位,那么就认为二者是相同们出现在相同的位,那么就认为二者是相同们出现在相同的位,那么就认为二者是相同的,比较结果为的,比较结果为的,比较结果为的,比较结果为1 1,否则为,否则为,否则为,否则为0 0,而不会出现结,而不会出现结,而不会出现结,而不会出现结果为果为果为果为x x的情况。的情况。的情况。的情况。(4)逻辑操作符)逻辑操作符n n逻辑操作符是对操作数做与、或、非运算,逻辑操作符是对操作数做与、或、非运算,逻辑操作符是对操作数做与、或、非运算,逻辑操作符是对操作数做与、或、非运算,操作结果为操作结果为操作结果为操作结果为0 0或或或或1 1
42、。逻辑操作符有。逻辑操作符有。逻辑操作符有。逻辑操作符有3 3种:种:种:种:&(逻辑与)(逻辑与)(逻辑与)(逻辑与)|(逻辑或)(逻辑或)(逻辑或)(逻辑或)!(逻辑非)(逻辑非)(逻辑非)(逻辑非)n n逻辑操作符的操作数只能是逻辑值逻辑操作符的操作数只能是逻辑值逻辑操作符的操作数只能是逻辑值逻辑操作符的操作数只能是逻辑值0 0或或或或1 1如:如:如:如:CrdCrd=b0;/=b0;/CrdCrd是逻辑是逻辑是逻辑是逻辑00DgsDgs=b1;/=b1;/DgsDgs是逻辑是逻辑是逻辑是逻辑11那么:那么:那么:那么:CrdCrd&DgsDgs/结果为结果为结果为结果为0(0(假假假
43、假)CrdCrd|DgsDgs/结果为结果为结果为结果为1(1(真真真真)!DgsDgs/结果为结果为结果为结果为0(0(假假假假)(5)位操作符)位操作符n n位操作符是对操作数按位进行与、或、非等位操作符是对操作数按位进行与、或、非等位操作符是对操作数按位进行与、或、非等位操作符是对操作数按位进行与、或、非等逻辑操作。位操作符有如下逻辑操作。位操作符有如下逻辑操作。位操作符有如下逻辑操作。位操作符有如下5 5种:种:种:种:(一元非,只有一个操作数位于右侧)(一元非,只有一个操作数位于右侧)(一元非,只有一个操作数位于右侧)(一元非,只有一个操作数位于右侧)&(二元与,有两个操作数位于左右
44、两侧)(二元与,有两个操作数位于左右两侧)(二元与,有两个操作数位于左右两侧)(二元与,有两个操作数位于左右两侧)|(二元或,有两个操作数位于左右两侧)(二元或,有两个操作数位于左右两侧)(二元或,有两个操作数位于左右两侧)(二元或,有两个操作数位于左右两侧)(二元异或,有两个操作数位于左右两侧)(二元异或,有两个操作数位于左右两侧)(二元异或,有两个操作数位于左右两侧)(二元异或,有两个操作数位于左右两侧),(二元异或非,有两个操作数位于左(二元异或非,有两个操作数位于左(二元异或非,有两个操作数位于左(二元异或非,有两个操作数位于左右两侧)右两侧)右两侧)右两侧)n n例如:例如:例如:例
45、如:A=b0110;A=b0110;B=b0100;B=b0100;那么:那么:那么:那么:A|B/A|B/结果为结果为结果为结果为01100110A&B/A&B/结果为结果为结果为结果为01000100(6)缩位运算符(规约操作符)缩位运算符(规约操作符)&与与与与&与非与非与非与非|或或或或|或非或非或非或非异或异或异或异或,同或同或同或同或缩位运算符与位运算符的逻辑运算法则一样,但缩位运算符与位运算符的逻辑运算法则一样,但缩位运算符与位运算符的逻辑运算法则一样,但缩位运算符与位运算符的逻辑运算法则一样,但缩位运算是对单个操作数进行与、或、非递推运缩位运算是对单个操作数进行与、或、非递推运
46、缩位运算是对单个操作数进行与、或、非递推运缩位运算是对单个操作数进行与、或、非递推运算的,它放在操作数的前面。缩位运算符将一个算的,它放在操作数的前面。缩位运算符将一个算的,它放在操作数的前面。缩位运算符将一个算的,它放在操作数的前面。缩位运算符将一个矢量缩减为一个标量。例:矢量缩减为一个标量。例:A=b0110;A=b0110;B=b0100;B=b0100;那么:那么:那么:那么:|B/|B/结果为结果为结果为结果为1 1,因为,因为,因为,因为B B中有中有中有中有1 1&B/&B/结果为结果为结果为结果为0 0,因为,因为,因为,因为B B中有中有中有中有0 0A/A/结果为结果为结果
47、为结果为0 0,因为,因为,因为,因为A A中有偶数个中有偶数个中有偶数个中有偶数个1 1归约异或操作符归约异或操作符归约异或操作符归约异或操作符“”可用于检查操作数中是否包含可用于检查操作数中是否包含可用于检查操作数中是否包含可用于检查操作数中是否包含x x,例,例,例,例如:如:如:如:MyRegMyReg=4b01x0;=4b01x0;MyRegMyReg/结果为结果为结果为结果为x x,说明操作数,说明操作数,说明操作数,说明操作数MyRegMyReg中包含中包含中包含中包含x x(7)移位操作符移位操作符n n移位操作符是把操作数向左或向右移位若干移位操作符是把操作数向左或向右移位若
48、干移位操作符是把操作数向左或向右移位若干移位操作符是把操作数向左或向右移位若干位。移位操作符有位。移位操作符有位。移位操作符有位。移位操作符有2 2种:种:种:种:(右移右移右移右移)(8)条件运算符(条件运算符(conditionaloperators)?:?:n n三目运算符,其定义方式如下:三目运算符,其定义方式如下:三目运算符,其定义方式如下:三目运算符,其定义方式如下:信号信号=条件条件?表达式表达式1:表达式表达式2;当条件成立时,信号取表达式当条件成立时,信号取表达式当条件成立时,信号取表达式当条件成立时,信号取表达式1 1的值,反之取表达式的值,反之取表达式的值,反之取表达式的
49、值,反之取表达式2 2的值的值的值的值。(9)位拼接运算符(位拼接运算符(concatenationoperators)该运算符将两个或多个信号的某些位拼接起来。如:该运算符将两个或多个信号的某些位拼接起来。如:该运算符将两个或多个信号的某些位拼接起来。如:该运算符将两个或多个信号的某些位拼接起来。如:信号信号信号信号1 1的某几位,信号的某几位,信号的某几位,信号的某几位,信号2 2的某几位,的某几位,的某几位,的某几位,信号,信号,信号,信号n n的某几的某几的某几的某几位位位位 运算符的优先级运算符的优先级在书写程序时建议用括号()来控制运算的优先级在书写程序时建议用括号()来控制运算的
50、优先级(10)复制操作符复制操作符n n复制操作符是通过指定重复次数来多次执行连接复制操作符是通过指定重复次数来多次执行连接复制操作符是通过指定重复次数来多次执行连接复制操作符是通过指定重复次数来多次执行连接操作。例:操作。例:操作。例:操作。例:n nAbusAbus=34b1011;/=34b1011;/做做做做3 3次连接操作,次连接操作,次连接操作,次连接操作,AbusAbus的值是的值是的值是的值是12b1011_1011_101112b1011_1011_1011n nAbusAbus=4Dbus7,=4Dbus7,DbusDbus;/;/结果结果结果结果与与与与Dbus7,Dbu