CN117196931B - 面向传感器阵列的数据处理方法、fpga及电子设备 - Google Patents

面向传感器阵列的数据处理方法、fpga及电子设备 Download PDF

Info

Publication number
CN117196931B
CN117196931B CN202311475529.4A CN202311475529A CN117196931B CN 117196931 B CN117196931 B CN 117196931B CN 202311475529 A CN202311475529 A CN 202311475529A CN 117196931 B CN117196931 B CN 117196931B
Authority
CN
China
Prior art keywords
data
memory
module
sensor
bit width
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311475529.4A
Other languages
English (en)
Other versions
CN117196931A (zh
Inventor
郭建文
符云越
王向科
席鑫
李拓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311475529.4A priority Critical patent/CN117196931B/zh
Publication of CN117196931A publication Critical patent/CN117196931A/zh
Application granted granted Critical
Publication of CN117196931B publication Critical patent/CN117196931B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Input (AREA)

Abstract

本申请提供一种面向传感器阵列的数据处理方法、FPGA及电子设备,涉及计算机技术领域,该方法包括:获取传感器阵列中的多个传感器采集的原始传感器数据,并将原始传感器数据按照采样时刻依次输入到采集数据缓冲模块中进行多级缓冲;将采集数据缓冲模块缓冲后的传感器数据输入到数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中;基于目标数量和采样时刻依次从动态随机存储器中读取出待处理数据输入到脉冲压缩算法实现模块中进行处理。本申请提供的面向传感器阵列的数据处理方法、FPGA及电子设备,用于提高传感器阵列输出的传感器数据的处理效率。

Description

面向传感器阵列的数据处理方法、FPGA及电子设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种面向传感器阵列的数据处理方法、FPGA及电子设备。
背景技术
成像设备的换能器由数量众多的传感器单元组成,每个传感器单元按照采样率进行周期性采样,在采样脉宽时间内产生一路离散的时域信号,该时域信号经过模拟电路处理(滤波、放大、下变频等)后,由模拟数字转换器(analog to digital converter,ADC)转为数字信号,之后在数字处理芯片中经数字滤波、相位补偿等操作后传给脉冲压缩模块进行处理,并将处理后的数据传输至上层处理模块进行数据分析。
然而,相关技术中面向传感器阵列的数据处理方法,在进行多路传感器处理时,若想要处理速度快,则需要大量的系统资源,若想要降低对系统资源的需求,则处理时间大幅增加,时间消耗与对系统资源的需求难以平衡。
基于此,急需一种能够在确保时间消耗要求的基础上,降低系统资源需求的数据处理方法,以提高传感器阵列输出的传感器数据的处理效率。
发明内容
本申请的目的是提供一种面向传感器阵列的数据处理方法、FPGA及电子设备,用于在确保时间消耗要求的同时,还能降低系统资源需求,极大地提高了传感器阵列输出的传感器数据的处理效率。
本申请提供一种面向传感器阵列的数据处理方法,包括:
获取传感器阵列中的多个传感器采集的原始传感器数据,并将所述原始传感器数据按照采样时刻依次输入到所述采集数据缓冲模块中进行多级缓冲;所述原始传感器数据包括:所述多个传感器在采样脉冲内采集的一个待处理数据帧;待处理数据帧由多个采样时刻采集到的传感器数据组成、且每个采样时刻采集多个传感器数据,一个传感器对应一个传感器数据;将所述采集数据缓冲模块缓冲后的传感器数据输入到所述数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中;同一时刻采集到的传感器数据按行写入到所述动态随机存储器;基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理,并在所述脉冲压缩算法实现模块处理完所述待处理数据帧所包含的所有传感器数据的情况下,得到目标图像帧;其中,所述采集数据缓冲模块包括:由多个先入先出(First in first out,FIFO)存储器组成的第一级存储器,以及由一个FIFO存储器组成的第二级存储器;所述第一级存储器中的每个FIFO存储器均用于缓存多个传感器采集到的传感器数据;所述第一级存储器中的FIFO存储器的输出位宽是由所述第二级存储器中FIFO存储器的输入位宽决定的;所述第二级存储器中FIFO存储器的输入位宽由以下参数计算得到:单个传感器的输入位宽,所述动态随机存储器的预取数,所述动态随机存储器的总线位宽;所述目标数量为:根据脉冲压缩算法实现模块的处理能力确定的;所述待处理数据包括:所述目标数量的传感器在所述待处理数据帧内所包含的传感器数据。
可选地,所述将所述原始传感器数据按照采样时刻依次输入到所述采集数据缓冲模块中进行多级缓冲,包括:将所述第一级存储器中各个FIFO存储器输出的传感器数据依次输入到上述第二级存储器的FIFO存储器中;其中,所述第一级存储器中每个FIFO存储器的输入位宽均为单个传感器的数据位宽的整数倍、每个FIFO存储器的输入位宽为输出位宽的整数倍、且每个FIFO存储器的输入位宽小于或者等于FIFO存储器的最大允许输入位宽;所述第一级存储器中每个FIFO存储器的剩余未分配位宽小于单个传感器的数据位宽;所述第二级存储器的输入位宽大于或者等于所述第一级存储器中任一FIFO存储的输出位宽、且所述第一级存储器中的FIFO存储器的输出位宽均相同。
可选地,所述将所述原始传感器数据按照采样时刻依次输入到所述采集数据缓冲模块中进行多级缓冲之前,所述方法还包括:根据所述单个传感器的数据位宽以及所述第一级存储器中每个FIFO存储器的最大允许输入位宽,确定所述第一级存储器中每个FIFO存储器对应的最大传感器数量;按照每个FIFO存储器对应的最大传感器数量为每个FIFO存储器分配传感器采集的传感器数据。
可选地, 所述按照每个FIFO存储器对应的最大传感器数量为每个FIFO存储器分配传感器采集的传感器数据,包括:在所述第一级存储器中存在第一FIFO存储器的情况下,基于所述第一FIFO存储器的输出位宽增加所述第一FIFO存储器的输入位宽;其中,所述第一FIFO存储器为所述第一级存储器所包含的多个FIFO存储器中对应传感器数量小于最大传感器数量的FIFO存储器;所述第一FIFO存储器增加的输入位宽后,所述第一FIFO存储器的输入位宽为输出位宽的整数倍。
可选地,所述第二级存储器中的FIFO存储器的输入位宽为基于以下公式一计算得到的:
(公式一)
其中,为传感器的数据位宽;/>为向上取整函数;/>为所述动态随机存储器的总线位宽;/>为所述动态随机存储器的预取数;/>为用于向上取2的整数次幂的函数。
可选地,所述将所述采集数据缓冲模块缓冲后的传感器数据输入到所述数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中,包括:在所述原始传感器数据的数据位宽不为2的整数次幂的情况下,将所述原始传感器数据中的传感器数据扩展为2的整数次幂。
可选地,所述将所述采集数据缓冲模块缓冲后的传感器数据输入到所述数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中,包括:获取所述第二级存储器输出的待写入数据;所述待写入数据为:基于所述采样脉冲的首个采样时刻,或者,除所述首个采样时刻之外的任一第一采样时刻所述多个传感器采集的传感器数据得到的;将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中;其中,所述存储库的每一列存储一个传感器数据。
可选地,所述待写入数据为:基于所述首个采样时刻所述多个传感器采集的传感器数据得到的;所述将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中,包括:在所述存储库的单行最大存储数据量小于所述待写入数据的数据量的情况下,从所述存储库的新行首列按照传感器排列顺序依次写入所述待写入数据,并在当前行写满数据后从下一个相邻新行按照所述传感器排列顺序依次写入所述待写入数据中未写入所述动态随机存储器中的数据,直至所述待写入数据全部写入所述动态随机存储器。
可选地,所述待写入数据为:基于所述首个采样时刻所述多个传感器采集的传感器数据得到的;所述将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中,包括:在所述存储库的单行最大存储数据量小于所述待写入数据的数据量的情况下,从所述存储库的当前行的当前列按照传感器排列顺序依次写入所述待写入数据,并在当前行写满数据后从下一个相邻新行按照所述传感器排列顺序依次写入所述待写入数据中未写入所述动态随机存储器中的数据,直至所述待写入数据全部写入所述动态随机存储器。
可选地,所述将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中,包括:在所述存储库的单行最大存储数据量大于或者等于所述待写入数据的数据量的情况下,从所述存储库的新行首列按照传感器排列顺序依次写入所述待写入数据。
可选地,所述待写入数据为:基于所述第一采样时刻所述多个传感器采集的传感器数据得到的;所述将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中,包括:在所述存储库存储的当前行的剩余存储量大于所述待写入数据的数据量的情况下,从目标起始地址按照传感器排列顺序依次写入所述待写入数据;其中,所述目标起始地址为:大于所述当前行中上一采样时刻对应数据的结束地址、且与所述结束地址之间距离最小的2的整数次幂地址。
可选地,所述基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理,包括:从所述多个传感器中按照传感器排列顺序筛选出与所述目标数量相匹配的目标传感器,并从所述动态随机存储器获取所述目标传感器在所述采样脉冲内采集的待压缩数据;将所述待压缩数据输入到所述脉冲压缩算法实现模块中进行处理,得到待整合数据。
可选地,所述从所述动态随机存储器获取所述目标传感器在所述采样脉冲内采集的待压缩数据,包括:按照采样时间依次从所述动态随机存储器中按行读取所述目标传感器在所述采样脉冲的各个采样时刻采集到的传感器数据,得到所述待压缩数据。
可选地,所述从所述动态随机存储器获取所述目标传感器在所述采样脉冲内采集的待压缩数据,包括:在当前剩余传感器数量小于所述目标数量的情况下,按照采样时间依次从所述动态随机存储器中按行读取剩余传感器在所述采样脉冲的各个采样时刻采集到的待补齐传感器数据;按照所述目标数量与当前剩余传感器数量的差值所对应的传感器数据的数据量,使用零值将所述待补齐传感器数据进行数据补齐,得到所述待压缩数据。
可选地,所述脉冲压缩算法实现模块,包括:快速傅里叶变换FFT模块,乘法器模块以及快速傅里叶逆变换IFFT模块;所述FFT模块包括多个FFT子模块;所述IFFT模块包括多个IFFT子模块;一个FFT子模块对应至少一个传感器,一个FFT子模块对应一个乘法器模块和一个IFFT子模块;所述将所述待压缩数据输入到所述脉冲压缩算法实现模块中进行处理,得到待整合数据,包括:将所述待整合数据中各个传感器对应的数据输入到与传感器对应的FFT模块中进行处理,得到每个FFT子模块输出的第一数据;将每个FFT子模块输出的第一数据输入到每个FFT子模块对应乘法器模块中,与乘法器模块中对应的复数相乘,得到每个乘法器模块输出的第二数据;将每个乘法器模块输出的第二数据输入到每个FFT子模块对应的IFFT子模块中进行处理,得到所述待整合数据;其中,所述目标图像帧由多个待整合数据构成。
可选地,所述FPGA,还包括:设置于所述数据访问控制模块与所述脉冲压缩算法实现模块之间的读数据缓冲模块;所述读数据缓冲模块包括:一个用于解决所述数据访问控制模块与所述脉冲压缩算法实现模块之间存在的跨时钟域问题的缓冲FIFO存储器;所述缓冲FIFO存储器的输入位宽与所述动态随机存储器的总线位宽相同,所述缓冲FIFO存储器的输出位宽为所有FFI子模块的输入位宽的代数和。
可选地,所述基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理之前,所述方法还包括:
根据以下公式二计算出一个采样周期内可执行的FFT次数
(公式二)
其中,为采样周期,所述采样脉冲为所述采样周期内进行采样的时间段;为执行一次FFT所需的时间;
根据以下公式三计算出所述目标数量;
(公式三)
其中,为目标数据;/>为所述传感器阵列中的传感器数量;
根据以下公式四至公式七确定FFT模块中FFT子模块的配置:
(公式四)
(公式五)
(公式六)
(公式七)
其中,为8路型FFT子模块的数量;/>为4路型FFT子模块的数量;/>为2路型FFT子模块的数量;/>为1路型FFT子模块的数量;/>为向下取整函数。
本申请还提供一种现场可编程逻辑门阵列FPGA,包括采集数据缓冲模块,数据访问控制模块,以及脉冲压缩算法实现模块;
所述采集数据缓冲模块,用于对传感器阵列中的多个传感器采集到的传感器数据进行数据缓冲;所述采集数据缓冲模块包括:由多个先入先出FIFO存储器组成的第一级存储器,以及由一个FIFO存储器组成的第二级存储器;所述第一级存储器中的每个FIFO存储器均用于缓存多个传感器采集到的传感器数据;所述第一级存储器中的FIFO存储器的输出位宽是由所述第二级存储器中FIFO存储器的输入位宽决定的;所述第二级存储器中FIFO存储器的输入位宽由以下参数计算得到:单个传感器的输入位宽,动态随机存储器的预取数,所述动态随机存储器的总线位宽;所述数据访问控制模块,用于将所述采集数据缓冲模块所缓冲的传感器数据存储到所述动态随机存储器中,以及从所述动态随机存储器中读取传感器数据并输入至所述脉冲压缩算法实现模块;所述脉冲压缩算法实现模块,用于对接收到的所述数据访问控制模块传输的传感器数据进行处理,得到目标图像帧;其中,所述脉冲压缩算法实现模块,包括:快速傅里叶变换FFT模块,乘法器模块以及快速傅里叶逆变换IFFT模块;所述FFT模块包括多个FFT子模块;所述IFFT模块包括多个IFFT子模块;一个FFT子模块对应至少一个传感器,一个FFT子模块对应一个乘法器模块和一个IFFT子模块。
可选地,所述第一级存储器中每个FIFO存储器的输入位宽均为单个传感器的数据位宽的整数倍、每个FIFO存储器的输入位宽为输出位宽的整数倍、且每个FIFO存储器的输入位宽小于或者等于FIFO存储器的最大允许输入位宽;所述第一级存储器中每个FIFO存储器的剩余未分配位宽小于单个传感器的数据位宽;所述第二级存储器的输入位宽大于或者等于所述第一级存储器中任一FIFO存储的输出位宽、且所述第一级存储器中的FIFO存储器的输出位宽均相同。
可选地,所述FPGA,还包括:设置于所述数据访问控制模块与所述脉冲压缩算法实现模块之间的读数据缓冲模块;所述读数据缓冲模块包括:一个用于解决所述数据访问控制模块与所述脉冲压缩算法实现模块之间存在的跨时钟域问题的缓冲FIFO存储器;所述缓冲FIFO存储器的输入位宽与所述动态随机存储器的总线位宽相同,所述缓冲FIFO存储器的输出位宽为所有FFI子模块的输入位宽的代数和。
本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述面向传感器阵列的数据处理方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述面向传感器阵列的数据处理方法的步骤。
本申请提供的面向传感器阵列的数据处理方法、FPGA及电子设备,应用于现场可编程逻辑门阵列FPGA,FPGA包括:采集数据缓冲模块,数据访问控制模块,以及脉冲压缩算法实现模块;首先,获取传感器阵列中的多个传感器采集的原始传感器数据,并将原始传感器数据按照采样时刻依次输入到采集数据缓冲模块中进行多级缓冲;原始传感器数据包括:多个传感器在采样脉冲内采集的一个待处理数据帧;待处理数据帧由多个采样时刻采集到的传感器数据组成、且每个采样时刻采集多个传感器数据,一个传感器对应一个传感器数据;之后,将采集数据缓冲模块缓冲后的传感器数据按照采集的先后顺序依次写入到动态随机存储器中;同一时刻采集到的传感器数据按行写入到动态随机存储器;最后,基于目标数量和采样时刻依次从动态随机存储器中读取出待处理数据输入到脉冲压缩算法实现模块中进行处理,并在脉冲压缩算法实现模块处理完待处理数据帧所包含的所有传感器数据的情况下,得到目标图像帧。如此,在确保时间消耗要求的基础上,还能降低系统资源需求,极大地提高了传感器阵列输出的传感器数据的处理效率。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的相关技术中传感器数据在内存中的存储方式示意图;
图2是本申请提供的现场可编程逻辑门阵列FPGA的结构示意图之一;
图3是本申请提供的面向传感器阵列的数据处理方法流程示意图之一;
图4是本申请提供的传感器数据在内存中的存储方式示意图之一;
图5是本申请提供的传感器数据在内存中的存储方式示意图之二;
图6是本申请提供的传感器数据在内存中的存储方式示意图之三;
图7是本申请提供的脉冲压缩算法实现模块的结构示意图;
图8是本申请提供的现场可编程逻辑门阵列FPGA的结构示意图之二;
图9是本申请提供的面向传感器阵列的数据处理方法流程示意图之二;
图10是本申请提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
在相关技术中,脉冲压缩模块需要进行快速傅里叶变换 (Fast FourierTransform,FFT)、参考波形FFT共轭系数相乘和快速傅里叶逆变换(Inverse Fast FourierTransform,IFFT)等操作,最终传给更上层的处理模块进行数据分析。FFT和IFFT模块通常要消耗大量资源,尤其是数字信号处理器(Digital Signal Process)DSP芯片计算资源和随机存取存储器(Random Access Memory,RAM)资源,并且随着对设备性能要求的提升,单帧图像成像要求传感器采样率提升或采样脉宽增长,继而FFT/IFFT点数线性增多,所消耗资源也大幅增长。若每路传感器均需要专有的处理模块,那么消耗的资源对现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)来说是巨大的。通常情况下,可以通过资源复用来解决FPGA物理资源不足的问题,即多路共用一套处理模块,分时对各路信号依次进行处理,这样可以成比例降低资源利用数量。如128路共用一套处理模块,在不考虑数据缓冲及相关逻辑的资源消耗的情况下,所消耗的资源将是每路使用一套处理模块时的1/128,消耗资源的下降是十分明显的。但相应地,前者处理时间也近乎是后者的128倍。如何实现计算/存储所需资源下降的情况下,最大程度降低处理时间的增长就成为实际研发过程中需要解决的问题。
除了FPGA片上计算/存储资源消耗的问题,传感器采集数据的缓存策略对处理时间也有很大影响。传感器采样时,所有传感器当前时刻的采样数据同时传入FPGA,然后是下一时刻所有传感器的采样数据,依次类推。脉冲压缩是对单一传感器在一帧采样时间内所有数据的处理,即一个数据帧包括所有传感器在多个时刻采集的数据,那么在处理资源复用的情况下,就需要根据复用条件对未实时处理的传感器整帧数据进行缓存。例如,128路共用一套处理模块,那么至少要缓存这128路中的127路传感器整帧数据,即至少要缓存整帧数据的127/128。这些需缓存数据存储在FPGA的片上RAM中固然访问速度快,但每帧动辄几兆字节(Mbyte,MB)、几十MB甚至更大的数据量均使用片上RAM来缓存的成本是极大的。对于这一问题,通常使用片外存储器来解决,而最常使用的就是双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR SDRAM),即常说的内存。内存容量大,速度快,以DDR4内存为例,传输速度可达3200百万次每秒MT/s,数据总线宽度为16,若不考虑效率问题,最大传输速度可达6.4 GBps,对于100MB的单帧数据,即便考虑内存存储效率,传感器的采样帧率也可达32fps,而通过DDR芯片的成组使用,随着位宽的增加,采样帧率也对应地成倍增加,这可满足绝大部分的应用场景。然而,由于内存的运行原理,连续访问和随机访问的速度相差巨大,后者速度可能不足前者的1/10。而传感器采集数据是突发式的,以声呐为例,一帧数据的采集时间一般在几百微秒到几毫秒,采样率几百千赫兹kHz到几十兆赫兹MHz甚至更高。若采样率10MHz,16bits位宽,单个处理单元处理64路信号,2ms采样脉宽,则数据速率1.28GBps,单帧数据量2.56MB。通常所用的中低端FPGA的可用RAM难以满足2.56MB的缓存需求,那么采样数据存储时只能是以连续访问的方式进行存储(随机访问速度难以达到1.28GBps),将单次采样的数据优先存储在当前处于激活状态的行的列中,当前行的列存储到一定量时,再切换到下一行进行存储。下一时刻数据以同样的方式存储在后续的行中。采样数据在内存中存储位置示意图如图1所示,图1中为内存的一个存储库Bank,含NR行和NC列,Rx代表第x行,Cy代表第y列。共有m个传感器,采样脉宽内采集n次,Di_tj代表第i个传感器在第j个采样时刻采集的数据。一帧数据采集完成后才可对数据进行脉冲压缩算法的处理。此时需要从内存中依次取出目标传感器所有采样时刻的值(对于第i个传感器,即依次取出Di_t1、 Di_t2、…、 Di_tn)并放入处理模块进行处理。而如图1所示,每个传感器的一帧数据是存储在对应列的连续行中,这样每取一个数据就要切换一次行(切换行需要进行预充电,切换列不需要),效率很低。而如何提高这种按空间维度依次写入、按时间维度依次读出情形下内存的综合效率也是亟需解决的问题。
针对相关技术中存在的上述技术问题,本申请实施例提供了一种现场可编程逻辑门阵列FPGA,如图2所示,该现场可编程逻辑门阵列FPGA包括:采集数据缓冲模块,数据访问控制模块,以及脉冲压缩算法实现模块。同时,与该FPGA相连的动态随机存储器用于存储采集数据缓冲模块输出的传感器数据。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的面向传感器阵列的数据处理方法进行详细地说明。
如图3所示,本申请实施例提供的一种面向传感器阵列的数据处理方法,该方法可以包括下述步骤301至步骤303:
步骤301、获取传感器阵列中的多个传感器采集的原始传感器数据,并将所述原始传感器数据按照采样时刻依次输入到所述采集数据缓冲模块中进行多级缓冲。
其中,所述原始传感器数据包括:所述多个传感器在采样脉冲内采集的一个待处理数据帧;待处理数据帧由多个采样时刻采集到的传感器数据组成、且每个采样时刻采集多个传感器数据,一个传感器对应一个传感器数据。所述采集数据缓冲模块包括:由多个先入先出FIFO存储器组成的第一级存储器,以及由一个FIFO存储器组成的第二级存储器;所述第一级存储器中的每个FIFO存储器均用于缓存多个传感器采集到的传感器数据;所述第一级存储器中的FIFO存储器的输出位宽是由所述第二级存储器中FIFO存储器的输入位宽决定的;所述第二级存储器中FIFO存储器的输入位宽由以下参数计算得到:单个传感器的输入位宽,所述动态随机存储器的预取数,所述动态随机存储器的总线位宽;
可以理解的是,传感器阵列在同一时刻输出所有传感器数据,瞬时数据量极大,但输出数据时间占总的工作时间比例很低,故而平均速率并不大。为了降低对内存数据通量的要求,就需要对采集到的传感器数据进行缓冲。采集数据缓冲模块的输入数据位宽很大,允许的数据通量就很高,能够承载传感器阵列输出时的瞬间大通量数据,采集数据缓冲模块将这些数据缓存后,可由数据访问控制模块慢速读出,只要内存的时间平均读取速度高于传感器阵列输出的平均数据速率即可。
示例性地,由于FPGA中FIFI存储器对位宽有一定的限制,为了能够同时多对路传感器数据进行缓冲,采集数据缓冲模块由两级FIFO存储器构成,即上述第一级存储器和第二级存储器。
具体地,上述步骤301,可以包括以下步骤301a:
步骤301a、将所述第一级存储器中各个FIFO存储器输出的传感器数据依次输入到上述第二级存储器的FIFO存储器中。
其中,所述第一级存储器中每个FIFO存储器的输入位宽均为单个传感器的数据位宽的整数倍、每个FIFO存储器的输入位宽为输出位宽的整数倍、且每个FIFO存储器的输入位宽小于或者等于FIFO存储器的最大允许输入位宽;所述第一级存储器中每个FIFO存储器的剩余未分配位宽小于单个传感器的数据位宽;所述第二级存储器的输入位宽大于或者等于所述第一级存储器中任一FIFO存储的输出位宽、且所述第一级存储器中的FIFO存储器的输出位宽均相同。
示例性地,上述第一级存储器由多个FIFO存储器构成,每个FIFO存储器对应一定数量的传感器,第一级存储器中FIFO存储器的数量和各个FIFO存储器的位宽可以按照以下规则进行配置:
规则1、每个FIFO存储器的输入位宽均是输出位宽的整数倍,每个FIFO存储器的输出位宽由第二级FIFO的输入位宽决定,即每个FIFO存储器的输出位宽均小于或者等于第二级FIFO的输入位宽。
规则2、每个FIFO存储器的输入位宽均是单个传感器数据位宽的整数倍。
规则3、每个FIFO存储器的输入位宽不超过FIFO存储器的最大允许输入位宽。
规则4、第一级存储器中所有FIFO的总输入位宽大于或者等于传感器阵列总的输出位宽。
规则5、每个FIFO存储器的输入位宽尽量接近每个FIFO存储器的最大允许输入位宽,即每个FIFO存储器的剩余未分配的输入位宽小于单个传感器的数据位宽。
规则6、若未分配传感器的总位宽低于规则5确定的FIFO存储器输入位宽的限制,则需要增加该FIFO存储器的输入位宽,增加的输入位宽为单个传感器数据位宽的整数倍,以使该FIFO存储器的输入位宽满足规则5和规则1,额外增加的输入位宽使用零值进行填充。
举例说明,若第一级存储器中FIFO存储器的最大允许输入位宽为256bits,第二级存储器中的FIFO存储器的输入位宽为56bits,传感器数据位宽为28bits,传感器阵列中传感器数量为29,则有上述规则可知,存在三个FIFO存储器的输入位宽为288=224bits,第四个FIFO存储器的输入位宽原本应该为(29-8/>3)/>28=140bits,但由于规则5的限制,需要增加该FIFO存储器的输入位宽,将该该FIFO存储器的输入位宽增加至168bits,增加位宽后使得输入位宽为输出位宽(56bits)的整数倍。该示例中第一级存储器中每个FIFO存储器的最大允许输入位宽均为256bits,在实际使用过程中,不同的FIFO存储器的最大允许输入位宽不完全相同。
示例性地,基于上述规则,便可以为每个FIFO存储器分配传感器和输入位宽。即上述步骤301之前,本申请实施例提供的面向传感器阵列的数据处理方法,还可以包括以下步骤304和步骤305:
步骤304、根据所述单个传感器的数据位宽以及所述第一级存储器中每个FIFO存储器的最大允许输入位宽,确定所述第一级存储器中每个FIFO存储器对应的最大传感器数量。
步骤305、按照每个FIFO存储器对应的最大传感器数量为每个FIFO存储器分配传感器采集的传感器数据。
具体地,上述步骤305,可以包括以下步骤305a:
步骤305a、在所述第一级存储器中存在第一FIFO存储器的情况下,基于所述第一FIFO存储器的输出位宽增加所述第一FIFO存储器的输入位宽。
其中,所述第一FIFO存储器为所述第一级存储器所包含的多个FIFO存储器中对应传感器数量小于最大传感器数量的FIFO存储器;所述第一FIFO存储器增加输入位宽后,所述第一FIFO存储器的输入位宽为输出位宽的整数倍。
需要说明的是,上述针对第一存储器中各个FIFO存储器输入位宽和输出位宽的设置,均可以参照上述规则1至规则6中的描述。
具体地,上述第二级存储器由一个FIFO存储器组成,该FIFO存储器的输入位宽与输出位宽相同,该FIFO存储器的输入位宽可以根据以下公式一计算得到:
(公式一)
其中,为传感器的数据位宽;/>为向上取整函数;/>为所述动态随机存储器的总线位宽;/>为所述动态随机存储器的预取数;/>为用于向上取2的整数次幂的函数。
示例性地,在实际运行时,第一级存储器所有FIFO存储器均非空时才进行读取,并依次读出所有FIFO存储器的本次采样数据以送入第二级存储器中的FIFO存储器。这样保证采样的数据按时间依次存放,且同一传感器数据在不同次采样数据中的位置一致。第二级存储器输出的数据顺序即为:D1_t1、D2_t1、…、Dm_t1、D1_t2、D2_t2、…、Dm_t2、…、D1_tk、D2_tk、…、Dm_tk、…其中,Di_tj代表第i个传感器在第j个采样时刻采集的数据,m为按上述规则6进行位宽扩展后的传感器数量,额外多出来的传感器可以理解为虚拟的传感器,其对应的传感器数据为零值。此外,第一级存储器输入时钟与传感器采样数据时钟一致,输出时钟与内存的用户时钟一致,第二级存储器的输入时钟和输出时钟相同,均为内存的用户时钟。
可以理解的是,采集数据缓冲模块一方面进行数据缓冲处理,以实现数据快入慢出,另一方面也实现采样数据到内存的跨时钟域处理。
步骤302、将所述采集数据缓冲模块缓冲后的传感器数据输入到所述数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中。
其中,同一时刻采集到的传感器数据按行写入到所述动态随机存储器。
示例性地,上述数据访问控制模块用于负责将数据写入到动态随机存储器(即上述内存)以及从动态随机存储器中读取数据。
示例性地,向动态随机存储器中数据写入时,动态随机存储器中存储的数据为原传感器数据的2次幂位宽扩展,例如,传感器数据位宽为28bits,则实际存储的数据位宽为32bits,即25bits。
具体地,上述步骤302,可以包括以下步骤302a:
步骤302a、在所述原始传感器数据的数据位宽不为2的整数次幂的情况下,将所述原始传感器数据中的传感器数据扩展为2的整数次幂。
示例性地,在向动态随机存储器中存储数据时,以单次采样数据为存储单元,按如下规则存储:
1、对于每个采样周期的第一次采样数据,其存储起始于存储库的新行首列,然后依次存入后续列。
具体地,上述步骤302,还可以包括以下步骤302b和步骤302c:
步骤302b、获取所述第二级存储器输出的待写入数据。
其中,所述待写入数据为:基于所述采样脉冲的首个采样时刻,或者,除所述首个采样时刻之外的任一第一采样时刻所述多个传感器采集的传感器数据得到的。
步骤302c、将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中。
其中,所述存储库的每一列存储一个传感器数据。
示例性地,在获取到上述待写入数据后,可以从存储库的新行首列按行开始存储数据,每一列存储一个传感器数据。
2、若单次采样数据总量大于动态随机存储器的单行最大存储量,则当前行所有列存满后,关闭当前行并开启下一个可用相邻新行,从其首列顺次存入后续数据。以此类推,直至本次采样数据全部存储完成。
具体地,在上述待写入数据为:基于所述首个采样时刻所述多个传感器采集的传感器数据得到的数据的情况下,上述步骤302c,还可以包括以下步骤302c1:
步骤302c1、在所述存储库的单行最大存储数据量小于所述待写入数据的数据量的情况下,从所述存储库的新行首列按照传感器排列顺序依次写入所述待写入数据,并在当前行写满数据后从下一个相邻新行按照所述传感器排列顺序依次写入所述待写入数据中未写入所述动态随机存储器中的数据,直至所述待写入数据全部写入所述动态随机存储器。
具体地,上述待写入数据为:基于所述首个采样时刻所述多个传感器采集的传感器数据得到的数据的情况下,上述步骤302c,还可以包括以下步骤302c2:
步骤302c2、在所述存储库的单行最大存储数据量小于所述待写入数据的数据量的情况下,从所述存储库的当前行的当前列按照传感器排列顺序依次写入所述待写入数据,并在当前行写满数据后从下一个相邻新行按照所述传感器排列顺序依次写入所述待写入数据中未写入所述动态随机存储器中的数据,直至所述待写入数据全部写入所述动态随机存储器。
举例说明,如图4所示的存储策略示意图,若单次采样数据总量大于动态随机存储器的单行最大存储量,则针对t1时刻采集到的传感器数据,可以从新行首列开始存储,并在当前行存满后,开启下一个可用相邻新行,继续存储后续数据。针对t2时刻采集到的传感器数据,则可以直接从当前行的当前列开始存储。
3、若单次采样数据总量低于内存的单行存储量,则有如下两种情况:
情况1:动态随机存储器的单行剩余存储小于单次采样数据总量,则下一次采样数据存储在相邻的可用新行。
具体地,上述步骤302c,还可以包括以下步骤302c3:
步骤302c3、在所述存储库的单行最大存储数据量大于或者等于所述待写入数据的数据量的情况下,从所述存储库的新行首列按照传感器排列顺序依次写入所述待写入数据。
示例性地,当动态随机存储器的单行剩余存储小于单次采样数据总量时,无论上述待写入数据为首次采样数据或者非首次采样数据,都可以从新行新列开始存储数据。
举例说明,如图5所示,R1行从首列开始存储t1时刻采样的数据,且R1行剩余存储量不足以存储t2时刻采样的数据,因此,t2时刻采样的数据也从R2行的首列开始存储。以此类推,后续其他时刻采样的数据均从新行首列开始存储。
情况2:动态随机存储器的单行剩余存储大于等于单次采样数据总量,则下一次采样数据存储在当前行。
具体地,在上述待写入数据为:基于所述第一采样时刻所述多个传感器采集的传感器数据得到的数据的情况下,上述步骤302c,还可以包括以下步骤302c4:
步骤302c4、在所述存储库存储的当前行的剩余存储量大于所述待写入数据的数据量的情况下,从目标起始地址按照传感器排列顺序依次写入所述待写入数据。
其中,所述目标起始地址为:大于所述当前行中上一采样时刻对应数据的结束地址、且与所述结束地址之间距离最小的2的整数次幂地址。即最近接所述结束地址的2的整数次幂地址。
示例性地,考虑到计算方便,下一次采样数据存储起始列地址对齐到比单次采样数据总量大且最近的2的整数次幂的整数倍处。例如,单次采样数据总量为200字节,动态随机存储器单行存储量1024字节,则当前行的第一个单次采样数据存储单元起始列地址为0x0(16进制),第二个单次采样数据存储单元起始列地址为0x100(16进制,256=1×28,为比200大且距200最近的2的整数次幂),第三个单次采样数据存储单元起始列地址为0x200(16进制,512=1×28)。依次类推,直至新的对齐后的起始地址后不能存储完整的单次采样数据。则再下一次单次采样数据存储时需另起新行进行存储。在此例中,DDR单行存储四次采样数据后的最后列地址为0x3C7(16进制,967),剩余56个字节,不足以存储完整的单次采样数据,那么下一次采样数据则存储在新行。
举例说明,如图6所示,R1行从首列开始存储t1时刻采样的数据,且R1行剩余存储量足够存储t2时刻采样的数据,那么,t2时刻采样的数据也可以存储到R1行中,但需要从2的整数次幂地址处开始存储。
如此,按照上述存储规则进行存储,发生行切换的次数大幅下降,主要是进行列切换,存储效率高。
步骤303、基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理,并在所述脉冲压缩算法实现模块处理完所述待处理数据帧所包含的所有传感器数据的情况下,得到目标图像帧。
其中,所述目标数量为:根据脉冲压缩算法实现模块的处理能力确定的;所述待处理数据包括:所述目标数量的传感器在所述待处理数据帧内所包含的传感器数据。
示例性地,在将传感器数据存储到动态随机存储器中之后,便可以进行后续的处理,即执行通过脉冲压缩算法实现模块执行脉冲压缩算法。
具体地,上述步骤303中基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理的步骤,可以包括以下步骤303a和步骤303b:
步骤303a、从所述多个传感器中按照传感器排列顺序筛选出与所述目标数量相匹配的目标传感器,并从所述动态随机存储器获取所述目标传感器在所述采样脉冲内采集的待压缩数据。
示例性地,上述目标数量为本申请中脉冲压缩算法实现模块所能同时处理处理的传感器路数。
步骤303b、将所述待压缩数据输入到所述脉冲压缩算法实现模块中进行处理,得到待整合数据。
示例性地,本申请实施例中,数据读出策略与脉冲压缩算法相匹配。脉冲压缩算法是对每个传感器在采样脉冲内所有的离散时间采样点进行FFT、参数相乘和IFFT操作。如果只有单路脉冲压缩算法模块,那么数据读出顺序为D1_t1、 D1_t2、…、 D1_tn、D2_t1、 D2_t2、…、 D2_tn、…、Dm_t1、Dm_t2、…、 Dm_tn,如果动态随机存储器的单行存储量不足以存储多次采样数据,那么每读出一个传感器数据就要切换一次行,这样的读取效率是极低的。为了提高计算速度和数据读取速度,脉冲压缩算法模块设计为同时处理多路传感器数据。如果脉冲压缩算法模块同时处理的传感器路数为8,则数据读出的顺序则为D1_t1、 D2_t1、…、 D8_t1、D1_t2、 D2_t2、…、 D8_t2、…、D1_tn、D2_tn、…、 D8_tn、D9_t1、 D10_t1、…、 D16_t1、D9_t2、 D10_t2、…、 D16_t2、…、D9_tn、D10_tn、…、 D16_tn、…。由于是连续读8列数据才切换到下一行,行切换降低了7/8,大大提高了数据读取效率。随着脉冲压缩模块同时处理传感器路数的增多,连续读的列数量也增多,相应地,行切换次数再次降低,读取效率相应升高。
具体地,上述步骤303a中从所述动态随机存储器获取所述目标传感器在所述采样脉冲内采集的待压缩数据的步骤,可以包括以下步骤303a1:
步骤303a1、按照采样时间依次从所述动态随机存储器中按行读取所述目标传感器在所述采样脉冲的各个采样时刻采集到的传感器数据,得到所述待压缩数据。
示例性地,如图2所示,在脉冲压缩算法实现模块中,通过数据访问策略来制定传感器数据在动态随机存储器中的写入和读取策略,并通过DDR控制器来具体执行,DDR控制器通过DDR端口物理层(Physical,PHY)与动态随机存储器相连接。
举例说明,若设脉冲压缩算法实现模块可同时处理的传感器路数为Np,数据读出策略可以一次性读取连续的Np个传感器数据在采样起始时刻的采样数据,然后是下一个采样时刻的数据,以此类推,取出Np个传感器在采样脉冲内的所有数据之后,传输给脉冲压缩算法实现模块的FFT模块进行处理。即每次处理Np个传感器的一帧数据。
然后,继续针对另外Np个传感器重复以上过程,直至处理完所有传感器的一帧数据。在当前帧的最后一次处理时,若剩余传感器路数不足Np,则取出剩余的传感器数据,不足Np的部分补零后输出读数据缓冲模块。这样完成一帧数据的处理后,重复以上过程以进行下一帧数据的处理。
示例性地,如图7所示,所述脉冲压缩算法实现模块,包括:傅里叶变换FFT模块,乘法器模块以及逆傅里叶变换IFFT模块;所述FFT模块包括多个FFT子模块;所述IFFT模块包括多个IFFT子模块;一个FFT子模块对应至少一个传感器,一个FFT子模块对应一个乘法器模块和一个IFFT子模块。
需要说明的是,一个FFT子模块对应多个传感器,有8路、4路、2路和1路型FFT模块,分别对应8路、4路、2路和1路传感器。一个FFT子模块对应一个乘法器子模块和一个IFFT子模块。
示例性地,基于图7所示的脉冲压缩算法实现模块结构示意图,上述步骤303b,可以包括以下步骤303b1至步骤303b3:
步骤303b1、将所述待整合数据中各个传感器对应的数据输入到与传感器对应的FFT模块中进行处理,得到每个FFT子模块输出的第一数据。
示例性地,上述待整合数据为脉冲压缩算法实现模块每次处理目标数量的传感器的一帧数据之后得到的数据,当脉冲压缩算法实现模块处理完所有传感器的一帧数据后,便可以得到一个完整的数据帧。
步骤303b2、将每个FFT子模块输出的第一数据输入到每个FFT子模块对应乘法器模块中,与乘法器模块中对应的复数相乘,得到每个乘法器模块输出的第二数据。
步骤303b3、将每个乘法器模块输出的第二数据输入到每个FFT子模块对应的IFFT子模块中进行处理,得到所述待整合数据。
其中,所述目标图像帧由多个待整合数据构成。
需要说明的是,FFT模块进行一次快傅里叶变换结束后,每个FFT子模块数据与参数模块中的参数进行相乘,并将结果输入到与每个FFT子模块对应的IFFT子模块中,当所有数据都输入到IFFT子模块中时,才进行一次FFT处理。
在一种可能的实现方式中,基于图7,如图8所示,所述FPGA,还包括:设置于所述数据访问控制模块与所述脉冲压缩算法实现模块之间的读数据缓冲模块;所述读数据缓冲模块包括:一个用于解决所述数据访问控制模块与所述脉冲压缩算法实现模块之间存在的跨时钟域问题的缓冲FIFO存储器;所述缓冲FIFO存储器的输入位宽与所述动态随机存储器的总线位宽相同,所述缓冲FIFO存储器的输出位宽为所有FFI子模块的输入位宽的代数和。
如此,可以保证所有FFT子模块同步工作,即同时开始输入数据,同时完成输入数据。
示例性地,FFT模块是脉冲压缩算法的第一步,可以依次对每路传感器在一个数据帧内的数据进行FFT处理,得到频域信号,并输出给下一个模块。一路FFT需要消耗大量的片上DSP资源和和RAM资源,而考虑传感器阵列中的传感器数量大,单帧采样点数(每次采集数据的数量)多,1次FFT计算时间也比较长(可达几百微秒甚至更长),为了提高帧率,可以设计多路FFT进行并行处理。而对于多路独立的FFT子模块,总的资源消耗量为独立FFT子模块资源消耗量乘以FFT子模块数量。为了降低FFT模块资源利用量,本申请实施例使用多路型FFT子模块,即一个FFT子模块可并行处理多路传感器数据。多路型FFT子模块可并行处理的路数通常为2、4或8(即2的整数次幂),其每路平均的资源消耗要比独立的FFT子模块低。
示例性地,为了最大限度降低总的资源消耗,按如下方法确定FFT子模块配置。
示例性地,在上述步骤303之前,本申请实施例提供的面向传感器阵列的数据处理方法,还可以包括以下步骤306至步骤308:
步骤306、根据以下公式二计算出一个采样周期内可执行的傅里叶变换次数
(公式二)
其中,为采样周期,所述采样脉冲为所述采样周期内进行采样的时间段;为执行一次傅里叶变换所需的时间;
步骤307、根据以下公式三计算出所述目标数量;
(公式三)
其中,为目标数据;/>为所述传感器阵列中的传感器数量;
步骤308、根据以下公式四至公式七确定FFT模块中FFT子模块的配置:
(公式四)
(公式五)
(公式六)
(公式七)
其中,为8路型FFT子模块的数量;/>为4路型FFT子模块的数量;/>为2路型FFT子模块的数量;/>为1路型FFT子模块的数量;/>为向下取整函数。
示例性地,根据上述内容可知,FFT模块总输入位宽为Np乘以单路FFT位宽,这里单路FFT位宽等于传感器数据位宽。
示例性地,如图7所示,脉冲压缩算法实现模块中的系数存储模块为双口RAM,其中存储参考信号FFT后的共轭数据,数据长度与FFT模块的点数相同。当根据不同的使用场景或者数据采集的不同阶段,需要对系数进行修改,直接通过上层控制器指令将新的系数写入此模块的RAM中即可。
示例性地,如图7所示,脉冲压缩算法实现模块中的乘法器模块由一系列复数乘法器组成,每路传感器对应一个复数乘法器。此模块将传感器经FFT处理后的数据与参考信号FFT后的共轭数据逐点相乘,即对于每路传感器,FFT输出的第一个复数与系数存储模块中的第一个复数相乘,第一个复数与系数存储模块中的第一个复数相乘,依次类推,直至FFT输出的最后一个复数与系数存储模块中的最后一个复数相乘,相乘的结果直接输出给IFFT模块。
示例性地,如图7所示,脉冲压缩算法实现模块中的IFFT模块将乘法器模块输出的数据进行快速傅里叶逆变换。IFFT模块与FFT存在相同的情形,为了降低资源消耗,同样使用多路型IFFT模块,其配置与FFT模块一致,即FFT模块的每个FFT子模块对应IFFT模块的一个子模块,二者可并行处理的数据路数相同。
示例性地,如图8所示,输出数据缓冲模块为一个FIFO存储器,其输入位宽为输出位宽的整数倍,输出位宽与数据接收模块的输入数据位宽一致,输入位宽为所有IFFT子模块输出位宽之和加上补齐输出位宽整数倍的位。该FIFO存储器在所有IFFT子模块输出均有效时才使能写入,并将IFFT模块相同点位置的输出数据同时写入。此模块主要进行简单的数据缓冲和处理后数据的点位置对齐,以解决本模块和数据接收模块的跨时钟域问题(若存在)并简化后续处理。
示例性地,如图9所示,本申请实施例提供的面向传感器阵列的数据处理方法,总的执行流程如下:
1、启动采样,所有传感器采样芯片同时启动,以规定的采样间隔进行采样,采样间隔等于采样脉冲宽度除以采样点数;2、每次采样数据生成后,传感器阵列中所有传感器数据同时压入采集数据缓冲模块的第一级存储器;第二级存储器检测到所有第一级存储器均非空后,依次从第一级各个FIFO存储器中读出其被分配的所有传感器数据,并压入第二级存储器;3、数据访问控制模块检测到采集数据缓冲模块的第二级存储器非空,则从其中读数据,按照设计的数据存储策略,对数据进行存储;4、当本次采样到达规定的采样次数(采样时间到达采样脉宽),停止采样;5、本次采样的所有数据均存入内存后,开始按照数据读出策略将采样数据通过内存读数据缓冲模块读出并传给FFT模块;6、当读完当前传感器组在本次采样脉冲中的所有数据后停止读取,若采样次数与FFT点数不一致,则向FFT模块中写0,直至写入规定点数的数据;7、等待FFT模块完成当前传感器数据的FFT处理;8、FFT完成后,从各FFT子模块中读出数据,并送入乘法器模块进行参数相乘;同时开始从内存中读下一组传感器的采样数据,并通过内存读数据缓冲模块传给FFT模块以启动下一组传感器数据的FFT过程;9、FFT模块输出的数据经乘法器模块处理后传给IFFT模块,直到IFFT模块读到足够的数据(此时FFT模块也已将子模块内的数据输出完),启动IFFT过程;10、等待IFFT模块完成当前数据的IFFT处理;2、IFFT完成后,输出缓冲模块从各IFFT子模块中读出数据;此时,第二次FFT也已完成,即可重复步骤8~10以进行下一次IFFT;12、重复步骤8~11,以完成本次采样脉冲中所有传感器的脉冲压缩处理和输出,即完成一次采样脉冲的处理过程。
需要说明的是,上述FFT总的处理时间和IFFT总的处理时间是一样的,也是各个模块中处理时间最长的(不考虑外部读取设备的读取速度限制)。因采用流水线结构,采样周期只需大于FFT总的处理时间即可。这样,在进行本次采样脉冲的FFT处理过程中,实际已经开始进行下一次的采样。
本申请实施例提供的面向传感器阵列的数据处理方法,针对传感器阵列的脉冲压缩算法实现,考虑以FPGA作为处理芯片、内存作为缓存芯片的应用场景,设计了一套数据缓存和脉冲压缩算法实现策略。此策略综合考虑FPGA和内存的特性以及脉冲压缩算法实现过程:1、设计采集数据缓冲模块以降低内存数据写入数据带宽。针对数据总位宽大的情形,模块采用两层FIFO设计,解决FIFO位宽不足问题。2、对采样数据在内存中的写入策略和读出策略进行优化设计,提高了内存访问效率;3、脉冲压缩算法处理模块实现时,以模块复用和多路型FFT/IFFT模块使用的方式,对模块实现进行优化设计,在保证时间消耗要求的基础上,降低了计算资源需求;4、运行流程采用流水线结构,单个采样脉冲的有效处理时间仅为所有模块中的最长处理时间,有效提高了帧率;5、设计脉冲压缩系数更新机制,采用双口RAM存储系数,可随时进行更新,这提供更高的使用柔性。
本申请实施例提供的面向传感器阵列的数据处理方法,首先,传感器阵列脉冲压缩算法实现策略和运行流程。以FPGA作为处理芯片、内存作为数据缓存芯片,采用流水线结构,设计采样数据缓冲模块、数据访问模块、内存读数据缓冲模块、FFT模块、系数存储模块、乘法器模块、IFFT模块以及输出数据缓冲模块,实现传感器阵列采样数据输入、缓存、脉冲压缩算法处理和输出的整个过程。其次,数据在内存中的缓存策略。综合考虑内存数据访问的特点(连续访问和随机访问存在巨大的速度差异)、采样数据生成顺序(先空间顺序、后时间顺序)、脉冲压缩算法特性(处理单路传感器整个采样脉冲内的所有数据),数据在内存中存储时,空间维度按列存储,时间维度按行存储。这样,数据存储速度快,以适应传感器数据突发式(短时大通量)生成特点。读出时,多路数据同时读出,降低了行切换次数,提高数据访问效率。最后,脉冲压缩算法处理模块设计。FFT模块和IFFT模块均使用多路型FFT/IFFTIP,可降低处理模块单路平均资源消耗;模块可并行处理多路传感器数据,这可支持内存每次连续读出多列数据,以提高内存访问速度;每路处理模块通过时分复用方式负责多路数据的处理,降低总的资源消耗。
本申请实施例提供的面向传感器阵列的数据处理方法,应用于现场可编程逻辑门阵列FPGA,该FPGA包括:采集数据缓冲模块,数据访问控制模块,以及脉冲压缩算法实现模块;首先,获取传感器阵列中的多个传感器采集的原始传感器数据,并将原始传感器数据按照采样时刻依次输入到采集数据缓冲模块中进行多级缓冲;原始传感器数据包括:多个传感器在采样脉冲内采集的一个待处理数据帧;待处理数据帧由多个采样时刻采集到的传感器数据组成、且每个采样时刻采集多个传感器数据,一个传感器对应一个传感器数据;之后,将采集数据缓冲模块缓冲后的传感器数据按照采集的先后顺序依次写入到动态随机存储器中;同一时刻采集到的传感器数据按行写入到动态随机存储器;最后,基于目标数量和采样时刻依次从动态随机存储器中读取出待处理数据输入到脉冲压缩算法实现模块中进行处理,并在脉冲压缩算法实现模块处理完待处理数据帧所包含的所有传感器数据的情况下,得到目标图像帧。如此,在确保时间消耗要求的基础上,还能降低系统资源需求,极大地提高了传感器阵列输出的传感器数据的处理效率。
需要说明的是,本申请实施例提供的面向传感器阵列的数据处理方法,执行主体可以为现场可编程逻辑门阵列FPGA,或者该现场可编程逻辑门阵列FPGA中的用于执行面向传感器阵列的数据处理方法的控制模块。本申请实施例中以现场可编程逻辑门阵列FPGA执行面向传感器阵列的数据处理方法为例,说明本申请实施例提供的现场可编程逻辑门阵列FPGA。
需要说明的是,本申请实施例中,上述各个方法附图所示的。面向传感器阵列的数据处理方法均是以结合本申请实施例中的一个附图为例示例性的说明的。具体实现时,上述各个方法附图所示的面向传感器阵列的数据处理方法还可以结合上述实施例中示意的其它可以结合的任意附图实现,此处不再赘述。
下面对本申请提供的现场可编程逻辑门阵列FPGA进行描述,下文描述的与上文描述的面向传感器阵列的数据处理方法可相互对应参照。
本申请实施例提供的现场可编程逻辑门阵列FPGA,具体包括:
采集数据缓冲模块,数据访问控制模块,以及脉冲压缩算法实现模块。
所述采集数据缓冲模块,用于对传感器阵列中的多个传感器采集到的传感器数据进行数据缓冲;所述采集数据缓冲模块包括:由多个先入先出FIFO存储器组成的第一级存储器,以及由一个FIFO存储器组成的第二级存储器;所述第一级存储器中的每个FIFO存储器均用于缓存多个传感器采集到的传感器数据;所述第一级存储器中的FIFO存储器的输出位宽是由所述第二级存储器中FIFO存储器的输入位宽决定的;所述第二级存储器中FIFO存储器的输入位宽由以下参数计算得到:单个传感器的输入位宽,动态随机存储器的预取数,所述动态随机存储器的总线位宽;所述数据访问控制模块,用于将所述采集数据缓冲模块所缓冲的传感器数据存储到所述动态随机存储器中,以及从所述动态随机存储器中读取传感器数据并输入至所述脉冲压缩算法实现模块;所述脉冲压缩算法实现模块,用于对接收到的所述数据访问控制模块传输的传感器数据进行处理,得到目标图像帧;其中,所述脉冲压缩算法实现模块,包括:快速傅里叶变换FFT模块,乘法器模块以及快速傅里叶逆变换IFFT模块;所述FFT模块包括多个FFT子模块;所述IFFT模块包括多个IFFT子模块;一个FFT子模块对应至少一个传感器,一个FFT子模块对应一个乘法器模块和一个IFFT子模块。
示例性地,所述第一级存储器中每个FIFO存储器的输入位宽均为单个传感器的数据位宽的整数倍、每个FIFO存储器的输入位宽为输出位宽的整数倍、且每个FIFO存储器的输入位宽小于或者等于FIFO存储器的中断优先级存储器的最大允许输入位宽;所述第二级存储器的输入位宽大于或者等于所述第一级存储器中任一FIFO存储的输出位宽、且所述第一级存储器中的FIFO存储器的输出位宽均相同。
示例性地,所述脉冲压缩算法实现模块,包括:傅里叶变换FFT模块,乘法器模块以及逆傅里叶变换IFFT模块;所述FFT模块包括多个FFT子模块;所述IFFT模块包括多个IFFT子模块;一个FFT子模块对应至少一个传感器,一个FFT子模块对应一个乘法器模块和一个IFFT子模块。
示例性地,所述FPGA还包括:设置于所述数据访问控制模块与所述脉冲压缩算法实现模块之间的读数据缓冲模块;所述读数据缓冲模块包括:一个用于解决所述数据访问控制模块与所述脉冲压缩算法实现模块之间存在的跨时钟域问题的缓冲FIFO存储器;所述缓冲FIFO存储器的输入位宽与所述动态随机存储器的总线位宽相同,所述缓冲FIFO存储器的输出位宽为所有FFI子模块的输入位宽的代数和。
示例性地,所述FPGA还包括:设置于所述脉冲压缩算法实现模块之后的输出数据缓冲模块,该输出数据缓冲模块包括:一个FIFO存储器,该FIFO存储器输入位宽为输出位宽的整数倍,输出位宽与数据接收模块的输入数据位宽保持一致,该FIFO存储器的输入位宽为脉冲压缩算法实现模块中的所有IFFT子模块的输出位宽之和再加上补齐输出位宽整数倍的位宽,即在该FIFO存储器的输出位宽确定的情况下,若所有IFFT子模块的输出位宽之和不满足该FIFO存储器的输出位宽的整数倍,则需要进行补位,以使该FIFO存储器输入位宽等于输出位宽的整数倍。该FIFO存储器需要在脉冲压缩算法实现模块中的所有IFFT子模块均输出数据时才能够写入数据。该输出数据缓冲模块主要用于简单的数据缓冲和处理后数据的点位置对齐,以解决本模块和数据接收模块的跨时钟域问题(若存在)并简化后续处理。
本申请提供的现场可编程逻辑门阵列FPGA,首先,获取传感器阵列中的多个传感器采集的原始传感器数据,并将原始传感器数据按照采样时刻依次输入到采集数据缓冲模块中进行多级缓冲;原始传感器数据包括:多个传感器在采样脉冲内采集的一个待处理数据帧;待处理数据帧由多个采样时刻采集到的传感器数据组成、且每个采样时刻采集多个传感器数据,一个传感器对应一个传感器数据;之后,将采集数据缓冲模块缓冲后的传感器数据按照采集的先后顺序依次写入到动态随机存储器中;同一时刻采集到的传感器数据按行写入到动态随机存储器;最后,基于目标数量和采样时刻依次从动态随机存储器中读取出待处理数据输入到脉冲压缩算法实现模块中进行处理,并在脉冲压缩算法实现模块处理完待处理数据帧所包含的所有传感器数据的情况下,得到目标图像帧。如此,在确保时间消耗要求的基础上,还能降低系统资源需求,极大地提高了传感器阵列输出的传感器数据的处理效率。
图10示例了一种电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1010、通信接口(Communications Interface)1020、存储器(memory)1030和通信总线1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行面向传感器阵列的数据处理方法,该方法包括:获取传感器阵列中的多个传感器采集的原始传感器数据,并将所述原始传感器数据按照采样时刻依次输入到所述采集数据缓冲模块中进行多级缓冲;所述原始传感器数据包括:所述多个传感器在采样脉冲内采集的一个待处理数据帧;待处理数据帧由多个采样时刻采集到的传感器数据组成、且每个采样时刻采集多个传感器数据,一个传感器对应一个传感器数据;将所述采集数据缓冲模块缓冲后的传感器数据输入到所述数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中;同一时刻采集到的传感器数据按行写入到所述动态随机存储器;基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理,并在所述脉冲压缩算法实现模块处理完所述待处理数据帧所包含的所有传感器数据的情况下,得到目标图像帧;其中,所述采集数据缓冲模块包括:由多个先入先出FIFO存储器组成的第一级存储器,以及由一个FIFO存储器组成的第二级存储器;所述第一级存储器中的每个FIFO存储器均用于缓存多个传感器采集到的传感器数据;所述第一级存储器中的FIFO存储器的输出位宽是由所述第二级存储器中FIFO存储器的输入位宽决定的;所述第二级存储器中FIFO存储器的输入位宽由以下参数计算得到:单个传感器的输入位宽,所述动态随机存储器的预取数,所述动态随机存储器的总线位宽;所述目标数量为:根据脉冲压缩算法实现模块的处理能力确定的;所述待处理数据包括:所述目标数量的传感器在所述待处理数据帧内所包含的传感器数据。
此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的面向传感器阵列的数据处理方法,该方法包括:获取传感器阵列中的多个传感器采集的原始传感器数据,并将所述原始传感器数据按照采样时刻依次输入到所述采集数据缓冲模块中进行多级缓冲;所述原始传感器数据包括:所述多个传感器在采样脉冲内采集的一个待处理数据帧;待处理数据帧由多个采样时刻采集到的传感器数据组成、且每个采样时刻采集多个传感器数据,一个传感器对应一个传感器数据;将所述采集数据缓冲模块缓冲后的传感器数据输入到所述数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中;同一时刻采集到的传感器数据按行写入到所述动态随机存储器;基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理,并在所述脉冲压缩算法实现模块处理完所述待处理数据帧所包含的所有传感器数据的情况下,得到目标图像帧;其中,所述采集数据缓冲模块包括:由多个先入先出FIFO存储器组成的第一级存储器,以及由一个FIFO存储器组成的第二级存储器;所述第一级存储器中的每个FIFO存储器均用于缓存多个传感器采集到的传感器数据;所述第一级存储器中的FIFO存储器的输出位宽是由所述第二级存储器中FIFO存储器的输入位宽决定的;所述第二级存储器中FIFO存储器的输入位宽由以下参数计算得到:单个传感器的输入位宽,所述动态随机存储器的预取数,所述动态随机存储器的总线位宽;所述目标数量为:根据脉冲压缩算法实现模块的处理能力确定的;所述待处理数据包括:所述目标数量的传感器在所述待处理数据帧内所包含的传感器数据。
又一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的面向传感器阵列的数据处理方法,该方法包括:获取传感器阵列中的多个传感器采集的原始传感器数据,并将所述原始传感器数据按照采样时刻依次输入到所述采集数据缓冲模块中进行多级缓冲;所述原始传感器数据包括:所述多个传感器在采样脉冲内采集的一个待处理数据帧;待处理数据帧由多个采样时刻采集到的传感器数据组成、且每个采样时刻采集多个传感器数据,一个传感器对应一个传感器数据;将所述采集数据缓冲模块缓冲后的传感器数据输入到所述数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中;同一时刻采集到的传感器数据按行写入到所述动态随机存储器;基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理,并在所述脉冲压缩算法实现模块处理完所述待处理数据帧所包含的所有传感器数据的情况下,得到目标图像帧;其中,所述采集数据缓冲模块包括:由多个先入先出FIFO存储器组成的第一级存储器,以及由一个FIFO存储器组成的第二级存储器;所述第一级存储器中的每个FIFO存储器均用于缓存多个传感器采集到的传感器数据;所述第一级存储器中的FIFO存储器的输出位宽是由所述第二级存储器中FIFO存储器的输入位宽决定的;所述第二级存储器中FIFO存储器的输入位宽由以下参数计算得到:单个传感器的输入位宽,所述动态随机存储器的预取数,所述动态随机存储器的总线位宽;所述目标数量为:根据脉冲压缩算法实现模块的处理能力确定的;所述待处理数据包括:所述目标数量的传感器在所述待处理数据帧内所包含的传感器数据。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (21)

