这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
基础逻辑门实验_逻辑门使用 [2020/07/02 15:29] zgf |
基础逻辑门实验_逻辑门使用 [2022/03/22 10:28] (当前版本) sean |
||
---|---|---|---|
行 4: | 行 4: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-07-01 | gingko | 初次建立 | | | V1.0 | 2020-07-01 | gingko | 初次建立 | | ||
行 29: | 行 28: | ||
* 在Verilog HDL中的算术运算符有多种,其中最常用的有4种,如表5-1所示。 | * 在Verilog HDL中的算术运算符有多种,其中最常用的有4种,如表5-1所示。 | ||
+ | |||
表5-1 算术运算符 | 表5-1 算术运算符 | ||
行 36: | 行 36: | ||
|* |乘法运算 |2 |rega * 10| | |* |乘法运算 |2 |rega * 10| | ||
|/ |除法运算 |2 |23 / 10,运行结果为2。| | |/ |除法运算 |2 |23 / 10,运行结果为2。| | ||
+ | |||
* 在基本算术运算符应用过程中需要注意: | * 在基本算术运算符应用过程中需要注意: | ||
- 在进行整数除法运算时,省略所有小数部分,只保留整数部分; | - 在进行整数除法运算时,省略所有小数部分,只保留整数部分; | ||
- 在进行算术运算操作时,如果操作符的某个操作数出现x或z时,则整个操作的运算结果为x。 | - 在进行算术运算操作时,如果操作符的某个操作数出现x或z时,则整个操作的运算结果为x。 | ||
+ | |||
+ | |||
=== 2、逻辑运算符 === | === 2、逻辑运算符 === | ||
行 44: | 行 47: | ||
表5-2 逻辑运算符 | 表5-2 逻辑运算符 | ||
- | |操作符 |执行的操作| 操作数个数| 表达式| | + | | 操作符 | 执行的操作 | 操作数个数 | 表达式 | |
- | |! |逻辑求反| 1| !a| | + | | ! | 逻辑求反 | 1 | !a | |
- | |&& |逻辑与 |2 |a && b| | + | | && | 逻辑与 | 2 | a && b | |
- | | || |逻辑或| 2| a || b| | + | | '' ||'' | 逻辑或 | 2 | ''a || b'' | |
表5-3 逻辑运算真值表 | 表5-3 逻辑运算真值表 | ||
- | |a |b |!a |!b |a && b |a || b| | + | |a |b |!a |!b |a && b |''a || b''| |
|1 |1 |0 |0 |1 |1| | |1 |1 |0 |0 |1 |1| | ||
|1 |0 |0 |1 |0 |1| | |1 |0 |0 |1 |0 |1| | ||
行 60: | 行 63: | ||
* 关系运算符主要表征两者之间的关系,常用于两个操作数的比较,常用的有四种符号类型,如表5-4所示。 | * 关系运算符主要表征两者之间的关系,常用于两个操作数的比较,常用的有四种符号类型,如表5-4所示。 | ||
+ | |||
表5-4 关系运算符 | 表5-4 关系运算符 | ||
行 65: | 行 69: | ||
|< |小于 |2 |a < b| | |< |小于 |2 |a < b| | ||
|> |大于 |2 |a > b| | |> |大于 |2 |a > b| | ||
- | |< = |小于等于| 2 |a <= b| | + | |< = |小于等于|2 |a < = b| |
- | |>= |大于等于| 2 |a >= b| | + | |> = |大于等于|2 |a > = b| |
* 在进行关系运算时,如果表达式的两个操作数之间的关系时正确的,则运行结果为1(真),否则,运行结果为0(假);如果表达式中的某个操作数为不定值(x和z),则运行结果为x。 | * 在进行关系运算时,如果表达式的两个操作数之间的关系时正确的,则运行结果为1(真),否则,运行结果为0(假);如果表达式中的某个操作数为不定值(x和z),则运行结果为x。 | ||
行 83: | 行 87: | ||
|操作符 |执行的操作 |操作数个数 |表达式| | |操作符 |执行的操作 |操作数个数 |表达式| | ||
|~ |按位求反 |1 |~a| | |~ |按位求反 |1 |~a| | ||
- | |& |按位与 2 |a & b| | + | |& |按位与 |2 |a & b| |
- | | | |按位或 2 |a | b| | + | |''|'' |按位或 |2 |''a|b'' | |
- | |^ |按位异或 |2 |a ^ b| | + | |''^'' |按位异或 |2 |''a^b''| |
- | |~^,^~ |按位同或 |2 |a ~^ b,a ^~ b| | + | |''~^,^~''|按位同或 |2 |''a~^b,a^~b''| |
* 在按位运算中,若两个操作数的位宽不一致,则会自动将两个操作数右对齐,高位补0后进行运算。 | * 在按位运算中,若两个操作数的位宽不一致,则会自动将两个操作数右对齐,高位补0后进行运算。 | ||
=== 6、拼接运算符 === | === 6、拼接运算符 === | ||
行 108: | 行 113: | ||
|=== |等于 |2 |a === b| | |=== |等于 |2 |a === b| | ||
|!== |不等于 |2 |a !=== b| | |!== |不等于 |2 |a !=== b| | ||
+ | |||
* 在进行等式运算中,“==”和“!=”又被称作是逻辑等式运算符,由于等式运算中的两个操作数有可能是x和z,因此其运算结果可能是不定值x。但是,“===”和“!==”对比时要求两个操作数必须完全一致,因此其运行结果只有0和1两种。 | * 在进行等式运算中,“==”和“!=”又被称作是逻辑等式运算符,由于等式运算中的两个操作数有可能是x和z,因此其运算结果可能是不定值x。但是,“===”和“!==”对比时要求两个操作数必须完全一致,因此其运行结果只有0和1两种。 | ||
=== 9、赋值运算符 === | === 9、赋值运算符 === | ||
行 116: | 行 122: | ||
|= |连续赋值 |不定 |a = b| | |= |连续赋值 |不定 |a = b| | ||
|= |过程赋值 |不定 |a = b| | |= |过程赋值 |不定 |a = b| | ||
- | |<= |过程赋值 |不定 |a <= b| | + | |< = |过程赋值 |不定 |a < = b| |
* 通常,连续赋值运算用于“assign”语句中,用于对wire型变量进行赋值,“=”两侧的操作数时随时变化的,例如: | * 通常,连续赋值运算用于“assign”语句中,用于对wire型变量进行赋值,“=”两侧的操作数时随时变化的,例如: | ||
**assign a = b**,当b信号发生变化时,a都随之变化。 | **assign a = b**,当b信号发生变化时,a都随之变化。 |