CN113377290A - 基于axi协议的具有深存储和双捕获功能的数据采集装置 - Google Patents
基于axi协议的具有深存储和双捕获功能的数据采集装置 Download PDFInfo
- Publication number
- CN113377290A CN113377290A CN202110620218.7A CN202110620218A CN113377290A CN 113377290 A CN113377290 A CN 113377290A CN 202110620218 A CN202110620218 A CN 202110620218A CN 113377290 A CN113377290 A CN 113377290A
- Authority
- CN
- China
- Prior art keywords
- data
- axi
- module
- address
- addr
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
Abstract
本发明公开了一种基于AXI协议的具有深存储和双捕获功能的数据采集装置,通过设置深存储模块,其中的AXI封装模块将采集到的数据封装成AXI写请求包,通过AXI互联体模块发送至MIG核,送入DDR3模块中对应DDR存储空间进行存储,以此过程中采用DDR地址计算模块对深存储空间地址进行监测,当触发信号来临时利用触发地址修正参数得到真实触发地址,同样AXI封装模块封装成AXI写请求包并存入DDR3模块中对应DDR存储空间;在需要进行数据读取时,由双捕获模块中的波形概貌读取模块和波形细节读取模块根据预设参数,在同一深存储空间中采用不同分辨率读取数据并上传至上位机进行显示。本发明采用“MIG核+AXI总线”的结构,结合AXI协议,实现数据采集装置的深存储和双捕获功能。
Description
技术领域
本发明属于数据采集技术领域,更为具体地讲,涉及一种基于AXI协议的具有深存储和双捕获功能的数据采集装置。
背景技术
深存储功能是一台示波记录仪必备的功能,在现今设计示波记录仪深存储功能时,基本使用DDR3作为存储容器,对于DDR3的数据存储现有技术普遍采用“MIG核+数据FIFO/地址FIFO”的结构,该技术需要严格控制写入两个FIFO中数据和地址的比例才能实现严格对齐,特别是当数据个数与地址个数的比例不满足MIG核配置参数时,容易出现数据丢点或无法实现指定数据存储指定地址。另外,由于MIG IP核仅支持一个写数据端口和一个读数据端口,针对多速率数据存储的情况,现有数据无法实时独立存储多速率数据,导致DDR3中存在大量冗余数据(高速率存储)或无法存储波形更多细节(低速率存储)。
现有的实现方法虽然解决了在波形深存储过程中,通道数目可控的问题,但是在通道数据位宽低于DDR3数据位宽时,现有技术通常采用将相同采样率下多通道或多个周期的数据拼合在一起的方法,使其数据位宽达到多个DDR3突发长度的数据位宽,设计复杂,移植性差,并且并未解决不同采样率下多通道数据并行存储的问题。而且在现有的深存储和双捕获技术中,基本采用将数据深存储至DDR3中,再根据时基选择,将大容量的波形数据从DDR3中输出至FPGA中,根据选择的时基进行后抽,并将处理后的数据缓存至两种FIFO,即细节波形FIFO和概貌波形FIFO中,分别用于存储两种捕获采样率:高采样率用于存储波形细节,低采样率用于收集和显示趋势数据。也就是说,在现有技术中,需要花费大量时间将DDR3中连续的数据进行读取后,再进行后抽处理,接着使用FIFO对后抽处理的数据进行缓存,消耗了更多的FPGA资源,而且在对两种采样率数据进行显示比对时,由于DDR3读取的数据量为2的幂次,而根据时基档进行后抽的系数为1、2和5的公倍数关系,容易出现错位情况,因此容易出现数据不对标的问题,还需要进一步改进。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于AXI协议的具有深存储和双捕获功能的数据采集装置,采用“MIG核+AXI总线”的结构,利用AXI协议通道独立的特点,极大地降低了现有技术实现数据存储的设计难度,除实现基本的深存储之外,实现多分辨率多通道并行存储,同时双捕获显示,并解决双捕获显示中数据不对标的问题。
为了实现上述发明目的,本发明基于AXI协议的具有深存储和双捕获功能的数据采集装置包括N个信号采集卡、DDR3模块、N个数据接收接口、N个触发模块、N个深存储模块、AXI互联体模块、MIG核、双捕获模块、数据上传接口和上位机,N表示采集通道数量,其中,N个数据接收接口、N个触发模块、N个深存储模块、AXI互联体模块、MIG核、双捕获模块和数据上传接口构成数据采集卡并在FPGA中实现;
每个信号采集卡用于对对应通道的输入信号进行采集,将采集得到的信号发送给对应的数据接收接口;
DDR3模块用于对采集数据进行深存储,用户通过上位机在DDR3模块中设置N片相同大小的DDR存储空间,每个DDR存储空间用于对对应通道的采集数据进行深存储,上位机在设置好DDR存储空间后,将每片DDR存储空间的基地址BASE_ADDRDS发送至对应采集通道深存储模块中的DDR地址计算模块;
每个数据接收接口用于接收对应信号采集卡对输入信号采集得到的采样数据,然后发送至触发模块和对应通道深存储模块中的数据采集模块;
每个触发模块用于在接收到对应通道的采样数据后,根据用户设置的触发通道和触发参数生成触发信号并发送给对应通道深存储模块中的DDR地址计算模块;
每个深存储模块用于将接收到的数字信号通过AXI互联体模块和MIG核送入DDR3模块中进行存储;深存储模块包括数据采集模块、深存储控制模块、AXI封装模块、DDR地址计算模块和触发地址存储模块,其中:
数据采集模块用于将接收到的采样数据转换至深存储模块的工作时钟域,将转换得到的数据DS_data和对应的数据有效信号DS_data_valid发送至AXI封装模块;
深存储控制模块用于接收上位机设置的深存储控制参数,包括深存储空间基地址BASE_ADDRDS、深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision,将深存储存储空间的基地址BASE_ADDRDS转发至AXI封装模块,将深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision转发至DDR地址计算模块;
AXI封装模块在接收到来自数据采集模块的波形数据DS_data及其数据有效信号DS_data_valid时,将波形数据DS_data封装为AXI写请求包,将从深存储控制模块接收到的深存储存储空间的基地址BASE_ADDRDS作为起始地址,将AXI写请求包和起始地址通过AXI互联体模块发送至MIG核,送入DDR3模块中对应DDR存储空间进行存储;AXI封装模块在从DDR地址计算模块接收到触发地址上传指令时,将触发地址存储模块中的触发地址数据封装为AXI写请求包,将从DDR地址计算模块接收的深存储空间的最大地址max_addrDS作为起始地址,将AXI写请求包和起始地址通过AXI互联体模块发送至MIG核,送入DDR3模块中对应DDR存储空间进行存储;
DDR地址计算模块从深存储控制模块接收深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision,根据深存储容量点数storage_depth计算出该深存储空间的最大地址max_addrDS并发送给AXI封装模块和上位机,计算公式如下:
max_addrDS=storage_depth×AXI_DATA_WIDTHDS/8
当DDR地址计算模块接收到触发模块发送的有效触发信号后,将对应的触发数据写入地址write_addr经过预触发和触发地址修正参数trig_loc_revision修正后得到真实触发地址trig_addr,并将发送至触发地址存储模块;计算真实触发地址trig_addr的具体方法如下:
根据深存储预触发深度点数pre_trig_depth计算出预触发存储深度地址offset_pre_addr,计算公式如下:
offset_pre_addr=pre_trig_depth×AXI_DATA_WIDTHDS/8
在AXI封装模块向DDR3模块写入数据的同时,DDR地址计算模块实时记录当前写入数据对应的深存储空间地址write_addr,每当在AXI写数据通道完成1次突发长度的写数据操作,write_addr步进AXI_DATA_WIDTHDS/8;当深存储空间地址超出最大地址max_addrDS,则返回至初始地址0x0重新开始步进;并且DDR地址计算模块对写入DDR3模块的数据量进行监测,当满足write_addr≥offset_pre_addr时,深存储模块完成预触发存储工作,DDR地址计算模块进入对触发信号的监测;
当DDR地址计算模块监测到触发信号到来,利用触发地址修正参数trig_loc_revision对触发数据对应的写入地址trig_write_addr进行修正,计算出的真实触发地址trig_addr,计算公式如下:
trig_addr=trig_write_addr-trig_loc_revision×AXI_DATA_WIDTHDS/8
然后根据真实触发地址trig_addr和预触发存储深度地址offset_pre_addr,计算出整个深存储数据在DDR3模块中的有效数据起始地址DS_begin_addr并发送给上位机,计算方法如下:
当trig_addr≥offset_pre_addr时,有效数据起始地址DS_begin_addr的计算公式如下:
DS_begin_addr=trig_addr-offset_pre_addr
当trig_addr<offset_pre_addr时,有效数据起始地址DS_begin_addr的计算公式如下:
DS_begin_addr=max_addrDS-(offset_pre_addr-trig_addr)
将有效数据起始地址DS_begin_addr的低2位置0,得到有效数据读取起始地址DS_trans_begin_addr并发送给上位机;
触发地址存储模块对接收到的真实触发地址trig_addr进行存储,在触发深存储完毕后,触发地址存储模块将所存储的真实触发地址数量DS_fifo_trig_wr_num发送至上位机,并向AXI封装模块发送触发地址上传指令;
AXI互联体模块用于实现深存储模块、双捕获模块与DDR3模块之间基于AXI协议的互联;
MIG核用于对DDR3模块的数据写入和读取进行控制;
双捕获模块用于实现对DDR3模块中深存储空间内的数据进行读取,双捕获模块包括波形概貌读取模块和波形细节读取模块,波形概貌读取模块用于根据从上位机接收的两个采样率对应的波形概貌读取参数,通过AXI互联体模块和MIG核对DDR3模块中深存储空间内的数据进行抽点读取;波形细节读取模块用于根据上位机的参数通过AXI互联体模块和MIG核对DDR3模块中深存储空间内的数据进行连续读取,并通过数据上传接口返回至上位机进行存储或显示;
数据上传接口用于连接上位机,将双捕获模块读取的数据反馈至上位机;
上位机用于对数据深存储和数据读取进行控制,在数据深存储时接收用户设置的DDR存储空间划分方案对DDR3模块进行设置,接收用户设置的深存储空间基地址BASE_ADDRDS、深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision并转发至对应的深存储控制模块;在数据读取时,根据深存储模块中DDR地址计算模块发送的深存储空间的最大地址max_addrDS、有效数据起始地址DS_begin_addr和有效数据读取起始地址DS_trans_begin_addr,以及触发地址存储模块发送的真实触发地址数量DS_fifo_trig_wr_num,计算两个采样率下波形概貌读取的相关参数,并发送给波形概貌读取模块;将用户设置的波形细节读取的相关参数发送给波形细节读取模块。
本发明基于AXI协议的具有深存储和双捕获功能的数据采集装置,通过设置深存储模块,其中的AXI封装模块将采集到的数据封装成AXI写请求包,通过AXI互联体模块发送至MIG核,送入DDR3模块中对应DDR存储空间进行存储,以此过程中采用DDR地址计算模块对深存储空间地址进行监测,当触发信号来临时利用触发地址修正参数得到真实触发地址,同样AXI封装模块封装成AXI写请求包并存入DDR3模块中对应DDR存储空间;在需要进行数据读取时,由双捕获模块中的波形概貌读取模块和波形细节读取模块根据预设参数,在同一深存储空间中采用不同分辨率读取数据并上传至上位机进行显示。
本发明具有以下有益效果:
1)本发明采用“MIG核+AXI总线”的结构,利用AXI协议通道独立的特点,极大地降低了现有技术实现数据存储的设计难度;
2)本发明基于AXI协议实现深存储功能,除了实现基本的深存储功能,还能实现多分辨率多通道并行存储的功能;在实现了深存储功能的基础上,通过设置AXI读事务,对DDR3模块中深存储空间中的数据进行不同分辨率读取,以实现双捕获功能;
3)本发明中实现双捕获功能需要读取的数据与深存储功能写入的波形数据都是存放在相同的DDR3深存储空间中,本发明能够精确的从相关DDR3地址中提取出数据,并且对多个触发信号对应的触发数据在深存储空间存储的位置进行精确定位,从而保证本发明能够稳定地进行双捕获显示,并能够解决之前双捕获功能中数据不对标的问题。
附图说明
图1是本发明基于AXI协议的具有深存储和双捕获功能的数据采集装置的具体实施方式结构图;
图2是本实施例中DDR存储空间划分的示例图;
图3是本发明中深存储模块的结构图;
图4是本发明中有效数据起始地址两种情况的位置示意图;
图5是本实施例中深存储模块的状态机流程图;
图6是初始化状态IDLE_s下深存储空间示意图;
图7是预触发状态PRE_TRIG_s下深存储空间示意图;
图8是等待触发状态WAIT_TRIG_s下深存储空间示意图;
图9是后触发状态WRITE_TO_FULL_s下深存储空间示意图;
图10是本实施例中写满有效数据的深存储空间示意图;
图11是写入触发地址状态WRITE_TRIG_ADDR_s下深存储空间示意图;
图12是本实施例中低采样率波形的地址选取示意图;
图13是本实施例中高采样率波形的地址选取示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
实施例
图1是本发明基于AXI协议的具有深存储和双捕获功能的数据采集装置的具体实施方式结构图。如图1所示,本发明基于AXI(Advanced eXtensible Interface,高级可扩展接口)协议的具有深存储和双捕获功能的数据采集装置包括N个信号采集卡1、DDR3模块2、N个数据接收接口3、N个触发模块4、N个深存储模块5、AXI互联体模块6、MIG核7、双捕获模块8、数据上传接口9和上位机10,N表示采集通道数量,其中,N个数据接收接口3、N个触发模块4、N个深存储模块5、AXI互联体模块6、MIG核7、双捕获模块8和数据上传接口9构成数据采集卡并在FPGA中实现。下面分别对每个模块进行详细说明。
每个信号采集卡1用于对对应通道的输入信号进行采集,将采集得到的信号发送给对应的数据接收接口3。信号采集卡是一种常用的信号处理装置,对于输入信号的采集处理通常包括信号调理、数模转换等,具体过程在此不再赘述。
DDR3模块2用于对采集数据进行深存储。为了实现对N个采集通道的采集数据的深存储,用户通过上位机10在DDR3模块2中设置N片相同大小的DDR存储空间,每个DDR存储空间用于对对应通道的采集数据进行深存储,上位机在设置好DDR存储空间后,将每片DDR存储空间的基地址BASE_ADDRDS发送至对应采集通道深存储模块中的DDR地址计算模块。在实际应用中根据所需存储空间的大小,配置n个DDR芯片来组成DDR3模块2。
图2是本实施例中DDR存储空间划分的示例图。如图2所示,本实施例中,DDR3模块2包含3片型号为MT41K512M8RH-107IT的DDR3芯片,选用2片DDR3芯片作为深存储总存储空间,而本实施例中采集通道数量为4,因此需要将2片DDR3芯片平均分为4片DDR存储空间。总深存储空间的存储容量为1GB,则每片DDR存储空间的存储容量为256MB。以DDR存储空间1为例,每片DDR存储空间的地址存储范围为0x8000_0000~0x8FFF_FFFF,则DDR存储空间1所对应的基地址BASE_ADDRDS为0x8000_0000。
此外,在本发明中,每个采集通道的DDR存储空间除了要对采集数据进行深存储之外,还需要存储触发地址,因此在设置DDR存储空间时,需要考虑这两部分的容量。
每个数据接收接口3用于接收对应信号采集卡1对输入信号采集得到的采样数据,然后发送至触发模块4和对应通道深存储模块5中的数据采集模块51。
每个触发模块4用于在接收到对应通道的采样数据后,根据用户设置的触发通道和触发参数生成触发信号并发送给对应通道深存储模块5中的DDR地址计算模块54。触发模块4是一种基本的数据采集子模块,且不是本发明的重点,其具体工作过程在此不再赘述。
每个深存储模块5用于将接收到的数字信号通过AXI互联体模块6和MIG核7送入DDR3模块2中对应DDR存储空间进行存储。图3是本发明中深存储模块的结构图。如图3所示,本发明中深存储模块5包括数据采集模块51、深存储控制模块52、AXI封装模块53、DDR地址计算模块54和触发地址存储模块55,下面分别对各个模块的工作过程进行详细说明。
数据采集模块51用于将接收到的采样数据转换至深存储模块的工作时钟域,将转换得到的数据DS_data和对应的数据有效信号DS_data_valid发送至AXI封装模块53。一般来说,当数据采集模块51接收的采样数据为多通道数据时,在转换时钟域的过程中,还需要对所有通道的数据进行合并为一个通道。
深存储控制模块52用于接收上位机10设置的深存储控制参数,包括深存储空间基地址BASE_ADDRDS、深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision,将深存储存储空间的基地址BASE_ADDRDS转发至AXI封装模块53,将深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision转发至DDR地址计算模块54。
AXI封装模块53在接收到来自数据采集模块51的波形数据DS_data及其数据有效信号DS_data_valid时,将波形数据DS_data封装为AXI写请求包,将从深存储控制模块52接收到深存储存储空间的基地址BASE_ADDRDS作为起始地址,将AXI写请求包和起始地址通过AXI互联体模块6发送至MIG核7,送入DDR3模块2中对应DDR存储空间进行存储。AXI封装模块53在从DDR地址计算模块接收到触发地址上传指令时,将触发地址存储模块55中的触发地址数据封装为AXI写请求包,将从DDR地址计算模块54接收的深存储空间的最大地址max_addrDS作为起始地址,将AXI写请求包和起始地址通过AXI互联体模块6发送至MIG核7,送入DDR3模块2中对应DDR存储空间进行存储。当触发地址数据发送完毕,则AXI封装模块53完成所有AXI写事务。
本实施例中,AXI封装模块43对波形数据DS_data进行封装发送的具体方法如下:
AXI封装模块53首先采用以下公式计算AXI地址步进值BURST_STEP_ADDR:
其中,AXI_BLENDS表示AXI写请求包的突发长度,可以根据实际需要设置,本实施例中设置AXI_BLENDS为32。AXI_DATA_WIDTHDS表示AXI接口的写通道数据AXI_WDATA的位宽,为了满足AXI协议的需求和数据采集模块采集的波形数据位宽需求,AXI_DATA_WIDTHDS需要满足以下条件:
AXI_DATA_WIDTHDS=2m(m≥5)
AXI封装模块53将深存储存储空间的基地址BASE_ADDRDSS传递至AXI写地址通道的AXI_AWADDR(地址偏移量),当AXI写地址通道握手成功后,AXI写地址通道将会发起起始地址为AXI_AWADDR,突发长度为AXI_BLENDS的AXI写事务请求,当M=AXI_DATA_WIDTHDS时,AXI封装模块53直接将数据DS_data送至AXI写数据通道赋值给写通道数据AXI_WDATA,将数据有效信号DS_data_valid传递至写通道数据AXI_WDATA的数据有效信号AXI_WVALID;当M<AXI_DATA_WIDTHDS时,AXI封装模块53将数据DS_data从高位扩展至AXI_DATA_WIDTHDS位,扩展的高位设置为0,再将扩展后的数据DS_data′送至AXI写数据通道赋值给写通道数据AXI_WDATA,将数据有效信号DS_data_valid传递至写通道数据AXI_WDATA的数据有效信号AXI_WVALID。AXI封装模块53将写通道数据AXI_WDATA及其数据有效信号AXI_WVALID通过AXI互联体模块6发送至MIG核7,送入DDR3模块2中对应DDR存储空间进行存储。然后令AXI_AWADDR步进BURST_STEP_ADDR个地址,为下一次AXI写地址通道握手做准备。
本实施例中,AXI封装模块53为了节省FPGA资源和方便模块控制,将AXI读地址通道和AXI读数据通道删去,仅保留AXI写地址通道,AXI写数据通道和AXI写响应通道,减少了AXI互联体模块7在综合布线时消耗的资源。
DDR地址计算模块54从深存储控制模块52接收深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision,根据深存储容量点数storage_depth计算出该深存储空间的最大地址max_addrDS并发送给AXI封装模块53和上位机10,计算公式如下:
max_addrDS=storage_depth×AXI_DATA_WIDTHDS/8
当DDR地址计算模块54接收到触发模块发送的有效触发信号后,将对应的触发数据写入地址write_addr经过预触发和触发地址修正参数trig_loc_revision修正后得到真实触发地址trig_addr,并将发送至触发地址存储模块55。计算真实触发地址trig_addr的具体方法如下:
根据深存储预触发深度点数pre_trig_depth计算出预触发存储深度地址offset_pre_addr,计算公式如下:
offset_pre_addr=pre_trig_depth×AXI_DATA_WIDTHDS/8
在AXI封装模块53向DDR3模块2写入数据的同时,DDR地址计算模块54实时记录当前写入数据对应的深存储空间地址write_addr,每当在AXI写数据通道完成1次突发长度的写数据操作,write_addr步进AXI_DATA_WIDTHDS/8。深存储空间地址write_addr以BASE_ADDRDS为基地址,在深存储空间地址范围([0x0,DS_max_addr])内循环,当深存储空间地址超出最大地址max_addrDS,则返回至初始地址0x0重新开始步进。并且DDR地址计算模块54对写入DDR3模块1的数据量进行监测,当满足write_addr≥offset_pre_addr时,深存储模块5完成预触发存储工作,DDR地址计算模块54进入对触发信号的监测。
当DDR地址计算模块54监测到触发信号到来,由于触发信号与对应的触发数据之间存在时间差,因此DDR地址计算模块54需要利用触发地址修正参数trig_loc_revision对触发数据对应的写入地址trig_write_addr进行修正,计算出的真实触发地址trig_addr,计算公式如下:
trig_addr=trig_write_addr-trig_loc_revision×AXI_DATA_WIDTHDS/8
触发地址修正参数trig_loc_revision是根据实际需要设置,例如本实施例中触发模块采用最简单的触发方式,即上升沿/下降沿触发,在对3个连续的有效数据进行判断后产生触发信号,因此将预触发和触发地址修正参数trig_loc_revision设置为3。
然后根据真实触发地址trig_addr和预触发存储深度地址offset_pre_addr,计算出整个深存储数据在DDR3模块2中的有效数据起始地址DS_begin_addr并发送给上位机10,计算方法如下:
由于深存储数据的地址在深存储空间地址范围内循环,因此真实触发地址trig_addr存在两种情况:trig_addr≥offset_pre_addr和trig_addr<offset_pre_addr。图4是本发明中有效数据起始地址两种情况的位置示意图。如图4所示,当trig_addr≥offset_pre_addr时,有效数据起始地址DS_begin_addr的计算公式如下:
DS_begin_addr=trig_addr-offset_pre_addr
当trig_addr<offset_pre_addr时,有效数据起始地址DS_begin_addr的计算公式如下:
DS_begin_addr=max_addrDS-(offset_pre_addr-trig_addr)
将有效数据起始地址DS_begin_addr的低2位置0,得到有效数据读取起始地址DS_trans_begin_addr并发送给上位机10。这是因为一个AXI包的数据为256byte,所以读取时地址是跳变的,如此生成的有效数据读取起始地址DS_trans_begin_addr是和触发信号到时来对应的AXI写请求包的突地起始地址AXI_AWADDR相等。
触发地址存储模块55对接收到的真实触发地址trig_addr进行存储,在触发深存储完毕后,触发地址存储模块55将所存储的真实触发地址数量DS_fifo_trig_wr_num发送至上位机,并向AXI封装模块53发送触发地址上传指令。
本实施例中,为了更好对深存储模块的工作过程进行控制,采用状态机作为对深存储模块5进行工作控制。图5是本实施例中深存储模块的状态机流程图。如图5所示,本实施例中深存储模块的状态机包括6个状态:初始化状态IDLE_s,预触发状态PRE_TRIG_s,等待触发状态WAIT_TRIG_s,后触发状态WRITE_TO_FULL_s,写入触发地址状态WRITE_TRIG_ADDR_s,深存储完成状态DONE_s。
当深存储模块5进行复位后,即进入初始化状态IDLE_s,此时深存储控制模块52接收用户通过上位机10设置的深存储控制参数并转发给其他各个模块,DDR地址计算模块计算深存储空间的最大地址max_addrDS并发送给AXI封装模块53和上位机10,为深存储工作的开展做准备。当深存储模块5接收到上位机10发送的深存储开始工作标志,状态机进入预触发状态PRE_TRIG_s。图6是初始化状态IDLE_s下深存储空间示意图。
在预触发状态PRE_TRIG_s下,数据采集模块51将采集到的波形数据DS_data和对应的数据有效信号DS_data_valid发送至AXI封装模块53。AXI封装模块53以深存储空间基地址BASE_ADDRDS为基地址,0x0为初始地址,将数据DS_data和数据有效信号DS_data_valid作为需要写入深存储空间的数据,封装为若干个AXI写请求包通过AXI互联体模块6发送至MIG核7,进而写入DDR3模块2的深存储空间。在写入DDR3模块2中的数据满足深存储预触发深度点数pre_trig_depth时,状态机从预触发状态PRE_TRIG_s进入等待触发状态WAIT_TRIG_s。图7是预触发状态PRE_TRIG_s下深存储空间示意图。
在等待触发状态WAIT_TRIG_s下,AXI封装模块53继续将数据采集模块51发送的数据DS_data和数据有效信号DS_data_valid封装为AXI写请求包,通过AXI互联体模块6发送至MIG核7,写入DDR3模块2的深存储空间。当触发信号到来,进入后触发状态WRITE_TO_FULL_s。图8是等待触发状态WAIT_TRIG_s下深存储空间示意图。
在后触发状态WRITE_TO_FULL_s下,AXI封装模块53继续将数据采集模块51发送的数据DS_data和数据有效信号DS_data_valid封装为AXI写请求包,通过AXI互联体模块6发送至MIG核7,写入DDR3模块2的深存储空间。而当每一次触发信号到来,DDR地址计算模块54利用触发地址修正参数trig_loc_revision对触发数据对应的写入地址trig_write_addr进行修正,计算出的真实触发地址trig_addr,然后根据真实触发地址trig_addr和预触发存储深度地址offset_pre_addr,计算出整个深存储数据在DDR3模块2中的有效数据起始地址DS_begin_addr和有效数据读取起始地址DS_trans_begin_addr。当AXI写地址通道的AXI_AWADDR和DS_trans_begin_addr相等时,表示空存储空间内已存满了有效数据,进入写入触发地址状态WRITE_TRIG_ADDR_s。图9是后触发状态WRITE_TO_FULL_s下深存储空间示意图。
图10是本实施例中写满有效数据的深存储空间示意图。如图10所示,在深存储空间内,从有效数据读取起始地址ddr_DS_begin_addr开始到max_addrDS为止的深存储空间存储的是第1段深存储数据,其字节大小记为DS_space_1从初始地址到max_addrDS为止的深存储空间存储的是第2段深存储数据,其字节大小记为DS_space_2,因此有:
DS_space_1=(max_addrDS-ddr_DS_begin_addr)×8
DS_space_2=(DS_trans_begin_addr-0x0)×8
将两段数据组合起来,即构成连续且完整的深存储数据,则有:
在写入触发地址状态WRITE_TRIG_ADDR_s下,触发地址存储模块55将所存储的真实触发地址数量DS_fifo_trig_wr_num发送至上位机,并向AXI封装模块53发送触发地址上传指令;AXI封装模块53将触发地址存储模块55中的触发地址数据封装为AXI写请求包,将从DDR地址计算模块54接收的深存储空间的最大地址max_addrDS作为起始地址,将AXI写请求包和起始地址通过AXI互联体模块6发送至MIG核7,送入DDR3模块2中对应DDR存储空间进行存储。当所有触发地址数据发送完毕,进入深存储完成状态DONE_s。图11是写入触发地址状态WRITE_TRIG_ADDR_s下深存储空间示意图。
在深存储完成状态DONE_s下,代表深存储写入任务完成,深存储空间写满了有效数据及触发地址数据,深存储模块5将该状态反馈至上位机10,通知上位机10进行深存储读取任务或双捕获读取任务,然后等待进入下一轮深存储工作。
AXI互联体模块6用于实现深存储模块5、双捕获模块8与DDR3模块2之间基于AXI协议的互联。AXI互联体模块是AXI协议中的常用模块,其具体原理和工作过程在此不再赘述。
MIG核7用于对DDR3模块2的数据写入和读取进行控制。MIG核是对DDR3模块进行读写控制的常用模块,其具体原理和工作过程在此不再赘述。
双捕获模块8用于实现对DDR3模块中深存储空间内的数据进行读取,双捕获模块包括波形概貌读取模块81和波形细节读取模块82,波形概貌读取模块81用于根据从上位机10接收的两个采样率对应的波形概貌读取参数,通过AXI互联体模块和MIG核对DDR3模块中深存储空间内的数据进行抽点读取。波形细节读取模块82用于根据上位机的参数通过AXI互联体模块6和MIG核7对DDR3模块中深存储空间内的数据进行连续读取,通过数据上传接口9返回至上位机进行存储或显示。
本发明中不同于常规双捕获模块采用两个采样率进行数据保存,而是对于同一深存储空间内的数据采用不同抽点系数进行读取,可以有效节约数据存储资源,且在采样率调整方面更具有灵活性。
下面分别说明本实施例中波形概貌读取模块81和波形细节读取模块82在进行波形概貌读取和波形细节读取的具体方法。
对于波形概貌读取模块81而言,当波形概貌读取模块81从上位机接收波形概貌读取指令,波形概貌读取指令包括需要读取的DDR存储空间基地址BASE_ADDRscreen、需要读取的DDR读起始地址start_addrscreen、读最大地址max_addrscreen、读取数据长度screen_length和数据抽点系数decimation_coeffscreen,然后采用如下公式计算地址步进值rd_burst_step_addr:
rd_burst_step_addr=decimation_coeffscreen×AXI_DATA_WIDTHRD/8
波形概貌读取模块81向AXI互联体模块6发送DDR存储空间基地址BASE_ADDRscreen以选择对应DDR存储空间,然后向AXI互联体模块6发起突发长度固定为1、AXI读数据位宽为AXI_DATA_WIDTHRD的AXI读事务请求,且AXI读事务请求的数量为screen_length,其中第一个AXI读事务请求对应的读地址AXI_ARADDR为读起始地址start_addrscreen,每当AXI读地址通道握手成功后,则令读地址AXI_ARADDR步进rd_burst_step_addr个地址,为下一次AXI读地址通道握手做准备。当读地址AXI_ARADDR超出读最大地址max_addrscreen时,则回滚至初始地址0x0继续步进。波形概貌读取模块81将从AXI互联体模块5接收到的读取数据通过数据上传接口返回至上位机进行存储或显示。
可见,本实施例中通过读地址的步进实现了抽点读取功能。此外,由于存在N个深存储模块,为了控制方便,取N个深存储模块中AXI封装模块的写通道数据位宽AXI_DATA_WIDTHDS中的最大值作为AXI读数据位宽AXI_DATA_WIDTHRD。
对于波形细节读取模块82而言,波形细节读取模块62从上位机10接收波形细节读取指令,波形细节读取指令包括需要读取的DDR存储空间基地址BASE_ADDRmass、需要读取的DDR读起始地址start_addrmass、AXI读请求的读突发长度AXI_BLENRD、AXI读请求包数量pkg_num,然后采用如下公式计算地址步进值mass_burst_step_addr:
mass_burst_step_addr=INTER_DATA_WIDTHRD×AXI_BLENRD/8
其中,INTER_DATA_WIDTHRD表示数据上传接口的数据位宽,即波形细节读取时,读取数据位宽与数据上传接口的数据位宽相同。
波形细节读取模块82向AXI互联体模块6发送DDR存储空间基地址BASE_ADDRmass以选择对应DDR存储空间,然后向AXI互联体模块6发起突发长度固定为AXI_BLENRD、AXI读数据位宽为INTER_DATA_WIDTHRD的AXI读事务请求,且AXI读事务请求的数量为pkg_num,其中第一个AXI读事务请求对应的读地址AXI_ARADDR为读起始地址start_addrmass,每当AXI读地址通道握手成功后,则令读地址AXI_ARADDR步进mass_burst_step_addr个地址,为下一次AXI读地址通道握手做准备。波形细节读取模块82将从AXI互联体模块6接收到的读取数据通过数据上传接口9返回至上位机10进行存储或显示。
数据上传接口9用于将双捕获模块8读取的数据反馈至上位机10。
上位机10用于对数据深存储和数据读取进行控制,在数据深存储时接收用户设置的DDR存储空间划分方案对DDR3模块2进行设置,接收用户设置的深存储空间基地址BASE_ADDRDS、深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision并转发至对应的深存储控制模块42。在数据读取时,根据深存储模块4中DDR地址计算模块44发送的深存储空间的最大地址max_addrDS、有效数据起始地址DS_begin_addr和有效数据读取起始地址DS_trans_begin_addr,以及触发地址存储模块发送的真实触发地址数量DS_fifo_trig_wr_num,计算两个采样率下波形概貌读取的相关参数,并发送给波形概貌读取模块;将用户设置的波形细节读取的相关参数发送给波形细节读取模块。
在本实施例中,上位机10采用如下方法上位机采用如下方法确定两个不同采样率下波形概貌读取的参数,并根据两套参数生成两个波形概貌读取指令发送给波形概貌读取模块81:
记两个数据抽点系数中低采样率对应的数据抽点系数为decimation_coeffscreen_L、高采样率对应的数据抽点系数为decimation_coeffscreen_H;
首先选择需要读取的DDR存储空间,确定低采样率对应的DDR存储空间基地址BASE_ADDRscreen_L和读最大地址max_addrscreen_L:
BASE_ADDRscreen_L=BASE_ADDRDS
max_addrscreen_L=max_addrDS
采用如下公式计算地址步进值rd_burst_step_addrL:
rd_burst_step_addrL=decimation_coeffscreen_L×AXI_DATA_WIDTHRD/8
设置低采样率下的读取数据长度screen_lengthL,采用如下方法确定需要读取的DDR读起始地址start_addrscreen_L:
图12是本实施例中低采样率波形的地址选取示意图。如图12所示,对于读取数据长度screen_lengthL的数据,以真实触发地址trig_addr为中心,将显示点数为screen_lengthL的显示界面划分为预触发界面和后触发界面,其长度分别为pre_screen_lengthL和pos_screen_lengthL,采用以下公式计算得到DDR读起始地址start_addrscreen_L:
start_addrscreen_L=trig_addr-(rd_burst_step_addrL×pre_screen_lengthL)
图13是本实施例中高采样率波形的地址选取示意图。如图13所示,高采样率波形是低采样率波形中的波形片段。为了使得两个波形数据对标,本实施例中采用以下方法计算高采样率对应的波形概貌读取参数:
确定高采样率对应的DDR存储空间基地址BASE_ADDRscreen_H和读最大地址max_addrscreen_H:
BASE_ADDRscreen_H=BASE_ADDRDS
max_addrscreen_H=max_addrDS
采用如下公式计算地址步进值rd_burst_step_addrH:
rd_burst_step_addrH=decimation_coeffscreen_H×AXI_DATA_WIDTHRD/8
设置高采样率下的读取数据长度screen_lengthH,采用如下方法确定需要读取的DDR读起始地址start_addrscreen_H:
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (5)
1.一种基于AXI协议的具有深存储和双捕获功能的数据采集装置,其特征在于包括N个信号采集卡、DDR3模块、N个数据接收接口、N个触发模块、N个深存储模块、AXI互联体模块、MIG核、双捕获模块、数据上传接口和上位机,N表示采集通道数量,其中,N个数据接收接口、N个触发模块、N个深存储模块、AXI互联体模块、MIG核、双捕获模块和数据上传接口构成数据采集卡并在FPGA中实现;
每个信号采集卡用于对对应通道的输入信号进行采集,将采集得到的信号发送给对应的数据接收接口;
DDR3模块用于对采集数据进行深存储,用户通过上位机在DDR3模块中设置N片相同大小的DDR存储空间,每个DDR存储空间用于对对应通道的采集数据进行深存储,上位机在设置好DDR存储空间后,将每片DDR存储空间的基地址BASE_ADDRDS发送至对应采集通道深存储模块中的DDR地址计算模块;
每个数据接收接口用于接收对应信号采集卡对输入信号采集得到的采样数据,然后发送至触发模块和对应通道深存储模块中的数据采集模块;
每个触发模块用于在接收到对应通道的采样数据后,根据用户设置的触发通道和触发参数生成触发信号并发送给对应通道深存储模块中的DDR地址计算模块;
每个深存储模块用于将接收到的数字信号通过AXI互联体模块和MIG核送入DDR3模块中进行存储;深存储模块包括数据采集模块、深存储控制模块、AXI封装模块、DDR地址计算模块和触发地址存储模块,其中:
数据采集模块用于将接收到的采样数据转换至深存储模块的工作时钟域,将转换得到的数据DS_data和对应的数据有效信号DS_data_valid发送至AXI封装模块;
深存储控制模块用于接收上位机设置的深存储控制参数,包括深存储空间基地址BASE_ADDRDS、深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision,将深存储存储空间的基地址BASE_ADDRDS转发至AXI封装模块,将深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision转发至DDR地址计算模块;
AXI封装模块在接收到来自数据采集模块的波形数据DS_data及其数据有效信号DS_data_valid时,将波形数据DS_data封装为AXI写请求包,将从深存储控制模块接收到的深存储存储空间的基地址BASE_ADDRDS作为起始地址,将AXI写请求包和起始地址通过AXI互联体模块发送至MIG核,送入DDR3模块中对应DDR存储空间进行存储;AXI封装模块在从DDR地址计算模块接收到触发地址上传指令时,将触发地址存储模块中的触发地址数据封装为AXI写请求包,将从DDR地址计算模块接收的深存储空间的最大地址max_addrDS作为起始地址,将AXI写请求包和起始地址通过AXI互联体模块发送至MIG核,送入DDR3模块中对应DDR存储空间进行存储;
DDR地址计算模块从深存储控制模块接收深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision,根据深存储容量点数storage_depth计算出该深存储空间的最大地址max_addrDS并发送给AXI封装模块和上位机,计算公式如下:
max_addrDS=storage_depth×AXI_DATA_WIDTHDS/8
当DDR地址计算模块接收到触发模块发送的有效触发信号后,将对应的触发数据写入地址write_addr经过预触发和触发地址修正参数trig_loc_revision修正后得到真实触发地址trig_addr,并将发送至触发地址存储模块;计算真实触发地址trig_addr的具体方法如下:
根据深存储预触发深度点数pre_trig_depth计算出预触发存储深度地址offset_pre_addr,计算公式如下:
offset_pre_addr=pre_trig_depth×AXI_DATA_WIDTHDS/8
在AXI封装模块向DDR3模块写入数据的同时,DDR地址计算模块实时记录当前写入数据对应的深存储空间地址write_addr,每当在AXI写数据通道完成1次突发长度的写数据操作,write_addr步进AXI_DATA_WIDTHDS/8;当深存储空间地址超出最大地址max_addrDS,则返回至初始地址0x0重新开始步进;并且DDR地址计算模块对写入DDR3模块的数据量进行监测,当满足write_addr≥offset_pre_addr时,深存储模块完成预触发存储工作,DDR地址计算模块进入对触发信号的监测;
当DDR地址计算模块监测到触发信号到来,利用触发地址修正参数trig_loc_revision对触发数据对应的写入地址trig_write_addr进行修正,计算出的真实触发地址trig_addr,计算公式如下:
trig_addr=trig_write_addr-trig_loc_revision×AXI_DATA_WIDTHDS/8
然后根据真实触发地址trig_addr和预触发存储深度地址offset_pre_addr,计算出整个深存储数据在DDR3模块中的有效数据起始地址DS_begin_addr并发送给上位机,计算方法如下:
当trig_addr≥offset_pre_addr时,有效数据起始地址DS_begin_addr的计算公式如下:
DS_begin_addr=trig_addr-offset_pre_addr
当trig_addr<offset_pre_addr时,有效数据起始地址DS_begin_addr的计算公式如下:
DS_begin_addr=max_addrDS-(offset_pre_addr-trig_addr)
将有效数据起始地址DS_begin_addr的低2位置0,得到有效数据读取起始地址DS_trans_begin_addr并发送给上位机;
触发地址存储模块对接收到的真实触发地址trig_addr进行存储,在触发深存储完毕后,触发地址存储模块将所存储的真实触发地址数量DS_fifo_trig_wr_num发送至上位机,并向AXI封装模块发送触发地址上传指令;
AXI互联体模块用于实现深存储模块、双捕获模块与DDR3模块之间基于AXI协议的互联;
MIG核用于对DDR3模块的数据写入和读取进行控制;
双捕获模块用于实现对DDR3模块中深存储空间内的数据进行读取,双捕获模块包括波形概貌读取模块和波形细节读取模块,波形概貌读取模块用于根据从上位机接收的两个采样率对应的波形概貌读取参数,通过AXI互联体模块和MIG核对DDR3模块中深存储空间内的数据进行抽点读取;波形细节读取模块用于根据上位机的参数通过AXI互联体模块和MIG核对DDR3模块中深存储空间内的数据进行连续读取,并通过数据上传接口返回至上位机进行存储或显示;
数据上传接口用于连接上位机,将双捕获模块读取的数据反馈至上位机;
上位机用于对数据深存储和数据读取进行控制,在数据深存储时接收用户设置的DDR存储空间划分方案对DDR3模块进行设置,接收用户设置的深存储空间基地址BASE_ADDRDS、深存储容量点数storage_depth、深存储预触发深度点数pre_trig_depth、预触发和触发地址修正参数trig_loc_revision并转发至对应的深存储控制模块;在数据读取时,根据深存储模块中DDR地址计算模块发送的深存储空间的最大地址max_addrDS、有效数据起始地址DS_begin_addr和有效数据读取起始地址DS_trans_begin_addr,以及触发地址存储模块发送的真实触发地址数量DS_fifo_trig_wr_num,计算两个采样率下波形概貌读取的相关参数,并发送给波形概貌读取模块;将用户设置的波形细节读取的相关参数发送给波形细节读取模块。
2.根据权利要求1所述的数据采集装置,其特征在于,所述AXI封装模块波形数据DS_data进行封装发送的具体方法如下:
AXI封装模块首先采用以下公式计算AXI地址步进值BURST_STEP_ADDR:
其中,AXI_BLENDS表示AXI写请求包的突发长度,AXI_DATA_WIDTHDS表示AXI接口的写通道数据AXI_WDATA的位宽,需要满足以下条件:
AXI_DATA_WIDTHDS=2m(m≥5)
AXI封装模块将深存储存储空间的基地址BASE_ADDRDS传递至AXI写地址通道的AXI_AWADDR,当AXI写地址通道握手成功后,AXI写地址通道将会发起起始地址为AXI_AWADDR,突发长度为AXI_BLENDS的AXI写事务请求,当M=AXI_DATA_WIDTHDS时,AXI封装模块直接将数据DS_data送至AXI写数据通道赋值给写通道数据AXI_WDATA,将数据有效信号DS_data_valid传递至写通道数据AXI_WDATA的数据有效信号AXI_WVALID;当M<AXI_DATA_WIDTHDS时,AXI封装模块将数据DS_data从高位扩展至AXI_DATA_WIDTHDS位,扩展的高位设置为0,再将扩展后的数据DS_data′送至AXI写数据通道赋值给写通道数据AXI_WDATA,将数据有效信号DS_data_valid传递至写通道数据AXI_WDATA的数据有效信号AXI_WVALID;AXI封装模块将写通道数据AXI_WDATA及其数据有效信号AXI_WVALID通过AXI互联体模块发送至MIG核,送入DDR3模块中对应DDR存储空间进行存储;然后令AXI_AWADDR步进BURST_STEP_ADDR个地址,为下一次AXI写地址通道握手做准备。
3.根据权利要求1所述的数据采集装置,其特征在于,所述深存储模块采用状态机进行工作控制,状态机包括6个状态:初始化状态IDLE_s,预触发状态PRE_TRIG_s,等待触发状态WAIT_TRIG_s,后触发状态WRITE_TO_FULL_s,写入触发地址状态WRITE_TRIG_ADDR_s,深存储完成状态DONE_s,其中:
当深存储模块进行复位后,即进入初始化状态IDLE_s,此时深存储控制模块接收用户通过上位机设置的深存储控制参数并转发给其他各个模块,DDR地址计算模块计算深存储空间的最大地址max_addrDS并发送给AXI封装模块和上位机,为深存储工作的开展做准备;当深存储模块接收到上位机发送的深存储开始工作标志,状态机进入预触发状态PRE_TRIG_s;
在预触发状态PRE_TRIG_s下,数据采集模块将采集到的波形数据DS_data和对应的数据有效信号DS_data_valid发送至AXI封装模块;AXI封装模块以深存储空间基地址BASE_ADDRDS为基地址,0x0为初始地址,将数据DS_data和数据有效信号DS_data_valid作为需要写入深存储空间的数据,封装为若干个AXI写请求包通过AXI互联体模块发送至MIG核,进而写入DDR3模块的深存储空间;在写入DDR3模块中的数据满足深存储预触发深度点数pre_trig_depth时,状态机从预触发状态PRE_TRIG_s进入等待触发状态WAIT_TRIG_s;
在等待触发状态WAIT_TRIG_s下,AXI封装模块继续将数据采集模块发送的数据DS_data和数据有效信号DS_data_valid封装为AXI写请求包,通过AXI互联体模块发送至MIG核,写入DDR3模块的深存储空间;当触发信号到来,进入后触发状态WRITE_TO_FULL_s;
在后触发状态WRITE_TO_FULL_s下,AXI封装模块继续将数据采集模块发送的数据DS_data和数据有效信号DS_data_valid封装为AXI写请求包,通过AXI互联体模块发送至MIG核,写入DDR3模块的深存储空间;而当每一次触发信号到来,DDR地址计算模块利用触发地址修正参数trig_loc_revision对触发数据对应的写入地址trig_write_addr进行修正,计算出的真实触发地址trig_addr,然后根据真实触发地址trig_addr和预触发存储深度地址offset_pre_addr,计算出整个深存储数据在DDR3模块中的有效数据起始地址DS_begin_addr和有效数据读取起始地址DS_trans_begin_addr;当AXI写地址通道的AXI_AWADDR和DS_trans_begin_addr相等时,表示空存储空间内已存满了有效数据,进入写入触发地址状态WRITE_TRIG_ADDR_s;
在写入触发地址状态WRITE_TRIG_ADDR_s下,触发地址存储模块将所存储的真实触发地址数量DS_fifo_trig_wr_num发送至上位机,并向AXI封装模块发送触发地址上传指令;AXI封装模块将触发地址存储模块中的触发地址数据封装为AXI写请求包,将从DDR地址计算模块接收的深存储空间的最大地址max_addrDS作为起始地址,将AXI写请求包和起始地址通过AXI互联体模块发送至MIG核,送入DDR3模块中对应DDR存储空间进行存储。当所有触发地址数据发送完毕,进入深存储完成状态DONE_s;
在深存储完成状态DONE_s下,代表深存储写入任务完成,深存储空间写满了有效数据及触发地址数据,深存储模块将该状态反馈至上位机,通知上位机进行深存储读取任务或双捕获读取任务,然后等待进入下一轮深存储工作。
4.根据权利要求1所述的数据采集装置,其特征在于,所述波形概貌读取时,上位机采用如下方法确定两个不同采样率下波形概貌读取的参数,并根据两套参数生成两个波形概貌读取指令发送给波形概貌读取模块:
记两个数据抽点系数中低采样率对应的数据抽点系数为decimation_coeffscreen_L、高采样率对应的数据抽点系数为decimation_coeffscreen_H;
首先选择需要读取的DDR存储空间,确定低采样率对应的DDR存储空间基地址BASE_ADDRscreen_L和读最大地址max_addrscreen_L:
BASE_ADDRscreen_L=BASE_ADDRDS
max_addrscreen_L=max_addrDS
采用如下公式计算地址步进值rd_burst_step_addrL:
rd_burst_step_addrL=decimation_coeffscreen_L×AXI_DATA_WIDTHRD/8
设置低采样率下的读取数据长度screen_lengthL,采用如下方法确定需要读取的DDR读起始地址start_addrscreen_L:
对于读取数据长度screen_lengthL的数据,以真实触发地址trig_addr为中心,将显示点数为screen_lengthL的显示界面划分为预触发界面和后触发界面,其长度分别为pre_screen_lengthL和pos_screen_lengthL,采用以下公式计算得到DDR读起始地址start_addrscreen_L:
start_addrscreen_L=trig_addr-(rd_burst_step_addrL×pre_screen_lengthL)
然后确定高采样率对应的DDR存储空间基地址BASE_ADDRscreen_H和读最大地址max_addrscreen_H:
BASE_ADDRscreen_H=BASE_ADDRDS
max_addrscreen_H=max_addrDS
采用如下公式计算地址步进值rd_burst_step_addrH:
rd_burst_step_addrH=decimation_coeffscreen_H×AXI_DATA_WIDTHRD/8
设置高采样率下的读取数据长度screen_lengthH,采用如下方法确定需要读取的DDR读起始地址start_addrscreen_H:
波形概貌读取模块从上位机接收波形概貌读取指令,波形概貌读取指令包括需要读取的DDR存储空间基地址BASE_ADDRscreen、需要读取的DDR读起始地址start_addrscreen、读最大地址max_addrscreen、读取数据长度screen_length和数据抽点系数decimation_coeffscreen,然后采用如下公式计算地址步进值rd_burst_step_addr:
rd_burst_step_addr=decimation_coeffscreen×AXI_DATA_WIDTHRD/8
波形概貌读取模块向AXI互联体模块发送DDR存储空间基地址BASE_ADDRscreen以选择对应DDR存储空间,然后向AXI互联体模块发起突发长度固定为1、AXI读数据位宽为AXI_DATA_WIDTHRD的AXI读事务请求,且AXI读事务请求的数量为screen_length,其中第一个AXI读事务请求对应的读地址AXI_ARADDR为读起始地址start_addrscreen,每当AXI读地址通道握手成功后,则令读地址AXI_ARADDR步进rd_burst_step_addr个地址,为下一次AXI读地址通道握手做准备;当读地址AXI_ARADDR超出读最大地址max_addrscreen时,则回滚至初始地址0x0继续步进;波形概貌读取模块将从AXI互联体模块接收到的读取数据通过数据上传接口返回至上位机进行存储或显示。
5.根据权利要求1所述的数据采集装置,其特征在于,所述波形细节读取时,波形细节读取模块从上位机接收波形细节读取指令,波形细节读取指令包括需要读取的DDR存储空间基地址BASE_ADDRmass、需要读取的DDR读起始地址start_addrmass、AXI读请求的读突发长度AXI_BLENRD、AXI读请求包数量pkg_num,然后采用如下公式计算地址步进值mass_burst_step_addr:
mass_burst_step_addr=INTER_DATA_WIDTHRD×AXI_BLENRD/8
其中,INTER_DATA_WIDTHRD表示数据上传接口的数据位宽,即波形细节读取时,读取数据位宽与数据上传接口的数据位宽相同;
波形细节读取模块向AXI互联体模块发送DDR存储空间基地址BASE_ADDRmass以选择对应DDR存储空间,然后向AXI互联体模块发起突发长度固定为AXI_BLENRD、AXI读数据位宽为INTER_DATA_WIDTHRD的AXI读事务请求,且AXI读事务请求的数量为pkg_num,其中第一个AXI读事务请求对应的读地址AXI_ARADDR为读起始地址start_addrmass,每当AXI读地址通道握手成功后,则令读地址AXI_ARADDR步进mass_burst_step_addr个地址,为下一次AXI读地址通道握手做准备;波形细节读取模块将从AXI互联体模块接收到的读取数据通过数据上传接口返回至上位机进行存储或显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110620218.7A CN113377290B (zh) | 2021-06-03 | 2021-06-03 | 基于axi协议的具有深存储和双捕获功能的数据采集装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110620218.7A CN113377290B (zh) | 2021-06-03 | 2021-06-03 | 基于axi协议的具有深存储和双捕获功能的数据采集装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113377290A true CN113377290A (zh) | 2021-09-10 |
CN113377290B CN113377290B (zh) | 2022-07-26 |
Family
ID=77575629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110620218.7A Active CN113377290B (zh) | 2021-06-03 | 2021-06-03 | 基于axi协议的具有深存储和双捕获功能的数据采集装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377290B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114640363A (zh) * | 2021-12-14 | 2022-06-17 | 北京遥感设备研究所 | 一种发动机副谱数据采集装置 |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159853A (zh) * | 2015-09-25 | 2015-12-16 | 中国船舶重工集团公司第七0九研究所 | 基于fpga的dfi标准ddr3控制器 |
CN107133011A (zh) * | 2017-04-25 | 2017-09-05 | 电子科技大学 | 一种示波记录仪的多通道数据存储方法 |
CN107783927A (zh) * | 2016-08-30 | 2018-03-09 | 安凯(广州)微电子技术有限公司 | 用于连接axi接口和dma接口的电路转换系统及方法 |
CN108710587A (zh) * | 2018-06-04 | 2018-10-26 | 中国电子科技集团公司第十四研究所 | 基于axi总线的信号处理fpga通用处理架构系统及方法 |
CN108776249A (zh) * | 2018-06-26 | 2018-11-09 | 电子科技大学 | 具有双捕获功能的示波记录仪 |
CN108804044A (zh) * | 2018-06-26 | 2018-11-13 | 电子科技大学 | 基于深存储的数据采集方法和深存储数据采集系统 |
CN109142835A (zh) * | 2018-06-26 | 2019-01-04 | 电子科技大学 | 具有波形多帧记录功能的数据采集系统 |
CN109189716A (zh) * | 2018-08-08 | 2019-01-11 | 西安思丹德信息技术有限公司 | 一种基于fpga的数据传输系统及传输方法 |
CN109412914A (zh) * | 2018-08-31 | 2019-03-01 | 南京理工大学 | 流数据与axi接口通信装置 |
CN110836993A (zh) * | 2019-11-14 | 2020-02-25 | 电子科技大学 | 基于fpga的随机等效采集系统 |
CN110836992A (zh) * | 2019-10-31 | 2020-02-25 | 电子科技大学 | 基于fpga的示波功率仪采集系统 |
CN110940841A (zh) * | 2019-10-09 | 2020-03-31 | 电子科技大学 | 基于fpga的数字三维示波器快速采集系统 |
CN111965405A (zh) * | 2020-08-12 | 2020-11-20 | 电子科技大学 | 基于fpga的数字三维示波器数据映射存储系统 |
JP2020193899A (ja) * | 2019-05-29 | 2020-12-03 | 株式会社アドバンテスト | 試験装置 |
CN112416823A (zh) * | 2020-11-15 | 2021-02-26 | 珠海市一微半导体有限公司 | 一种突发模式下的传感器数据读写控制方法、系统及芯片 |
CN112559399A (zh) * | 2020-11-27 | 2021-03-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多axi接口的ddr控制器及其控制方法 |
WO2021056632A1 (zh) * | 2019-09-24 | 2021-04-01 | 山东华芯半导体有限公司 | 基于axi总线的主机设备数据传输扩展方法 |
CN112765054A (zh) * | 2019-11-01 | 2021-05-07 | 中国科学院声学研究所 | 一种基于fpga的高速数据采集系统及方法 |
-
2021
- 2021-06-03 CN CN202110620218.7A patent/CN113377290B/zh active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159853A (zh) * | 2015-09-25 | 2015-12-16 | 中国船舶重工集团公司第七0九研究所 | 基于fpga的dfi标准ddr3控制器 |
CN107783927A (zh) * | 2016-08-30 | 2018-03-09 | 安凯(广州)微电子技术有限公司 | 用于连接axi接口和dma接口的电路转换系统及方法 |
CN107133011A (zh) * | 2017-04-25 | 2017-09-05 | 电子科技大学 | 一种示波记录仪的多通道数据存储方法 |
CN108710587A (zh) * | 2018-06-04 | 2018-10-26 | 中国电子科技集团公司第十四研究所 | 基于axi总线的信号处理fpga通用处理架构系统及方法 |
CN108776249A (zh) * | 2018-06-26 | 2018-11-09 | 电子科技大学 | 具有双捕获功能的示波记录仪 |
CN108804044A (zh) * | 2018-06-26 | 2018-11-13 | 电子科技大学 | 基于深存储的数据采集方法和深存储数据采集系统 |
CN109142835A (zh) * | 2018-06-26 | 2019-01-04 | 电子科技大学 | 具有波形多帧记录功能的数据采集系统 |
CN109189716A (zh) * | 2018-08-08 | 2019-01-11 | 西安思丹德信息技术有限公司 | 一种基于fpga的数据传输系统及传输方法 |
CN109412914A (zh) * | 2018-08-31 | 2019-03-01 | 南京理工大学 | 流数据与axi接口通信装置 |
JP2020193899A (ja) * | 2019-05-29 | 2020-12-03 | 株式会社アドバンテスト | 試験装置 |
WO2021056632A1 (zh) * | 2019-09-24 | 2021-04-01 | 山东华芯半导体有限公司 | 基于axi总线的主机设备数据传输扩展方法 |
CN110940841A (zh) * | 2019-10-09 | 2020-03-31 | 电子科技大学 | 基于fpga的数字三维示波器快速采集系统 |
CN110836992A (zh) * | 2019-10-31 | 2020-02-25 | 电子科技大学 | 基于fpga的示波功率仪采集系统 |
CN112765054A (zh) * | 2019-11-01 | 2021-05-07 | 中国科学院声学研究所 | 一种基于fpga的高速数据采集系统及方法 |
CN110836993A (zh) * | 2019-11-14 | 2020-02-25 | 电子科技大学 | 基于fpga的随机等效采集系统 |
CN111965405A (zh) * | 2020-08-12 | 2020-11-20 | 电子科技大学 | 基于fpga的数字三维示波器数据映射存储系统 |
CN112416823A (zh) * | 2020-11-15 | 2021-02-26 | 珠海市一微半导体有限公司 | 一种突发模式下的传感器数据读写控制方法、系统及芯片 |
CN112559399A (zh) * | 2020-11-27 | 2021-03-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多axi接口的ddr控制器及其控制方法 |
Non-Patent Citations (4)
Title |
---|
KHANG DAO等: "AXI Multi-Ported Memory Controller", 《APPLICATION NOTE: VIRTEX-6 FAMILY》 * |
RAVI KIRAN BODDU等: "AXI USB 2.0 Device:", 《APPLICATION NOTE: ZYNQ-7000 AND KINTEX-7 FAMILIES》 * |
徐洋洋: "基于FPGA的多通道大容量FIFO设计", 《电子测量技术》 * |
邹永铸等: "基于SRAM和FPGA的DSO深存储功能设计", 《电子质量》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114640363A (zh) * | 2021-12-14 | 2022-06-17 | 北京遥感设备研究所 | 一种发动机副谱数据采集装置 |
CN114640363B (zh) * | 2021-12-14 | 2023-06-20 | 北京遥感设备研究所 | 一种发动机副谱数据采集装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113377290B (zh) | 2022-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109412914B (zh) | 流数据与axi接口通信装置 | |
CN103366794B (zh) | 用于减少接脚数内存总线接口的装置及方法 | |
CN100361523C (zh) | 一种数字相机实时采集系统 | |
KR101932920B1 (ko) | 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법 | |
WO2023284169A1 (zh) | 从axi总线到opb总线的数据写入方法及读取方法 | |
KR101919903B1 (ko) | 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법 | |
US7802034B2 (en) | Method for performing full transfer automation in a USB controller | |
CN110569204B (zh) | 基于fpga和ddr3 sdram的可配置图像数据缓存系统 | |
CN106951388A (zh) | 一种基于PCIe的DMA数据传输方法及系统 | |
CN108268414B (zh) | 基于spi模式的sd卡驱动器及其控制方法 | |
CN112634801B (zh) | 一种片内逻辑分析仪及芯片调试方法 | |
CN113377290B (zh) | 基于axi协议的具有深存储和双捕获功能的数据采集装置 | |
EP4050491A1 (en) | Method for converting avalon bus into axi4 bus | |
CN113590512A (zh) | 可直连外设设备的自启动dma装置及应用 | |
CN116225998A (zh) | Dma数据传输系统 | |
CN113961494A (zh) | 一种pcie总线与axi总线的桥接系统 | |
CN107329929B (zh) | 一种基于SoC FPGA的数据传输系统及数据传输方法 | |
KR20090054478A (ko) | 메시지 큐 시간을 계산하기 위한 방법, 장치, 시스템 및 컴퓨터 판독가능 매체 | |
CN102467581B (zh) | 超声数据采集芯片 | |
CN210924247U (zh) | 一种用于多路光电传感器采集的实时处理器 | |
CN111026691B (zh) | 基于apb总线的owi通讯设备 | |
CN102223259A (zh) | 一种数据采集和存储的方法及装置 | |
CN117472815A (zh) | 一种axi协议下的存储模块转换接口及其转换方法 | |
CN116165955A (zh) | 可扩展的多通道高精度卫星载荷遥感数据采集系统 | |
CN108897696B (zh) | 一种基于DDRx存储器的大容量FIFO控制器 |
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 |