提图斯· 卡穆尼亚
硬件和软件之间存在着非常细的界限。在为计算机等小工具创建硬件时,必须确保它可以运行并执行代码。
现场可编程门阵列(FPGA)是一种允许用户随时随地定制电路的硬件架构形式。
如果您想从事计算机科学或技术领域的职业,了解 FPGA 编程的工作原理将非常有价值。
在本文中,我们将描述什么是 FPGA 编程、它是如何工作的以及它的应用场合,并共享各种资源以进一步阐明它。
FPGA编程
FPGA 是一种集成电路 (IC),具有可配置逻辑块和可由用户编程和重新编程的各种其他功能。
“现场可编程”一词表示 FPGA 的功能不是硬连线的,而是可调节的。因此,用户可以随时修改电路的功能以满足其特定的设计意图。
*FPGA 编程可以描述为使用 FPGA 创建计算解决方案的过程。 *
程序员必须规划、设计和执行门的架构,以创建满足用户需求的功能电路。 FPGA 编程的最终目标是创建一个在上电时生成特定输出的硬件电路。
FPGA 上的电路板旨在模仿现实电路的行为。因此,质量保证团队最常使用此类电路板来测试新产品。 FPGA 系统将具有各种硬件元件。
逻辑门充当 FPGA 基础级别的构建块。逻辑门对输入和输出数据执行布尔运算。还有将信号从一点路由到另一点的路由资源。
FPGA 编程用例
FPGA 编程对现代世界的开发人员非常有吸引力。
以下是一些用例;
=#1.= 设计 ASIC
开发人员现在可以设计专用集成电路 (ASIC)。 ASIC 在比特币挖矿领域已经变得非常流行。
FPGA的设计使得纠正错误变得容易。 FPGA 的优点在于您可以将其用作其他项目的模型,从而从长远来看节省时间和资源。
=#2.= 可再生能源领域
在面临全球变暖挑战的世界中,风能和太阳能可再生能源变得越来越受欢迎。输配电 (T&D) 变电站需要高效的电力网络,以使智能电网发挥最佳性能。
FPGA 在提高智能电网的可扩展性和性能方面非常有用,同时仍保持低功耗。
=#3。= 航空航天和国防
飞机有时会飞过恶劣的环境。因此,制造公司生产抗辐射和抗辐射 FPGA,与传统 ASIC 实现相比,这些 FPGA 能够满足极端环境的可靠性、性能和生命周期要求。
=#4。= 服务器应用
随着对数据处理速度的需求与日俱增,数据中心/服务器已成为现实。即使在有限的空间和时间限制下,数据也需要实时处理。
FPGA 通过 BRAM 可以提供与外部数据存储元件的连接,从而加速芯片上的数据处理。
FPGA 编程的好处
- FPGA 是可重新配置的。 必须考虑 FGPA 的可用性。您可以配置一个并重新配置它以在另一个应用程序中使用。
- FGPA 需要较少的手动干预。 该软件处理 FGPA 环境中的布线、定时和布局任务。如果手动处理,此类任务可能会非常耗时且复杂。
- FPGA 就像空白画布一样。 与具有预定义功能的传统 ASIC 不同,FPGA 可以针对不同的用例重新编程。因此,工程师可以使用 HDL(硬件设计语言)将此类系统编程为不同的用例。
- 原型设计 。 ASIC 的制造成本很高,一个简单的错误就可能造成高昂的代价。在将 ASIC 推向市场之前,确保您的系统正常运行并满足其设计目标非常重要。 FPGA 是可重新编程的,这意味着您可以测试运行,直到获得正确的设计。
如何对 FPGA 进行编程
用于运行 FPGA 的设计主要使用硬件描述语言 (HDL) 进行编码,例如 SystemVerilog、Verilog 和 VHDL。
=#1.= Verilog
如果您想用几行代码对 FPGA 进行编程,Verilog 是理想的选择。尽管这种语言是为硬件架构设计的,但它与 C 语言相当。 Verilog 的创建是为了使 HDL 更加灵活和强大。
=#2.= 系统Verilog
SystemVerilog 是作为 Verilog 的扩展而创建的。它既是一种硬件验证语言,又是一种硬件描述语言。使用这种语言,您可以描述硬件模式,将其转换为数字代码,然后将其上传到 FPGA 系统中以执行指定的任务。
=#3。= 超高清描述语言
VHDL 是超高速集成电路硬件描述语言的缩写。使用 VHDL,您可以描述 FPGA 的硬件,允许用户在将其编码到实际硬件之前对其进行建模和仿真。
使用 VHDL 编程可以轻松确定电路中的潜在错误,用户可以在最终编码之前修复这些错误。 VHDL 允许用户编写结构化代码。
高级综合 (HLS) 是用 C 子集完成设计,编译器将代码转换为 Verilog 代码,受到想要对 FPGA 进行编程的开发人员的欢迎。
开发人员可以使用自己熟悉的语言,通过统一的软件平台来设计FPGA。
=#4。= Python
这种多用途编程语言可用于对 FPGA 进行编程。为了实现这一目标,Python 使用PYNQ,这是一个开源项目,可以轻松地与 AMD 平台配合使用。
=#5。= C 和 C++
由于具有高级综合 (HLS) 功能,基于 C 的语言非常适合 FPGA 设计。 AMD Vivado™ HLS 编译器提供了一个与专用和标准处理器共享关键技术的编程环境,可优化基于 C 的程序。
=#6。= TensorFlow 和 PyTorch 等 AI 平台
工程师使用Pytorch 或Tensorflow中训练有素的深度学习模型进行编译以实现 FPGA 加速。这种方法消除了对低级硬件编程的需要,同时仍然实现了极快的编译。 [](https://geekflare.com/install-tensorflow-on-windows-and-linux/)
使用普通编程语言(例如 Python、C 或 C++)编写的代码通过综合工具进行综合并转换为专有互连描述。
包含互连描述的结果文件称为比特流。比特流描述了如何配置 FPGA(如何通过 FPGA 的互连矩阵连接触发器、门和各种数字电路元件)。
FPGA 具有内置配置,可以读取比特流文件并相应地配置 FPGA。配置电路可以通过并行Flash Memory、JTAG、串行Flash Memory等多种方式读取比特流文件。
FPGA 板制造商提供开发人员用于配置/编程系统的软件/指令。
大多数 FPGA 系统都可以多次重新编程。唯一的限制是此类系统因磨损、温度或高电压等不合规格的条件而损坏。