什么是FPGA?

FPGA基础

FPGA可以配置成千上万次成一个几乎无限数量的电路,使其成为学习数字电路和系统的理想工具。事实上,由于同样的原因,FPGA已经在电子工业中获得了广泛的接受——它们几乎可以快速地配置为任何电路(甚至整个计算机系统),允许工程师在它们商业化制造之前彻底研究设计。

在Digilent,我们经常讨论不同的应用和用途F通过ProgrammableG吃了一个rrays(fpga),但不可否认的是,我们很少涉及另一个话题……到底是什么一个FPGA吗?为了解决这个问题,今天我们将简要概述一下。

FPGA简介

FPGA的历史是怎样的?

fpga开发于20世纪80年代中期,最初的设想是让设计师能够创建定制的数字逻辑。到20世纪90年代初,fpga主要用于电信和网络。到90年代末,fpga已被用于消费、汽车和工业应用。

FPGA是如何工作的?

FPGA由内部硬件块和用户可编程互联组成,可为特定应用程序定制操作。这些互连可以重新编程,允许FPGA在部件的生命周期内适应设计更改或支持新应用程序。FPGA在制造过程中被编程,但是可以在以后被重新编程以反映设备的任何变化。

FPGA是基于通过可编程互连连接的可配置逻辑块(clb)矩阵。clb构成基本的FPGA单元,包括两个16位函数发生器、一个8位函数发生器、两个寄存器(触发器或锁存器)和可编程路由控制(多路复用器)。clb用于实现宏和其他设计的功能。

与处理器不同,fpga能够进行并行操作,因此不同的处理操作不会争夺相同的资源。每个独立的任务被分配到芯片的一个专用部分,可以在不受其他逻辑块影响的情况下自主工作。因此,当添加更多的操作时,应用程序的某一部分的性能不会受到影响。

fpga内部配置是由软件设置的,也就是通常所说的“固件”。随着应用程序或功能需求的变化,fpga可以在现场重新编程。

fpga设计使用硬件描述语言,如Verilog HDL或VHDL进行编程。由于fpga是可重新编程的,所以它们与ASIC ic不同,ASIC ic是专门设计来完成特定设计任务的。

是否应该使用基于fpga的设计需要在设计过程的早期做出决定。应该考虑芯片是否需要在设计过程后期甚至在制造后重新编程。有时制造商可能会在开发周期的早期决定采用基于fpga的设计,那时可能还会发现bug,然后在设计稳定时切换到ASIC。

印刷电路板上Artix-7的图片

FPGA内部有什么?

fpga包含专门用于特定功能的组件和更通用的可配置逻辑。

可配置逻辑块

可配置逻辑块(clb)是FPGA的基本逻辑单元。CLB使FPGA能够接受不同的硬件配置。clb可以被编程来执行几乎任何逻辑功能。每个CLB包含许多离散的逻辑组件,包括查找表(LUTs)和触发器。

人字拖

触发器是一种具有两种稳定状态并可用于存储状态信息的电路。触发器是二进制移位寄存器,用于在FPGA电路的时钟周期之间进行逻辑同步和保存逻辑状态。触发器只存储一位数据。

查找表

查找表(LUT)确定任何给定输入的输出。在组合逻辑的上下文中,它是真值表并定义了组合逻辑的行为方式。真值表是每个输入组合的预定义输出列表。LUT保存着一个自定义的真值表,该表在芯片通电时加载。

DSP片

DSP片,有时也称为块或单元,是FPGA中的专用组件之一。它执行数字信号处理功能,如滤波或乘法,比使用许多clb更有效。这个乘法器电路在数学和信号处理应用中节省了LUT和触发器的使用。

块内存

FPGA芯片上可用的内存被称为块RAM或BRAM。这些块可以被细分或级联,以使更小或更大的BRAM可用。数字信号处理算法经常需要跟踪整个数据块,而没有板载内存。许多处理功能不适合FPGA芯片的可配置逻辑。

收发器

收发器被用来以高速率向FPGA发送和接收串行数据。这个专用组件允许在不消耗FPGA逻辑资源的情况下实现高速数据传输。

输入/输出模块

输入输出(IO)块是数据进出FPGA的部件。IO块可以根据数据类型以多种方式进行配置。它们的运行速度比无线电收发器低,但保持了更多的功能灵活性。

什么是FPGA特性?

无限可配置的FPGA结构允许程序员设计一个FPGA来执行几乎任何功能。除了FPGA fabric提供的灵活性外,由于FPGA设计的并行性,FPGA吞吐量非常高。FPGA的核心功能如下:

