太空边缘计算:基于现场可编程门阵列的时间序列谱分析与概率分析解决方案
摘要
本文研究了在航天器上进行时间序列分析的问题,该场景下的约束条件远多于常规(即地面)环境中的应用。面向空间探索的现代航天器技术的一个目标是在航天器上执行星载数据处理任务,以增加可用于科学分析的数据量。现场可编程门阵列(FPGA)设备被认为是此类系统硬件实现的良好候选方案。为了优化星载资源的使用,FPGA需要在多个数字信号处理(DSP)算法之间共享其资源。本文描述了一种优化设计的实现过程,其中在同一FPGA上实现了两个DSP算法:(1)功率谱密度和(2)多尺度概率分布函数。文中详细描述了整个实现过程,包括对主要架构选择的讨论。所提出的解决方案重点关注面积、速度和功耗的优化。在合成数据和真实数据上进行的测试验证了该方法的可行性,并为将设计移植到航天级FPGA上迈出了第一步。
一、引言
科学仪器在太空飞行中的性能提升对这些仪器在航天器上的集成提出了挑战。此外,星载记录数据量的指数增长并未伴随着将所有这些数据发送到地面的能力相应提高。因此,为了充分利用科学实验的性能提升,需要额外努力设计和测试能够执行星载数据分析关键任务的智能设备。本文讨论的一个关键是论文旨在单个设备/芯片上累积多种针对特定数据集分析的适配功能。目标是提供一种工具,能够以最小化的能量和计算资源消耗从数据中提取最大量的信息。
我们目标的可行性已在之前的一篇论文1中得到验证,其中我们开发了一种基于现场可编程门阵列(FPGA)的解决方案,用于计算波动的概率分布函数(PDFs)。该解决方案提出了两种实现变体,旨在与同类的其他太空专用应用相结合。
数据变异性通常与通过in situ技术探测的系统/环境的动态行为密切相关。我们的研究主要集中在空间等离子体参数的变异性上,例如在太阳风和/或地球磁层中通过in situ测量获得的磁场、整体速度和密度。这些参数有助于表征日地相互作用和空间天气现象。时间序列分析(TSA)或数字信号处理(DSP)技术可提供多种重要的数据变异性描述符。
功率谱密度(PSD)通过将信号分解为由三角函数表示的特征向量,揭示了能量在频率范围内的分布情况。这种表示方法在平稳性假设下是有效的。多尺度概率密度函数(PDFs)描述了波动的统计特性,并不依赖于特定的数学函数表示形式。然而,其精度在很大程度上取决于数据样本数量。这两种方法所提供的数据描述是互补的,尽管与PDFs相比,PSD被视为一种低阶分析。两种方法都以降维集合的形式——即PSD和PDF——提供了对数据变异性的描述,相较于原始原始数据序列更为简洁。因此,从更广泛的意义上讲,这些方法可被视为一种数据压缩工具。因此,当本地资源限制无法将完整数据集传回地面时,此类星载数据分析工具显得尤为关键。这正是边缘计算范式在卫星数据分析中变得重要的原因。
边缘计算是一种新兴的范式,在科学界中正变得越来越普遍。根据参考文献2,边缘计算是一种优化计算系统的方法,“通过将计算应用、数据和服务的控制从某些中心节点转移到互连计算系统的网络的另一逻辑极端(即边缘)”。在空间应用的背景下,这意味着控制从地面中心转移到航天器上的计算机。
在参考文献3中表明,边缘计算的主要优势源于优化目标,这些目标比使用传统计算范式更容易实现,特别是延迟和执行时间、能量和功耗,以及可扩展性和可用性。
边缘计算可成功应用于多种领域。在我们的研究背景下,端到端延迟、通信成本和数据丢失是最关键的性能指标。原位处理的概念能够带来诸多提升性能的解决方案。该技术已广泛应用于大数据4、内存系统5、雾计算6以及高性能计算7等领域。
边缘计算的理念很简单:将计算“推向”卫星端,仅将外太空中处理后的数据综合结果发送到地面,而该结果能够描述原始数据的关键动态特征。由此产生了一系列优势:
- 片上硬件将更轻,这是空间应用背景下的关键因素;
- 执行计算的总功耗将比基于传统微处理器的实现低几个数量级;
- 向地面传输数据的总功耗将显著降低,因为传输的数据量大大减少;
- 物理系统的尺寸将显著减小,使其能够搭载在立方星等小型卫星上。
由于我们的关注点是等离子体探测,因此有一些数字信号处理算法适用于分析由各种传感器(例如磁力计、变磁仪和波形分析仪)采集的数据样本。由于对高性能或高效率的要求,这些分析器通常在硬件中实现,最好能让卫星上的FPGA芯片尽可能多地执行分析任务。此外,近期的太空等离子体探测任务使用现场可编程门阵列(FPGA)作为服务于科学仪器的电子模块和计算处理单元的主要技术。8,9
问题是:是否可以在FPGA芯片而非微处理器上运行这些数字信号处理算法?本文提出了一种在同一个FPGA芯片上实现至少两种数字信号处理算法——概率密度函数(PDF)和功率谱密度(PSD)的解决方案,并讨论了使这一实现成为可能的主要架构选择。
空间应用需要在具备抗辐射能力的合格硬件上运行。从开发者的角度来看,商用FPGA芯片和航天级FPGA芯片上的逻辑结构是相同的。然而,在抗辐射FPGA中,逻辑组件采用了物理三重化设计,这种设计对开发者是透明的,并能提高系统的可靠性。空间辐射引发的意外事件范围广泛,例如高能粒子撞击芯片,可能导致设计中的部分值发生改变,如存储在内存中的位、可编程互连点(PIPs)等。
我们在实验室中使用常规的FPGA芯片测试了我们的解决方案,这是迈向原型化太空合格解决方案的第一步。此阶段的主要创新在于涉及算法的典型计算的概念与算法设计。该解决方案后续可移植到太空合格的芯片上。
本文的其余部分组织如下:第II节介绍了上述两种数字信号处理算法的理论基础,并综述了该领域的先前研究。所提出的架构方案在第III节中介绍,而相应的实验结果与测量在第IV节中给出。结论与未来工作在第V节中阐述。
II. 背景与先前研究
A. 功率谱密度
频谱分析是研究数据变异性的最常用方法之一。它利用三角函数(特征函数)进行分解,前提是信号x(t) 是平稳的。
$$
X_k = \sum_{j=0}^{N-1} x_j \exp(-i 2\pi jk / N)\Delta t. \quad (1)
$$
公式(1)给出了信号$X_k$在频率$f_k = k / N\Delta t$处的傅里叶分量,该信号$x_j$以相同的时间间隔 $\Delta t$进行离散化采样,共取N个样本(均匀采样)。这一工具已在科学的许多领域证明了其有效性。
随着快速傅里叶变换(FFT)算法的引入,该技术变得经济实惠并得到广泛应用,该算法可在多种类型的数据处理单元中实现。目前,FFT几乎在所有编程语言中都有设计,并被科学家和工程师广泛使用。
我们感兴趣的是在FPGA设备中实现一种用于估计功率谱密度的算法。功率密度函数是时间序列的方差(均方值)在频率上的分布。10实际上,需要估计无穷小频率区间内的均方傅里叶分量。可以采用多种策略通过傅里叶方法来估计功率谱密度;这里我们使用最简单的一种方法——周期图,
$$
S(n) = \frac{2\Delta t}{N} |X_k|^2, \quad k = 0,…, N+1/2, \quad (2)
$$
其中 $X_k$是通过遵循 (1)的快速傅里叶变换算法确定的。频率区间 $[0, 1/2\Delta t]$被划分为 $N/2$部分,使得功率谱密度频率分辨率为 $\Delta f = 1 / N\Delta t$。尽管使用 (2)对功率谱密度的估计较为粗略,但它满足了我们的设计目标,即在计算资源相当有限的情况下,提供一种稳健且快速的程序来估计信号的频谱特性。我们在快速傅里叶变换之前不应用任何加窗过程,也不像Welch算法那样对多个功率谱密度进行平均以降低功率谱密度噪声(见参考文献 11)。我们在此假设的主要任务是在同一个FPGA设备中集成能够同时计算多尺度概率分布函数和功率谱密度估计的算法。
傅里叶分析广泛应用于空间数据分析中的时间序列、图像等。尽管现场可编程门阵列(FPGA)在最先进的等离子体任务的电子模块设计中扮演着日益重要的角色(例如,参见参考文献12),但据我们所知,目前还没有用于在航天器上执行PSD估计的现场可编程门阵列(FPGA)。
还应注意,数据缺失在估计信号的频谱特性时会产生许多不良的副作用(例如,参见参考文献13)。因此,最终设计应包含附加逻辑以应对这些影响。该问题不在本论文的讨论范围内,将不再进一步讨论。
B. 概率分布函数
概率分布函数的概念对于数据变异性统计描述至关重要,更广泛地说,对于理解空间等离子体等复杂系统的动力学具有重要意义。14只要样本数量足够大,使得概率分布函数的“尾部”得到合理充分的采样,它就能完整地呈现从小幅度到极端幅度“事件”的统计特征。实际上,这些尾部提供了对“罕见”或“极端”事件发生率的定量测量(参见,例如,参考文献 15)。所谓“事件”的定义当然取决于与相关物理量相关的定量测量方式(例如,中性流体湍流中的速度和空间等离子体湍流中的磁场)。在我们的研究中,我们采用一种微分测量方法,如下所述,并将检验其标度特性。
从实验数据中准确估计概率分布函数并非易事,正如参考文献16所述。现有多种算法;在此,我们采用一种数学复杂度相对较低、易于实现的算法——直方图方法。该方法已应用于多项基于原位in situ数据的空间等离子体变异性研究(例如,参考文献17–20)。
用于计算多尺度概率分布函数的数学核心来自一个数据分析工具箱,即集成非线性分析(INA)库。21 INA 被设计为一种科学探究工具,适应科学家的需求,并由图形用户界面控制。INA 包含多种从低阶到高阶的非线性数据分析工具和算法。
让我们考虑一个通用的时间序列x(t)。为了分析其波动特性,我们可以将尺度依赖差分度量构造成时间序列。
$$
\delta x = x(t + \tau) - x(t). \quad (3)
$$
因此,我们将尺度 $\tau$ 上差值 $\delta x$ 的归一化直方图视为概率分布函数(PDFs)$P(\delta x, \tau)$ 的估计,适用于一系列时间尺度 $\tau$(有关直方图方法的技术细节,请参见我们之前的论文1)。用于计算多尺度概率分布函数的直方图算法的基于FPGA的实现,closely follows the approach adopted in INA。
C. 以往基于FPGA的PSD实现
在参考文献22中,作者提出了一种基于B样条窗的PSD估计系统的定点实现。该系统处理仅包含1024个输入样本的帧,这些样本采用二进制补码小数编号系统(一种定点格式)表示,输入样本和生成结果均具有24位精度。作者未说明其FFT模块的实现方式,该实现是在Virtex5 FPGA上完成的。
在参考文献23中,作者提出了一种基于模型的设计方法及其实现方案,用于认知无线电系统频谱扫描仪内接收信号的 PSD计算。该信号处理包括控制单元的实现、可选窗函数、快速傅里叶变换、幅值计算、用于计算峰值和平均功率值的可选平均次数,以及频谱的对数表示。PSD计算通过系统生成器实现,该系统生成器是赛灵思提供的一种基于 MATLAB/Simulink开发环境的模型‐based设计方法,并在 MicroBlaze处理器系统内的目标FPGA上运行。快速傅里叶变换采用赛灵思IP核,对512个样本进行计算,且此前无专用加窗步骤;而幅值计算则使用了CORDIC算法。
在参考文献24中,作者提出了一种用于功率谱分析的基于 FPGA的设计。该平台支持在短时间窗口内对输入信号的样本进行实时数据采集和处理,并在四个输入通道中的每一个上维持并行数据流。处理过程包括对一组输入值计算功率及其平均值和峰值。通过使用逆向工程技术,他们依赖功率谱分析来揭示有关干扰的频率和来源等信息,这些干扰会影响并改变信号的特性。FFT计算基于赛灵思的FFT CoreGen组件,对256个定点输入值进行,该组件被认为适用于多通道处理。
在参考文献25中,作者提出了一种数字荧光触发器的实现方案。该系统通过高速FFT将输入的时域信号转换为频域,并将信号的频谱绘制成位图,系统可基于分类技术利用该位图触发不同的判断。FFT计算采用LogiCORE IP 快速傅里叶变换 v7.1对1024点进行,实际功率计算中的平方和对数运算基于 CORDIC IP核实现。
尽管FPGA设计在空间应用中日益普及,但上述提到的 FPGA解决方案似乎均不适用于我们目标应用的具体场景,该场景具有高度复杂性,并且要求设计必须能够独立运行。
此类面向FPGA实现的设计最重要的难点在于:在能够运行算法之前,需要在芯片上收集/存储足够数量的样本以进行相关分析。因此,面积占用成为最重要的关键因素,因为数据采样率远低于FPGA芯片的工作频率。
D. 基于FPGA的PDF实现
在FPGA芯片中实现PDF估计器的想法并不新鲜,因为概率密度函数是许多类型应用和数据分析中广泛使用的工具,其中最重要的应用之一是粒子物理。26
一种逐步进行的实时概率密度函数(PDF)估计器在参考文献27中被提出。作者讨论了设计优化准则,并得出结论,正如我们在本论文中所做的那样,面积是最重要的设计优化准则。在参考文献27所提出的方案中,为了节省FPGA芯片的逻辑资源,直方图被存储在双端口块状RAM(BRAM)中。
参考文献28的作者也使用多个双端口BRAM来存储直方图。目标是对图像进行并行直方图均衡化。每个图像像素在一个单个时钟周期内进行评估:读取直方图区间,递增后写回 BRAM模块。由于使用了双端口BRAM模块,读取和写入操作可以并行执行,从而提高速度。
在参考文献29中,作者提出了一种基于现场可编程门阵列的高斯Copula概率密度函数计算方案。作者将速度视为主要性能指标,所提出的设计旨在优化该指标。所提出的架构并非独立运行:它被设计为通用计算系统内的硬件加速器,并采用流水线化结构。
参考文献28中的思想也在参考文献30和31中进行了讨论。该方法提出了相同的值更新方式,即在一个时钟周期内执行读‐改‐写操作(块状RAM的端口A用作读取端口,而端口B用作写入端口),并使用公共时钟信号。
参考文献1中提出的独立运行系统提出了一些基于现场可编程门阵列的多尺度概率分布函数计算解决方案,其主要优化目标是最小化逻辑资源的使用量。同时,与传统的星载数据分析解决方案相比,该系统还展示了功耗降低两个数量级的效果。
三、提出的基于现场可编程门阵列的PDF和PSD实现
本文提出的用于功率谱密度和概率密度函数计算的解决方案均为完全独立运行,并针对逻辑面积进行了优化,因为它们必须同时集成于同一FPGA芯片中。整个硬件系统可以集成到航天器的中央处理器单元中,并能够实时分析数据。该系统可作为更大型系统的基础,最终实现对科学仪器原位测量的物理量变化特征进行压缩并提取一系列关键参数。
此处实现的硬件支持为Xilinx FPGA芯片,该芯片通常包含四种主要类型的硬件资源:逻辑片——用于实现布尔函数、内存块(称为“分布式存储器”)或小型先进先出队列/移位寄存器;切片触发器——最多包含8个触发器;块状RAM( BRAM)——具有双端口功能的18/36 kbit内存块;数字信号处理模块——可执行基本的乘法累加运算,并且可以以两倍于其他逻辑资源的频率进行时钟操作。
A. PSD实现
基于FFT实现的功率谱分析在过去几十年中已成为经典。考虑到我们的应用目标环境为太空,在该环境中存在大量限制条件,因此大多数优化工作都致力于最小化在FPGA芯片上所占用的面积。
我们所处理的场景是,需要在板上分析的数据为矢量数据 (例如,由三轴磁力计提供的数据)。与一般仅处理有限数量输入样本的数据帧的其他实现相比,我们认为每个磁场分量计算功率谱密度(PSD)至少需要N= 8192个样本点;这些数据需要存储在FPGA芯片上。
要实现的算法如下所述(算法 1)。整个系统的框图如图 1所示。
算法1。数据方差的功率谱密度计算。
1. 对于每个 $t_i$,其中 $i$从 $0$到$N$
2. 读取测量数据样本 $A(t_i)$
3. Save它保存在相应的资源中
5. 计算 $B=$快速傅里叶变换$( A )$
6. Store$B$在相应的资源中
7. Compute$C =$功率谱密度$( B )$
8. Store$C$到相应的资源中
9. 结束
1. FFT计算
在空间应用中,必须在最小化芯片占用空间的同时,实现尽可能高的计算精度。下文介绍了可用于进行功率谱密度计算的主要工具及其优缺点。
2. 赛灵思 DFT(离散傅里叶变换)LOGICORE PG106
赛灵思为其FPGA系列提供了多种IP核。该IP核32支持用户可选的多种点数大小的正向和逆向离散傅里叶变换。输入数据样本的位宽可在8到18之间变化,数值采用二进制补码表示法。赛灵思还提供位精确C模型以支持软件仿真。
该IP核易于使用,不需要大量资源,但数据数组大小不是 2的幂,这需要在芯片上增加附加逻辑。该IP核不支持对超过 1536个数据样本的FFT计算,在我们的应用场景中这显得不足。输入表示为复数二进制补码定点值,而输出则如正向变换中所定义的,为复数块浮点值。
3. VIVADO IP核PG109
该IP核33基于经典库利‐图基FFT算法实现DFT。34输入数据样本数量必须为2的幂(但小于65537)。它能够生成定点和单精度浮点输入的快速傅里叶变换,并可配置为对最多 12个不同通道进行FFT处理。
该IP核基于AXI接口。在VIVADO中提供的IP核配置菜单使开发者能够选择IP核的参数。
该IP核提供运行时可配置的变换长度,因此FFT尺寸可以动态修改。然而,流宽度无法配置,这意味着每次事务只能输入一个复数点,从而导致可扩展性限制。
4. SPIRAL
SPIRAL DFT/FFTIP生成器35可自动在可综合Verilog中生成定制化的DFT模块。与大多数IP核系统类似,用户可自定义多种参数,例如变换尺寸、变换方向、数据类型、架构、基数、流宽度、数据顺序和BRAM预算。
计算快速傅里叶变换时需要考虑两种架构:全流式架构,它允许数据持续流入和流出系统;以及迭代架构,它由单级组成。35
为了将SPIRAL生成的Verilog模块集成到我们的项目中,仅需进行一些细微的修改。除了BRAM预算(该选项允许用户指定在面向Xilinx FPGA时所使用的最大块状RAM(BRAM)数量)外,SPIRAL还允许用户设置流宽度和基数,以便根据应用需求定制IP核。
我们认为,迭代架构是用于此频谱分析的最佳候选方案。
总之,我们认为SPIRAL是开发我们应用程序最合适的工具,因为它是灵活性最高、易于使用、能够提供精确结果,并且允许最小化片上面积。
表I。用于FFT计算的IP核之间的比较。
| 用于FFT的IP核 | 位宽 | 输入:定点/浮点 | 位精确C模型支持软件仿真 | 最大数据数量 | 计算样本数量 | 通道灵活性 |
|---|---|---|---|---|---|---|
| Xilinx DFT LOGICORE PG106 | 8–18 | 仅定点 | YES | 1 536 | 1 | Low |
| VIVADO IP 核 PG 109 | 8–34 | 两者(定点或浮点) | YES | 65536 | 12 | 中等 |
| SPIRAL | 4–32 | 两者(定点或浮点) | NO | 32768 | 1 | High |
5. 功率谱密度估计(周期图)计算
周期图[Eq.(1)和(2)]是在N/2 个复数点[傅里叶系数上计算得到的,这些系数由上述公式(1)和(2)(1)和(2)]得出。
6. VIVADO IP核 浮点运算符v7.1 (LogiCORE IP PG060)
赛灵思浮点运算符36核心集成于VIVADO中,可在现场可编程门阵列上执行多种浮点算术运算。该操作在核心生成时指定,每种操作变体均具有通用接口。
如参考文献7所述,该IP核“符合大部分IEEE‐754标准。其偏差通常在资源与功能之间提供了更好的权衡。”然而,使用这些IP核计算出的功率谱密度估计有时与使用科学软件 INA生成的结果不同。
7. FLOPOCO
FloPoCo(“浮点核心”的缩写)是一个开源框架,用于生成用C++开发的算术数据路径,由de Dinechin等37提出。FloPoCo操作数的设计理念是“精确计算”:没有用的位不会被计算,这意味着用户可以选择各种参数,以便在 FPGA芯片中仅生成实现目标应用所必需的逻辑资源量。该框架假设,通过设计在精度上完全参数化的操作数,可以获得比通用计算机系统中的运算单元更准确的结果,同时使用更少的硬件并节省时间。
为了使用生成的操作数,用户必须调整输入和输出格式。具体而言,用户需要将浮点输入转换为FLOPOCO所需格式,并将结果再转换回IEEE 754单精度二进制浮点格式(或其他使用的格式)。
用户可以选择目标FPGA芯片,但目前尚不支持最新的 Xilinx系列(可用的最新系列为Virtex5)。然而, FLOPOCO正处于持续开发中,预计所有操作数都将得到更新。
在所用资源方面,这两个IP核之间的差异并不显著,但 FLOPOCO推断出更多的DSP48E1
然而,最大的问题是使用VIVADO IP核得到的结果与INA结果相比存在不准确的问题,这促使我们选择FLOPOCO来实现我们架构中的这一模块。
8. 全局PSD模块的实现
目标是尽可能多地实现样本的PSD估计器,同时达到最高精度并最小化FPGA芯片中的面积(占用资源量)。该架构专为处理8192个样本而设计,但为了与先前报道的实现进行比较,我们还提供了1024个样本的结果。
如前所述,在对所有IP核单独以及所有可能的组合进行测试后,我们确定最适合我们应用的组合是SPIRAL(用于 FFT计算)和FloPoCo(用于浮点运算)。
该架构的框图如 图2 所示。X是一个取决于问题规模的参数,X= log2 (N) −1。
控制单元是一个有限状态机(FSM),用于控制整个系统。数据样本首先被逐字节接收并迭代存储在块状RAM(BRAM)中,直到形成完整的数据帧。
一旦接收到复数值,便通过“data_to_process_ready_fft” 信号(图2)通知FFT模块,从而触发FFT计算。该FFT模块实际上是SPIRAL核心的封装,接收从块状RAM(BRAM)中读取的复数值。此模块将计算得到的傅里叶系数收集并存储回块状RAM(BRAM)中,从而迭代地替换用于线性变换的数据样本。当FFT计算完成后,控制单元将被通知,并通过“ data_to_process_ready_ps”信号(图2)启动功率谱密度计算。
PSD模块由FLOPOCO生成。在PSD模块中,FFT系数从块状RAM(BRAM)中读取,PSD系数被写入相同的块状RAM( BRAM),从而替换先前获得的FFT系数。在完成功率谱密度估计计算后,控制单元从内存中读取PSD数据并将其发送到个人计算机( PC)。
我们使用了4个独立的BRAMs,而不是单个BRAM,来存储数据样本、FFT系数和PSD系数,原因如下。我们的功率谱密度工具是一种通用架构,设计方式使其能够通过使用任何可用于 FFT和PSD计算的IP核来实现具体实现。由于SPIRAL生成的模块要求,我们必须将所需内存划分为四个BRAM模块。
太空边缘计算:基于现场可编程门阵列的时间序列谱分析与概率分析解决方案
三、提出的基于现场可编程门阵列的PDF和PSD实现(续)
A. PSD实现(续)
配置为流宽度为2,每个时钟周期输入两个实部和两个虚部值。在变换完成之前,每个时钟周期输出两个FFT系数。
从块状RAM(BRAM)读取数据到辅助数组,以便在同一个时钟周期内向FFT模块提供4个值,并将结果收集到数组中,这一想法并不可行。因为当N较大时,综合工具会尝试推断使用块状RAM(BRAM)。在同一时钟周期内访问同一数组中的超过2个元素,会导致综合工具复制块状RAM(BRAM),从而需要更多的读取端口。或者如果综合工具无法确定这一点,它将使用松散的切片触发器来构建数组。如果数组很大(如我们的情况),这确实会导致较长的综合时间,并且所需的控制集数量可能会超出设备容量。
主要特点是,这种基于四个块状RAM(BRAM)的架构能够在单个时钟周期内获取到供给PSD计算模块所需的两个操作数。之所以能够实现这一点,是因为读/写操作通过两个独立的块状RAM(BRAM)来实现。PSD计算模块的最终结果是仅存于一个块状RAM中。基于单个块状RAM的架构会更加复杂,从而消耗更多宝贵的逻辑资源,而这些资源本可用于在同一FPGA芯片上实现其他算法。
基本上,我们将内存分为四个块状RAM(BRAM),每个块状RAM存储N/4个数据样本,以确保每个时钟周期所需的4个值能够并行获取。因此,通过使用多路复用器,可以同时向所有块状RAM并行地为FFT模块提供数据,并直接将FFT模块的结果存储到这些块状RAM中,该多路复用器允许在每个块状RAM中顺序或并行地写入不同的值。
B. 概率密度函数实现
实现概率密度函数计算的架构解决方案基于一个简单的算法(算法 2),该算法由两个主要部分组成:数据获取和直方图计算,如 图1 所示。
由于输入数据样本在PSD和PDF模块中是共用的,因此使用已保存在块状RAM(BRAM)中的值,而不是通过在芯片上的其他位置存储来复制FPGA上的输入数据。
1. 数据采集模块
这里,我们只需要距离当前采集的数据样本 τ(时间尺度)处的数据样本(见第IIB节);因此,只需能够通过相应的索引访问这些样本即可。当以特定的时钟频率(CLKA)读取新的数据样本时,K个其他数据样本需要从内存中读取,直到下一个数据样本到达,以并行计算每个 Δτ= A(t)− A(t − τ) 的差值(算法2的第4–7行),并更新每个直方图对应的区间。在将新的数据样本写入BRAM模块的相应地址后,必须从 BRAM中顺序读取 τ距离处的值(K个先前存储的数据样本)。所有这些操作必须在下一次数据采集周期结束前完成。因此,必须确保所使用的时钟信号至少比数据采集时钟快K倍。我们将该信号记为CLKB。每次读取一个数据样本时,都会计算其差值(Δ),并将结果存储在一个独立的寄存器中(每个 τ对应一个寄存器)。在新样本到达之前,位于新数据样本特定距离处的每一个数据样本都将被从新样本中减去,其结果保存在独立的寄存器中。
为了计算需要读取的数据样本的索引,使用了一个移位寄存器,如图3所示,并在参考文献1中进行了讨论。当一个新的数据样本到达时,一个“1”被写入移位寄存器的末端,并以CLKB的速率在移位寄存器中传播。因此,在每个CLKB的“小”周期中,我们得到一个二进制数,该二进制数表示一个幂,该幂从计数器给出的当前内存地址中减去。
该设计最大的优势在于所使用的资源量较少,尤其是内存(这仅相当于将每个数据块状RAM复制K次以实现完全并行化的解决方案的1/K);并且由于它使用了PSD实现模块中的块状RAM(BRAM),与单独复制输入数据并将其存储在一个专用于PDF电路的块状RAM中相比,整个电路所需的内存资源减少了一半。
2. 直方图计算模块
该设计必须并行计算K= 14个不同的直方图,即来自x1–x0, x2–x0, x4–x0, x8–x0, …,x8192–x0的结果的直方图。每个直方图区间的宽度是用户可定制的,但如果该数值为2的幂,则设计会简单得多。由于输入数据样本为16位数字,其差值也将具有相同的位宽。例如,如果我们选择每个输入数据样本对应 128= 2^7个区间,则需要截去结果的7个最高有效位,以构成相应区间的索引。
直方图由生成的 K个区间组成,每个区间包含给定区间内差值(差异)的数量。存储这些数值的最佳方式是使用块状RAM(BRAM),该方案也在参考文献 1、27、28 和 38 中被采用。每次计算出新的 Δ时,将使用如 图4 所示的方案对其对应的区间进行递增。
PDF算法意味着对每个 τ计算不同的直方图,因此图4 中的示意图被复制了K次。每个直方图区间的最大容量为 256× 16= 4096位,因为我们最多可以有256个区间。由于赛灵思块状RAM的容量是
36千比特,直方图区间必然可以容纳在一个块状RAM中,因此本设计总共需要K个块状RAM(BRAM)。
从内存地址递增一个值包含三个基本步骤:首先需要读取该值,然后将其递增,最后写回到内存中(这是一种读‐改‐写内存操作)。理论上,所有这些操作应在同一个时钟周期内完成。然而,由于这些操作涉及同一内存地址,每次从块状RAM读取或写入的操作至少需要一个时钟周期——因此,为了解决这个问题,必须设计一个额外的电路图,如图5所示。
每收集一个新的数据样本,都需要在一个时钟周期内更新相应的区间。由于这需要执行多个操作,因此可以采用流水线技术,并使用一个更快的时钟CLKC,其频率必须至少是数据采集时钟频率的4倍,CLKA(这与第III B 1节中解释的CLKB的使用方式类似),因为正确更新直方图需要四个时钟周期。
在更快的时钟CLKC的前两个周期内,从内存中读取直方图区间的计数器值并保存到寄存器中。然后,该值递增并写入另一个寄存器。最后,将递增后的值写回块状RAM,同时使能信号也传递到流水线的这一阶段,因此它也将作为写使能 (WE)。此外,直方图区间的地址被保存在寄存器中,以便在将递增后的值写回时可用。每当数据采集模块提供一组新数据时,DATA_VALID使能信号会在一个CLKC周期内变为“1”。
该协议以波形图的形式显示在图6中。
由于每个差值 delta (Δ) 在 CLKB周期内(第 III B 1节)即可获得,该周期比 CLKA快 K 倍,因此若 CLKC与 CLKB具有相同的频率,则可在获得每个差值后立即开始更新 K 个直方图。
该解决方案在数据采集模块和直方图计算模块方面均不同于参考文献1中提出的方法。在参考文献1中,输入数据被存储在一个大型移位寄存器中,仅使用查找表(LUTs),并通过访问不同索引处的数据来计算K个不同的直方图。选择不同方案的原因是为了将块状RAM(BRAM)节省用于功率谱密度处理算法,并确保在每个时钟周期内,当新的数据样本到达时,计算 Δ差值所需的其他K个数据样本可直接访问。这提高了设计的最大工作频率。另一方面,这些数据样本与功率谱密度计算所用的样本相同,因此无需单独存储,从而为每个全局节省了大量资源。
然而,为了访问K个其他数据样本,需要使用更快的时钟,这限制了工作频率。
总体而言,本文提出的直方图计算方法相比参考文献1中的方法可能会实现稍低的工作频率,但其使用的资源更少,尤其是切片LUT。
IV. 实验测试与结果
开发了一种串行协议,用于在FPGA芯片和个人计算机 (PC)之间建立通信。该方法的优点是测试数据以9600 bps 的传输速率从PC发送到FPGA芯片,这一速率接近磁力计传感器(∼100Hz)采集数据样本的速率。此连接用于模拟从外部传感器采集数据的过程。输入数据被接收后,将由上述两个片上算法进行处理。为了验证片上处理的正确性,将得到的功率谱密度(PSD)和归一化PDF结果与科学软件INA获得的结果进行比较。21
设计还使用了实际磁力计Honeywell HMC5883L39进行了测试,该磁力计直接连接到FPGA芯片。传感器位于 Digilent CMPS上,这是一种三轴数字罗盘,采用I2C协议进行通信。该设备专为简单的定向和磁测应用而设计。在 ±8 G磁场下,其最大场分辨率为2 mG,可实现 1○–2○度的罗盘精度。该设备具有低功耗特性,其数字接口和最高160 Hz输出速率非常适合在此场景下测试我们的设计。
A. 连接个人计算机(PC)
设计了一个有限状态机(FSM)以通过串行端口建立现场可编程门阵列芯片与个人计算机(PC)和/或磁力计之间的通信。因此,该设计需要扩展一个额外的UART解释器组件和多个时钟分频器。当数据样本由磁力计直接采集时,有限状态机(FSM)仅从磁力计读取数据样本,并将结果发送到个人计算机(PC)进行可视化;当数据样本从个人计算机(PC)的文件中读取(模拟数据)时,与个人计算机(PC)的通信为双向。
有限状态机接收来自PC/磁力计的N= 8192个数据点,并将其发送至现场可编程门阵列计算模块。在计算过程结束时,有限状态机从内存中读取结果,并通过串行通道将其传回个人计算机(PC)。图7 显示了该有限状态机的状态图。
为了与现场可编程门阵列通信,在PC端编写了一个Java程序。它将所有数据发送到现场可编程门阵列,等待结果,并在图表上显示所有这些信息。
该系统能够处理从太空中采集的真实数据样本,但为了确认
精度,我们使用了在FP7项目STORM中开发的INA库创建的自定义合成信号。21为了进一步验证该项目,我们还使用了磁力计作为数据源。
B. 片上结果
1. 功率谱密度实现结果
实验在7系列Xilinx FPGA,Artix‐7 XC7A100T上进行。
图8 展示了INA软件提供的频谱分析与我们的现场可编程门阵列解决方案在8192个数据点下的对比。21输入信号是两个正弦频率分别为50和80赫兹的函数。结果表明精度良好,证实现场可编程门阵列解决方案表现优异,能够对测试信号的功率谱密度提供良好的估计。
表二. PSD设计的芯片占用报告。
| Data 样本 (N) | 切片LUT (已使用/总数) | 切片寄存器 (已使用/总数) | BRAM模块 (已使用/总数) | DSPs (已使用/总数) |
|---|---|---|---|---|
| 1024 | 5055/63 400 (7.97%) | 6402/126 800(5.05%) | 12/135 (8.89%) | 10/240 (4.17%) |
| 2048 | 5047/63 400 (7.96%) | 6446/126 800(5.09%) | 40/135 (17.78%) | 10/240 (4.17%) |
| 4096 | 5055/63 400 (7.97%) | 6490/126 800(5.12%) | 68/135 (35.56%) | 10/240 (4.17%) |
| 8192 | 5039/63 400 (7.95%) | 6535/126 800(5.15%) | 96/135(71.11%) | 10/240(4.17%) |
表III。针对最终PSD架构在1024、2048、4096、8192和数据样本情况下的功耗估计。
| 输入数量总片上 | 数据样本功率(瓦) (W) | FFT计算(瓦) | 功率谱密度估计计算(瓦) |
|---|---|---|---|
| 1024 | 0.292 | 0.151 | 0.038 |
| 2048 | 0.388 | 0.243 | 0.039 |
| 4096 | 0.484 | 0.335 | 0.040 |
| 8192 | 0.581 | 0.429 | 0.041 |
从表二可以看出,根据分析所考虑的数据样本数量,只有块状RAM的数量随N成比例增加。表二中的其他列显示,其他方面并未受到任何影响。此外,处理一个数据帧所需的处理时间与总样本数N成正比。如前所述,该架构可以处理实数和复数值,这基本上使存储所需的内存量增加了一倍。在将此解决方案应用于空间应用时,通过简单修改几个索引,可使架构仅用于实信号处理,从而显著减少所需的空间。另外,由于表二中的结果仅针对磁力计的一个轴向,因此在完整实现的情况下,这些数值必须乘以3。
总之,我们可以得出结论:我们的设计主要目标——数据压缩——确实已经实现。该现场可编程门阵列架构对实部信号实现了50%的数据压缩率,而对于复数信号,压缩率则提高到75%。因此,这些解决方案可能会提升空间探索任务的科学产出。
2. 概率密度函数实现结果
表IV。PDF计算模块的资源利用率报告。
| Data 样本 (N) | 切片LUT (已使用/总数) | 切片寄存器 (已使用/总数) | BRAM模块 (已使用/总数) | DSPs (已使用/总数) |
|---|---|---|---|---|
| 1024 | 1016/63 400 (1.6%) | 691/126 800 (0.54%) | 5/135 (3.7%) | 0/240 (0%) |
| 2048 | 1102/63 400(1.74%) | 745/126 800 (0.59%) | 5.5/135 (4.07%) | 0/240 (0%) |
| 4096 | 1144/63 400 (1.8%) | 821/126 800 (0.65%) | 6/135 (4.44%) | 0/240 (0%) |
| 8192 | 1218/63 400(1.92%) | 886/126 800 (0.7%) | 6.5/135 (4.81%) | 0/240 (0%) |
表V。包含PSD和PDF的完整设计的资源利用率。
| Data 样本 (N) | 切片LUT (已使用/总数) | 切片寄存器 (已使用/总数) | BRAM模块 (已使用/总数) | DSPs (已使用/总数) |
|---|---|---|---|---|
| 1024 | 6267/63 400 (9.88%) | 7198/126 800(5.68%) | 17/135 (12.59%) | 10/240 (4.17%) |
| 2048 | 6329/63 400 (9.98%) | 7309/126 800(5.76%) | 45.5/135 (33.33%) | 10/240 (4.17%) |
| 4096 | 6392/63400(10.08%) | 7420/126800(5.85%) | 74/135 (54.81%) | 10/240 (4.17%) |
| 8192 | 6455/63 400 (10.18%) | 7531/126 800(5.94%) | 102.5/135 (75.93%) | 10/240 (4.17%) |
在为太空领域设计解决方案时,另一个需要考虑的重要方面是功耗。表III显示了由赛灵思软件支持工具估计的FPGA设备的功耗。由于仅需一个低频时钟信号,因此与基于软件(个人计算机或微控制器)的实现相比,其功耗将显著降低(至少低两个数量级)。
表IV 显示了不同输入集大小下PDF计算模块的资源利用率。这些值主要包含直方图计算部分和数据存储部分,但不包括块状RAM(BRAM),因为这些模块与PSD计算模块共享。
表IV 还表明,增加输入数据样本大小(以及隐含的K值)会导致所使用的资源量增加。这一点尤其体现在BRAM模块上,因为每增加一个 τ就需要额外的一个直方图,而该直方图包含在一个半个BRAM块中。
表V展示了FPGA完整设计的资源利用率,包括不同输入数据大小下的PSD和PDF实现。逻辑资源的数量仅有微小变化,DSP没有变化;然而BRAM模块被大量使用。因此,通过在 PSD和PDF之间共享块状RAM(BRAM),以减少内存资源的用量显得尤为重要。
图9 显示了8192个数据点的随机游走信号的归一化PDF直方图:(a)现场可编程门阵列实现的情况(归一化在个人计算机(PC)上进行,在从现场可编程门阵列读回直方图之后); (b)使用INA的软件实现情况。
3. 延迟和吞吐量
对于FFT计算,延迟为57279个时钟周期;至于吞吐量,每57279个时钟周期完成一次变换。对于PSD估计,延迟为 114688个时钟周期;至于吞吐量,每53275个时钟周期完成一次变换(每秒计算585个数据样本)。
由于PDF计算模块使用了三个不同频率的时钟,因此计算延迟更加复杂。数据在CLK_A的频率下进行采样;CLK_B用于计算序列中的每个 Δ_τ,因此CLK_B的频率比CLK_A的频率快K倍。最后,直方图使用CLK_C更新,其频率至少是CLK_A频率的4倍,但为了方便起见,它与CLK_B具有相同的频率。因此,PDF计算模块的延迟为K+ 4(以CLK_B为基准),因为在最后一个 Δ_τ 计算完成后,直方图还需要额外4个时钟周期完成更新。
PDF计算模块的吞吐量等于数据采样率,即9600 bps,也就是300个数据样本/秒。这些值不包括数据采集/传输时间。
4. 功耗
表VI。功耗—针对最终设计的估计值,包括PSD和PDF电路。
| Data 样本 | 总片上功率(瓦) (W) | PSD (W) | PDF直方图 (W) |
|---|---|---|---|
| 1024 | 0.306 | 0.189 | 0.013 |
| 2048 | 0.404 | 0.282 | 0.013 |
| 4096 | 0.502 | 0.376 | 0.013 |
| 8192 | 0.600 | 0.470 | 0.013 |
消耗比个人计算机(PC)或微处理器低两个数量级。
V. 结论
本文提出了一种单芯片、基于现场可编程门阵列的架构,利用数字信号处理算法(如PSD和PDF)对太空数据进行高效的星载分析。解决了两个重要方面:面积和精度。这两种算法在单个现场可编程门阵列上综合实现,并使用Artix7技术实时处理多达 8192个数据样本。通过将结果与专为空间数据分析定制的认证科学库产生的结果进行比较,验证了计算的精度。
所提出的架构最大的优势之一是能够根据目标设备非常轻松地进行扩展。此外,该设计的功耗比基于处理器的实现方案低多达两个数量级,这一优势得益于在空间环境中数据采集过程的速率相对较低。
鉴于太空应用背景,整个系统的有效重量也至关重要,从这个角度来看,本文提出的基于单芯片现场可编程门阵列的实现几乎是一种理想解决方案。
本文展示了在太空应用背景下该设计的所有关键方面,并结合仿真结果,证明了此解决方案集成到现代科学航天器 onboard 空间技术中的潜力。该论文表明,如何在 FPGA 芯片中有效共享逻辑资源,以实现面向空间应用的一些基本数字信号处理算法的两种硬件实现,同时获得硬件实现在功耗、面积、重量和速度方面的所有优势。
325

被折叠的 条评论
为什么被折叠?



