如何思考数字电路设计

时间:2011-10-17 00:31:35

标签: hardware logic circuit digital-design

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

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

或者

异或

复用器

DMUX

16位不

16位和

16bit或

16位Mux

8路或

我现在卡住了尝试实现16位四路复用器。

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

编辑:

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

2 个答案:

答案 0 :(得分: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))

我们可以看到一种模式正在出现,即每个输入都与一些“启用术语”进行AND运算,该启用术语可以打开或关闭该输入。由于启用条件是独占的(任何时候只能有一个条件),效果是将输出切换到所需的输入。

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

答案 1 :(得分:2)

我赞赏你的“从底层开始并开始工作”的方法,它将帮助你了解随着时间推移越来越复杂的电路所涉及的内容。

也许值得指出的是,一旦你以更大的比例来到designing digital logic chips,这些天通常会在更高的水平上完成。通常使用硬件描述语言(通常是Verilog或VHDL),甚至在某些域中使用C作为芯片的一部分。

一旦你在那个级别工作,你很少编写MUX的代码,但是当你写出你要求综合工具为你生成一个文本描述时,知道非常有用,并且你对于它可能会有多大的“大门”有所了解。

另一点值得注意的是,如果你转向使用FPGA设计,你的基本构建模块不是与非门,而是4或6个输入查找表(带有各种其他辅助模块)。这改变了你的观点,因为4个(或6个)输入的任何函数的成本相同......