并行处理

FPGA上的并行处理是可能的,因为它不遵循处理器编程模型。并行处理还意味着可以使用较慢的时钟(与处理器上的高频时钟相比),用户仍然可以实现所需的吞吐量,但能耗更低。并行处理还可以将应用程序中计算机密集型的部分卸载到FPGA,并减轻处理器执行较少计算机密集型任务的负担。并行处理使得fpga非常适合用于需要处理大量数据的测量系统和边缘计算应用。

fpga可以被重新配置

当设计需要更新或添加功能时,这很容易做到。这对于ASIC来说是困难的。随着产品的发展,只需简单地更新FPGA,就可以很容易地在该领域进行功能更改或改进。

低、中量生产

fpga通常用于低到中等容量的设备。在大批量产品中,asic通常因其较低的成本而受到青睐。asic通常在大批量产品中更便宜,而在低或中量产品中就不那么划算了。然而,ASIC的初始开发成本可能相当高,有时高达数百万美元。

快速开发过程

由于不需要晶体管级的实际设计,fpga可以提供从概念到生产的快速周转时间。

FPGA的应用程序

fpga可用于各种应用。使用FPGA的特定应用包括数字信号处理、生物医学仪器、设备控制器、软件定义无线电、随机逻辑、医学成像、计算机硬件仿真、语音识别、密码、滤波和通信编码等。消费电子应用包括智能手机、自动驾驶汽车、相机、显示器、视频和图像处理以及安全系统。fpga也被用于许多商业应用,如服务器和各种市场,包括航空航天和国防、医疗电子和分布式货币系统。

使用FPGA的优点是什么?

使用fpga的许多好处用于嵌入式系统设计。

性能

与其他现代微处理器相比,fpga的并行特性允许它们提供更高的处理能力、速度、更好的响应时间和整体性能改进。

可重复编程的硬件结构

因为fpga是可编程的,所以即使在生产后功能也可以被重新定义。用户可以编程新的产品特性和功能,适应新的标准,并重新配置硬件应用程序后,产品已安装在现场。这种灵活性使基于fpga的设计优于基于微控制器的系统。用户可以在编程时犯错误,然后使用新的配置文件修改或更改FPGA,而无需创建原型或额外的硬件,从而节省时间和降低成本。

更快的上市时间

fpga很容易使用,并允许用户快速开发基于该技术的系统。asic的制造周期需要几个月。FPGA用户可以在产品设计工作和测试完成后立即交付系统。

降低整体成本

与ASIC的制造成本相比,fpga相对便宜。ASIC的设计周期长,生产工具成本高。此外,任何设计上的改变都需要一个新的芯片,而FPGA可以简单地用一个新程序更新。

维修费用低

与asic不同,fpga是可重新编程的,可以在现场进行升级或增强,而不需要投入时间和资源来重新配置电路板和硬件。工程成本也大大低于asic。系统需求可以随着时间的推移而改变,相对于为ASIC更换工具的巨大开销,对FPGA进行增量更改的成本是很小的。

如何学习用FPGA设计

学习更多关于fpga的第一步是决定芯片的类型和选择一种编程语言。VHDL比Verilog更冗长,用VHDL编写的设计被认为是自文档化的。Verilog需要更少的代码,而且被认为更容易学习。我们实际上说得更多深入介绍Xilinx的工具在另一篇博客文章中。

在选择FPGA芯片时需要考虑很多因素,包括IO计数、门数、工作频率和成本。在传统fpga和系统芯片(SoC) fpga之间,功能也可以有所不同。SoC FPGA将处理器和FPGA架构集成到一个单一的设备中。在处理器和FPGA之间提供更高的集成度、更低的功耗、更小的尺寸和更高的带宽。

下一步是选择一个开发板。的Digilent Basys 3非常适合入门使用FPGA。它是一种入门级开发板,围绕Xilinx Artix-7 FPGA构建艺术Z7对于那些想要进入大学的人来说,这是个不错的选择吗SoC技术

下面是一些额外的FPGA资源:

  • Digilent论坛是一个很好的地方,可以阅读以前的讨论,并向其他工程师征求意见。
  • Subreddits像/ r / FPGA/ r /嵌入式是每天都在变化的重要信息来源。
  • Nandland是一个很棒的FPGA基础知识、教程、示例和视频资源。
  • Udemy提供在线培训课程FPGA高级综合

图的Digilent Basys 3 FPGA板

留下一个回复

您的电子邮件地址将不会被公布。必填字段被标记