4 / 63 · 概念
NAND、NOR 与反相符号的读法
区分取反的作用范围,利用德摩根定律连接功能相同的符号与表达式。
课时内容可免费阅读,选课后可保存学习进度。
小圆圈对整个输出值取反
NAND 对 AND 的结果取反,NOR 对 OR 的结果取反。NAND 并不是“先将各输入取反再做 AND”。先确认取反取反 将 0 变为 1、1 变为 0 的 NOT 运算。表达式上方的横线表示对其覆盖的整个表达式应用 NOT。所作用的范围。
| a | b | NAND | NOR |
|---|---|---|---|
| 0 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| a | b | y |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
选择 NAND,确认只有输入 11 时输出为 0。再切换为 NOR,确认只有输入 00 时输出为 1。反相后的输出仍是有效的 0/1 信号,并不是“尚未计算出的值”。
德摩根定律也是读图方法
把 AND 输出端的反相移到输入端时,运算也必须变成 OR。若只移动反相圆圈却仍使用 AND,就会得到另一个函数。当 时,NAND 为 1,而 为 0,可立即找到反例。
- NAND: Y = NOT (a AND b)
- 分别对输入取反: 生成 NOT a 和 NOT b
- 用 OR 结合: Y = (NOT a) OR (NOT b)
Active-low 规定信号何时有效
像 reset_n 这样在 0 时起作用的信号称为 active-lowactive-low 信号为 0 时,请求或功能有效的约定。名称末尾的 _n 是常见命名惯例,实际行为仍由规格决定。。名称中的 _n 只是惯例,行为由规格和电路决定。若两个请求 req0_n、req1_n 中只要有一个为 0,就要使警报 alarm 为 1,则可按下式计算。
每个信号上方的横线对该信号应用 NOT。最后的长横线对两个信号的整个 AND 结果应用 NOT,因此可用一个 NAND 实现。例如输入为 11 时没有请求,alarm=0;输入为 01 时第一个请求有效,alarm=1。
信号“有效”不总是等同于数值 1。读取输入时,应分别检查逻辑值、有效条件与反相符号。
自己试试
只有两个低有效使能 permit0_n、permit1_n 都有效时,go 才能为 1。应连接 NAND 还是 NOR?
阅读解释
只有两者都为 0 时才应输出 1,因此选择 NOR。go=NOT(permit0_n OR permit1_n)。仅凭“都”这个词就选 AND,会忽略信号的有效极性。