CN116719485B - 基于fpga的数据读写方法及读写单元与fpga - Google Patents

基于fpga的数据读写方法及读写单元与fpga Download PDF

Info

Publication number
CN116719485B
CN116719485B CN202310997631.4A CN202310997631A CN116719485B CN 116719485 B CN116719485 B CN 116719485B CN 202310997631 A CN202310997631 A CN 202310997631A CN 116719485 B CN116719485 B CN 116719485B
Authority
CN
China
Prior art keywords
target address
ram
target
stage
address
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
CN202310997631.4A
Other languages
English (en)
Other versions
CN116719485A (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 Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur 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 Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310997631.4A priority Critical patent/CN116719485B/zh
Publication of CN116719485A publication Critical patent/CN116719485A/zh
Application granted granted Critical
Publication of CN116719485B publication Critical patent/CN116719485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Radar Systems Or Details Thereof (AREA)

Abstract

本申请实施例提供了一种基于FPGA的数据读写方法及读写单元与FPGA。该方法包括:若目标对象对应的第一级RAM中的第一目标地址的存储空间不足,则基于第一目标地址和哈希算法,从其他级RAM中确定第二目标地址,以通过第二目标地址对目标对象进行累加计数并写入;若第一级RAM中的第三目标地址的标志位为预定值,则基于第三目标地址和哈希算法,从其他级RAM中确定标志位不为预定值的第四目标地址,以通过读取第四目标地址的计数值,从而确定第三目标地址对应的计数区间的计数值,解决了因采集精度要求过高以及脉冲幅值计数要求过大,导致需要的BRAM的资源较多,进而导致FPGA整体的成本较高的问题。

Description

基于FPGA的数据读写方法及读写单元与FPGA
技术领域
本申请实施例涉及测试测量领域,具体而言,涉及一种基于FPGA的数据读写方法、数据读写单元、FPGA、多道脉冲幅度分析仪、计算机可读存储介质与电子设备。
背景技术
射线能谱测量在未知放射性核素识别验证以及对目标物质的成分进行定量分析,均起着重要的作用。多通道脉冲幅度分析仪是射线能谱测量分析中重要的器件,传统的多通道脉冲幅度分析仪在测量速度、功耗以及便携性等方面均存在着显著的缺陷,逐步被数字型的多通道脉冲幅度分析仪所取代。
FPGA(现场可编程门阵列,Field-Programmable Gate Array,简称FPGA)作为一种可编程的逻辑器件,因其具有高速处理接口、丰富的I/O(Input/Output)管脚、并行运算处理以及灵活的功能重配置特性,在测试测量领域发挥着重要的作用。
当前存在着较多基于FPGA实现多通道脉冲幅度分析仪的案例。多数是基于FPGA内部的DPRAM(双端口随机存储器,简称Dual-Ported Random Access Memory,简称DPRAM)来实现多通道脉冲幅值的采集与统计。但是,FPGA内部的DPRAM多数是由Block RAM(块随机存储器,Block Random Access Memory,简称BRAM)配置而成。若涉及到多路的多通道脉冲幅度分析仪、需要采集的精度要求较高以及采集的脉冲幅值计数要求过大时,则需要的BRAM的资源也会成倍的增加,从而需要更大规模的FPGA,进而导致成本较大。
发明内容
本申请实施例提供了一种基于FPGA的数据读写方法、数据读写单元、FPGA、多道脉冲幅度分析仪、计算机可读存储介质与电子设备,以至少解决相关技术中在基于FPGA实现多通道的脉冲幅度分析时,因采集精度要求过高以及脉冲幅值计数要求过大,导致需要的BRAM的资源较多,进而导致FPGA整体的成本较高的问题。
根据本申请的一个实施例,提供了一种基于FPGA的数据读写方法,所述FPGA包括多个级联的RAM,所述多个级联的RAM中的第一级RAM为BRAM,其他级RAM为除所述BRAM之外的RAM,所述其他级RAM为所述多个级联的RAM中除所述第一级RAM之外的至少一个RAM,所述数据读写方法包括:若目标对象对应的所述第一级RAM中的第一目标地址的存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数并写入,所述目标对象处于所述第一目标地址对应的计数区间中,其中,每个所述RAM具有至少一个地址,每个所述地址具有对应的计数区间;若所述第一级RAM中的第三目标地址的标志位为预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定标志位不为所述预定值的第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,其中,每个所述地址具有对应的标志位。
在一个示例性实施例中,若目标对象对应的所述第一级RAM中的第一目标地址的存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数并写入,包括:基于所述目标对象以及所述第一级RAM中各地址对应的计数区间,确定所述目标对象在所述第一级RAM中的所述第一目标地址;根据所述第一目标地址对应的目标计数值与所述第一级RAM的最大存储位宽的大小关系,确定所述第一目标地址是否存在存储空间不足;在所述第一目标地址存在存储空间不足的情况下,基于所述第一目标地址和所述哈希算法,从所述其他级RAM中确定所述第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数,并将累加计数得到的计数值存储至所述第二目标地址。
在一个示例性实施例中,基于所述目标对象以及所述第一级RAM中各地址对应的计数区间,确定所述目标对象在所述第一级RAM中的所述第一目标地址,包括:对模数转换器进行采样,得到数字信号,并将所述数字信号的脉冲幅值确定为所述目标对象;基于所述目标对象以及所述第一级RAM中各地址对应的计数区间,确定所述目标对象在所述第一级RAM中的所述第一目标地址。
在一个示例性实施例中,根据所述第一目标地址对应的目标计数值与所述第一级RAM的最大存储位宽的大小关系,确定所述第一目标地址是否存在存储空间不足,包括:确定所述第一目标地址对应的当前计数值与1的和,得到所述第一目标地址对应的所述目标计数值;在所述第一目标地址对应的所述目标计数值大于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间不足;在所述第一目标地址对应的所述目标计数值小于或者等于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间充足。
在一个示例性实施例中,在所述第一目标地址存在存储空间不足的情况下,基于所述第一目标地址和所述哈希算法,从所述其他级RAM中确定所述第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数,并将累加计数得到的计数值存储至所述第二目标地址,包括:在所述第一目标地址存在存储空间不足的情况下,基于所述第一目标地址和所述哈希算法,从与所述第一级RAM级联的下一级RAM中确定当前目标地址;若与所述第一级RAM级联的所述下一级RAM的当前目标地址存储空间仍不足的情况下,基于所述下一级RAM的当前目标地址和所述哈希算法,确定与所述下一级RAM级联的下一级RAM中的当前目标地址,直到确定出一个存储空间充足的当前目标地址,得到所述第二目标地址,所述其他级RAM中包括多个级联的所述下一级RAM;通过确定的存储空间充足的所述第二目标地址对所述目标对象进行累加计数,并将累加计数得到的计数值存储至所述第二目标地址。
在一个示例性实施例中,在所述第一目标地址对应的所述目标计数值小于或者等于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间充足之后,所述数据读写方法还包括:再次确定所述目标对象;若再次确定的所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对再次确定的所述目标对象进行累加计数并写入。
在一个示例性实施例中,所述数据读写方法还包括:若所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则将所述第一目标地址对应的标志位更新为所述预定值。
在一个示例性实施例中,所述数据读写方法还包括:若所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则将所述第一目标地址对应的计数值置为0。
在一个示例性实施例中,对模数转换器进行采样,得到数字信号,并将所述数字信号的脉冲幅值确定为所述目标对象,包括:对所述模数转换器进行采样,得到所述数字信号;采用FIR滤波器,对所述数字信号进行滤波处理,得到经滤波处理后的所述数字信号;将经滤波处理后的所述数字信号的脉冲幅值确定为所述目标对象。
在一个示例性实施例中,若所述第一级RAM中的第三目标地址的标志位为预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定所述标志位不为所述预定值的第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,包括:依次对所述第一级RAM中的多个地址进行读取,得到多个所述第三目标地址;确定所述第三目标地址对应的标志位是否为所述预定值;若所述第三目标地址对应的标志位为所述预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定所述第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值。
在一个示例性实施例中,基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定所述第四目标地址,包括:基于所述第三目标地址和所述哈希算法,从与所述第一级RAM级联的下一级RAM中确定当前目标地址;若与所述第一级RAM级联的下一级RAM中的当前目标地址的标志位仍为所述预定值,则基于与所述第一级RAM级联的下一级RAM中的当前目标地址以及所述哈希算法,从与所述下一级RAM级联的下一级RAM中确定当前目标地址,直到确定出一个标志位不为所述预定值的当前目标地址,得到所述第四目标地址为止。
在一个示例性实施例中,所述数据读写方法还包括:若所述第一级RAM中的所述第三目标地址对应的标志位不为所述预定值,则对所述第一级RAM中的与所述第三目标地址相邻的下一个地址进行读取,从而确定与所述第三目标地址相邻的下一个地址对应的计数区间的计数值。
在一个示例性实施例中,微处理器与所述FPGA通信,上位机与所述微处理器通信,所述数据读写方法还包括:若所述第一级RAM中的所述第三目标地址的标志位不为所述预定值,将第一级RAM中的所述第三目标地址对应的所述计数值输出至所述微处理器,从而使得所述微处理器将第一级RAM中的所述第三目标地址对应的所述计数值转发至所述上位机。
在一个示例性实施例中,所述数据读写方法还包括:若所述第一级RAM中的所述第三目标地址的标志位为预定值,对所述第三目标地址对应的所述计数值进行锁存。
在一个示例性实施例中,微处理器与所述FPGA通信,上位机与所述微处理器通信,通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,包括:基于已锁存的所述计数值以及目标级RAM的所述第四目标地址的计数值,得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,所述目标级RAM为其他级RAM中第四目标地址的标志位不为所述预定值的一个RAM;将所述第一级RAM的所述第三目标地址对应的计数区间的计数值发送至所述微处理器,从而使得所述微处理器将所述第一级RAM的所述第三目标地址对应的计数区间的计数值发送至所述上位机。
在一个示例性实施例中,基于已锁存的所述计数值以及目标级RAM的所述第四目标地址的计数值,得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,包括:将所述目标级RAM的所述第四目标地址的计数值作为所述第一级RAM的所述第三目标地址的计数值的高位,并按照所述多个级联的RAM的级别由小到大的顺序,分别将已锁存的计数值逐级作为所述第一级RAM的所述第三目标地址对应的计数区间的计数值的低位,从而得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,所述多个级联的RAM的级别从所述第一级RAM开始逐级递减。
根据本申请的另一个实施例,提供了一种基于FPGA的数据读写单元,所述FPGA包括多个级联的RAM,所述多个级联的RAM中的第一级RAM为BRAM,其他级RAM为除所述BRAM之外的RAM,所述其他级RAM为所述多个级联的RAM中除所述第一级RAM之外的至少一个RAM,所述数据读写单元包括:第一确定模块,用于若目标对象对应的所述第一级RAM中的第一目标地址的存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数并写入,所述目标对象处于所述第一目标地址对应的计数区间中,其中,每个所述RAM具有至少一个地址,每个所述地址具有对应的计数区间;第二确定模块,用于若所述第一级RAM中的第三目标地址的标志位为预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定标志位不为所述预定值的第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,其中,每个所述地址具有对应的标志位。
根据本申请的又一个实施例,提供了一种FPGA,包括:基于FPGA的数据读写单元,所述基于FPGA的数据读写单元用于执行任意一种所述的基于FPGA的数据读写单元;多个异构RAM,一个所述异构RAM包括多个级联的RAM,所述多个级联的RAM中的第一级RAM为BRAM,其他级RAM为除所述BRAM之外的RAM,所述其他级RAM为所述多个级联的RAM中除所述第一级RAM之外的RAM。
根据本申请的再一个实施例,提供了一种多道脉冲幅度分析仪,包括:多个核辐射探测器,用于测量核辐射能量并输出电压脉冲信号;多个信号调理电路,与所述核辐射探测器一一对应,所述信号调理电路与对应的所述核辐射探测器通信,且所述信号调理电路用于对所述电压脉冲信号进行放大、模拟滤波以及基线恢复处理,得到脉冲信号;多个模数转换器,与所述信号调理电路一一对应,所述模数转换器与对应的所述信号调理电路通信,所述模数转换器用于对所述脉冲信号进行转换,得到所述脉冲信号对应的数字信号;FPGA,与各所述模数转换器通信,所述FPGA用于对所述数字信号的脉冲幅值进行写入和读取;微处理器,与所述FPGA通信,所述微处理器用于转发上位机下发的采样控制信号或者读脉冲幅值计数指令;所述上位机,与所述微处理器通信,所述上位机用于下发所述采样控制信号或者所述读脉冲幅值计数指令,以及用于对多个采样通道的脉冲幅值进行缓存和显示。
在一个示例性实施例中,所述信号调理电路包括:整形放大电路,用于对所述电压脉冲信号进行放大处理,得到放大后的所述电压脉冲信号;滤波电路,用于对放大后的所述电压脉冲信号进行滤波处理,得到滤波处理后的所述电压脉冲信号;基线恢复电路,用于对滤波处理后的所述电压脉冲信号进行基线偏移处理,得到基线偏移处理后的所述电压脉冲信号。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现任意一种所述的基于FPGA的数据读写方法。
根据本申请的另一个实施例,还提供了一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现任意一种所述的基于FPGA的数据读写方法。
通过本申请,在对目标对象的累加计数进行存储的过程中,若目标对象在第一级RAM中的第一目标地址的存储空间不足(即出现存储数据溢出的情形),便可以基于第一目标地址和哈希算法,从其他级RAM中确定一个存储空间充足的第二目标地址,以对第二目标地址对应的累加计数进行存储。也就是说,在对目标对象的累加计数进行存储的过程中,通过哈希算法和多个级联的RAM,将大幅值的累加计数拆分为多段级联的形式进行存储。由于多个级联的RAM中,第一级RAM为采用BRAM进行搭建的,而除第一级RAM之外的其他级RAM为除BRAM之外的其他RAM进行搭建的,这样有效的节省了FPGA中内部BRAM的资源,保证了FPGA整体的成本较高的问题。在对目标对象的累加计数进行读取的过程中,本申请通过为多个级联的RAM设置标志位,这样实现了较为简单和方便地对目标对象对应的累加计数进行读取。
附图说明
图1是根据本申请实施例的一种基于FPGA的数据读取方法的流程图;
图2是根据本申请实施例的一种对数字信号的脉冲幅值进行存储的流程图;
图3是根据本申请实施例的一种多个级联的RAM的结构示意图;
图4是根据本申请实施例的一种对数字信号的脉冲幅值进行读取的流程图;
图5是根据本申请实施例的一种基于FPGA的数据读取单元的结构示意图;
图6是根据本申请实施例的一种FPGA的结构示意图;
图7是根据本申请实施例的多道脉冲幅度分析仪的结构示意图。
其中,上述附图包括以下附图标记:
100、第一地址;200、第二地址;300、第三地址;400、核辐射探测器;500、信号调理电路;600、模数转换器;700、FPGA;800、微处理器;900、上位机;701、基于FPGA的数据读写单元;702、异构RAM。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在本实施例中提供了一种基于FPGA的数据读写方法,所述FPGA包括多个级联的RAM,所述多个级联的RAM中的第一级RAM为BRAM,其他级RAM为除所述BRAM之外的RAM,也就是说,所述其他级RAM可以为FPGA中的DRAM(分布式RAM,Distributed RAM,简称DRAM)、LUT(显示查找表,Look Up Table,简称LUT)或者寄存器等等其他RAM资源所述其他级RAM为所述多个级联的RAM中除所述第一级RAM之外的至少一个RAM。
图1是根据本申请实施例的基于FPGA的数据读写方法的流程图,如图1所示,该流程包括如下步骤:
步骤S102,若目标对象对应的所述第一级RAM中的第一目标地址的存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数并写入,所述目标对象处于所述第一目标地址对应的计数区间中,其中,每个所述RAM具有至少一个地址,每个所述地址具有对应的计数区间;
一种具体的实施例中,目标对象可以为对应的网络数据包或者脉冲幅值,而目标对象(网络数据包或者脉冲幅值)对应的存储地址用于存储该目标对象被统计到的个数。例如,在实际的应用过程中,多道脉冲幅度分析仪为测量电脉冲信号幅度分布的仪器。即把数字信号的脉冲幅值划分为若干个相等的区间(区间的大小称为道宽,区间的数目称为道数),这样通过一次的测量就可以得到数字信号的脉冲幅值的幅度分布谱。因此,在接收到目标对象后,可以基于该目标对象确定其在第一级RAM中的第一目标地址(第一目标地址即为目标对象在第一级RAM中对应的地址)。若该目标对象对应的第一目标地址存储空间不足,便可以通过第一目标地址和哈希算法,从其他级RAM中确定一个第二目标地址,以对该目标对象累计到当前的累计计数进行存储。
具体地,第一级RAM的存储位深可以基于对应的模数转换器的采样精度进行确定。
步骤S104,若所述第一级RAM中的第三目标地址的标志位为预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定标志位不为所述预定值的第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,其中,每个所述地址具有对应的标志位。
在读取各目标对象对应的累加计数时,可以通过第一级RAM中的第三目标地址(即为要读取的目标对象在第一级RAM中的累加计数)的标志位进行读取,这样实现了较为方便地,读取各目标对象的累加计数。
所述的基于FPGA的数据读写方法中,在对目标对象的累加计数进行存储的过程中,若目标对象在第一级RAM中的第一目标地址的存储空间不足(即出现存储数据溢出的情形),便可以基于第一目标地址和哈希算法,从其他级RAM中确定一个存储空间充足的第二目标地址,以对第二目标地址对应的累加计数进行存储。也就是说,在对目标对象的累加计数进行存储的过程中,通过哈希算法和多个级联的RAM,将大幅值的累加计数拆分为多段级联的形式进行存储。由于多个级联的RAM中,第一级RAM为采用BRAM进行搭建的,而除第一级RAM之外的其他级RAM为除BRAM之外的其他RAM进行搭建的,这样有效的节省了FPGA中内部BRAM的资源,保证了FPGA整体的成本较高的问题。在对目标对象的累加计数进行读取的过程中,本申请通过为多个级联的RAM设置标志位,这样实现了较为简单和方便地对目标对象对应的累加计数进行读取。
在具体的实现过程中,所述步骤S102可以通过步骤S1021、步骤S1022以及步骤S1023来实现。步骤S1021,基于所述目标对象以及所述第一级RAM中各地址对应的计数区间,确定所述目标对象在所述第一级RAM中的所述第一目标地址;步骤S1022,根据所述第一目标地址对应的目标计数值与所述第一级RAM的最大存储位宽的大小关系,确定所述第一目标地址是否存在存储空间不足;步骤S1023,在所述第一目标地址存在存储空间不足的情况下,基于所述第一目标地址和所述哈希算法,从所述其他级RAM中确定所述第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数,并将累加计数得到的计数值存储至所述第二目标地址。也就是说,第一级RAM的各地址均对应一个计数区间,故可以基于目标对象以及第一级RAM中各地址对应的计数区间,确定第一目标地址,即目标对象在第一级RAM中对应的计数区间;然后第一目标地址存储着存储空间不足,则基于哈希算法和第一目标地址,从其他级RAM中确定第二目标地址,以对目标对象进行累加计数,也就是说,本方案是通过将大幅值的计数,通过级联的形式存储至多个级联的RAM中,这样进一步地节省了BRAM资源,进一步地保证了使用的FPGA的成本较低。
在实际的多道脉冲幅度分析仪应用当中,步骤S1021还可以通过如下步骤来实现:对模数转换器进行采样,得到数字信号,并将所述数字信号的脉冲幅值确定为所述目标对象;基于所述目标对象以及所述第一级RAM中各地址对应的计数区间,确定所述目标对象在所述第一级RAM中的所述第一目标地址。
当然,在实际的应用过程中,并不限于应用在多道脉冲幅度分析仪当中,还可以应用网络数据包的统计,例如,第一级RAM中各地址对应一种类型的网络数据包。在接收到网络数据包后,可以确定该网络数据包在第一级RAM中的第一目标地址,以通过第一目标地址,对该网络数据包的接收次数进行存储。
在一些实施例中,所述步骤S1022还可以通过如下步骤来实现:确定所述第一目标地址对应的当前计数值与1的和,得到所述第一目标地址对应的所述目标计数值;在所述第一目标地址对应的所述目标计数值大于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间不足;在所述第一目标地址对应的所述目标计数值小于或者等于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间充足。也就是说,在目标计数值大于第一级RAM的最大存储位宽的情况下,该第一目标地址已经无法对目标计数值进行存储,故本方案通过目标计数值与第一级RAM的最大存储位宽的大小关系,这样实现了较为简单地确定第一目标地址是否存储空间不足。在第一目标地址的存储空间不足的情况下,后续可以基于第一目标地址和哈希算法,确定出一个存储空间充足的第二目标地址,从而进一步地通过第二目标地址,对目标计数值进行存储。
在具体的实现过程中,所述步骤S1023还可以通过如下步骤来实现:在所述第一目标地址存在存储空间不足的情况下,基于所述第一目标地址和所述哈希算法,从与所述第一级RAM级联的下一级RAM中确定当前目标地址;若与所述第一级RAM级联的所述下一级RAM的当前目标地址存储空间仍不足的情况下,基于所述下一级RAM的当前目标地址和所述哈希算法,确定与所述下一级RAM级联的下一级RAM中的当前目标地址,直到确定出一个存储空间充足的当前目标地址,得到所述第二目标地址,所述其他级RAM中包括多个级联的所述下一级RAM;通过确定的存储空间充足的所述第二目标地址对所述目标对象进行累加计数,并将累加计数得到的计数值存储至所述第二目标地址。由于除第一级RAM采用BRAM之外,其他级RAM均为BRAM,这样进一步地实现了通过在其他级RAM中寻找一个存储空间充足的地址,以对目标对象进行存储,进一步地保证了整体的FPGA的成本较低。
一种具体的实施例中,在第一级RMA中的第一目标地址存储空间不足的情况下,则基于第一目标地址和哈希算法,从与第一级RAM级联的第二级RAM中,确定出一个第二级RAM中的当前目标地址。若该当前目标地址仍然存储空间不足,即第二级RAM仍无法对目标对象进行累加计数,则可以基于第二级RAM的当前目标地址和哈希算法,从第三级RAM中确定出一个当前目标地址。若第三级RAM中的当前目标地址存储空间充足,则将第三级RAM中的当前目标地址确定为第二目标地址,从而通过第二目标地址对目标对象的累加计数进行存储。若第三级RAM中的当前目标地址存储空间仍然不足,则可以基于第三级RAM中的当前目标地址和哈希算法,依次从第四级RAM、第五级RAM中等等,确定一个存储空间充足的当前目标地址,从而将该级RAM的当前目标地址,确定为第二目标地址。
本申请的数据读写方法还包括步骤S108以及步骤S110。具体地,步骤S108,在所述第一目标地址对应的所述目标计数值小于或者等于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间充足之后,再次确定所述目标对象;步骤S110,若再次确定的所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对再次确定的所述目标对象进行累加计数并写入。也就是说,通过前述的方法,从其他级RAM中确定出一个存储空间充足的第二目标地址,以对再次确定的目标对象进行累加计数。若是再次确定的目标对象对应的第一级RAM的第一目标地址依旧存储空间充足,则可以基于该对目标对象在第一级RAM中的第一目标地址,对再次确定的目标对象进行累加计数。
一种具体的实施例中,本申请的数据读写方法还包括步骤S112,若所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则将所述第一目标地址对应的标志位更新为所述预定值。这样后续在读取多个级联的RAM中各地址对应的计数值的情况下,可以通过标志位是否为预定值,来较为简单地对第一级RAM中各地址的计数值进行拼接和读取。
另一种具体的实施例中,预定值可以为1。
一种具体的实施例中,多个级联的RAM中,其的标志位可以以寄存器的形式存储在对应的RAM之外,且与对应的RAM一一对应。例如,第一级RAM的标志位可以存储至第一级寄存器中,且第一级RAM与第一级寄存器一一对应。
在具体的实现过程中,并不限于通过在第一级RAM中的第一目标地址存储空间不足的情况下,将该第一目标地址对应的标志位更新为预定值,还可以将其他级RAM中存储空间不足的地址的标志位更新为预定值。
在实际的应用过程中,若所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则将所述第一目标地址对应的计数值置为0。也就是说,在第一级RAM中的第一目标地址出现数据溢出的情形下,将第一级RAM中的第一目标地址的计数值视作为低位并置为0,这样便于后续对第一级RAM中的第一目标地址的计数值进行拼接。
另外,在实际的实现过程中,并不限于仅在第一级RAM中的第一目标地址存储空间不足的情况下,将该第一目标地址的计数值置为0,还可以在其他级RAM中的地址存储不足的情况下,将该地址对应的计数值置为0。
具体地,为了较为准确地确定出目标对象,在多道脉冲幅度分析仪领域中,对模数转换器进行采样,得到数字信号,并将所述数字信号的脉冲幅值确定为所述目标对象,包括:对所述模数转换器进行采样,得到所述数字信号;采用FIR(有限长单位冲击响应,Finite Impulse Response,简称FIR)滤波器,对所述数字信号进行滤波处理,得到经滤波处理后的所述数字信号;将经滤波处理后的所述数字信号的脉冲幅值确定为所述目标对象。这样保证了得到的数字信号的脉冲幅值较为准确,进而保证了确定的目标对象也较为准确。
在实际的应用过程中,并不限于通过FIR滤波器,对数字信号进行滤波处理,得到经滤波处理后的目标对象,还可以采用现有技术中其他的任何可行的滤波方法,对数字信号进行滤波处理。
本申请的一种具体的实施例中,如图2所示,对数字信号的脉冲幅值计数累加值进行存储的步骤如下:
步骤S1:在从模数转换器中采样到数字信号的情况下,根据数字信号的脉冲幅值,确定数字信号的脉冲幅值在第一级RAM中的第一目标地址,且将该第一级RAM中的第一目标地址对应的当前计数值增加1,从而得到第一级RAM的目标计数值;
步骤S2:确定第一级RAM中的第一目标地址对应的目标计数值是否大于第一级RAM的最大存储位宽;
步骤S3:在第一级RAM中的第一目标地址对应的目标计数值大于第一级RAM的最大存储位宽的情况下,确定第一级RAM中的第一目标地址存储空间不足。且将第一级RAM中的第一目标地址的标志位更新为1以及将第一级RAM中的第一目标地址对应的计数累加值置0;同时,根据第一级RAM中的第一目标地址以及哈希算法,确定第二级RAM中的当前目标地址;
步骤S4:将第二级RAM中的当前目标地址对应的当前计数值增加1,得到第二级RAM中的当前目标地址对应的目标计数值。并再次确定第二级RAM中的当前目标地址对应的目标计数值是否大于第二级RAM的最大存储位宽;
步骤S5:若第二级RAM中的当前目标地址对应的目标计数值小于或者等于第二级RAM的最大存储位宽,则将第二级RAM中的当前目标地址确定为第二目标地址,并通过第二目标地址,对目标对象进行累加计数并存储;若第二级RAM中的当前目标地址对应的目标计数值大于第二级RAM的最大存储位宽。再次基于第二级RAM中的当前目标地址和哈希算法,从第三级RAM中确定一个当前目标地址;若第三级RAM的当前目标地址依旧大于第三级RAM的最大存储位宽;则继续基于第三级RAM的当前目标地址和哈希算法,依次从第四级RAM中确定一个当前目标地址,依次类推,直到确定出一个存储空间充足的当前目标地址;
步骤S6:若在第一级RAM中的第一目标地址对应的目标计数值小于或者等于第一级RAM的最大存储位宽的情况下,则通过第一目标地址对其对应的计数值进行存储。
在一些实施例中,所述步骤S104还可以通过步骤S1041、步骤S1042以及步骤S1043来实现。步骤S1041,依次对所述第一级RAM中的多个地址进行读取,得到多个所述第三目标地址;步骤S1042,确定所述第三目标地址对应的标志位是否为所述预定值;步骤S1043,若所述第三目标地址对应的标志位为所述预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定所述第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值。也就是说,对存储的各目标对象进行计数值读取时,首先确定读取到的第一级RAM中的第三目标地址的标志位是否为预定值,在为预定值的情况下,可以确定该第三目标地址出现数据溢出的情形,即存储空间不充足,这也便可以通过第三目标地址和哈希算法,从其他级RAM中确定出一个标志位不为预定值的第四目标地址,从而通过第四目标地址以及相关的标志位为预定值的地址,对第一级RAM中的第三目标地址的计数值进行拼接。
为了后续可以较为准确地对第一级RAM中的第三级目标地址对应的计数区间的计数值进行读取,在一些实施例中,所述步骤S1043还可以通过如下步骤来实现,具体地,基于所述第三目标地址和所述哈希算法,从与所述第一级RAM级联的下一级RAM中确定当前目标地址;若与所述第一级RAM级联的下一级RAM中的当前目标地址的标志位仍为所述预定值,则基于与所述第一级RAM级联的下一级RAM中的当前目标地址以及所述哈希算法,从与所述下一级RAM级联的下一级RAM中确定当前目标地址,直到确定出一个标志位不为所述预定值的当前目标地址,得到所述第四目标地址为止。
一种具体的实施例中,基于第一级RAM中的第三目标地址和哈希算法,从第二级RAM中确定一个当前目标地址。若第二级RAM中的当前目标地址的标志位预定值,则表明第二级RAM中的当前目标地址也出现数据溢出的情形,故可以基于第二级RAM中的当前目标地址和哈希算法,从第三级RAM中确定一个当前目标地址。若第三级RAM中的当前目标地址的标志位依旧为预定值,则继续基于第三级RAM中的当前目标地址以及哈希算法,从第四级RAM中确定一个当前目标地址,依次类推,直到确定出一个标志位不为预定值的当前目标地址,并将该当前目标地址,确定为第四目标地址。若第三级RAM中的当前目标地址的标志位不为预定值,则将第三级RAM中的当前目标地址确定为第四目标地址。
一种具体的实施例中,若所述第一级RAM中的所述第三目标地址对应的标志位不为所述预定值,则对所述第一级RAM中的与所述第三目标地址相邻的下一个地址进行读取,从而确定与所述第三目标地址相邻的下一个地址对应的计数区间的计数值。
在实际的应用过程中,微处理器与所述FPGA通信,上位机与所述微处理器通信,若所述第一级RAM中的所述第三目标地址的标志位不为所述预定值,将第一级RAM中的所述第三目标地址对应的所述计数值输出至所述微处理器,从而使得所述微处理器将第一级RAM中的所述第三目标地址对应的所述计数值转发至所述上位机。这样便于通过上位机,对第一级RAM中各计数区间对应的计数值进行分析。
为了便于后续对第一级RAM中的第三目标地址对应的计数区间的计数值进行拼接,在实际的应用过程中,若所述第一级RAM中的所述第三目标地址的标志位为预定值,对所述第三目标地址对应的所述计数值进行锁存。
一种具体的实施例中,如图3所示,多个级联的RAM可以为DPRAM_0、DPRAM_1、DPRAM_2、…、DPRAM_N。由于DPRAM_0中的第一地址100的标志位为1以及DPRAM_1中的第二地址200的标志位为1,故可以对DPRAM_0中的第一地址100以及DPRAM_1中的第二地址200的计数值进行锁存。具体地,可以将DPRAM_0中的第一地址100对应的计数值锁存至第一级寄存器中,DPRAM_1中的第二地址200对应的计数值锁存至第二级寄存器中等等。
由于在对目标对象对应的计数值进行数据存储时,是将该计数值进行拆分,并分别存储至多个级联的RAM当中。故为了较为简单地确定出第三目标地址对应的计数值,本申请的一种实施例中,微处理器与所述FPGA通信,上位机与所述微处理器通信,通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,包括:基于已锁存的所述计数值以及目标级RAM的所述第四目标地址的计数值,得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,所述目标级RAM为其他级RAM中第四目标地址的标志位不为所述预定值的一个RAM;将所述第一级RAM的所述第三目标地址对应的计数区间的计数值发送至所述微处理器,从而使得所述微处理器将所述第一级RAM的所述第三目标地址对应的计数区间的计数值发送至所述上位机。
本申请的另一种实施例中,基于已锁存的所述计数值以及目标级RAM的所述第四目标地址的计数值,得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,包括:将所述目标级RAM的所述第四目标地址的计数值作为所述第一级RAM的所述第三目标地址的计数值的高位,并按照多个级联的所述RAM的级别由小到大的顺序,分别将已锁存的计数值逐级作为所述第一级RAM的所述第三目标地址对应的计数区间的计数值的低位,从而得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,多个级联的所述RAM的级别从所述第一级RAM开始逐级递减。也就是说,在进行存储时,若第一级RAM或者其他RAM的地址出现存储空间不足,则将该地址置为0,并通过存储空间充足的地址进行存储;故在读取时,可以将存储空间充足(标志位不为预定值)的地址存储的数值看作为高位,其他级RAM(即相关的存储空间不足)的地址存储的数值看做为低位,从而得到第一级RAM的第三目标地址对应的计数值。
一种具体的实施例中,以图3中所示的DPRAM_0中的第一地址100、DPRAM_1中的第二地址200以及DPRAM_2中的第三地址300为例。由于DPRAM_2中的第三地址300的标志位为0,也就是说,DPRAM_2中的第三地址300的标志位不为预定值(1),故可以通过DPRAM_2中的第三地址300的计数值以及已经锁存的DPRAM_0中的第一地址100、DPRAM_1中的第二地址200的计数值,拼接得到DPRAM_0中的第一地址100对应的计数区间的计数值。具体地,由于DPRAM_0的级别高于DPRAM_1,DPRAM_1的级别高于DPRAM_2,可以将DPRAM_2中的第三地址300对应的计数值作为DPRAM_0的第一地址100的计数值的最高位,DPRAM_1中的第二地址200对应的计数值次之,且以DPRAM_0中的第一地址100对应的读地址作为其的计数值的最低位,从而拼接出DPRAM_0中的第一地址100对应的计数值。
为了较为简单和准确地读取出第一级RAM中计数区间对应的计数值,一种具体的实施例中,如图4所示,具体步骤如下:
步骤S1:从第一级RAM中读取一个第三目标地址(可以按照第一级RAM中各地址的设置顺序进行读取);
步骤S2:确定第三目标地址对应的FLAG(标志位)是否为1(预定值);在第三目标地址对应的FLAG为1的情况下,对第一级RAM中的第三目标地址对应的计数值进行锁存。且根据第一级RAM中的第三目标地址和哈希算法,从第二级RAM中确定一个当前目标地址;在第三目标地址对应的标志位不为预定值的情况下,对第三目标地址存储的数据进行读取,并通过微处理器,将第三目标地址对应的计数值发送至上位机;
步骤S3:确定第二级RAM中的当前目标地址对应的FLAG是否为1;在第二级RAM中确定的当前目标地址对应的FLAG依旧为1的情况下,可以基于第二级RAM的当前目标地址以及哈希算法,在第三RAM中确定一个当前目标地址,依次类推,直到确定出一个标志位不为1的当前目标地址,并将该当前目标地址确定为第四目标地址;
步骤S4:在第二级RAM中确定的当前目标地址对应的FLAG不为1的情况下,则将第二级RAM中的当前目标地址确定为第四目标地址。并基于第四目标地址对应的计数值作为高位以及将第一级RAM中的第三目标地址作为低位,从而拼接出第一级RAM中第三目标地址对应的计数值。
一种具体的实施例中,哈希算法包括以下之一:CRC循环冗余校验、MD5算法(信息-摘要算法5,Message-Digest Algorithm 5,简称MD5算法)、SHA算法(安全散列算法,SecureHash Algorithm,简称SHA))、SM3(密码杂凑算法)。
另一种具体的实施例中,除第一级RAM之外的其他级RAM的存储深度可以根据对应的哈希算法进行确定。除第一级RAM之外的其他级RAM的数量及存储位宽,可根据脉冲幅值的最大位宽及FPGA内部逻辑资源进行设置。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据所述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种基于FPGA的数据读写单元,该基于FPGA的数据读写单元用于实现所述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的基于FPGA的数据读写单元的结构示意图,所述FPGA包括多个级联的RAM,所述多个级联的RAM中的第一级RAM为BRAM,其他级RAM为除所述BRAM之外的RAM,所述其他级RAM为所述多个级联的RAM中除所述第一级RAM之外的至少一个RAM,如图5所示,该基于FPGA的数据读写单元包括:
第一确定模块52,用于若目标对象对应的所述第一级RAM中的第一目标地址的存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数并写入,所述目标对象处于所述第一目标地址对应的计数区间中,其中,每个所述RAM具有至少一个地址,每个所述地址具有对应的计数区间;
一种具体的实施例中,目标对象可以为对应的网络数据包或者脉冲幅值,而目标对象(网络数据包或者脉冲幅值)对应的存储地址用于存储该目标对象被统计到的个数。例如,在实际的应用过程中,多道脉冲幅度分析仪为测量电脉冲信号幅度分布的仪器。即把数字信号的脉冲幅值划分为若干个相等的区间(区间的大小称为道宽,区间的数目称为道数),这样通过一次的测量就可以得到数字信号的脉冲幅值的幅度分布谱。因此,在接收到目标对象后,可以基于该目标对象确定其在第一级RAM中的第一目标地址(第一目标地址即为目标对象在第一级RAM中对应的地址)。若该目标对象对应的第一目标地址存储空间不足,便可以通过第一目标地址和哈希算法,从其他级RAM中确定一个第二目标地址,以对该目标对象累计到当前的累计计数进行存储。
具体地,第一级RAM的存储位深可以基于对应的模数转换器的采样精度进行确定。
第二确定模块54,用于若所述第一级RAM中的第三目标地址的标志位为预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定标志位不为所述预定值的第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,其中,每个所述地址具有对应的标志位。
在读取各目标对象对应的累加计数时,可以通过第一级RAM中的第三目标地址(即为要读取的目标对象在第一级RAM中的累加计数)的标志位进行读取,这样实现了较为方便地,读取各目标对象的累加计数。
所述的基于FPGA的数据读写单元中,在对目标对象的累加计数进行存储的过程中,若目标对象在第一级RAM中的第一目标地址的存储空间不足(即出现存储数据溢出的情形),便可以基于第一目标地址和哈希算法,从其他级RAM中确定一个存储空间充足的第二目标地址,以对第二目标地址对应的累加计数进行存储。也就是说,在对目标对象的累加计数进行存储的过程中,通过哈希算法和多个级联的RAM,将大幅值的累加计数拆分为多段级联的形式进行存储。由于多个级联的RAM中,第一级RAM为采用BRAM进行搭建的,而除第一级RAM之外的其他级RAM为除BRAM之外的其他RAM进行搭建的,这样有效的节省了FPGA中内部BRAM的资源,保证了FPGA整体的成本较高的问题。在对目标对象的累加计数进行读取的过程中,本申请通过为多个级联的RAM设置标志位,这样实现了较为简单和方便地对目标对象对应的累加计数进行读取。
在具体的实现过程中,所述第一确定模块包括第一确定子模块、第二确定子模块和第一存储子模块。其中,所述第一确定子模块用于基于所述目标对象以及所述第一级RAM中各地址对应的计数区间,确定所述目标对象在所述第一级RAM中的所述第一目标地址;所述第二确定子模块用于根据所述第一目标地址对应的目标计数值与所述第一级RAM的最大存储位宽的大小关系,确定所述第一目标地址是否存在存储空间不足;所述第一存储子模块用于在所述第一目标地址存在存储空间不足的情况下,基于所述第一目标地址和所述哈希算法,从所述其他级RAM中确定所述第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数,并将累加计数得到的计数值存储至所述第二目标地址。也就是说,第一级RAM的各地址均对应一个计数区间,故可以基于目标对象以及第一级RAM中各地址对应的计数区间,确定第一目标地址,即目标对象在第一级RAM中对应的计数区间;然后第一目标地址存储着存储空间不足,则基于哈希算法和第一目标地址,从其他级RAM中确定第二目标地址,以对目标对象进行累加计数,也就是说,本方案是通过将大幅值的计数,通过级联的形式存储至多个级联的RAM中,这样进一步地节省了BRAM资源,进一步地保证了使用的FPGA的成本较低。
在实际的多道脉冲幅度分析仪应用当中,所述第一确定子模块包括第三确定子模块和第四确定子模块。其中,所述第三确定子模块用于对模数转换器进行采样,得到数字信号,并将所述数字信号的脉冲幅值确定为所述目标对象;所述第四确定子模块用于基于所述目标对象以及所述第一级RAM中各地址对应的计数区间,确定所述目标对象在所述第一级RAM中的所述第一目标地址。
当然,在实际的应用过程中,并不限于应用在多道脉冲幅度分析仪当中,还可以应用网络数据包的统计,例如,第一级RAM中各地址对应一种类型的网络数据包。在接收到网络数据包后,可以确定该网络数据包在第一级RAM中的第一目标地址,以通过第一目标地址,对该网络数据包的接收次数进行存储。
在一些实施例中,所述第二确定子模块还包括第五确定子模块、第六确定子模块和第七确定子模块。其中,所述第五确定子模块用于确定所述第一目标地址对应的当前计数值与1的和,得到所述第一目标地址对应的所述目标计数值;所述第六确定子模块用于在所述第一目标地址对应的所述目标计数值大于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间不足;所述第七确定子模块用于在所述第一目标地址对应的所述目标计数值小于或者等于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间充足。也就是说,在目标计数值大于第一级RAM的最大存储位宽的情况下,该第一目标地址已经无法对目标计数值进行存储,故本方案通过目标计数值与第一级RAM的最大存储位宽的大小关系,这样实现了较为简单地确定第一目标地址是否存储空间不足。在第一目标地址的存储空间不足的情况下,后续可以基于第一目标地址和哈希算法,确定出一个存储空间充足的第二目标地址,从而进一步地通过第二目标地址,对目标计数值进行存储。
在具体的实现过程中,所述第一存储子模块还包括第八确定子模块、第九确定子模块和第二存储子模块。其中,所述第八确定子模块用于在所述第一目标地址存在存储空间不足的情况下,基于所述第一目标地址和所述哈希算法,从与所述第一级RAM级联的下一级RAM中确定当前目标地址;所述第九确定子模块用于若与所述第一级RAM级联的所述下一级RAM的当前目标地址存储空间仍不足的情况下,基于所述下一级RAM的当前目标地址和所述哈希算法,确定与所述下一级RAM级联的下一级RAM中的当前目标地址,直到确定出一个存储空间充足的当前目标地址,得到所述第二目标地址,所述其他级RAM中包括多个级联的所述下一级RAM;所述第二存储子模块用于通过确定的存储空间充足的所述第二目标地址对所述目标对象进行累加计数,并将累加计数得到的计数值存储至所述第二目标地址。由于除第一级RAM采用BRAM之外,其他级RAM均为BRAM,这样进一步地实现了通过在其他级RAM中寻找一个存储空间充足的地址,以对目标对象进行存储,进一步地保证了整体的FPGA的成本较低。
一种具体的实施例中,在第一级RMA中的第一目标地址存储空间不足的情况下,则基于第一目标地址和哈希算法,从与第一级RAM级联的第二级RAM中,确定出一个第二级RAM中的当前目标地址。若该当前目标地址仍然存储空间不足,即第二级RAM仍无法对目标对象进行累加计数,则可以基于第二级RAM的当前目标地址和哈希算法,从第三级RAM中确定出一个当前目标地址。若第三级RAM中的当前目标地址存储空间充足,则将第三级RAM中的当前目标地址确定为第二目标地址,从而通过第二目标地址对目标对象的累加计数进行存储。若第三级RAM中的当前目标地址存储空间仍然不足,则可以基于第三级RAM中的当前目标地址和哈希算法,依次从第四级RAM、第五级RAM中等等,确定一个存储空间充足的当前目标地址,从而将该级RAM的当前目标地址,确定为第二目标地址。
本申请的数据读写单元还包括第三确定模块和第四确定模块。具体地,所述第三确定模块用于在所述第一目标地址对应的所述目标计数值小于或者等于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间充足之后,再次确定所述目标对象;第四确定模块用于若再次确定的所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对再次确定的所述目标对象进行累加计数并写入。也就是说,通过前述的方法,从其他级RAM中确定出一个存储空间充足的第二目标地址,以对再次确定的目标对象进行累加计数。若是再次确定的目标对象对应的第一级RAM的第一目标地址依旧存储空间充足,则可以基于该对目标对象在第一级RAM中的第一目标地址,对再次确定的目标对象进行累加计数。
一种具体的实施例中,本申请的数据读写单元还包括更新模块,用于若所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则将所述第一目标地址对应的标志位更新为所述预定值。这样后续在读取多个级联的RAM中各地址对应的计数值的情况下,可以通过标志位是否为预定值,来较为简单地对第一级RAM中各地址的计数值进行拼接和读取。
另一种具体的实施例中,预定值可以为1。
一种具体的实施例中,多个级联的RAM中,其的标志位可以以寄存器的形式存储在对应的RAM之外,且与对应的RAM一一对应。例如,第一级RAM的标志位可以存储至第一级寄存器中,且第一级RAM与第一级寄存器一一对应。
在具体的实现过程中,并不限于通过在第一级RAM中的第一目标地址存储空间不足的情况下,将该第一目标地址对应的标志位更新为预定值,还可以将其他级RAM中存储空间不足的地址的标志位更新为预定值。
在实际的应用过程中,若所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则将所述第一目标地址对应的计数值置为0。也就是说,在第一级RAM中的第一目标地址出现数据溢出的情形下,将第一级RAM中的第一目标地址的计数值视作为低位并置为0,这样便于后续对第一级RAM中的第一目标地址的计数值进行拼接。
另外,在实际的实现过程中,并不限于仅在第一级RAM中的第一目标地址存储空间不足的情况下,将该第一目标地址的计数值置为0,还可以在其他级RAM中的地址存储不足的情况下,将该地址对应的计数值置为0。
具体地,为了较为准确地确定出目标对象,在多道脉冲幅度分析仪领域中,第三确定子模块包括采样子模块、滤波子模块和第十确定子模块。其中,所述采样子模块用于对所述模数转换器进行采样,得到所述数字信号;所述滤波子模块用于采用FIR(有限长单位冲击响应,Finite Impulse Response,简称FIR)滤波器,对所述数字信号进行滤波处理,得到经滤波处理后的所述数字信号;所述第十确定子模块用于将经滤波处理后的所述数字信号的脉冲幅值确定为所述目标对象。这样保证了得到的数字信号的脉冲幅值较为准确,进而保证了确定的目标对象也较为准确。
在实际的应用过程中,并不限于通过FIR滤波器,对数字信号进行滤波处理,得到经滤波处理后的目标对象,还可以采用现有技术中其他的任何可行的滤波方法,对数字信号进行滤波处理。
本申请的一种具体的实施例中,如图2所示,对数字信号的脉冲幅值计数累加值进行存储的步骤如下:
步骤S1:在从模数转换器中采样到数字信号的情况下,根据数字信号的脉冲幅值,确定数字信号的脉冲幅值在第一级RAM中的第一目标地址,且将该第一级RAM中的第一目标地址对应的当前计数值增加1,从而得到第一级RAM的目标计数值;
步骤S2:确定第一级RAM中的第一目标地址对应的目标计数值是否大于第一级RAM的最大存储位宽;
步骤S3:在第一级RAM中的第一目标地址对应的目标计数值大于第一级RAM的最大存储位宽的情况下,确定第一级RAM中的第一目标地址存储空间不足。且将第一级RAM中的第一目标地址的标志位更新为1以及将第一级RAM中的第一目标地址对应的计数累加值置0;同时,根据第一级RAM中的第一目标地址以及哈希算法,确定第二级RAM中的当前目标地址;
步骤S4:将第二级RAM中的当前目标地址对应的当前计数值增加1,得到第二级RAM中的当前目标地址对应的目标计数值。并再次确定第二级RAM中的当前目标地址对应的目标计数值是否大于第二级RAM的最大存储位宽;
步骤S5:若第二级RAM中的当前目标地址对应的目标计数值小于或者等于第二级RAM的最大存储位宽,则将第二级RAM中的当前目标地址确定为第二目标地址,并通过第二目标地址,对目标对象进行累加计数并存储;若第二级RAM中的当前目标地址对应的目标计数值大于第二级RAM的最大存储位宽。再次基于第二级RAM中的当前目标地址和哈希算法,从第三级RAM中确定一个当前目标地址;若第三级RAM的当前目标地址依旧大于第三级RAM的最大存储位宽;则继续基于第三级RAM的当前目标地址和哈希算法,依次从第四级RAM中确定一个当前目标地址,依次类推,直到确定出一个存储空间充足的当前目标地址;
步骤S6:若在第一级RAM中的第一目标地址对应的目标计数值小于或者等于第一级RAM的最大存储位宽的情况下,则通过第一目标地址对其对应的计数值进行存储。
在一些实施例中,所述第二确定模块包括读取子模块、第十一确定子模块和第十二确定子模块。所述读取子模块用于依次对所述第一级RAM中的多个地址进行读取,得到多个所述第三目标地址;所述第十一确定子模块用于确定所述第三目标地址对应的标志位是否为所述预定值;所述第十二确定子模块用于若所述第三目标地址对应的标志位为所述预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定所述第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值。也就是说,对存储的各目标对象进行计数值读取时,首先确定读取到的第一级RAM中的第三目标地址的标志位是否为预定值,在为预定值的情况下,可以确定该第三目标地址出现数据溢出的情形,即存储空间不充足,这也便可以通过第三目标地址和哈希算法,从其他级RAM中确定出一个标志位不为预定值的第四目标地址,从而通过第四目标地址以及相关的标志位为预定值的地址,对第一级RAM中的第三目标地址的计数值进行拼接。
为了后续可以较为准确地对第一级RAM中的第三级目标地址对应的计数区间的计数值进行读取,在一些实施例中,所述第十二确定子模块包括第十三确定子模块和第十四确定子模块。所述第十三确定子模块用于基于所述第三目标地址和所述哈希算法,从与所述第一级RAM级联的下一级RAM中确定当前目标地址;所述第十四确定子模块用于若与所述第一级RAM级联的下一级RAM中的当前目标地址的标志位仍为所述预定值,则基于与所述第一级RAM级联的下一级RAM中的当前目标地址以及所述哈希算法,从与所述下一级RAM级联的下一级RAM中确定当前目标地址,直到确定出一个标志位不为所述预定值的当前目标地址,得到所述第四目标地址为止。
一种具体的实施例中,基于第一级RAM中的第三目标地址和哈希算法,从第二级RAM中确定一个当前目标地址。若第二级RAM中的当前目标地址的标志位预定值,则表明第二级RAM中的当前目标地址也出现数据溢出的情形,故可以基于第二级RAM中的当前目标地址和哈希算法,从第三级RAM中确定一个当前目标地址。若第三级RAM中的当前目标地址的标志位依旧为预定值,则继续基于第三级RAM中的当前目标地址以及哈希算法,从第四级RAM中确定一个当前目标地址,依次类推,直到确定出一个标志位不为预定值的当前目标地址,并将该当前目标地址,确定为第四目标地址。若第三级RAM中的当前目标地址的标志位不为预定值,则将第三级RAM中的当前目标地址确定为第四目标地址。
一种具体的实施例中,本申请的数据读写单元还包括第五确定模块,用于若所述第一级RAM中的所述第三目标地址对应的标志位不为所述预定值,则对所述第一级RAM中的与所述第三目标地址相邻的下一个地址进行读取,从而确定与所述第三目标地址相邻的下一个地址对应的计数区间的计数值。
在实际的应用过程中,微处理器与所述FPGA通信,上位机与所述微处理器通信,本申请的数据读写单元还包括输出模块,用于若所述第一级RAM中的所述第三目标地址的标志位不为所述预定值,将第一级RAM中的所述第三目标地址对应的所述计数值输出至所述微处理器,从而使得所述微处理器将第一级RAM中的所述第三目标地址对应的所述计数值转发至所述上位机。这样便于通过上位机,对第一级RAM中各计数区间对应的计数值进行分析。
为了便于后续对第一级RAM中的第三目标地址对应的计数区间的计数值进行拼接,在实际的应用过程中,本申请的数据读写单元还包括锁存模块,用于若所述第一级RAM中的所述第三目标地址的标志位为预定值,对所述第三目标地址对应的所述计数值进行锁存。
一种具体的实施例中,如图3所示,多个级联的RAM可以为DPRAM_0、DPRAM_1、DPRAM_2、…、DPRAM_N。由于DPRAM_0中的第一地址100的标志位为1以及DPRAM_1中的第二地址200的标志位为1,故可以对DPRAM_0中的第一地址100以及DPRAM_1中的第二地址200的计数值进行锁存。具体地,可以将DPRAM_0中的第一地址100对应的计数值锁存至第一级寄存器中,DPRAM_1中的第二地址200对应的计数值锁存至第二级寄存器中等等。
由于在对目标对象对应的计数值进行数据存储时,是将该计数值进行拆分,并分别存储至多个级联的RAM当中。故为了较为简单地确定出第三目标地址对应的计数值,本申请的一种实施例中,微处理器与所述FPGA通信,上位机与所述微处理器通信,所述第十二确定模块包括锁存子模块和发送子模块。其中,所述锁存子模块用于基于已锁存的所述计数值以及目标级RAM的所述第四目标地址的计数值,得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,所述目标级RAM为其他级RAM中第四目标地址的标志位不为所述预定值的一个RAM;所述发送子模块用于将所述第一级RAM的所述第三目标地址对应的计数区间的计数值发送至所述微处理器,从而使得所述微处理器将所述第一级RAM的所述第三目标地址对应的计数区间的计数值发送至所述上位机。
本申请的另一种实施例中,所述锁存子模块还包括拼接子模块,用于将所述目标级RAM的所述第四目标地址的计数值作为所述第一级RAM的所述第三目标地址的计数值的高位,并按照多个级联的所述RAM的级别由小到大的顺序,分别将已锁存的计数值逐级作为所述第一级RAM的所述第三目标地址对应的计数区间的计数值的低位,从而得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,多个级联的所述RAM的级别从所述第一级RAM开始逐级递减。也就是说,在进行存储时,若第一级RAM或者其他RAM的地址出现存储空间不足,则将该地址置为0,并通过存储空间充足的地址进行存储;故在读取时,可以将存储空间充足(标志位不为预定值)的地址存储的数值看作为高位,其他级RAM(即相关的存储空间不足)的地址存储的数值看做为低位,从而得到第一级RAM的第三目标地址对应的计数值。
一种具体的实施例中,以图3中所示的DPRAM_0中的第一地址100、DPRAM_1中的第二地址200以及DPRAM_2中的第三地址300为例。由于DPRAM_2中的第三地址300的标志位为0,也就是说,DPRAM_2中的第三地址300的标志位不为预定值(1),故可以通过DPRAM_2中的第三地址300的计数值以及已经锁存的DPRAM_0中的第一地址100、DPRAM_1中的第二地址200的计数值,拼接得到DPRAM_0中的第一地址100对应的计数区间的计数值。具体地,由于DPRAM_0的级别高于DPRAM_1,DPRAM_1的级别高于DPRAM_2,可以将DPRAM_2中的第三地址300对应的计数值作为DPRAM_0的第一地址100的计数值的最高位,DPRAM_1中的第二地址200对应的计数值次之,且以DPRAM_0中的第一地址100对应的读地址作为其的计数值的最低位,从而拼接出DPRAM_0中的第一地址100对应的计数值。
为了较为简单和准确地读取出第一级RAM中计数区间对应的计数值,一种具体的实施例中,如图4所示,具体步骤如下:
步骤S1:从第一级RAM中读取一个第三目标地址(可以按照第一级RAM中各地址的设置顺序进行读取);
步骤S2:确定第三目标地址对应的FLAG(标志位)是否为1(预定值);在第三目标地址对应的FLAG为1的情况下,对第一级RAM中的第三目标地址对应的计数值进行锁存。且根据第一级RAM中的第三目标地址和哈希算法,从第二级RAM中确定一个当前目标地址;在第三目标地址对应的标志位不为预定值的情况下,对第三目标地址存储的数据进行读取,并通过微处理器,将第三目标地址对应的计数值发送至上位机;
步骤S3:确定第二级RAM中的当前目标地址对应的FLAG是否为1;在第二级RAM中确定的当前目标地址对应的FLAG依旧为1的情况下,可以基于第二级RAM的当前目标地址以及哈希算法,在第三RAM中确定一个当前目标地址,依次类推,直到确定出一个标志位不为1的当前目标地址,并将该当前目标地址确定为第四目标地址;
步骤S4:在第二级RAM中确定的当前目标地址对应的FLAG不为1的情况下,则将第二级RAM中的当前目标地址确定为第四目标地址。并基于第四目标地址对应的计数值作为高位以及将第一级RAM中的第三目标地址作为低位,从而拼接出第一级RAM中第三目标地址对应的计数值。
一种具体的实施例中,哈希算法包括以下之一:CRC循环冗余校验、MD5算法(信息-摘要算法5,Message-Digest Algorithm 5,简称MD5算法)、SHA算法(安全散列算法,SecureHash Algorithm,简称SHA))、SM3(密码杂凑算法)。
另一种具体的实施例中,除第一级RAM之外的其他级RAM的存储深度可以根据对应的哈希算法进行确定。除第一级RAM之外的其他级RAM的数量及存储位宽,可根据脉冲幅值的最大位宽及FPGA内部逻辑资源进行设置。
需要说明的是,所述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:所述模块均位于同一处理器中;或者,所述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的一种典型的实施例中,如图6所示,还提供了一种FPGA,该FPGA包括基于FPGA的数据读写单元701和多个异构RAM702。其中,所述基于FPGA的数据读写单元用于执行任意一种所述的基于FPGA的数据读写单元;一个所述异构RAM702包括多个级联的RAM,所述多个级联的RAM中的第一级RAM为BRAM,其他级RAM为除所述BRAM之外的RAM,所述其他级RAM为所述多个级联的RAM中除所述第一级RAM之外的RAM。
所述的FPGA包括基于FPGA的数据读写单元和多个异构RAM。其中,所述的基于FPGA的数据读写单元用于执行所述任意一种的数据读写单元。本申请的数据读写单元在对目标对象的累加计数进行存储的过程中,若目标对象在第一级RAM中的第一目标地址的存储空间不足(即出现存储数据溢出的情形),便可以基于第一目标地址和哈希算法,从其他级RAM中确定一个存储空间充足的第二目标地址,以对第二目标地址对应的累加计数进行存储。也就是说,在对目标对象的累加计数进行存储的过程中,通过哈希算法和多个级联的RAM,将大幅值的累加计数拆分为多段级联的形式进行存储。由于多个级联的RAM中,第一级RAM为采用BRAM进行搭建的,而除第一级RAM之外的其他级RAM为除BRAM之外的其他RAM进行搭建的,这样有效的节省了FPGA中内部BRAM的资源,保证了FPGA整体的成本较高的问题。在对目标对象的累加计数进行读取的过程中,本申请通过为多个级联的RAM设置标志位,这样实现了较为简单和方便地对目标对象对应的累加计数进行读取。
本申请的一个异构RAM用于对应一个采样通道(即对应一个模数转换器),以及用于对该采样通道的数字信号的脉冲幅值进行计数。也就是说,一个异构RAM对应与下文所提及的由核辐射探测器、信号调理电路以及模数转换器构成的一个采样通道。
本申请的另一种典型的实施例中,如图7所示,该多道脉冲幅度分析仪包括多个核辐射探测器400、多个信号调理电路500、多个模数转换器600、FPGA700、微处理器800以及上位机900。其中,核辐射探测器400用于测量核辐射能量并输出电压脉冲信号;信号调理电路500与所述核辐射探测器400通信,且所述核辐射探测器400与所述信号调理电路500一一对应,所述信号调理电路500用于对所述电压脉冲信号进行放大、模拟滤波以及基线恢复处理,得到脉冲信号;模数转换器600与所述信号调理电路500通信,且所述模数转换器600与所述信号调理电路500一一对应,所述模数转换器600用于对所述脉冲信号进行转换,得到所述脉冲信号对应的数字信号;FPGA700与各所述模数转换器600通信,所述FPGA700用于对所述数字信号的脉冲幅值进行写入和读取;微处理器800与所述FPGA700通信,所述微处理器800用于转发上位机下发的采样控制信号或者读脉冲幅值计数指令;所述上位机900与所述微处理器800通信,所述上位机900用于下发所述采样控制信号或者所述读脉冲幅值计数指令,以及用于对多个采样通道的脉冲幅值进行缓存和显示。
本申请的一种具体的实施例中,微处理器与上位机之间可以通过串口通信,还可以通过USB(通用串行总线,Universal Serial Bus,简称USB)通信。
在具体的实现过程中,所述信号调理电路包括整形放大电路、滤波电路以及基线恢复电路。其中,整形放大电路用于对所述电压脉冲信号进行放大处理,得到放大后的所述电压脉冲信号;滤波电路用于对放大后的所述电压脉冲信号进行滤波处理,得到滤波处理后的所述电压脉冲信号;基线恢复电路用于对滤波处理后的所述电压脉冲信号进行基线偏移处理,得到基线偏移处理后的所述电压脉冲信号。这样保证了可以得到较为理想的电压脉冲信号。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行所述任一种方法实施例中的步骤。
在一个示例性实施例中,所述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行所述任一种方法实施例中的步骤。
在一个示例性实施例中,所述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和所述处理器连接,该输入输出设备和所述处理器连接。
本实施例中的具体示例可以参考所述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,所述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (22)

