从另一个角度理解FPGA为什么可编程
2016-11-28 09:05阅读:
FPGA( Field
Programmable Gate Array),
中文名现场可编程逻辑门阵列,是在PAL、GAL、CPLD等可编程器件上进一步发展的产物,属于专用集成电路(ASIC,
Application Specific Integrated Circuit)领域的一种半定制电路。
ASIC是一种为专门目的而设计的集成电路,如果将FPGA类的应用统归为一种专门的目的的话,那么FPGA芯片可以看作一种为FPGA类应用目的而设计的ASIC芯片。
如果按照分层的思想来理解FPGA和ASIC的区别的话,那么它们有相同的一层,暂且叫它逻辑门层,因为这一层都是一些基本的逻辑门。ASIC就只有这一层,由这些逻辑门组合实现复杂的逻辑功能,一旦ASIC芯片生产出来,它的电路就已经固化了,它只能完成一种专门的目的,它不可重新配置。而FPGA逻辑门层的逻辑门构成一个个逻辑单元,像一个个小岛,岛与岛之间有很多的桥梁(连线),每个逻辑单元内部的基础一般是一个查找表(LUT)和一个触发器,如图所示。FPGA芯片生产出来之后是没有任何逻辑功能的,这个时候需要对其进行编程,及通过从硬件描述语言Verilog/VHDL开始的一系列开发流程之后,改变其LUT中真值表的值及逻辑单元之间的连线。一个小的逻辑单元完成一个小的逻辑功能,通过连线组合完成大的逻辑功能。这就好像是在FPGA原有电路的基础上生成了一个新的特殊的电路,这个电路实现专门的目的,像ASIC一样。所以FPGA可以再抽象出一层,就叫实现层好了,因为这一层实现了我们想要的逻辑功能。从逻辑门层到实现层的过程就是对FPGA的编程,所以Verilog/VHDL叫硬件描述语言,因为它们是直接描述电路结构的语言。
实现层只是抽象出来的一层,实际上FPGA芯片和ASIC芯片一样也是一堆逻辑门,只不过ASIC的逻辑门直接构成实现了特定的逻辑功能,而FPGA的逻辑门先实现一堆可编程的逻辑单元和可编程的连线,然后开发人员再通过它们
去实现特定的逻辑功能。

注:以上基于的是SRAM+EEPROM结构的FPGA,其它还有FLASH结构和反熔丝结构。
作者水平有限,如有理解错误的地方,还请不吝指出。