HLS介绍 - 01 - FPGA的架构、结构以及硬件设计相关概念(一)

简介: HLS介绍 - 01 - FPGA的架构、结构以及硬件设计相关概念

写在前面


学习HLS,首先要了解关于软件和硬件的区别,本文参考是xilinx官方手册UG998的第二章和第三章,主要介绍了FPGA的架构、FPGA的并行结构,以及HLS需要知道的相关硬件概念。

FPGA架构


FPGA 的基本结构由以下元素组成:

  • 查找表 (LUT):该元素执行逻辑运算。
  • 触发器(FF):该寄存器元素存储LUT 的结果。
  • 电线(wire):这些元素将元素相互连接。
  • 输入/输出(I/O) :这些物理上可用的端口将数据输入和输出FPGA。

这些元素的组合产生了的基本 FPGA 架构。

image.png

尽管这种结构对于任何算法的实现来说都足够了,但最终实现的效率在计算吞吐量、所需资源和可实现的时钟频率方面受到限制。

现代 FPGA 架构将基本元素与额外的计算和数据存储块结合在一起,从而提高了设备的计算密度和效率。

  • 用于分布式数据存储的嵌入式存储器
  • 用于以不同时钟速率驱动 FPGA 架构的锁相环 (PLL)
  • 高速串行收发器
  • 片外存储器控制器
  • 乘法累加模块

image.png

这些元素的组合为 FPGA 提供了实现处理器上运行的任何软件算法的灵活性。

LUT


LUT 是 FPGA 的基本构建块,能够实现 N 个布尔变量的任何逻辑功能。 本质上,这个元素是一个真值表,其中不同的输入组合实现不同的功能以产生输出值。 真值表的大小限制为 N,其中 N 表示 LUT 的输入数量。 对于一般的 N 输入 LUT,访问的内存位置数为:

image.png

它允许查找表实现以下功能:

image.png

在FPGA中LUT的N值一般为6,也就是6输入查找表。

LUT 的硬件实现可以被认为是连接到一组多路复用器的一组存储单元。 LUT 的输入充当多路复用器上的选择器位,以选择给定分支点的结果。这种表示很重要,因为 LUT 既可以用作函数计算引擎,也可以用作数据存储元素。 下图展示了作为存储单元集合的 LUT 的功能表示。

image.png

Flip-Flop


触发器是 FPGA 架构中的基本存储单元。 该元素始终与 LUT 配对,以协助逻辑流水线和数据存储。 触发器的基本结构包括数据输入、时钟输入、时钟使能、复位和数据输出。 在正常操作期间,数据输入端口的任何值都被锁存并在时钟的每个脉冲上传递到输出。 时钟使能引脚的目的是允许触发器为多个时钟脉冲保持特定值。 只有当时钟和时钟使能都等于 1 时,新数据输入才会被锁存并传递到数据输出端口。

image.png

触发器的结构如上图所示。

DSP Block


Xilinx FPGA 中可用的最复杂的计算模块是 DSP 模块。

image.png

DSP 块是嵌入到 FPGA 结构中的算术逻辑单元 (ALU),它由三个不同块的链组成。 DSP 中的计算链由连接到乘法器的加/减单元组成,乘法器连接到最终的加/减/累加引擎。 该链允许单个 DSP 单元实现以下形式的功能:

image.png

或者

image.png

Storage Elements


FPGA设备包括可用作随机存取存储器(RAM)、只读存储器(ROM)或移位寄存器的嵌入式存储器元件。这些元件是块RAM(BRAM)、超RAM块(URAM)、LUT和移位寄存器(SRL)。

BRAM是一个双端口RAM模块,实例化到FPGA结构中,为相对较大的数据集提供片上存储。设备中可用的两种类型的BRAM存储器可以容纳18K或36K位。这些可用存储器的数量是特定于设备的。这些存储器的双端口特性允许对不同位置进行并行、相同的时钟周期访问。

就数组在C/C++代码中的表示方式而言,BRAM可以实现RAM或ROM。唯一的区别是数据写入存储元素的时间。在RAM配置时,可以在电路运行期间的任何时间读取和写入数据。相反,在ROM配置中,只能在电路运行时读取数据。ROM的数据作为FPGA配置的一部分写入,不能以任何方式修改。

UltraRAM块是双端口、同步288 Kb RAM,具有4096位深和72位宽的固定配置。它们可在UltraScale+设备上使用,提供的存储容量是BRAM的8倍。

LUT是在设备配置期间写入真值表内容的小型存储器。由于Xilinx FPGA中LUT结构的灵活性,这些块可用作64位存储器,通常称为分布式存储器(distributed memories) 。这是FPGA设备上可用的最快的内存类型,因为它可以在结构的任何部分实例化,从而提高所实现电路的性能。

