(5)运算符及表达式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Usable is Profitable
若sel为0则out =a;若sel为1则out = b。 为 则 ; 为 则 。 如果sel为 或 , 如果 为x或z,若a = b =0,则out = 0; , ; 值不确定。 若a≠b,则out值不确定。 , 值不确定
Usable is Profitable
Usable is Profitable
~ 结果 & 0 1 x z ^ 0 1 x z 0 0 0 0 0 0 0 1 x x 1 0 1 x x 1 1 0 x x
0 1 x 0 x x x x x x x x z 0 x x x z x x x x
1 0
x x | 0 1 x z ^~ 0 1 x z 0 0 1 x x 0 1 0 x x
Usable is Profitable
!, &&, || 不可综合 <, <=, >, >= ==, !=, ===, !== ~, &, |, ^, ~^ &, ~&, |, ~|, ^, ~^ >>, << ?: {} +, -, *, /, %
不建议直接使用
运算符按所带操作数的个数分为: 运算符按所带操作数的个数分为
a==b得到的结果为不定值 得到的结果为不定值
Usable is Profitable
a===b得到的结果为 得到的结果为1. 得到的结果为
== 0 0 1 x z 1 0 x x
1 0 1 x x
x x x x x
z x x x x
=== 0 0 1 x z 1 0 0 0
1 0 1 0 0
x 0 0 1 0
运算符与表达式
p132
Usable is Profitable
Logical Operators Relational Operators Equality Operators Bit-Wise Operators Unary Reduction Shift Operators Conditional Operators Concatenations Arithmetic Operators
固定的移位运算实现为一些硬件连线 a = 4’b1010 1 1 0 1 b <= a<<2 0 0 1 0 则b? ? 0 0
b = 4’b1000
Usable is Profitable
b = 6’b101000
7.条件运算符(三目) 条件运算符(三目) 条件运算符
条件表达式?表达式1:表达式2 信号 = 条件表达式?表达式 :表达式 当条件成立时,信号取表达式 的值 的值, 当条件成立时,信号取表达式1的值,反之取表达 的值。 式2的值。 的值 例:二选一多路选择器 module mux2_1(out,a,b,sel); output out; input a,b,sel; assign out=sel?b:a endmodule
Usable is Profitable
用连接运算符描述全加器 module full_adder(sum_out,c,ina,inb) output[3:0] sum_out; output carry_out; input[3:0]ina,inb; input carry_in; assign {carry_out,sum_out}=ina+inb+ carry_in; endmodule
2. P,Q,R都是 位输入,下面那种表达形式正确? 都是4位输入 下面那种表达形式正确? 都是 位输入, A.input P[3:0],Q,R; B.input P,Q,R[3:0]; C.input P[3:0],Q[3:0],R[3:0]; D.input [3:0] P, [3:0] Q, [3:0] R; E. input [3:0] P, Q, R;
Usable is Profitable
9.算术运算符 算术运算符
+ * / % 不建议直接使用
负数使用补码表示,并根据最终位数进行符号扩展。 负数使用补码表示,并根据最终位数进行符号扩展。 减运算一般用加法器实现,减一个数相当于加上该数 减运算一般用加法器实现, 的反码再加上1 的反码再加上 算数运算中操作数整体参与运算,所以某一位是 或 , 算数运算中操作数整体参与运算,所以某一位是x或z, 则结果为x。 则结果为 。
Usable is Profitable
&A=(((1&0)&0)&1)&1=0 |A=1 ^A=(((1^0)^0)^1)^1=0
归约运算符实现为一个 对应操作数比特位数的 相应功能的逻辑门
6.移位运算符 移位运算符
左移 << 右移 >> a<<n a>>n 左移n位 把a左移 位 左移 右移n位 把a右移 位 右移
单行注释符用 //*********
多行注释符用 /* ------------------------- */
Usable is Profitable
a>b && x>y !a || a>b a<size -1
(a>b)&& (x>y) (!a )||(a>b) a<(size -1)
为了提高程序的可读性, 为了提高程序的可读性,明确表达各运算符 间的优先关系,建议使用括号。 间的优先关系,建议使用括号。
Usable is Profitable
3.相等与全等运算符 相等与全等运算符
== 逻辑相等 != 逻辑不等 === 全等 !==非全等 非全等 不可综合
相等运算符:参与比较的两个操作数, 相等运算符:参与比较的两个操作数,必须逐位相等 比较的结果才为1,如果某些位是不定态或高阻值, 比较的结果才为 ,如果某些位是不定态或高阻值, 其相等比较的结果是不定值。 其相等比较的结果是不定值。 全等运算符:对不定态或高阻值位也进行比较, 全等运算符:对不定态或高阻值位也进行比较,两个 操作数必须完全一致结果才位1,否则为0。 操作数必须完全一致结果才位 ,否则为 。 a=5’b11x01 ; ’ b=5’b11x01 ’
Usable is Profitable
对于一些重复信号的连接, 对于一些重复信号的连接,连接运算可以简 化表达方式{n{a}}。 化表达方式 。 a是被连接的对象,n 是重复的次数,表示将 是被连接的对象, 是重复的次数, 是被连接的对象 a重复连接 次。 重复连接n次 重复连接 {4{w}} {b,3{a,b}} {w,w,w,w} {b,a,b,a,b,a,b}
Usable is Profitable
练习: 练习:
1.下列标识符合法的是: 下列标识符合法的是: 下列标识符合法的是
shift_reg_a BUS263 _ddr1_t2 o$241 \~(a+b) a*b_net 34net _daai@DA and AND
Usable is Profitable
Usable is Profitable
练习
表达式 11/3 -11%3 11%-3 结果 3 -2 2 说明 省略小数部分 符号与第一个 操作数相同 符号与第一个 操作数相同
百度文库
Usable is Profitable
操作符类型 连接及复制操作符 取反操作符 算术操作符 移位操作符 关系操作符 相等操作符 按位操作符 逻辑操作符 条件操作符
单目运算 双目运算 三目运算
Usable is Profitable
1.逻辑运算符 逻辑运算符
中间不能有空格
! (单目) && || 单目)
逻辑操作符只对逻辑值运算。逻辑操作符的结果为一位: 逻辑操作符只对逻辑值运算。逻辑操作符的结果为一位: 一位 1,0或x。 操作数由多位组成,应将其看做一个整体: 操作数由多位组成,应将其看做一个整体: 若操作数为全0 则其逻辑值为false,即 若操作数为全0,则其逻辑值为false,即0 false, 若操作数有某一位为1,则其逻辑值为true,即1 若操作数有某一位为1 则其逻辑值为true, true 若存在不定态,则逻辑运算也是不定态x 若存在不定态,则逻辑运算也是不定态x !实现为或非结构,&&实现为或与结构,||实现为或或 实现为或非结构,&&实现为或与结构,||实现为或或 实现为或与结构 结构, 结构,即会先对操作数的各比特位进行或的操作
Usable is Profitable
练:设寄存器变量a=4’b0110; b=4’b0000 设寄存器变量 ’ ’
!a 0
!b 1
a && b 0
a||b 1
Usable is Profitable
2.关系运算符 关系运算符 > < >= <=
进行关系运算时: 进行关系运算时: 如果声明的关系是假,则返回值是 ; 如果声明的关系是假,则返回值是0; 如果声明的关系是真,则返回值是1; 如果声明的关系是真,则返回值是 ; 如果某个操作数是不定值,则关系是模糊的, 如果某个操作数是不定值,则关系是模糊的,返回 不定值; 不定值; 实现为对应类型的比较器, 实现为对应类型的比较器,比较位数和操作数的位 数较大者一致,位数较少者进行符号扩展(reg类 数较大者一致,位数较少者进行符号扩展 类 型或wire类型变量固定扩展 ,正常量扩展 ,负 类型变量固定扩展0,正常量扩展0, 型或 类型变量固定扩展 常量扩展1) 常量扩展
a = 4'b1011; c = a | b;
b = 8'b01010011; a零扩展为 8'b00001011 零扩展为
按位操作符对操作数中相对应“ 按位操作符对操作数中相对应“位”运算。 运算。
regb = 4'b1 0 1 0 regc = 4'b1 x 1 0 num = regb & regc = 1 0 1 0 ;
Usable is Profitable
不同长度的数据进行位运算时, 不同长度的数据进行位运算时,系统会自动在位数 少的操作数的高位补0。( 。(如果短的操作数最高位是 少的操作数的高位补 。(如果短的操作数最高位是 x,则扩展的部分也是 ),以使两个操作数按位进行 则扩展的部分也是x), 则扩展的部分也是 ),以使两个操作数按位进行 操作。 操作。
z 0 0 0 1
Usable is Profitable
4.位运算符 位运算符
~ 按位取反(单目) 按位取反(单目) & 按位与 | 按位或 ^ 按位异或 ^~ ,~^按位同或 按位同或
例:A=5’b11001,B=5’b10101 , ~A=5’b00110 A&B=5’b10001 A | B=5’b11101 A^B=5’b01100 A~^B=5’b10011
Verilog 语法总结: 语法总结:
a) 标识符 (P125) b) 数据类型 (P128 wire reg parameter) c) 常量 常量(P126 整数 整数) d) 运算符及表达式(P132) 运算符及表达式 e) 语句 语句(P142) f) 注释
Usable is Profitable
Usable is Profitable
符号 {} ! {{}} ~
优先级 高
* / % + << > == & ^ && ?: || >> < >= === ~^ | <= != != =
低
注:“与”操作符的优先级总是比相同类型的“或”操作符高 操作符的优先级总是比相同类型的“
空格和注释
空格在文本中起一个分隔符的作用,没有其他用处。 空格在文本中起一个分隔符的作用,没有其他用处。
8.连接 位拼接运算符 连接/位拼接运算符 连接
连接运算符是将两组或两组以上的信号, 连接运算符是将两组或两组以上的信号,拼接成一组 新的信号。 新的信号。 {信号 的某些位,信号 的某些位,…… 信号1的某些位 信号2的某些位 ……} 的某些位, 信号 的某些位, 例:{a , b[3], c, 3’b101} ’ 如果a是一位的信号, 是三位的信号 如果 是一位的信号,c是三位的信号,则拼接之后 是一位的信号 是三位的信号, 的位宽为8位 的位宽为 位。 注意:常数表达式前面的位宽不能省略。 注意:常数表达式前面的位宽不能省略。如果省略 则默认32位 则默认 位。
z x 1 1 1 1 1 1 0 1 x x x x 1 x x x x x x x z x 1 x x z x x x x
5.归约(缩减)运算符(单目 归约(缩减)运算符 单目 单目) 归约
在单一操作数的所有位上进行操作,并产生 位 在单一操作数的所有位上进行操作,并产生1位 运算结果。 运算结果。 例:A=5’b11001 & 归约与 | 归约或 ^ 归约异或 ~&归约与非 归约与非 ~| 归约或非 ~^归约异或非 归约异或非
若sel为0则out =a;若sel为1则out = b。 为 则 ; 为 则 。 如果sel为 或 , 如果 为x或z,若a = b =0,则out = 0; , ; 值不确定。 若a≠b,则out值不确定。 , 值不确定
Usable is Profitable
Usable is Profitable
~ 结果 & 0 1 x z ^ 0 1 x z 0 0 0 0 0 0 0 1 x x 1 0 1 x x 1 1 0 x x
0 1 x 0 x x x x x x x x z 0 x x x z x x x x
1 0
x x | 0 1 x z ^~ 0 1 x z 0 0 1 x x 0 1 0 x x
Usable is Profitable
!, &&, || 不可综合 <, <=, >, >= ==, !=, ===, !== ~, &, |, ^, ~^ &, ~&, |, ~|, ^, ~^ >>, << ?: {} +, -, *, /, %
不建议直接使用
运算符按所带操作数的个数分为: 运算符按所带操作数的个数分为
a==b得到的结果为不定值 得到的结果为不定值
Usable is Profitable
a===b得到的结果为 得到的结果为1. 得到的结果为
== 0 0 1 x z 1 0 x x
1 0 1 x x
x x x x x
z x x x x
=== 0 0 1 x z 1 0 0 0
1 0 1 0 0
x 0 0 1 0
运算符与表达式
p132
Usable is Profitable
Logical Operators Relational Operators Equality Operators Bit-Wise Operators Unary Reduction Shift Operators Conditional Operators Concatenations Arithmetic Operators
固定的移位运算实现为一些硬件连线 a = 4’b1010 1 1 0 1 b <= a<<2 0 0 1 0 则b? ? 0 0
b = 4’b1000
Usable is Profitable
b = 6’b101000
7.条件运算符(三目) 条件运算符(三目) 条件运算符
条件表达式?表达式1:表达式2 信号 = 条件表达式?表达式 :表达式 当条件成立时,信号取表达式 的值 的值, 当条件成立时,信号取表达式1的值,反之取表达 的值。 式2的值。 的值 例:二选一多路选择器 module mux2_1(out,a,b,sel); output out; input a,b,sel; assign out=sel?b:a endmodule
Usable is Profitable
用连接运算符描述全加器 module full_adder(sum_out,c,ina,inb) output[3:0] sum_out; output carry_out; input[3:0]ina,inb; input carry_in; assign {carry_out,sum_out}=ina+inb+ carry_in; endmodule
2. P,Q,R都是 位输入,下面那种表达形式正确? 都是4位输入 下面那种表达形式正确? 都是 位输入, A.input P[3:0],Q,R; B.input P,Q,R[3:0]; C.input P[3:0],Q[3:0],R[3:0]; D.input [3:0] P, [3:0] Q, [3:0] R; E. input [3:0] P, Q, R;
Usable is Profitable
9.算术运算符 算术运算符
+ * / % 不建议直接使用
负数使用补码表示,并根据最终位数进行符号扩展。 负数使用补码表示,并根据最终位数进行符号扩展。 减运算一般用加法器实现,减一个数相当于加上该数 减运算一般用加法器实现, 的反码再加上1 的反码再加上 算数运算中操作数整体参与运算,所以某一位是 或 , 算数运算中操作数整体参与运算,所以某一位是x或z, 则结果为x。 则结果为 。
Usable is Profitable
&A=(((1&0)&0)&1)&1=0 |A=1 ^A=(((1^0)^0)^1)^1=0
归约运算符实现为一个 对应操作数比特位数的 相应功能的逻辑门
6.移位运算符 移位运算符
左移 << 右移 >> a<<n a>>n 左移n位 把a左移 位 左移 右移n位 把a右移 位 右移
单行注释符用 //*********
多行注释符用 /* ------------------------- */
Usable is Profitable
a>b && x>y !a || a>b a<size -1
(a>b)&& (x>y) (!a )||(a>b) a<(size -1)
为了提高程序的可读性, 为了提高程序的可读性,明确表达各运算符 间的优先关系,建议使用括号。 间的优先关系,建议使用括号。
Usable is Profitable
3.相等与全等运算符 相等与全等运算符
== 逻辑相等 != 逻辑不等 === 全等 !==非全等 非全等 不可综合
相等运算符:参与比较的两个操作数, 相等运算符:参与比较的两个操作数,必须逐位相等 比较的结果才为1,如果某些位是不定态或高阻值, 比较的结果才为 ,如果某些位是不定态或高阻值, 其相等比较的结果是不定值。 其相等比较的结果是不定值。 全等运算符:对不定态或高阻值位也进行比较, 全等运算符:对不定态或高阻值位也进行比较,两个 操作数必须完全一致结果才位1,否则为0。 操作数必须完全一致结果才位 ,否则为 。 a=5’b11x01 ; ’ b=5’b11x01 ’
Usable is Profitable
对于一些重复信号的连接, 对于一些重复信号的连接,连接运算可以简 化表达方式{n{a}}。 化表达方式 。 a是被连接的对象,n 是重复的次数,表示将 是被连接的对象, 是重复的次数, 是被连接的对象 a重复连接 次。 重复连接n次 重复连接 {4{w}} {b,3{a,b}} {w,w,w,w} {b,a,b,a,b,a,b}
Usable is Profitable
练习: 练习:
1.下列标识符合法的是: 下列标识符合法的是: 下列标识符合法的是
shift_reg_a BUS263 _ddr1_t2 o$241 \~(a+b) a*b_net 34net _daai@DA and AND
Usable is Profitable
Usable is Profitable
练习
表达式 11/3 -11%3 11%-3 结果 3 -2 2 说明 省略小数部分 符号与第一个 操作数相同 符号与第一个 操作数相同
百度文库
Usable is Profitable
操作符类型 连接及复制操作符 取反操作符 算术操作符 移位操作符 关系操作符 相等操作符 按位操作符 逻辑操作符 条件操作符
单目运算 双目运算 三目运算
Usable is Profitable
1.逻辑运算符 逻辑运算符
中间不能有空格
! (单目) && || 单目)
逻辑操作符只对逻辑值运算。逻辑操作符的结果为一位: 逻辑操作符只对逻辑值运算。逻辑操作符的结果为一位: 一位 1,0或x。 操作数由多位组成,应将其看做一个整体: 操作数由多位组成,应将其看做一个整体: 若操作数为全0 则其逻辑值为false,即 若操作数为全0,则其逻辑值为false,即0 false, 若操作数有某一位为1,则其逻辑值为true,即1 若操作数有某一位为1 则其逻辑值为true, true 若存在不定态,则逻辑运算也是不定态x 若存在不定态,则逻辑运算也是不定态x !实现为或非结构,&&实现为或与结构,||实现为或或 实现为或非结构,&&实现为或与结构,||实现为或或 实现为或与结构 结构, 结构,即会先对操作数的各比特位进行或的操作
Usable is Profitable
练:设寄存器变量a=4’b0110; b=4’b0000 设寄存器变量 ’ ’
!a 0
!b 1
a && b 0
a||b 1
Usable is Profitable
2.关系运算符 关系运算符 > < >= <=
进行关系运算时: 进行关系运算时: 如果声明的关系是假,则返回值是 ; 如果声明的关系是假,则返回值是0; 如果声明的关系是真,则返回值是1; 如果声明的关系是真,则返回值是 ; 如果某个操作数是不定值,则关系是模糊的, 如果某个操作数是不定值,则关系是模糊的,返回 不定值; 不定值; 实现为对应类型的比较器, 实现为对应类型的比较器,比较位数和操作数的位 数较大者一致,位数较少者进行符号扩展(reg类 数较大者一致,位数较少者进行符号扩展 类 型或wire类型变量固定扩展 ,正常量扩展 ,负 类型变量固定扩展0,正常量扩展0, 型或 类型变量固定扩展 常量扩展1) 常量扩展
a = 4'b1011; c = a | b;
b = 8'b01010011; a零扩展为 8'b00001011 零扩展为
按位操作符对操作数中相对应“ 按位操作符对操作数中相对应“位”运算。 运算。
regb = 4'b1 0 1 0 regc = 4'b1 x 1 0 num = regb & regc = 1 0 1 0 ;
Usable is Profitable
不同长度的数据进行位运算时, 不同长度的数据进行位运算时,系统会自动在位数 少的操作数的高位补0。( 。(如果短的操作数最高位是 少的操作数的高位补 。(如果短的操作数最高位是 x,则扩展的部分也是 ),以使两个操作数按位进行 则扩展的部分也是x), 则扩展的部分也是 ),以使两个操作数按位进行 操作。 操作。
z 0 0 0 1
Usable is Profitable
4.位运算符 位运算符
~ 按位取反(单目) 按位取反(单目) & 按位与 | 按位或 ^ 按位异或 ^~ ,~^按位同或 按位同或
例:A=5’b11001,B=5’b10101 , ~A=5’b00110 A&B=5’b10001 A | B=5’b11101 A^B=5’b01100 A~^B=5’b10011
Verilog 语法总结: 语法总结:
a) 标识符 (P125) b) 数据类型 (P128 wire reg parameter) c) 常量 常量(P126 整数 整数) d) 运算符及表达式(P132) 运算符及表达式 e) 语句 语句(P142) f) 注释
Usable is Profitable
Usable is Profitable
符号 {} ! {{}} ~
优先级 高
* / % + << > == & ^ && ?: || >> < >= === ~^ | <= != != =
低
注:“与”操作符的优先级总是比相同类型的“或”操作符高 操作符的优先级总是比相同类型的“
空格和注释
空格在文本中起一个分隔符的作用,没有其他用处。 空格在文本中起一个分隔符的作用,没有其他用处。
8.连接 位拼接运算符 连接/位拼接运算符 连接
连接运算符是将两组或两组以上的信号, 连接运算符是将两组或两组以上的信号,拼接成一组 新的信号。 新的信号。 {信号 的某些位,信号 的某些位,…… 信号1的某些位 信号2的某些位 ……} 的某些位, 信号 的某些位, 例:{a , b[3], c, 3’b101} ’ 如果a是一位的信号, 是三位的信号 如果 是一位的信号,c是三位的信号,则拼接之后 是一位的信号 是三位的信号, 的位宽为8位 的位宽为 位。 注意:常数表达式前面的位宽不能省略。 注意:常数表达式前面的位宽不能省略。如果省略 则默认32位 则默认 位。
z x 1 1 1 1 1 1 0 1 x x x x 1 x x x x x x x z x 1 x x z x x x x
5.归约(缩减)运算符(单目 归约(缩减)运算符 单目 单目) 归约
在单一操作数的所有位上进行操作,并产生 位 在单一操作数的所有位上进行操作,并产生1位 运算结果。 运算结果。 例:A=5’b11001 & 归约与 | 归约或 ^ 归约异或 ~&归约与非 归约与非 ~| 归约或非 ~^归约异或非 归约异或非