这篇文章将介绍FPGA的概念知识,将小白们引入到FPGA的硬件世界中,或许都知道FPGA的编程语言,有Verilog,VHDL,但是FPGA的内部架构到底是怎样的呢?不了解硬件是没法写出出色的硬件功能的。为此,特别开设专题,介绍FPGA的硬件相关的内容。
FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
Field Programmable Gate Array,其重点在于“Programmable ”,它是一种硬件编程,利用FPGA内部的逻辑单元,去构建硬件功能,和搭积木非常的相似。
从PLD看今天的FPGA
说到FPGA就不得不说其鼻祖PLD。PLD称为可编程逻辑器件 英文全称为:programmable logic device。早期的PLD,其作用与今天的FPGA大同小异,只是功能比FPGA弱得多。那么,说这么多,利用硬件编程语言编写的“程序”到底是怎么让积木搭起来的呢?接着往下看。
Fusible-link Technology
熔丝连接技术,同样,也有反熔丝连接技术。为什么要讲这个呢?因为,这个技术,就是搭积木的双手。假如我们有一个简单逻辑功能y=(&
)需要去实现,而内部的逻辑单元如下图示例:
首先,这四个断路的地方是可编程的连接点。
然后,在PLD可编程出厂时,每一路是有一个非常小的熔丝连接在一起。
通过编写的程序,使其中的两个目标连接点的熔丝断开,使其形成目标功能。
这整个过程就是基于熔丝技术的器件的编程过程。当然,这只是一个示例,实际的过程比这复杂。但是这已经能够形象的表示了这个积木是怎么搭的。虽然熔解链接技术在今天的FPGA中没有使用,但它为理解这些技术奠定了基础,所以我们将简要地探讨它。当你购买一个基于熔断器的可编程设备时,所有的熔断器最初都是完好无损的。这意味着,在非编程状态下,示例函数的输出总是逻辑0。关键在于设计工程师可以通过在设备输入端施加相对高的电压和电流脉冲来选择性地去除不需要的熔断器。
FPGA编程技术
当今FPGA的编程技术,主要有三种:
分别为SRAM编程技术,antifuse编程技术以及EPPROM或EEPPROM编程技术。
antifuse编程技术:作为熔融链路技术的一种直径替代方案,我们有其对应的反熔丝,其中每个可配置路径都有一个称为反熔丝的关联链接。在非程控状态下,反熔断器具有很高的电阻,可以认为是开路(导线的断路)。
SRAM编程技术:分别有DRAM和SRAM技术,但是SRAM是目前占主导地位的FPGA技术。SRAM的特别之处就是,一旦值被写入SRAM单元中,除非被特别指定修改,或者断电,其值都是不会被改变的。
由上图就很容易知道,这就是一个可指定通断的“熔丝”。通断的主要依据为SRAM单元中的值。
EPPROM或EEPPROM编程技术 :也称之为FLASH编程技术,该技术相对上面两个来说比较新。这一技术需要先了解其E2PROM的结构,内容还比较多,那就放到下一章再说。