现场可编程逻辑门阵列
现场可编程门阵列(通常简称为FPGA)是一种用于构建可重构数字电路的电子元件。这意味着FPGA与逻辑门不同,因为逻辑门有固定的功能。而FPGA在制造时则有一个不确定的功能。在FPGA能够用于电路之前,必须对其进行编程,即重新配置。
FPGA是可编程逻辑器件或PLD类的集成电路。FPGA是PLD类型中性能最高、最灵活,也是最昂贵的。与其他PLD相比,FPGA的一个缺点是,当电源被拔掉时,FPGA不记得自己的设计。因此,FPGA需要一个单独的配置存储器芯片,用来保存FPGA的设计。当电源还给FPGA时,FPGA的固定部分会从配置存储器芯片中读取配置。FPGA配置好后就可以完成设计赋予它的功能。
FPGA与微处理器或微控制器不同。一个基本形式的FPGA是不能运行软件的。只有当FPGA被赋予一个包含处理器架构的配置时,它才有能力运行软件。
FPGA制造商为Windows提供工程软件,有时也为Linux提供工程软件,以开发FPGA的设计。设计通常以人类可读的计算机文件编写,称为硬件描述语言(HDL),最流行的是VHDL和Verilog。最流行的是VHDL和Verilog。硬件描述语言与编程语言有很强的可比性。但HDL的意图是设计数字逻辑电路,而编程语言则是设计软件。
FPGA工程软件必须将抽象的HDL代码转化为所选FPGA中可用的逻辑元素。这就是所谓的逻辑综合。然后进行一个放置和路由的过程,将逻辑元素在FPGA中定位。其结果是一个可以编入FPGA或配置存储器的位文件。这通常是通过连接到FPGA的JTAG端口的USB编程器来完成的。
由于FPGA是一个集成电路,FPGA制造商可以决定增加其他常用的集成电路部件。这些固定的部件被称为内核。例如,这些都是以太网控制器,甚至是一个完整的处理器架构。对于不同的细分市场,如国防、医疗、通信和机器人,FPGA制造商试图添加最有价值的一组附加核。
内部结构
FPGA一般建立在可编程逻辑元件和可编程互连的基础上。逻辑元件的一个构建模块是可编程查找表(LUT)。一个LUT可以被编程为在给定输入值的情况下输出任何值。通过这种方式,LUT可以被编程为具有相同数量输入和输出的任何类型的逻辑。例如,一个2输入、1输出的LUT可以被编程为模拟2输入的AND、OR、NAND、NOR、XOR等逻辑。该LUT的输出可以使用寄存器保存,也可以连接到其他LUT的输入。使用一个可编程的复用器,可以对FPGA进行编程,选择注册或非注册的输出。这种LUT、寄存器和mux的组合就是逻辑元件的一般结构。
为了将这些逻辑元件连接在一起,使用了通式晶体管。晶体管可以被编程为连接信号或不连接信号,从而使FPGA有能力非常具体地将逻辑元件连接在一起。例如,如果一个逻辑元件的输出将馈送另一个逻辑元件的输入,那么可以通过编程将这两根线连接在一起,并匹配指定的逻辑。在逻辑元件和通式晶体管之间,编译器可以从HDL中获取硬件描述,为逻辑元件创建逻辑,并使用通式晶体管将它们连接在一起。
问题和答案
问:什么是现场可编程门阵列(FPGA)?答:现场可编程门阵列(FPGA)是一种用于构建可重构数字电路的电子元件。它在制造时具有未定义的功能,必须在电路中使用前进行编程,或重新配置。
问:FPGA与逻辑门有什么不同?
答:FPGA与逻辑门不同,因为逻辑门有一个固定的功能,而FPGA在制造时有一个未定义的功能。
问:FPGA是什么类型的集成电路?
答:FPGA是可编程逻辑器件或PLD类别中的一种集成电路。
问:与其他PLD相比,使用FPGA有哪些缺点?
答:与其他PLD相比,使用FPGA的一个缺点是,它们在断电后不能记住自己的设计,因此它们需要一个单独的配置存储芯片来保存设计。它们也比其他类型的PLD更昂贵。
问:如何对FPGA进行编程?
答:为了对FPGA进行编程,工程师使用Windows或Linux的工程软件来开发用硬件描述语言(如VHDL和Verilog)编写的设计。然后,软件将这些代码翻译成选定的FGPA上可用的逻辑元件,并通过放置和路由过程将其定位,从而创建一个位文件,该文件可以被编程到配置存储器中,或者用连接到JTAG端口的USB编程器直接编程到FGPA本身。
问:微处理器和微控制器与FGPA的相似吗?
答:不,微处理器和微控制器与FGPA的不同,因为在其基本形式下,它不能运行软件;只有当给它一个包含处理器架构的配置时,它才有这种能力。