1.一种面向传感器阵列的数据处理方法,其特征在于,应用于现场可编程逻辑门阵列FPGA,所述FPGA包括:采集数据缓冲模块,数据访问控制模块,以及脉冲压缩算法实现模块,所述方法包括:
获取传感器阵列中的多个传感器采集的原始传感器数据,并将所述原始传感器数据按照采样时刻依次输入到所述采集数据缓冲模块中进行多级缓冲;所述原始传感器数据包括:所述多个传感器在采样脉冲内采集的一个待处理数据帧;待处理数据帧由多个采样时刻采集到的传感器数据组成、且每个采样时刻采集多个传感器数据,一个传感器对应一个传感器数据;
将所述采集数据缓冲模块缓冲后的传感器数据输入到所述数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中;同一时刻采集到的传感器数据按行写入到所述动态随机存储器;
基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理,并在所述脉冲压缩算法实现模块处理完所述待处理数据帧所包含的所有传感器数据的情况下,得到目标图像帧;
其中,所述采集数据缓冲模块包括:由多个先入先出FIFO存储器组成的第一级存储器,以及由一个FIFO存储器组成的第二级存储器;所述第一级存储器中的每个FIFO存储器均用于缓存多个传感器采集到的传感器数据;所述第一级存储器中的FIFO存储器的输出位宽是由所述第二级存储器中FIFO存储器的输入位宽决定的;所述第二级存储器中FIFO存储器的输入位宽由以下参数计算得到:单个传感器的数据位宽,所述动态随机存储器的预取数,所述动态随机存储器的总线位宽;所述目标数量为:根据脉冲压缩算法实现模块的处理能力确定的;所述待处理数据包括:所述目标数量的传感器在所述待处理数据帧内所包含的传感器数据;
所述第二级存储器中的FIFO存储器的输入位宽为基于以下公式一计算得到的:
(公式一)
其中,为传感器的数据位宽;/>为向上取整函数;/>为所述动态随机存储器的总线位宽;/>为所述动态随机存储器的预取数;/>为用于向上取2的整数次幂的函数。
2.根据权利要求1所述的方法,其特征在于,所述将所述原始传感器数据按照采样时刻依次输入到所述采集数据缓冲模块中进行多级缓冲,包括:
将所述第一级存储器中各个FIFO存储器输出的传感器数据依次输入到上述第二级存储器的FIFO存储器中;
其中,所述第一级存储器中每个FIFO存储器的输入位宽均为单个传感器的数据位宽的整数倍、每个FIFO存储器的输入位宽为输出位宽的整数倍、且每个FIFO存储器的输入位宽小于或者等于FIFO存储器的最大允许输入位宽;所述第一级存储器中每个FIFO存储器的剩余未分配位宽小于单个传感器的数据位宽;所述第二级存储器的输入位宽大于或者等于所述第一级存储器中任一FIFO存储的输出位宽、且所述第一级存储器中的FIFO存储器的输出位宽均相同。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述原始传感器数据按照采样时刻依次输入到所述采集数据缓冲模块中进行多级缓冲之前,所述方法还包括:
根据所述单个传感器的数据位宽以及所述第一级存储器中每个FIFO存储器的最大允许输入位宽,确定所述第一级存储器中每个FIFO存储器对应的最大传感器数量;
按照每个FIFO存储器对应的最大传感器数量为每个FIFO存储器分配传感器采集的传感器数据。
4.根据权利要求3所述的方法,其特征在于, 所述按照每个FIFO存储器对应的最大传感器数量为每个FIFO存储器分配传感器采集的传感器数据,包括:
在所述第一级存储器中存在第一FIFO存储器的情况下,基于所述第一FIFO存储器的输出位宽增加所述第一FIFO存储器的输入位宽;
其中,所述第一FIFO存储器为所述第一级存储器所包含的多个FIFO存储器中对应传感器数量小于最大传感器数量的FIFO存储器;所述第一FIFO存储器增加输入位宽后,所述第一FIFO存储器的输入位宽为输出位宽的整数倍。
5.根据权利要求1所述的方法,其特征在于,所述将所述采集数据缓冲模块缓冲后的传感器数据输入到所述数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中,包括:
在所述原始传感器数据的数据位宽不为2的整数次幂的情况下,将所述原始传感器数据中的传感器数据扩展为2的整数次幂。
6.根据权利要求1所述的方法,其特征在于,所述将所述采集数据缓冲模块缓冲后的传感器数据输入到所述数据访问控制模块中,并按照采集的先后顺序依次写入到动态随机存储器中,包括:
获取所述第二级存储器输出的待写入数据;所述待写入数据为:基于所述采样脉冲的首个采样时刻,或者,除所述首个采样时刻之外的任一第一采样时刻所述多个传感器采集的传感器数据得到的;
将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中;
其中,所述存储库的每一列存储一个传感器数据。
7.根据权利要求6所述的方法,其特征在于,所述待写入数据为:基于所述首个采样时刻所述多个传感器采集的传感器数据得到的;
所述将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中,包括:
在所述存储库的单行最大存储数据量小于所述待写入数据的数据量的情况下,从所述存储库的新行首列按照传感器排列顺序依次写入所述待写入数据,并在当前行写满数据后从下一个相邻新行按照所述传感器排列顺序依次写入所述待写入数据中未写入所述动态随机存储器中的数据,直至所述待写入数据全部写入所述动态随机存储器。
8.根据权利要求6所述的方法,其特征在于,所述待写入数据为:基于所述首个采样时刻所述多个传感器采集的传感器数据得到的;
所述将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中,包括:
在所述存储库的单行最大存储数据量小于所述待写入数据的数据量的情况下,从所述存储库的当前行的当前列按照传感器排列顺序依次写入所述待写入数据,并在当前行写满数据后从下一个相邻新行按照所述传感器排列顺序依次写入所述待写入数据中未写入所述动态随机存储器中的数据,直至所述待写入数据全部写入所述动态随机存储器。
9.根据权利要求6所述的方法,其特征在于,所述将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中,包括:
在所述存储库的单行最大存储数据量大于或者等于所述待写入数据的数据量的情况下,从所述存储库的新行首列按照传感器排列顺序依次写入所述待写入数据。
10.根据权利要求6所述的方法,其特征在于,所述待写入数据为:基于所述第一采样时刻所述多个传感器采集的传感器数据得到的;
所述将所述待写入数据按照传感器排列顺序依次写入所述动态随机存储器所管理的存储库的行中,包括:
在所述存储库存储的当前行的剩余存储量大于所述待写入数据的数据量的情况下,从目标起始地址按照传感器排列顺序依次写入所述待写入数据;
其中,所述目标起始地址为:大于所述当前行中上一采样时刻对应数据的结束地址、且与所述结束地址之间距离最小的2的整数次幂地址。
11.根据权利要求1所述的方法,其特征在于,所述基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理,包括:
从所述多个传感器中按照传感器排列顺序筛选出与所述目标数量相匹配的目标传感器,并从所述动态随机存储器获取所述目标传感器在所述采样脉冲内采集的待压缩数据;
将所述待压缩数据输入到所述脉冲压缩算法实现模块中进行处理,得到待整合数据。
12.根据权利要求11所述的方法,其特征在于,所述从所述动态随机存储器获取所述目标传感器在所述采样脉冲内采集的待压缩数据,包括:
按照采样时间依次从所述动态随机存储器中按行读取所述目标传感器在所述采样脉冲的各个采样时刻采集到的传感器数据,得到所述待压缩数据。
13.根据权利要求11所述的方法,其特征在于,所述从所述动态随机存储器获取所述目标传感器在所述采样脉冲内采集的待压缩数据,包括:
在当前剩余传感器数量小于所述目标数量的情况下,按照采样时间依次从所述动态随机存储器中按行读取剩余传感器在所述采样脉冲的各个采样时刻采集到的待补齐传感器数据;
按照所述目标数量与当前剩余传感器数量的差值所对应的传感器数据的数据量,使用零值将所述待补齐传感器数据进行数据补齐,得到所述待压缩数据。
14.根据权利要求11所述的方法,其特征在于,所述脉冲压缩算法实现模块,包括:快速傅里叶变换FFT模块,乘法器模块以及快速傅里叶逆变换IFFT模块;所述FFT模块包括多个FFT子模块;所述IFFT模块包括多个IFFT子模块;一个FFT子模块对应至少一个传感器,一个FFT子模块对应一个乘法器模块和一个IFFT子模块;
所述将所述待压缩数据输入到所述脉冲压缩算法实现模块中进行处理,得到待整合数据,包括:
将所述待整合数据中各个传感器对应的数据输入到与传感器对应的FFT模块中进行处理,得到每个FFT子模块输出的第一数据;
将每个FFT子模块输出的第一数据输入到每个FFT子模块对应乘法器模块中,与乘法器模块中对应的复数相乘,得到每个乘法器模块输出的第二数据;
将每个乘法器模块输出的第二数据输入到每个FFT子模块对应的IFFT子模块中进行处理,得到所述待整合数据;
其中,所述目标图像帧由多个待整合数据构成。
15.根据权利要求1或11所述的方法,其特征在于,所述FPGA,还包括:设置于所述数据访问控制模块与所述脉冲压缩算法实现模块之间的读数据缓冲模块;所述读数据缓冲模块包括:一个用于解决所述数据访问控制模块与所述脉冲压缩算法实现模块之间存在的跨时钟域问题的缓冲FIFO存储器;所述缓冲FIFO存储器的输入位宽与所述动态随机存储器的总线位宽相同,所述缓冲FIFO存储器的输出位宽为所有FFI子模块的输入位宽的代数和。
16.根据权利要求14所述的方法,其特征在于,所述基于目标数量和采样时刻依次从所述动态随机存储器中读取出待处理数据输入到所述脉冲压缩算法实现模块中进行处理之前,所述方法还包括:
根据以下公式二计算出一个采样周期内可执行的快速傅里叶变换次数
(公式二)
其中,为采样周期,所述采样脉冲为所述采样周期内进行采样的时间段;/>为执行一次快速傅里叶变换所需的时间;
根据以下公式三计算出所述目标数量;
(公式三)
其中,为目标数据;/>为所述传感器阵列中的传感器数量;
根据以下公式四至公式七确定FFT模块中FFT子模块的配置:
(公式四)
(公式五)
(公式六)
(公式七)
其中,为8路型FFT子模块的数量;/>为4路型FFT子模块的数量;/>为2路型FFT子模块的数量;/>为1路型FFT子模块的数量;/>为向下取整函数。
17.一种现场可编程逻辑门阵列FPGA,其特征在于,包括采集数据缓冲模块,数据访问控制模块,以及脉冲压缩算法实现模块;
所述采集数据缓冲模块,用于对传感器阵列中的多个传感器采集到的传感器数据进行数据缓冲;所述采集数据缓冲模块包括:由多个先入先出FIFO存储器组成的第一级存储器,以及由一个FIFO存储器组成的第二级存储器;所述第一级存储器中的每个FIFO存储器均用于缓存多个传感器采集到的传感器数据;所述第一级存储器中的FIFO存储器的输出位宽是由所述第二级存储器中FIFO存储器的输入位宽决定的;所述第二级存储器中FIFO存储器的输入位宽由以下参数计算得到:单个传感器的数据位宽,动态随机存储器的预取数,所述动态随机存储器的总线位宽;
所述数据访问控制模块,用于将所述采集数据缓冲模块所缓冲的传感器数据存储到所述动态随机存储器中,以及从所述动态随机存储器中读取传感器数据并输入至所述脉冲压缩算法实现模块;
所述脉冲压缩算法实现模块,用于对接收到的所述数据访问控制模块传输的传感器数据进行处理,得到目标图像帧;
其中,所述脉冲压缩算法实现模块,包括:快速傅里叶变换FFT模块,乘法器模块以及快速傅里叶逆变换IFFT模块;所述FFT模块包括多个FFT子模块;所述IFFT模块包括多个IFFT子模块;一个FFT子模块对应至少一个传感器,一个FFT子模块对应一个乘法器模块和一个IFFT子模块;
所述第二级存储器中的FIFO存储器的输入位宽为基于以下公式一计算得到的:
(公式一)
其中,为传感器的数据位宽;/>为向上取整函数;/>为所述动态随机存储器的总线位宽;/>为所述动态随机存储器的预取数;/>为用于向上取2的整数次幂的函数。
18.根据权利要求17所述的FPGA,其特征在于,
所述第一级存储器中每个FIFO存储器的输入位宽均为单个传感器的数据位宽的整数倍、每个FIFO存储器的输入位宽为输出位宽的整数倍、且每个FIFO存储器的输入位宽小于或者等于FIFO存储器的最大允许输入位宽;所述第一级存储器中每个FIFO存储器的剩余未分配位宽小于单个传感器的数据位宽;所述第二级存储器的输入位宽大于或者等于所述第一级存储器中任一FIFO存储的输出位宽、且所述第一级存储器中的FIFO存储器的输出位宽均相同。
19.根据权利要求17所述的FPGA,其特征在于,所述FPGA,还包括:设置于所述数据访问控制模块与所述脉冲压缩算法实现模块之间的读数据缓冲模块;
所述读数据缓冲模块包括:一个用于解决所述数据访问控制模块与所述脉冲压缩算法实现模块之间存在的跨时钟域问题的缓冲FIFO存储器;所述缓冲FIFO存储器的输入位宽与所述动态随机存储器的总线位宽相同,所述缓冲FIFO存储器的输出位宽为所有FFI子模块的输入位宽的代数和。
20.一种电子设备,其特征在于,其上设置如有权利要求17至19中任一项所述的现场可编程逻辑门阵列FPGA,所述FPGA用于实现如权利要求1至16中任一项所述面向传感器阵列的数据处理方法的步骤。
21.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至16中任一项所述面向传感器阵列的数据处理方法的步骤。
CN202311475529.4A 2023-11-08 2023-11-08 面向传感器阵列的数据处理方法、fpga及电子设备 Active CN117196931B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311475529.4A CN117196931B (zh) 2023-11-08 2023-11-08 面向传感器阵列的数据处理方法、fpga及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311475529.4A CN117196931B (zh) 2023-11-08 2023-11-08 面向传感器阵列的数据处理方法、fpga及电子设备

