从目前的观点来看,我很难理解触发器实际上是如何翻转状态的,并想知道为什么这样的设计在更简单的设计就足够的情况下通常会被使用。
我希望在向您展示了我的闩锁图版本之后,有人可以指出这些缺陷,这可以帮助我理解为什么触发器式闩锁更好。
我正在看书,碰到某种“一般”形式的闩锁: https://i.imgur.com/nkldf4u.png(对不起,我没有信誉插入图像)
我已经花了大约2个小时来尝试真正掌握该机制。看到我做不到,我画了我的闩锁版本:
https://i.imgur.com/fFgpNzR.png
蓝色图(本书中的一个图)更难遵循,因为当输入切换一次时,某些门将切换2次,因为随着输出被隧穿回作为输入到同一门,输出可能会基于其先前的值。
我的图表的黑色版本使用一种更具可编程性的方法。我采用当前状态C,并确定它是否与输入状态不同,然后将其输出到A。我在“与”门中使用启用线使用A值来确定是否同时满足两个条件,并将其放入B。最后, m使用XOR更改状态并输出为C。
我希望有人能告诉我为什么这样不好,我没有考虑什么,或者为什么需要一个更复杂的机制。
谢谢您。
答案 0 :(得分:0)
据我所知,您的闩锁实现应该可以工作。
但是,低级数字设计不只是门数。在实际电路中,并非所有门都被创建为相等,因为这些门的实际实现会比其他门产生更多的“成本”(通常以面积/晶体管数和布线的复杂性来衡量)。对于典型的CMOS实施,NAND门确实很便宜(两个输入NAND只有4个晶体管),因此许多基元都将NAND(或NOR)用作更复杂设计的基础。 XOR通常是实现起来比较复杂的门,我见过的大多数CMOS实现都使用8个晶体管。如果不仔细研究和优化设计,则可能需要至少20个或更多的晶体管才能实现,而教科书中的锁存器设计只需16个(每位存储面积可节省20%以上,这是非常重要的)。在这里,除了晶体管数量之外,还有很多其他的功能。诸如晶体管大小,布线和走线大小,功耗注意事项以及实际通过和实施设计时的故障保护之类的事情,因此,即使是这种简单的分析也是不完整的,并且可能是教科书实施与您的实施不符的原因(反之亦然)。
异步时序逻辑(锁存/触发器实现是什么)可能很难理解,这就是为什么大多数电路使用更高级别的构造并将这些细节视为黑盒的原因(并且在实际实现时还会创建一个很好的抽象概念)只要保留该元素的属性就没有关系。