Altifigence Academy

4 / 63 · 概念

NAND、NOR 与反相符号的读法

区分取反的作用范围,利用德摩根定律连接功能相同的符号与表达式。

小圆圈对整个输出值取反

NAND 对 AND 的结果取反,NOR 对 OR 的结果取反。NAND 并不是“先将各输入取反再做 AND”。先确认取反取反 将 0 变为 1、1 变为 0 的 NOT 运算。表达式上方的横线表示对其覆盖的整个表达式应用 NOT。所作用的范围。

YNAND=ab‾,YNOR=a+b‾Y_{NAND}=\overline{ab},\qquad Y_{NOR}=\overline{a+b}
abNANDNOR
0011
0110
1010
1100
输出反相圆圈与真值表
NAND · 真值表
aby
001
011
101
110

选择 NAND,确认只有输入 11 时输出为 0。再切换为 NOR,确认只有输入 00 时输出为 1。反相后的输出仍是有效的 0/1 信号,并不是“尚未计算出的值”。

德摩根定律也是读图方法

ab‾=a‾+b‾,a+b‾=a‾ b‾\overline{ab}=\overline a+\overline b,\qquad \overline{a+b}=\overline a\,\overline b

把 AND 输出端的反相移到输入端时,运算也必须变成 OR。若只移动反相圆圈却仍使用 AND,就会得到另一个函数。当 a=0,b=1a=0,b=1 时,NAND 为 1,而 a‾ b‾\overline a\,\overline b 为 0,可立即找到反例。

将输出反相移到输入端时
  1. NAND: Y = NOT (a AND b)
  2. 分别对输入取反: 生成 NOT a 和 NOT b
  3. 用 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,则可按下式计算。

alarm=req0_n‾+req1_n‾=req0_n req1_n‾\mathrm{alarm}=\overline{\mathrm{req0\_n}}+\overline{\mathrm{req1\_n}}=\overline{\mathrm{req0\_n}\,\mathrm{req1\_n}}

每个信号上方的横线对该信号应用 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,会忽略信号的有效极性。

你的选择适用于此浏览器,可随时在页脚更改。