1.基于FPGA的数据读写方法,其特征在于,所述FPGA包括多个级联的RAM,所述多个级联的RAM中的第一级RAM为BRAM,其他级RAM为除所述BRAM之外的RAM,所述其他级RAM为所述多个级联的RAM中除所述第一级RAM之外的至少一个RAM,所述数据读写方法包括:
若目标对象对应的所述第一级RAM中的第一目标地址的存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数并写入,所述目标对象处于所述第一目标地址对应的计数区间中,其中,每个所述RAM具有至少一个地址,每个所述地址具有对应的计数区间;
若所述第一级RAM中的第三目标地址的标志位为预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定所述标志位不为所述预定值的第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,其中,每个所述地址具有对应的标志位。
2.根据权利要求1所述的数据读写方法,其特征在于,若目标对象对应的所述第一级RAM中的第一目标地址的存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数并写入,包括:
基于所述目标对象以及所述第一级RAM中各地址对应的计数区间,确定所述目标对象在所述第一级RAM中的所述第一目标地址;
根据所述第一目标地址对应的目标计数值与所述第一级RAM的最大存储位宽的大小关系,确定所述第一目标地址是否存在存储空间不足;
在所述第一目标地址存在存储空间不足的情况下,基于所述第一目标地址和所述哈希算法,从所述其他级RAM中确定所述第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数,并将累加计数得到的计数值存储至所述第二目标地址。
3.根据权利要求2所述的数据读写方法,其特征在于,基于所述目标对象以及所述第一级RAM中各地址对应的计数区间,确定所述目标对象在所述第一级RAM中的所述第一目标地址,包括:
对模数转换器进行采样,得到数字信号,并将所述数字信号的脉冲幅值确定为所述目标对象;
基于所述目标对象以及所述第一级RAM中各地址对应的计数区间,确定所述目标对象在所述第一级RAM中的所述第一目标地址。
4.根据权利要求2所述的数据读写方法,其特征在于,根据所述第一目标地址对应的目标计数值与所述第一级RAM的最大存储位宽的大小关系,确定所述第一目标地址是否存在存储空间不足,包括:
确定所述第一目标地址对应的当前计数值与1的和,得到所述第一目标地址对应的所述目标计数值;
在所述第一目标地址对应的所述目标计数值大于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间不足;
在所述第一目标地址对应的所述目标计数值小于或者等于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间充足。
5.根据权利要求2所述的数据读写方法,其特征在于,在所述第一目标地址存在存储空间不足的情况下,基于所述第一目标地址和所述哈希算法,从所述其他级RAM中确定所述第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数,并将累加计数得到的计数值存储至所述第二目标地址,包括:
在所述第一目标地址存在存储空间不足的情况下,基于所述第一目标地址和所述哈希算法,从与所述第一级RAM级联的下一级RAM中确定当前目标地址;
若与所述第一级RAM级联的所述下一级RAM的当前目标地址存储空间仍不足的情况下,基于所述下一级RAM的当前目标地址和所述哈希算法,确定与所述下一级RAM级联的下一级RAM中的当前目标地址,直到确定出一个存储空间充足的当前目标地址,得到所述第二目标地址,所述其他级RAM中包括多个级联的所述下一级RAM;
通过确定的存储空间充足的所述第二目标地址对所述目标对象进行累加计数,并将累加计数得到的计数值存储至所述第二目标地址。
6.根据权利要求4所述的数据读写方法,其特征在于,在所述第一目标地址对应的所述目标计数值小于或者等于所述第一级RAM的最大存储位宽的情况下,确定所述第一目标地址的存储空间充足之后,所述数据读写方法还包括:
再次确定所述目标对象;
若再次确定的所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对再次确定的所述目标对象进行累加计数并写入。
7.根据权利要求1至6中任意一项所述的数据读写方法,其特征在于,所述数据读写方法还包括:
若所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则将所述第一目标地址对应的标志位更新为所述预定值。
8.根据权利要求1至6中任意一项所述的数据读写方法,其特征在于,所述数据读写方法还包括:
若所述目标对象对应的所述第一级RAM中的第一目标地址存储空间不足,则将所述第一目标地址对应的计数值置为0。
9.根据权利要求3所述的数据读写方法,其特征在于,对模数转换器进行采样,得到数字信号,并将所述数字信号的脉冲幅值确定为所述目标对象,包括:
对所述模数转换器进行采样,得到所述数字信号;
采用FIR滤波器,对所述数字信号进行滤波处理,得到经滤波处理后的所述数字信号;
将经滤波处理后的所述数字信号的脉冲幅值确定为所述目标对象。
10.根据权利要求1所述的数据读写方法,其特征在于,若所述第一级RAM中的第三目标地址的标志位为预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定所述标志位不为所述预定值的第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,包括:
依次对所述第一级RAM中的多个地址进行读取,得到多个所述第三目标地址;
确定所述第三目标地址对应的标志位是否为所述预定值;
若所述第三目标地址对应的标志位为所述预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定所述第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值。
11.根据权利要求10所述的数据读写方法,其特征在于,基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定所述第四目标地址,包括:
基于所述第三目标地址和所述哈希算法,从与所述第一级RAM级联的下一级RAM中确定当前目标地址;
若与所述第一级RAM级联的下一级RAM中的当前目标地址的标志位仍为所述预定值,则基于与所述第一级RAM级联的下一级RAM中的当前目标地址以及所述哈希算法,从与所述下一级RAM级联的下一级RAM中确定当前目标地址,直到确定出一个标志位不为所述预定值的当前目标地址,得到所述第四目标地址为止。
12.根据权利要求1所述的数据读写方法,其特征在于,所述数据读写方法还包括:
若所述第一级RAM中的所述第三目标地址对应的标志位不为所述预定值,则对所述第一级RAM中的与所述第三目标地址相邻的下一个地址进行读取,从而确定与所述第三目标地址相邻的下一个地址对应的计数区间的计数值。
13.根据权利要求1所述的数据读写方法,其特征在于,微处理器与所述FPGA通信,上位机与所述微处理器通信,所述数据读写方法还包括:
若所述第一级RAM中的所述第三目标地址的标志位不为所述预定值,将第一级RAM中的所述第三目标地址对应的所述计数值输出至所述微处理器,从而使得所述微处理器将第一级RAM中的所述第三目标地址对应的所述计数值转发至所述上位机。
14.根据权利要求1所述的数据读写方法,其特征在于,所述数据读写方法还包括:
若所述第一级RAM中的所述第三目标地址的标志位为预定值,对所述第三目标地址对应的所述计数值进行锁存。
15.根据权利要求14所述的数据读写方法,其特征在于,微处理器与所述FPGA通信,上位机与所述微处理器通信,通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,包括:
基于已锁存的所述计数值以及目标级RAM的所述第四目标地址的计数值,得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,所述目标级RAM为其他级RAM中第四目标地址的标志位不为所述预定值的一个RAM;
将所述第一级RAM的所述第三目标地址对应的计数区间的计数值发送至所述微处理器,从而使得所述微处理器将所述第一级RAM的所述第三目标地址对应的计数区间的计数值发送至所述上位机。
16.根据权利要求15所述的数据读写方法,其特征在于,基于已锁存的所述计数值以及目标级RAM的所述第四目标地址的计数值,得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,包括:
将所述目标级RAM的所述第四目标地址的计数值作为所述第一级RAM的所述第三目标地址的计数值的高位,并按照所述多个级联的RAM的级别由小到大的顺序,分别将已锁存的计数值逐级作为所述第一级RAM的所述第三目标地址对应的计数区间的计数值的低位,从而得到所述第一级RAM的所述第三目标地址对应的计数区间的计数值,所述多个级联的RAM的级别从所述第一级RAM开始逐级递减。
17.基于FPGA的数据读写单元,其特征在于,所述FPGA包括多个级联的RAM,所述多个级联的RAM中的第一级RAM为BRAM,其他级RAM为除所述BRAM之外的RAM,所述其他级RAM为所述多个级联的RAM中除所述第一级RAM之外的至少一个RAM,所述数据读写单元包括:
第一确定模块,用于若目标对象对应的所述第一级RAM中的第一目标地址的存储空间不足,则基于所述第一目标地址和哈希算法,从所述其他级RAM中确定第二目标地址,以通过所述第二目标地址对所述目标对象进行累加计数并写入,所述目标对象处于所述第一目标地址对应的计数区间中,其中,每个所述RAM具有至少一个地址,每个所述地址具有对应的计数区间;
第二确定模块,用于若所述第一级RAM中的第三目标地址的标志位为预定值,则基于所述第三目标地址和所述哈希算法,从所述其他级RAM中确定所述标志位不为所述预定值的第四目标地址,以通过读取所述第四目标地址的计数值,从而确定所述第三目标地址对应的计数区间的计数值,其中,每个所述地址具有对应的标志位。
18.FPGA,其特征在于,包括:
基于FPGA的数据读写单元,所述基于FPGA的数据读写单元用于执行权利要求1至16中任意一项所述的基于FPGA的数据读写方法;
多个异构RAM,一个所述异构RAM包括多个级联的RAM,所述多个级联的RAM中的第一级RAM为BRAM,其他级RAM为除所述BRAM之外的RAM,所述其他级RAM为所述多个级联的RAM中除所述第一级RAM之外的RAM。
19.多道脉冲幅度分析仪,其特征在于,包括:
多个核辐射探测器,用于测量核辐射能量并输出电压脉冲信号;
多个信号调理电路,与所述核辐射探测器一一对应,所述信号调理电路与对应的所述核辐射探测器通信,且所述信号调理电路用于对所述电压脉冲信号进行放大、模拟滤波以及基线恢复处理,得到脉冲信号;
多个模数转换器,与所述信号调理电路一一对应,所述模数转换器与对应的所述信号调理电路通信,所述模数转换器用于对所述脉冲信号进行转换,得到所述脉冲信号对应的数字信号;
FPGA,与各所述模数转换器通信,所述FPGA用于对所述数字信号的脉冲幅值进行写入和读取,所述FPGA为权利要求18所述的FPGA;
微处理器,与所述FPGA通信,所述微处理器用于转发上位机下发的采样控制信号或者读脉冲幅值计数指令;
所述上位机,与所述微处理器通信,所述上位机用于下发所述采样控制信号或者所述读脉冲幅值计数指令,以及用于对多个采样通道的脉冲幅值进行缓存和显示。
20.根据权利要求19所述的多道脉冲幅度分析仪,其特征在于,所述信号调理电路包括:
整形放大电路,用于对所述电压脉冲信号进行放大处理,得到放大后的所述电压脉冲信号;
滤波电路,用于对放大后的所述电压脉冲信号进行滤波处理,得到滤波处理后的所述电压脉冲信号;
基线恢复电路,用于对滤波处理后的所述电压脉冲信号进行基线偏移处理,得到基线偏移处理后的所述电压脉冲信号。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至16任意一项所述的基于FPGA的数据读写方法。
22.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至16任意一项所述的基于FPGA的数据读写方法。
CN202310997631.4A 2023-08-09 2023-08-09 基于fpga的数据读写方法及读写单元与fpga Active CN116719485B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310997631.4A CN116719485B (zh) 2023-08-09 2023-08-09 基于fpga的数据读写方法及读写单元与fpga

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310997631.4A CN116719485B (zh) 2023-08-09 2023-08-09 基于fpga的数据读写方法及读写单元与fpga

