嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

FPGA 和 ASIC 的世界:第 1 部分

FPGA_Microsoft_Catapult2_c7d79b88903632176b04d9331448791f064258b6.jpg                                                                                                                                                  源:Microsoft Research

本系列博客文章共分为 2 个部分。在第 1 部分中,我将介绍可编程硬件的起源,这种硬件使 PCB 设计的芯片数量得以减少。在第 2 部分中,我将介绍 FPGA 和 ASIC 如何在当今高速和高可靠性应用中取代微处理器和 DSP

早期数字逻辑

1953年,曼彻斯特大学制造出第一台可运行程序的半导体计算机。它包含 92 个点接触型晶体管和 550 个二极管,但是它的平均指令速度仅约 33 个指令/秒。至少它在基于热电子管(“真空管”)的前一代计算机上迈出了一大步,因为它的能耗和体积都更小。我提及它的原因在于,它代表了处理能力不断增强,体积不断变小的机器发展趋势的早期起点。所有的数字计算机(即使今天)都包含相互关联的逻辑门,它们提供 AND(与门)、OR(或门)和 NOT(非门)基本函数。仅仅通过这三种类型的门就能构建出几乎任何东西。实际上,它们的负逻辑形式与反向输出的应用更加广泛:NAND(与非门)和 NOR(或非门)。这是因为这种形式只需最少的晶体管级;如需生成传播延迟和能耗相应增大的 AND 和 OR,则需要增加一个反相晶体管。这些逻辑函数作为基本构成要素具有重要作用,它们用于首批商业集成电路设计。74 系列的晶体管-晶体管逻辑 (TTL) 芯片今天仍在使用,包括 7400(四 2 输入与非门)和 7402(四 2 输入与或门),尽管硅技术有了大幅的提升。

上世纪 60 年代末期和 70 年代早期的计算机包含许多满载 TLL 或 CMOS 门芯片的电路板。随着 IC 技术的发展,具有计数器和移位寄存器等“特别功能”的新型芯片问世,减少了电路板的数量,有利于减小计算机的体积。大规模集成 (LSI) 生产出第一批 RAM 芯片,然后发展为微处理器。然而即使通过单片处理器和存储器芯片,仍然很难构建真正的单板计算机。特定设计仍有大量必要的“胶合逻辑”,必须从基本的门芯片开始构建。

门阵列

很快,芯片制造商开始生产被称为可编程阵列逻辑 (PAL) 和自由逻辑阵列 (ULA) 的可定制设备。PAL 包含固定的与门/或门组,这被称为乘积项:在每个组中,各个门通过熔断体连接在一起。这些熔断体被外部编程器识别为可编程只读存储器。为了搭建所需的电路,熔断器被编程器在必要位置“烧断”以断开不必要的熔断体。因此这些早期设备为“一次性可编程”(OTP),无法更改错误。尽管如此,它们的价格相对便宜,为了减少整体芯片数量,损失少量芯片是值得的。后期设备使用紫外线可擦除链式存储器,在可原位重新编程的 EEPROM 芯片问世之前,它们是可重新配置的。更新的设备包含触发器、乘法器,甚至还有 RAM 组以提升应用灵活性。随着超大规模集成电路 (VLSI) 的问世,这些可编程设备变得非常复杂,SRAM 构成了内部配置内存,开机时由引导程序从外部 EPROM 或闪存芯片加载。由此我们迎来了 FPGA

ULA 与 PAL 的处理方法不同。用户现在从“空白画布”开始。制造商提供一系列软件工具,帮助开发商在单个晶体管/二极管的层面上设计自己的芯片。这意味着您可以创建不含冗余或无用元素的定制设计,并进行速度和能耗优化。而这样做的缺点是设计师必须生成设备的“跟踪”布局:与印刷电路板布局相似,涵盖元件之间的连接,包括常用时钟、电源和接地连接。用户向供应商提供图表,显示每个元件在硅晶片上的准确位置以及用于提供所有相互连接的金属层的屏蔽。ULA 无法包含高密度元件,因此整个组件与印刷电路板设计相似。实际上,ULA 是我们现在称为可完全自定义的应用型专用集成电路(简称为ASIC)的早期形式。ASIC 根据设计制造,任何错误都会造成严重的经济损失。因此,除非设计非常成熟(可能通过 FPGA 验证),否则不会制造这种组件。早期 Pentium 微处理器设计中存在的错误(又称为浮点除错误)使 Intel 蒙受了上亿美元的损失。

用可编程逻辑节省空间的示例

下图为来自二十世纪 80 年代的两块单板计算机,一块上面搭载了大量简单的“胶合逻辑”芯片(图 1),另一块搭载了一个 ULA 设备(图 2)。大多数人至少听说过 Clive Sinclair 的开创性发明 ZX81;而使用 Forth 编程语言的 Jupiter Ace 知名度略小。即使没有薄膜键盘底座,Jupiter Ace 显然也需要更多的“硬件”来搭配它的许多芯片。ZX81 的电路非常相似,但是所有的小规模和中等规模集成电路 (SSI/MSI) 组合成为一个 ULA 芯片。有趣的是,ZX81 比 Ace 推出一年。这说明了销售在任何设计中都起到重要的作用:Ace 销售预期不佳,无法承受 ULA 的高成本。

FPGA_1_blog_1_cb10485d9d2e9833adf9df8d31d920fe4de16c08.png

FPGA_1_blog_2_50df3e9cc7b81da40efbb6d012e8ba1e640be2ee.png

自 PAL 和 ULA 的时代以来,FPGA 已经得到长足的发展。板载功能模块越来越多地被装进单块芯片中,因此变得越来越复杂。人们使用 VHDL、Verilog 等高级语言对它们进行“编程”。直到最近,它们仍然非常昂贵,远远超过创客们的承受能力。现在这种情况已经发生改变,在第 2 部分中,我们将介绍它们如何在人工智能等应用中取代微处理器和 DSP。

然而,简单胶合逻辑的替代品有哪些?如果您只是需要小体积、低成本的设备来提供一些基本逻辑功能,那么不用担心,PAL 仍然存在,它的新名称叫做简单可编程逻辑器件(简称为 SPLD)。毫无意外的是,FPGA 和 ASIC 现在称为复杂可编程逻辑器件(简称为 CPLD)。为何 Raspberry Pi 等现代 SBC 似乎不再需要胶合逻辑?欲知详情,请见第 2 部分。

如果您暂时想不出做什么,可以关注我在 Twitter 上发布的文章。我会贴出关于新的电子产品和相关技术的文章链接,也会转发我读到的关于机器人、空间探索以及其它话题的文章。

Engineer, PhD, lecturer, freelance technical writer, blogger & tweeter interested in robots, AI, planetary explorers and all things electronic. STEM ambassador. Designed, built and programmed my first microcomputer in 1976. Still learning, still building, still coding today.