如何以抽象的方式思考数字逻辑芯片的设计?
我目前正在学习“计算系统的元素”,我在第一章中,我已经实现了以下gates,从Nand开始。
不
和
或
异或
多路复用
DMux
16位注释
16位和
16位或
16位复用器
8路或
我现在正试图实现一个16位的四路多路复用器。
我试着将真值表转换为规范符号,但最终得到了一个巨大的混乱。使用规范表示法对于“较小”的芯片工作得很好,但现在非常复杂。我如何才能考虑用一种不涉及将随机芯片拼凑在一起的方式来组装一个“复杂”的芯片呢?
编辑:
我并不是真的对四路多路复用器的16位部分感到困惑。我计划在一个数组中使用一堆四路Muxes。4路多路复用器是我喜欢的部分。
发布于 2011-10-17 13:43:51
让我们从一个双输入多路复用器开始。
两个输入A&B和一条选择线S。当A或B为'1‘时,输出将为'1’,选择线选择该输入,否则为'0‘。因此,要么:
A=1 and S=0
B=1 and S=1把它写成gates:
(A and (not S)) or (B and S)将其扩展到4路(S现在是2位):
A = 1 and S=0
B = 1 and S=1
C = 1 and S=2
D = 1 and S=3
(A and (not S1) and (not S0)) or
(B and (not S1) and ( S0)) or
(C and ( S1) and (not S0)) or
(D and ( S1) and ( S0))我们可以看到出现了一种模式,即每一个输入都与一些“使能项”进行AND运算,以打开或关闭该输入。由于使能项是独占的(任何时候只有一个项为真),其效果是将输出切换到所需的输入。
这可以扩展到任何大小的MUX。
发布于 2011-10-17 16:50:47
我赞赏你的“从底层开始,向上努力”的方法,它将帮助你理解随着时间的推移,越来越复杂的电路所涉及的内容。
还有必要指出的是,一旦你进入更大规模的designing digital logic chips,现在通常是在更高的级别上完成的。通常使用硬件描述语言(通常是Verilog或VHDL),甚至在某些域中使用C作为芯片的一部分。
一旦你在这个级别上工作,你很少为MUX编写代码,但是在你写文本描述的时候知道你正在请求合成工具为你生成一个MUX,并且你已经掌握了它可能有多“大”(在gates中),这是非常有用的。
另一点需要注意的是,如果你使用FPGA进行设计,你的基本构建块不是NAND门,而是4或6个输入查找表(带有各种各样的辅助块)。这改变了你的观点,因为4个(或6个)输入的任何函数的成本都是相同的…
https://stackoverflow.com/questions/7788339
复制相似问题