Publications (2)

Publication Number Publication Date
CN116719485A CN116719485A (zh) 2023-09-08
CN116719485B true CN116719485B (zh) 2023-11-03

Family

ID=87864751

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310997631.4A Active CN116719485B (zh) 2023-08-09 2023-08-09 基于fpga的数据读写方法及读写单元与fpga

Country Status (1)

Country Link
CN (1) CN116719485B (zh)

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101937096A (zh) * 2009-06-30 2011-01-05 同方威视技术股份有限公司 多通道多道脉冲幅度分析器
CN102353972A (zh) * 2011-07-01 2012-02-15 成都理工大学 多种模式的数字化多道谱仪
CN102545831A (zh) * 2012-01-18 2012-07-04 大唐移动通信设备有限公司 一种多通道多相滤波器中的缓存处理装置
CN105447059A (zh) * 2014-09-29 2016-03-30 华为技术有限公司 一种数据处理方法及装置
CN105745628A (zh) * 2014-06-27 2016-07-06 华为技术有限公司 一种将数据写入闪存装置的方法、闪存装置和存储系统
CN108073363A (zh) * 2017-12-28 2018-05-25 深圳市得微电子有限责任公司 数据存储方法、存储设备及计算机可读存储介质
CN109976704A (zh) * 2019-03-29 2019-07-05 西安电子科技大学 一种基于fpga的级联fifo模块的设计方法
CN110134366A (zh) * 2019-05-21 2019-08-16 合肥工业大学 一种并行写入多通道fifo的方法及装置
CN111124950A (zh) * 2018-10-30 2020-05-08 株式会社日立制作所 数据管理装置、数据管理方法和存储介质
CN111158633A (zh) * 2019-12-26 2020-05-15 电子科技大学 一种基于fpga的ddr3多通道读写控制器及控制方法
CN112615909A (zh) * 2020-12-10 2021-04-06 安徽鸿程光电有限公司 在级联存储服务器集群中存储数据的方法及相关设备
CN113342276A (zh) * 2021-06-13 2021-09-03 苏州浪潮智能科技有限公司 一种日志保存方法、系统、设备以及介质
CN114930311A (zh) * 2019-10-18 2022-08-19 阿和罗尼克斯半导体公司 Fpga重复单元之间的级联通信
CN116150041A (zh) * 2021-11-22 2023-05-23 Oppo广东移动通信有限公司 空间分配方法、装置、电子设备和计算机可读存储介质

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101937096A (zh) * 2009-06-30 2011-01-05 同方威视技术股份有限公司 多通道多道脉冲幅度分析器
CN102353972A (zh) * 2011-07-01 2012-02-15 成都理工大学 多种模式的数字化多道谱仪
CN102545831A (zh) * 2012-01-18 2012-07-04 大唐移动通信设备有限公司 一种多通道多相滤波器中的缓存处理装置
CN105745628A (zh) * 2014-06-27 2016-07-06 华为技术有限公司 一种将数据写入闪存装置的方法、闪存装置和存储系统
CN105447059A (zh) * 2014-09-29 2016-03-30 华为技术有限公司 一种数据处理方法及装置
CN108073363A (zh) * 2017-12-28 2018-05-25 深圳市得微电子有限责任公司 数据存储方法、存储设备及计算机可读存储介质
CN111124950A (zh) * 2018-10-30 2020-05-08 株式会社日立制作所 数据管理装置、数据管理方法和存储介质
CN109976704A (zh) * 2019-03-29 2019-07-05 西安电子科技大学 一种基于fpga的级联fifo模块的设计方法
CN110134366A (zh) * 2019-05-21 2019-08-16 合肥工业大学 一种并行写入多通道fifo的方法及装置
CN114930311A (zh) * 2019-10-18 2022-08-19 阿和罗尼克斯半导体公司 Fpga重复单元之间的级联通信
CN111158633A (zh) * 2019-12-26 2020-05-15 电子科技大学 一种基于fpga的ddr3多通道读写控制器及控制方法
CN112615909A (zh) * 2020-12-10 2021-04-06 安徽鸿程光电有限公司 在级联存储服务器集群中存储数据的方法及相关设备
CN113342276A (zh) * 2021-06-13 2021-09-03 苏州浪潮智能科技有限公司 一种日志保存方法、系统、设备以及介质
CN116150041A (zh) * 2021-11-22 2023-05-23 Oppo广东移动通信有限公司 空间分配方法、装置、电子设备和计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
B3G系统中MAC和PHY接口设计与实现;宁元辉;朱光喜;苏钢;谭力;;华中科技大学学报(自然科学版)(第07期);第5-9页 *

