文章目录
前言
本文首发:FPGA的设计艺术(1)FPGA的硬件架构
FPGA是一个很神奇的器件,工程师可以在上面做游戏或者说工程师每天都在上面做游戏,通过搭积木的方式,还能设计出精美绝伦,纷繁复杂,奇妙无比的电路,这使用器件搭建几乎是做不到的,因为太庞大!这种设计也只能在FPGA或者专用的IC中能够实现,IC只能定制,可是FPGA却可以反复使用,每一次都可以是不同的电路,因此,FPGA目前的应用十分广泛,在很多关键领域,也是香饽饽一样的存在。
既然FPGA如此之妙,那么对FPGA有一个清晰地认识很有必要!
什么是FPGA?
FPGA是什么?这是一种官方的解释:
FPGA是一种集成电路(IC),在制造后可以对不同的算法进行编程。现代FPGA由多达200万个逻辑单元组成,可以配置实现各种软件算法。虽然传统的FPGA设计流程更类似于普通的IC(都是适用硬件描述语言设计电路并验证电路)而非处理器,但与IC开发工作相比,FPGA具有显著的成本优势(电路设计完成之后可以直接使用,而不需要继续流片),并在大多数情况下提供相同的性能水平。与IC相比,FPGA的另一个优势是它可以动态地重新配置(FPGA的名字就是现场可编程门阵列,即可随时重新编程,重新配置)。这个过程与在处理器中加载程序一样,可以影响FPGA结构中的部分或全部可用资源。
FPGA的硬件架构
Xilinx FPGA是异构计算平台(所谓异构,就是有很多不同的部分组成),包括Block RAM、DSP Slices、PCI Express支持和可编程结构。由于所有这些计算资源都可以同时使用,因此它们可以在整个平台上实现应用的并行化和流水线化。
FPGA的基本结构由以下元素组成。
- 查找表(LUT)–该元件执行逻辑运算。
- 触发器(FF)–这个寄存器元素存储LUT的结果。
- 布线资源–将各种元件彼此连接。
- 输入/输出(I/O)引脚 - 这些物理端口将数据输入和输出FPGA。
这些元素的组合形成了下图所示的基本FPGA结构。虽然这种结构足以实现任何算法,但从计算吞吐量、所需资源和可实现的时钟频率来看,所产生的实现效率是有限的。
当代FPGA架构将基本元素与附加的计算和数据存储块结合在一起,提高了器件的计算密度和效率。这些附加的元素包括