大多数 ALU 是如何构建的,是否可以“构建自己的”?

电器工程 嵌入式
2022-01-25 05:38:00

我一直在努力学习非常低水平的计算机。我一直在看很多自制页面,有很多东西可以吸收。我在大学里上过电子工程课程,但我们并没有真正深入了解这个主题(它是计算机科学,所以大多数其中实际上是算法等)。

无论如何,大多数ALU是如何构建的?我意识到这不是计算机的唯一部分,但它仍然是重要的部分。

您是否可以仅使用逻辑门(用于学习目的)构建自己的 ALU?我知道这对于那些知识渊博的人来说可能听起来很愚蠢,但我只是想理解。(哎呀,即使是一个简单的加法器也是一个简洁的项目。)如果是这样,这将如何完成?有硬件例子吗?(我环顾了谷歌,但我找不到任何有分步指南解释事情的东西)。

4个回答

您可以完全从基本逻辑门构建它们,结果将是一件不错的艺术品:-)。

74xx 逻辑系列还包含一个74LS181,一个4 位 slice ALU,大大简化了事情。位片 ALU 用于构建更复杂的 ALU(阅读:更长的字长),但更新的技术使这种 IC 过时了。
注意:TTL (74xx) 只是用于逻辑门的一种技术。已经很少使用了。紧随其后的是低功耗肖特基:74LSxx,严格来说也是 TTL 的一种形式。现在有几十个逻辑系列,全部基于高速 CMOS(74HCxx、74HCTxx、74ACxx、...)

如今,创建 ALU 的正确方法是在CPLDFPGA中进行。这为您提供了很多门,并且您用于设计 ALU 的 HDL(硬件描述语言)比试图弄清楚如何自己与逻辑门建立连接要容易得多且不易出错。VHDL和 Verilog 是当时的 HDL。

创建 ALU(但不使用逻辑门)的另一种方法是单个并行 EEPROM/Flash您使用输入 A 和 B 以及操作作为输入(地址)并将操作的结果作为输出(数据)。您所要做的就是编译 ROM 的内容,这意味着您必须在每个地址写入相应输入 A、B 和操作的操作结果。字大小将受到您能找到的最大 ROM 大小的限制。

这根本不是一个愚蠢的问题。维基百科页面显示了这种用于 2 位 ALU 的门级电路。ALU IC 过去通常以“切片”形式提供 - 通常为 4 位,您可以级联以获得更大的总线宽度(请参阅位切片)。

Texas 74181 4-bitslice ALU数据表也有门级原理图。

您可以构建自己的 ALU,但即使是带有离散 TTL 芯片的旧计算机也为此使用了一些集成。例如,看一下 74x181 芯片。那是 ALU 的 4 位切片,并在某些 TTL 计算机中用于通过对每 4 位使用这些芯片中的一个来实现完整的 ALU。

对于书籍,我绝对排在“帕特森和轩尼诗”书籍之后(IIRC 有 3 个,伪装成 3 个版本,但实际上完全不同的书。如果你是认真的:把它们都买下来。)

如果您想在基本的 ALU 甚至 CPU 设计中进行试验:开始使用逻辑模拟器进行试验。我们在课堂上使用了 DigitalWorks,但我不推荐它。Logisim ( http://sourceforge.net/projects/circuit/ ) 看起来很有希望。您需要掌握的是分层:从门构建全加器、选择器和边沿触发触发器等基本块,然后从这些构建块构建寄存器、ALU、排序逻辑,一直到 CPU与记忆。构建一个相当于 PIC(14 位核心)CPU 的处理器实际上并不难,连接一堆 LED 并对其进行编程以显示 Kitt 显示器。

之后,做一个 32 位内核,将 GCC 移植到它,在 FPGA 中实现它并在其上运行 Linux 将会很有趣。但你不会是第一个...