移位寄存器是相互连接的寄存器链。此结构的目的是提供沿计算路径的数据重用,例如使用过滤器。基本滤波器由一系列乘法器组成,这些乘法器将数据样本与一组系数相乘。通过使用移位寄存器存储输入数据,内置数据传输结构在每个时钟周期将数据样本移动到链中的下一个乘法器。下图显示了移位寄存器的示例。

image.png

FPGA并行性与处理器体系结构


在处理器上执行程序


无论什么类型的处理器,都以指令序列的形式执行程序,并将其转换为软件应用程序的有用计算。此指令序列由处理器编译器工具生成,如GNU编译器集合(GCC),它将以C/C++表示的算法转换为处理器本机的汇编语言结构。

这也就,即使是一个简单的操作,例如a+b的操作,也会产生多个汇编指令。每个指令的计算延迟在不同的指令类型中并不相等。例如,根据a和b的位置,LD操作需要不同数量的时钟周期来完成。如果这些值在处理器缓存中,这些加载操作将在几十个时钟周期内完成。

如果这些值位于主双数据速率(DDR)内存中,则操作需要数百到数千个时钟周期才能完成。如果这些值位于硬盘驱动器中,则加载操作需要更长的时间才能完成。这就是为什么具有缓存命中跟踪的软件工程师花费大量时间重新构造算法,以增加内存中数据的空间局部性,从而提高缓存命中率并减少每条指令花费的处理器时间。

FPGA上执行程序


FPGA是一种固有的并行处理结构,能够实现可在处理器上运行的任何逻辑和算术功能。主要区别在于用于将软件描述转换为RTL的Vivado HLS编译器不受缓存和统一内存空间的限制。

例如计算a+b=z,z 的计算由 Vivado HLS 编译成几个 LUT,以实现输出操作数的大小。 例如,假设在原始软件程序中,变量 a、b 和 z 是用短数据类型定义的。 这种定义了 16 位数据容器的类型由 Vivado HLS 实现为 16 个 LUT。用于计算z的LUT仅能进行进行计算z的功能实现。与所有计算共享同一ALU的处理器不同,FPGA实现为软件算法中的每个计算实例化独立的LUT集。

除了为每次计算分配唯一的LUT资源外,FPGA在内存结构和内存访问成本方面与处理器不同。在FPGA实现中,Vivado HLS编译器将内存安排到尽可能靠近操作中使用点的多个存储库中。这会产生瞬时内存带宽,远远超过处理器的能力。例如,Xilinx Kintex®-7 410T设备总共有1590个18 k位BRAM可用。在内存带宽方面,该设备的内存布局为软件工程师提供了寄存器级每秒0.5M位和BRAM级每秒23T位的容量。

关于计算吞吐量和内存带宽,Vivado HLS编译器通过调度、流水线和数据流过程来实现FPGA结构的功能。虽然对用户透明,但这些过程是软件编译过程中不可或缺的阶段,可以提取软件应用程序的最佳电路级实现。

Scheduling


调度是识别不同操作之间的数据和控制依赖关系的过程,以确定每个操作何时执行。在传统的FPGA设计中,这是一个手动过程,也称为硬件实现的软件算法并行化。

Vivado HLS分析相邻操作之间以及跨时间的依赖关系。这允许编译器将操作分组以在同一时钟周期内执行,并设置硬件以允许函数调用重叠。函数调用执行的重叠消除了处理器限制,处理器限制要求当前函数调用在同一组操作的下一个函数调用开始之前完全完成。这一过程称为流水线。

Pipelining


流水线是一种数字设计技术,它允许设计者在算法硬件实现中避免数据依赖并提高并行度。原始软件实现中的数据依赖性保留为功能等效,但所需的电路被划分为一系列独立的级。链中的所有级在相同的时钟周期上并行运行。唯一的区别是每个阶段的数据来源。计算中的每一级从前一级在前一时钟周期内计算的结果接收其数据值。例如,为了计算以下函数,Vivado HLS编译器实例化一个乘法器和两个加法器块:

image.png

下图显示了这种计算结构的无流水线和有流水线的效果。

image.png

它显示了示例函数的两个实现。顶层实现是计算结果y所需的数据路径,无需流水线。此实现的行为类似于相应的C/C++函数,因为在计算开始时必须知道所有输入值,并且一次只能计算一个结果y。底部实现显示了同一电路的流水线版本。

数据路径中的方框表示由FPGA结构中的触发器块实现的寄存器。每个方框都可以算作一个时钟周期。因此,在流水线版本中,每个结果y的计算需要三个时钟周期。通过添加寄存器,每个块在时间上被隔离为单独的计算部分。这意味着带有乘法器的部分和带有两个加法器的部分可以并行运行,并减少函数的总体计算延迟。

