《TapeOut生态小白入门全集》02 NAND和LATCH到底在忙什么 上一回,小孩哥和新手来到工作台,面前摆着NAND和LATCH。想看懂TapeOut… · @0xkEvinC · TwKit
@0xkEvinC
《TapeOut生态小白入门全集》02 NAND和LATCH到底在忙什么 上一回,小孩哥和新手来到工作台,面前摆着NAND和LATCH。想看懂TapeOut的电路,先别急着接线,只想两件小事:怎样根据条件给出答案,怎样记住刚才发生了什么。前一件事可以从NAND学起,后一件事交给LATCH。它们处理的是零和一,一个值可以代表灯灭或灯亮,也可以代表条件不成立或成立,具体含义由设计的人约定。 NAND的中文叫“与非”。它有两个输入,只有两个输入都是一,输出才是零;其余三种组合,输出都是一。假设输入分别表示“门已关好”和“安全检查通过”,输出表示“仍需提醒”,那么只要有一项没满足,提醒就保持开启。这是帮助理解规则的小例子,真正的设备还需要更多保护设计。 这个规则看起来简单,接起来却能做更多事情。把同一个信号同时接到NAND的两个输入,零会变成一,一会变成零,就得到了“取反”。先对两个条件做一次NAND,再把结果取反,就能表达“两个条件同时满足”。这样一步步拼接,可以构成更复杂的判断,读图时也能沿着信号逐步推算。 LATCH负责另一件事:保存一个比特,也就是一个零或一。在TapeOut的计算规则里,每计算一拍,它先输出上一拍保存的值,再把这一拍接到它输入端的值写入新状态。这里的“一拍”指一次计算步骤,并没有规定必须间隔多少秒。它记的是一个比特,下一拍还会更新,不是把所有输入永久存下来。 来走两拍看看。假设初始状态明确设为零,第一拍送入一,LATCH这一拍输出零,新的状态变成一;第二拍送入零,它先输出刚存下的一,然后把状态更新为零。因此,看到当前输入已经改变、输出却还是旧值,不一定是电路出错,可能恰好就是设计要求的延迟一拍。 把两类元件配合起来,就可以比较“现在”和“刚才”。例如想识别按钮刚被按下的那一步,可以用LATCH记住前一拍的按钮状态,再用逻辑判断当前为一、之前为零。按钮一直保持按下时,前后都为一,就不再被当成一次新的按下。这个例子里的按钮是输入信号,实际接线仍要按完整逻辑设计。 再说容易混在一起的资源和价格。电路需要几个NAND、几个LATCH,说的是设计消耗的元件数量;获得相应资源要花多少钱,说的是报价与交易成本。两者不能只看名字就当成同一个数字。流片时应核对设计里直接使用的两类元件数量,以及操作页面对应的资源余额和费用,别用市场价格反推电路复杂度。 入门练习不用一下子画满画布。先用NAND试完四种输入组合,再给LATCH设定初始状态,连续算几拍,把预期答案写下来逐项核对。能解释每一拍为什么得到这个结果,就已经掌握了“判断”和“记忆”的区别。下一步,我们把这些元件和连接整理成一份Circuit,看看它怎样完成流片。 #TapeOut #NAND #LATCH #布尔逻辑 #数字电路 #逻辑门 #状态 #时序逻辑 #电路设计 #Circuit #链上电路
曝光 35 · 评论 1 · 点赞 1 · 书签 0
查看原帖