Also Published As

Publication number Publication date
CN116719485A (zh) 2023-09-08

Similar Documents

Publication Publication Date Title
CN107133011B (zh) 一种示波记录仪的多通道数据存储方法
CN105301627B (zh) 一种能谱分析方法、能谱分析系统及伽马射线探测系统
GB2426084A (en) Updating data in a dual port memory
CN101937096A (zh) 多通道多道脉冲幅度分析器
CN110704714A (zh) pcap文件的快速数据索引方法及装置
CN104077492A (zh) 一种基于fpga的采样数据内插方法
US11112428B2 (en) Multilevel triggering system for outputting complex trigger signal
EP1412764A1 (en) System and method for waveform processing
CN116719485B (zh) 基于fpga的数据读写方法及读写单元与fpga
US12014477B2 (en) Image processing method and device, image detecting method and system, storage medium
CN116827971B (zh) 基于区块链的碳排放数据存储与传输方法、装置与设备
CN109426598B (zh) 一种硬盘状态指示灯控制方法及装置
KR101957660B1 (ko) 채널별 트리거 설정모드를 지원하는 다채널 오실로스코프 및 그 제어방법
CN110263417B (zh) 一种时序特性获取方法、装置及电子设备
US7277820B2 (en) Apparatus and method for generating a complementary cumulative distribution function (CCDF) curve
US20170180226A1 (en) Memory array to generate a data eye diagram
CN115763217A (zh) 一种四极杆质谱仪的质量轴校正方法及装置
CN106936435B (zh) 一种快速确定adc拼合顺序的方法
US10914760B2 (en) Changing the manner in which an electronic test instrument filters an input signal based on a characteristic of the electronic test instrument
CN110572225B (zh) 接收机直流失调监测系统、方法、电子设备及存储介质
Velure A digital signal processor for particle detectors: design, verification and testing
CN112629683B (zh) 一种单光子计数装置及其方法
US11748444B2 (en) Device and method for processing data samples
CN117389129A (zh) 一种在时间测量系统中降低死时间的装置
CN111025010B (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