4

如何以抽象的方式思考设计数字逻辑芯片?

我目前正在研究第一章的“计算系统的元素”,并且从 Nand 开始,我已经实现了以下门。

不是

或者

异或

多路复用器

多路复用器

16位不

16位和

16位或

16位多路复用器

8路或

我现在一直在尝试实现 16 位四路复用器。

我已经尝试将真值表转换为规范符号,但我最终得到了一个巨大的混乱。使用规范表示对于“较小”的芯片效果很好,但现在非常复杂。我如何考虑以一种不涉及将随机筹码混合在一起的方式组合“复杂”筹码?

编辑:

我对四路 Mux 的 16 位部分并不感到困惑。我计划只在一个阵列中使用一堆四路复用器。4路多路复用器是我坚持的部分。

4

2 回答 2

4

让我们从两个输入多路复用器开始。

两个输入 A 和 B 和一个选择线 S。当 A 或 B 为“1”并且选择线选择该输入时,输出将为“1”,否则为“0”。所以要么:

A=1 and S=0
B=1 and S=1

把它写成门:

(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))

我们可以看到出现了一种模式,即每个输入都与一些“启用项”进行“与”运算,从而打开或关闭该输入。由于启用条件是排他性的(任何时候只有一个可以为真),因此效果是将输出切换到所需的输入。

这可以扩展到任何大小的 MUX。

于 2011-10-17T05:43:50.830 回答
2

我赞赏您的“从底部开始并逐步完善”的方法,它将帮助您了解随着时间的推移越来越复杂的电路所涉及的内容。

可能还值得指出的是,一旦你designing digital logic chips扩大规模,现在通常会在更高的水平上完成。通常使用硬件描述语言(通常是 Verilog 或 VHDL),甚至在某些领域中使用 C 来表示芯片的某些部分。

一旦你在那个级别上工作,你就很少为 MUX 编写代码,但是在你编写文本描述时知道你要求综合工具为你生成一个并且你有一定的把握是非常有用的它可能有多“大”(在门中)。

需要注意的另一点是,如果您转向使用 FPGA 进行设计,您的基本构建块不是 NAND 门,而是 4 或 6 个输入查找表(以及各种其他辅助块)。这改变了你的观点,因为4(或 6)个输入的任何函数的成本都是一样的......

于 2011-10-17T08:50:46.613 回答