目录
相关文章
|
11月前
|
资源调度 监控 调度
基于SCA的软件无线电系统的概念与架构
软件通信体系架构(SCA)是基于软件定义无线电(SDR)思想构建的开放式、标准化和模块化平台,旨在通过软件实现通信功能的灵活配置。SCA起源于美军为解决“信息烟囱”问题而推出的联合战术无线电系统(JTRS),其核心目标是提升多军种联合作战通信能力。 上海介方信息公司的OpenSCA操作环境严格遵循SCA4.1/SRTF标准,支持高集成、嵌入式等场景,适用于军用通信、雷达等领域。 SCA体系包括目标平台资源层(TRL)、环境抽象层(EAL)、SRTF操作环境(OE)及应用层(AL)。其中,SRTF操作环境包含操作系统、运行时环境(RTE)和核心框架(CF),提供波形管理、资源调度等功能。
|
11月前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的1024QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的1024QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集和vio在线SNR设置模块,支持不同SNR条件下的性能测试。1024QAM调制将10比特映射到复平面上的1024个星座点之一,实现高效数据传输。硬件测试结果表明,在SNR=32dB和40dB时,系统表现出良好的性能。Verilog核心程序展示了各模块的连接与功能实现。
307 7
|
10月前
|
数据采集 移动开发 算法
【硬件测试】基于FPGA的QPSK调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现QPSK调制与软解调系统,包含Testbench、高斯信道、误码率统计模块,并支持不同SNR设置。硬件版本新增ILA在线数据采集和VIO在线SNR设置功能,提供无水印完整代码及测试结果。通过VIO分别设置SNR为6dB和12dB,验证系统性能。配套操作视频便于用户快速上手。 理论部分详细解析QPSK调制原理及其软解调实现过程,涵盖信号采样、相位估计、判决与解调等关键步骤。软解调通过概率估计(如最大似然法)提高抗噪能力,核心公式为*d = d_hat / P(d_hat|r[n])*,需考虑噪声对信号点分布的影响。 附Verilog核心程序代码及注释,助力理解与开发。
322 5
|
10月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的2ASK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR
本文分享了基于FPGA的2ASK+帧同步系统硬件测试版本,包含ILA数据采集、VIO SNR设置及数据源模块。通过调整SNR(如45dB和10dB),实现对调制解调性能的验证。2ASK调制将数字信号转为二进制码,通过载波振幅变化传输;帧同步用于确定帧起始位置,确保数据正确解调。附带操作视频与核心Verilog代码,便于理解和复现。
306 9
|
11月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的MSK调制解调系统系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现MSK调制解调系统,采用Verilog开发,包含同步模块、高斯信道模拟、误码率统计等功能。相比仿真版本,新增ILA数据采集与VIO在线SNR设置模块。通过硬件测试验证,展示不同SNR(如10dB和16dB)下的性能表现。研究聚焦软件无线电领域,优化算法复杂度以适应硬件限制,利用MSK恒定包络、相位连续等特性提升频谱效率。核心代码实现信号生成、调制解调、滤波及误码统计,提供完整的硬件设计与分析方案。
384 19
|
11月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的4ASK调制解调系统的硬件测试版本,该系统包括testbench、高斯信道模块和误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置功能。通过VIO设置不同SNR(如15dB和25dB),实现了对系统性能的实时监测与调整。4ASK是一种通过改变载波幅度表示数据的数字调制方式,适用于多种通信场景。FPGA平台的高效性和灵活性使其成为构建高性能通信系统的理想选择。
288 17
|
11月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的16QAM调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前开发的16QAM调制与软解调系统,增加了硬件测试功能。该系统包含FPGA实现的16QAM调制、软解调、高斯信道、误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置模块。通过硬件测试,验证了不同SNR条件下的系统性能。16QAM软解调通过比较接收信号采样值与16个调制点的距离,选择最近的调制点来恢复原始数据。核心Verilog代码实现了整个系统的功能,包括SNR设置、信号处理及误码率统计。硬件测试结果表明系统在不同SNR下表现良好,详细操作步骤可参考配套视频。
288 13
|
11月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4FSK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前的文章《基于FPGA的4FSK调制解调系统》,增加了ILA在线数据采集模块和VIO在线SNR设置模块,实现了硬件测试版本。通过VIO设置不同SNR(如10dB和20dB),并展示了ILA采集的数据结果。四频移键控(4FSK)是一种数字调制方法,利用四个不同频率传输二进制数据,具有较高的频带利用率和抗干扰性能。输入的二进制数据分为两组,每组两个比特,对应四个频率f1、f2、f3、f4,分别代表二进制组合00、01、10、11。调制过程中选择相应频率输出,并进行幅度调制以增强抗干扰能力。接收端通过带通滤波器提取信号并还原为原始二进制数据。
293 7
|
11月前
|
数据采集 算法 数据处理
【硬件测试】基于FPGA的256QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的256QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集和vio在线SNR设置模块,支持不同信噪比(如30dB和40dB)的仿真测试,并提供配套操作视频。256QAM调制方案每个符号携带8比特信息,通过复数值星座图映射实现高效传输。Verilog代码展示了核心模块设计,包括SNR设置、数据处理和ILA测试分析,确保系统在实际硬件环境中的稳定性和性能。
271 2

热门文章

最新文章