1.2 创造性地解释FPGA
在上一节初步介绍FPGA后,你可能还是不太清楚它到底有什么特别的地方,到底为何能应用在各种场景里。与其相关的一些专有名词听起来也比较抽象,似乎只有经验丰富的工程师才能真正理解。
其实,并不是这样的!在这一节,我们将使用通俗易懂的方式来讲述FPGA是怎样工作的。我们可以把FPGA比作工程中的珠串,甚至可以把FPGA比作乐高积木。
那么我们在工程中,设计数字电子系统时,使用“珠串”和“乐高积木”可以做什么呢?
1.2.1 珠串法
利用珠串法,设计人员可以使用细绳把小珠串起来,得到一种最好的控制模式,一种漂亮的、复杂的模式。但是这种细珠控制模式成本较高,模式不易改变,除非取消所有工作,一切从头开始。当你将珠串映射到数字电子设计中时,这种设计就与ASIC或ASSP非常相似。
想象一下,使用不同颜色的珠子,按照不同的顺序用线将珠子串成一个珠饰品;使用这些简单的部件,可以串成任何类型珠饰品;根据珠子的数量、颜色和排列顺序由简单到复杂。图1-3所示为用简单的珠子串成的一个珠饰作品——熊猫。
图1-3 珠饰作品——熊猫
假设珠子代表寄存器和逻辑门,细绳代表导线,如同珠子和细绳一样,使用上述3种元件可以制成一个系统——非常复杂的各类计算系统。可以假设不同颜色的珠子代表不同类型的逻辑门,如与门、或门、非门,当使用细线将不同颜色的普通珠子按照不同顺序串起来时,这些简单的算法运算就会变成复杂的计算。
按照不同的顺序排列珠子可以串成漂亮的饰品,但是当你想通过重新排列这些珠子或者改变珠子颜色将串好的饰品改成其他东西时,会发生什么呢?这时会变得有点复杂。在你想改变珠饰品时,必须解开所有细绳才能重新排列珠子。但是,很快你就会发现,这些细绳系得非常紧,根本无法取消部分设计,必须打破整个设计,才能稍微改变排列模式。
1.2.2 乐高积木法
乐高积木法与珠串法稍微有所不同。乐高积木比较大、厚实,只能通过积木上的某些连接点才能垒起来。使用乐高积木法,可以很容易地改变一小部分设计,且不用全部拆散后再重新开始垒。虽然乐高积木设计得没有珠串饰品美观、复杂,但是可以不用推倒整个积木重新开始垒就能改变部分设计,由此为我们提供了一种数字电路设计方法:FPGA。
如图1-4所示为一位名叫Marshal Banana的星战迷,他花费一年时间用7500块乐高积木堆出了经典宇宙飞船——Millennium Falcon。
图1-4 宇宙飞船——Millennium Falcon
同理,我们也可以使用乐高积木建造一个桌子,构建一个漂亮的数字系统,假设一些积木块代表逻辑门,一些积木块代表寄存器,剩余的是连接二者的导线。
现在,假设有人告诉你,他想更改桌子的右下角,或者改变乐高积木的颜色。因为乐高积木块都是可互相连接的,他可以轻而易举地把右下角的积木块换成不同的乐高积木块。而桌子剩余的乐高积木块保持不变,这样你无须重新进行整体设计,就可以改变其中的一小部分。