Publications (2)

Publication Number Publication Date
CN117196931A CN117196931A (zh) 2023-12-08
CN117196931B true CN117196931B (zh) 2024-02-09

Family

ID=88991004

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311475529.4A Active CN117196931B (zh) 2023-11-08 2023-11-08 面向传感器阵列的数据处理方法、fpga及电子设备

Country Status (1)

Country Link
CN (1) CN117196931B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8166237B1 (en) * 2009-10-23 2012-04-24 Altera Corporation Configurable allocation of thread queue resources in an FPGA
CN104407809A (zh) * 2014-11-04 2015-03-11 盛科网络(苏州)有限公司 多通道fifo缓冲器及其控制方法
CN110097174A (zh) * 2019-04-22 2019-08-06 西安交通大学 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置
CN110892373A (zh) * 2018-07-24 2020-03-17 深圳市大疆创新科技有限公司 数据存取的方法、处理器、计算机系统和可移动设备
CN111782578A (zh) * 2020-05-29 2020-10-16 西安电子科技大学 一种缓存控制方法、系统、存储介质、计算机设备及应用
WO2021232843A1 (zh) * 2020-05-22 2021-11-25 浪潮电子信息产业股份有限公司 图像数据存储方法、图像数据处理方法、系统及相关装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566382B2 (en) * 2008-09-22 2013-10-22 Advanced Micro Devices, Inc. Method and apparatus for improved calculation of multiple dimension fast fourier transforms

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8166237B1 (en) * 2009-10-23 2012-04-24 Altera Corporation Configurable allocation of thread queue resources in an FPGA
CN104407809A (zh) * 2014-11-04 2015-03-11 盛科网络(苏州)有限公司 多通道fifo缓冲器及其控制方法
CN110892373A (zh) * 2018-07-24 2020-03-17 深圳市大疆创新科技有限公司 数据存取的方法、处理器、计算机系统和可移动设备
CN110097174A (zh) * 2019-04-22 2019-08-06 西安交通大学 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置
WO2021232843A1 (zh) * 2020-05-22 2021-11-25 浪潮电子信息产业股份有限公司 图像数据存储方法、图像数据处理方法、系统及相关装置
CN111782578A (zh) * 2020-05-29 2020-10-16 西安电子科技大学 一种缓存控制方法、系统、存储介质、计算机设备及应用

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
江志东 等.线阵CMOS图像采集及编码传输的实现.传感技术学报.2011,(第04期),全文. *

Also Published As

Publication number Publication date
CN117196931A (zh) 2023-12-08

Similar Documents

Publication Publication Date Title
CN109598338B (zh) 一种基于fpga的计算优化的卷积神经网络加速器
CN109948774B (zh) 基于网络层捆绑运算的神经网络加速器及其实现方法
CN107301455B (zh) 用于卷积神经网络的混合立方体存储系统及加速计算方法
US7587577B2 (en) Pipelined access by FFT and filter units in co-processor and system bus slave to memory blocks via switch coupling based on control register content
CN100538886C (zh) 多维数组在动态随机存取存储器上的快速读写方法和装置
CN101331464A (zh) 存储区域分配系统及方法和控制装置
KR20180080876A (ko) 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법
CN109446125A (zh) Ddr读写仲裁器及方法
CN113971143B (zh) 一种内存控制器、物联网芯片及电子设备
CN113807509B (zh) 神经网络加速装置、方法和通信设备
JP2009507423A (ja) 共有されるメモリおよび共有される乗算器のプログラム可能なデジタルフィルタ構成
EP1787191A2 (en) Processing digital media streams
CN110659445B (zh) 一种运算装置及其处理方法
CN101847986A (zh) 一种实现fft/ifft变换的电路及方法
CN102510273B (zh) 一种有限脉冲响应滤波器
WO2023098256A1 (zh) 神经网络运算方法、装置、芯片、电子设备和存储介质
CN101207372B (zh) 一种可实现固定小数采样率转换的方法及其装置
CN117196931B (zh) 面向传感器阵列的数据处理方法、fpga及电子设备
CN113537482B (zh) 神经网络计算模块、方法和通信设备
CN113792868A (zh) 神经网络计算模块、方法和通信设备
CN109948787B (zh) 用于神经网络卷积层的运算装置、芯片及方法
US9268744B2 (en) Parallel bit reversal devices and methods
CN115204373A (zh) 一种卷积神经网络的快速卷积及缓存模式的设计方法
CN102957993A (zh) 低功耗wola滤波器组及其分析和综合阶段电路
CN110060196A (zh) 图像处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant