CN110532219A - 一种基于fpga的去乒乓数据存储方法 - Google Patents
一种基于fpga的去乒乓数据存储方法 Download PDFInfo
- Publication number
- CN110532219A CN110532219A CN201910553125.XA CN201910553125A CN110532219A CN 110532219 A CN110532219 A CN 110532219A CN 201910553125 A CN201910553125 A CN 201910553125A CN 110532219 A CN110532219 A CN 110532219A
- Authority
- CN
- China
- Prior art keywords
- data
- ram
- row
- frame data
- column
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于FPGA的去乒乓数据存储方法,通过在FPGA中划定一个RAM,在读取上一帧部分数据后,在空出的存储空间中存储下一阵部分数据;而且奇数帧存储顺序相同,读取顺序也相同,偶数帧存储顺序相同,读取顺序相同,相对常用的乒乓存储方法,可以达到最多的节省一半的RAM,从而节省FPGA的MEM资源。
Description
技术领域
本发明属于信号处理技术领域,具体涉及一种基于FPGA的去乒乓数据存储方法。
背景技术
在雷达、光学、图像等信号处理算法中,常常需要使用到二维数据的处理。比如,在雷达成像技术中,二维快速傅里叶变换是常用的一种计算方式。将一组二维数据定义为一帧,在处理过程中,需要先按照第一维方向处理,然后载按第二维方向处理。
在工程实现中,往往在FPGA中实现如上算法。目前常用的处理方式为,使用乒乓存储方案,使用两块片上RAM,分别作为乒RAM和乓RAM。数据按第一维方向输入,同时做流水处理,先用乒RAM缓存第1帧数据,然后用乓RAM缓存第2帧数据,同时,按第二维的方向读取乒RAM中的第1帧数据,做第二维数据的处理。乓RAM缓存完第2帧数据时,处理完乒RAM中的第1帧数据,然后用乒RAM缓存第3帧数据,同时按第二维方向处理乓RAM中的第2帧数据。依次循环,连续处理多帧数据。
按照如上方式处理数据,则需要两倍于一帧数据量的存储,对片上存储的要求会很高。
发明内容
有鉴于此,本发明的目的是提供一种基于FPGA的去乒乓数据存储方法,可以节省存储资源。
一种数据存储方法,包括如下步骤:
步骤零、假设输入的二维数据的一帧大小为M×N,即M行N列;第i行第j列元素用ai,j表示,将M和N写成如下关系式:
N=p×M+q
其中p为整数,且p∈[1,+∞),q为整数,且q∈[0,M-1];
在FPGA中划定大小为的RAM;其中表示对数据*向上取整;令即RAM大小为L×N;
步骤一、针对输入数据,按照行方向,将M×N大小的二维数据缓存到所述RAM中;
步骤二、将存储到所述RAM中的第一帧数据,按照列方向,逐列进行读取;
步骤三、当读取完第p列数据时,开始往RAM中缓存第二帧数据的第1行,即:将该第1行中元素a1,1、a1,2、…a1,p顺序存放到RAM第1行的第1个数据位置、第2个数据位置…第p个数据位置;将第1行中元素a1,p+1、a1,p+2、…a1,2p顺序存放到RAM第2行的第1个数据位置、第2个数据位置…第p个数据位置;以此类推,直至元素a1,N缓存到第L行的第个数据位置;
步骤四,按照步骤三的方法读取RAM中第一帧数据的第1行中第p列到第2p列数据,当读取完第2p列数据时,开始往RAM的第p+1列到2p的存储空间中,缓存第二帧数据的第2行,依次类推,直至读取完第一帧数据,并且缓存完第二帧数据;
步骤五,从第一列开始,按列读取RAM中第二帧数据,读取顺序为:a1,1、a2,1、…aM,1、a1,2、a2,2、…aM,2…a1,p、a2,p、…aM,p,即完成第二帧数据前p列数据的读取;
步骤六,当读取完第二帧数据前p列数据时,开始往RAM中缓存第三帧数据的第1行,写入顺序为:a1,1、a1,2、…a1,N,与此同时,读取第二帧数据的p+1列到第2p列,读取顺序为:a1,p+1、a2,p+1、…aM,p+1、a1,p+2、a2,p+2、…aM,p+2…a1,2p、a2,2p、…aM,2p;
步骤七,往RAM中缓存第三帧数据第2行,写入顺序为:a2,1、a2,2、…a2,N,与此同时,读取第二帧数据的2p+1列到第3p列,读取顺序为:a1,2p+1、a2,2p+1、…aM,2p+1、a1,2p+2、a2,2p+2、…aM,2p+2…a1,3p、a2,3p、…aM,3p;
步骤八,按照步骤七的方法,直到读取完第二帧数据,并将第三帧数据全部写入RAM;
步骤九,以此类推,步骤二到步骤八的方法,不断的对输入数据进行缓存和读取。
本发明具有如下有益效果:
本发明的一种基于FPGA的去乒乓数据存储方法,通过在FPGA中划定一个RAM,在读取上一帧部分数据后,在空出的存储空间中存储下一阵部分数据;而且奇数帧存储顺序相同,读取顺序也相同,偶数帧存储顺序相同,读取顺序相同,相对常用的乒乓存储方法,可以达到最多的节省一半的RAM,从而节省FPGA的MEM资源。
附图说明
图1为原始二维数据示意图;
图2为第1帧数据在RAM中的排列顺序示意图;
图3为向RAM中写入第2帧数据第1行后的数据排列顺序示意图;
图4为向RAM中写完第2帧数据之后的数据排列顺序示意图;
图5为第2帧数据读取顺序示意图;
图6为向RAM中写入第3帧数据第1行后的数据排列顺序示意图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
一种去乒乓的二维数据存储方法,假设输入的二维数据规格为M×N,即M行N列,并定义其为一帧数据,第i行第j列元素用ai,j表示,M和N可以用如下关系式表示:
N=p×M+q
其中p为整数,且p∈[1,+∞),q为整数,且q∈[0,M-1]。
需要使用的RAM大小为其中表示对数据*向上取整,为了方便表示,令即RAM大小为L×N。
具体处理包括如下步骤:
步骤一、输入数据按照第一个维度,即行方向,进入FPGA,流水处理后,缓存到RAM中;以此类推,直至缓存完M行的数据,即缓存一帧的数据量。
步骤二、按照第二个维度,即列方向,读取RAM中的数据,进行第二维数据处理,读取顺序为:第1列、第2列、第3列,以此类推,读完N列数据。
步骤三、当读取完第p列数据时,开始往RAM中缓存第2帧数据的第1行,缓存顺序为:a1,1、a1,2、…a1,p分别存放到RAM第1行的第1个数据位置、第2个数据位置…第p个数据位置;a1,p+1、a1,p+2、…a1,2p分别存放到RAM第2行的第1个数据位置、第2个数据位置…第p个数据位置;以此类推,直至a1,N缓存到第L行的第个数据位置。
步骤四,重复步骤三,当读取完第2p列数据时,开始往RAM的第p+1列到2p的存储空间中,缓存第2帧数据的第2行,依次类推,直至读取完第一帧数据,并且缓存完第二帧数据。
步骤五,按数据的第二维方向读取第2帧数据,读取顺序为:a1,1、a2,1、…aM,1、a1,2、a2,2、…aM,2…a1,p、a2,p、…aM,p,即完成第2帧数据前p列数据的读取。
步骤六,当读取完第2帧数据前p列数据时,开始往RAM中缓存第3帧数据第1行,写入顺序为:a1,1、a1,2、…a1,N,于此同时,读取第2帧数据的p+1列到第2p列,读取顺序为:a1,p+1、a2,p+1、…aM,p+1、a1,p+2、a2,p+2、…aM,p+2…a1,2p、a2,2p、…aM,2p。
步骤七,往RAM中缓存第3帧数据第2行,写入顺序为:a2,1、a2,2、…a2,N,于此同时,读取第2帧数据的2p+1列到第3p列,读取顺序为:a1,2p+1、a2,2p+1、…aM,2p+1、a1,2p+2、a2,2p+2、…aM,2p+2…a1,3p、a2,3p、…aM,3p。
步骤八,重复步骤七,直到读取完第2帧数据,并将第3帧数据全部写入RAM。此时第3帧数据在RAM中的存储顺序与第1帧数据相同,因此实现奇数帧数据在RAM的存储顺序相同,读取顺序也相同,同样偶数帧数据在RAM中的存储顺序相同,读取顺序也相同。
步骤九,重复步骤二到步骤八,实现去乒乓MEM的多帧数据的缓存与读取。
实施例:
如图1所示,需要处理的数据为二维数据,数据规格为M行N列,横向为第一维度,纵向为第二维度,数据处理时,先按照第一维度方向处理每行数据,然后再按第二维度方向处理每列数据,算法实现时,输入数据按照第一维度方向,一行一行依次输入FPGA。其中N令M和N关系为:N=p*M+q,公式中p为整数,且p∈[1,+∞),q为整数,且q∈[0,M-1]。
如图2所示,需要使用的RAM大小为N*L,其中(表示对数据*向上取整),第1帧数据输入FPGA,经过流水处理后,存到RAM中,其中RAM中只有M行的存储空间缓存有效数据,后L-M行没有数据写入,则为无效数据。
如图3所示,进行第二维数据处理时,按照列的方向一列一列读取第1帧数据,进行第二维方向数据处理,当读取完p列数据之后,可以缓存第2帧数据第1行,缓存顺序为:a1,1、a1,2、…a1,p分别存放到RAM第1行的第1个数据位置、第2个数据位置…第p个数据位置;a1,p+1、a1,p+2、…a1,2p分别存放到RAM第2行的第1个数据位置、第2个数据位置…第p个数据位置;以此类推,直至a1,N缓存到第L行的第个数据位置。
如图4所示,按列读取完第1帧数据后,按照图3中缓存第2帧数据第1行的方式,缓存第2帧剩下的数据。
如图5所示,读取第2帧数据时,按第2帧数据的列方向读取,即读取顺序为:a1,1、a2,1、…aM,1、a1,2、a2,2、…aM,2…a1,p、a2,p、…aM,p。
如图6所示,当读取完第2帧数据的前p列时,向RAM的第一行存储空间写入第3帧数据,写入顺序为a1,1、a1,2、…a1,N。
以此类推,直到第2帧数据全部读完,第3帧数据全部缓存,其缓存顺序同图2,即与第1帧数据存储顺序相同。从而,在存储顺序和读取顺序上可以形成循环,奇数帧存储顺序和读取顺序相同,偶数帧存储顺序和读取顺序相同。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (1)
1.一种数据存储方法,其特征在于,包括如下步骤:
步骤零、假设输入的二维数据的一帧大小为M×N,即M行N列;第i行第j列元素用ai,j表示,将M和N写成如下关系式:
N=p×M+q
其中p为整数,且p∈[1,+∞),q为整数,且q∈[0,M-1];
在FPGA中划定大小为的RAM;其中表示对数据*向上取整;令即RAM大小为L×N;
步骤一、针对输入数据,按照行方向,将M×N大小的二维数据缓存到所述RAM中;
步骤二、将存储到所述RAM中的第一帧数据,按照列方向,逐列进行读取;
步骤三、当读取完第p列数据时,开始往RAM中缓存第二帧数据的第1行,即:将该第1行中元素a1,1、a1,2、…a1,p顺序存放到RAM第1行的第1个数据位置、第2个数据位置…第p个数据位置;将第1行中元素a1,p+1、a1,p+2、…a1,2p顺序存放到RAM第2行的第1个数据位置、第2个数据位置…第p个数据位置;以此类推,直至元素a1,N缓存到第L行的第个数据位置;
步骤四,按照步骤三的方法读取RAM中第一帧数据的第1行中第p列到第2p列数据,当读取完第2p列数据时,开始往RAM的第p+1列到2p的存储空间中,缓存第二帧数据的第2行,依次类推,直至读取完第一帧数据,并且缓存完第二帧数据;
步骤五,从第一列开始,按列读取RAM中第二帧数据,读取顺序为:a1,1、a2,1、…aM,1、a1,2、a2,2、…aM,2…a1,p、a2,p、…aM,p,即完成第二帧数据前p列数据的读取;
步骤六,当读取完第二帧数据前p列数据时,开始往RAM中缓存第三帧数据的第1行,写入顺序为:a1,1、a1,2、…a1,N,与此同时,读取第二帧数据的p+1列到第2p列,读取顺序为:a1,p+1、a2,p+1、…aM,p+1、a1,p+2、a2,p+2、…aM,p+2…a1,2p、a2,2p、…aM,2p;
步骤七,往RAM中缓存第三帧数据第2行,写入顺序为:a2,1、a2,2、…a2,N,与此同时,读取第二帧数据的2p+1列到第3p列,读取顺序为:a1,2p+1、a2,2p+1、…aM,2p+1、a1,2p+2、a2,2p+2、…aM,2p+2…a1,3p、a2,3p、…aM,3p;
步骤八,按照步骤七的方法,直到读取完第二帧数据,并将第三帧数据全部写入RAM;
步骤九,以此类推,步骤二到步骤八的方法,不断的对输入数据进行缓存和读取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910553125.XA CN110532219B (zh) | 2019-06-25 | 2019-06-25 | 一种基于fpga的去乒乓数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910553125.XA CN110532219B (zh) | 2019-06-25 | 2019-06-25 | 一种基于fpga的去乒乓数据存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110532219A true CN110532219A (zh) | 2019-12-03 |
CN110532219B CN110532219B (zh) | 2021-04-27 |
Family
ID=68659874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910553125.XA Active CN110532219B (zh) | 2019-06-25 | 2019-06-25 | 一种基于fpga的去乒乓数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532219B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023103336A1 (zh) * | 2021-12-06 | 2023-06-15 | 苏州浪潮智能科技有限公司 | 一种视频数据传输方法、视频数据解码方法及相关装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1335995A (zh) * | 1999-08-26 | 2002-02-13 | 皇家菲利浦电子有限公司 | 一种数据读/写方法、一种解交错方法、一种数据处理方法、一种存储器和一种存储器驱动装置 |
CN101599167A (zh) * | 2008-06-03 | 2009-12-09 | 株式会社理光 | 存储器的存取方法 |
JP4547224B2 (ja) * | 2004-09-28 | 2010-09-22 | 株式会社日立国際電気 | デジタル移動無線通信方式 |
CN102982507A (zh) * | 2012-10-30 | 2013-03-20 | 广东威创视讯科技股份有限公司 | 视频图像处理的方法及装置 |
-
2019
- 2019-06-25 CN CN201910553125.XA patent/CN110532219B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1335995A (zh) * | 1999-08-26 | 2002-02-13 | 皇家菲利浦电子有限公司 | 一种数据读/写方法、一种解交错方法、一种数据处理方法、一种存储器和一种存储器驱动装置 |
JP4547224B2 (ja) * | 2004-09-28 | 2010-09-22 | 株式会社日立国際電気 | デジタル移動無線通信方式 |
CN101599167A (zh) * | 2008-06-03 | 2009-12-09 | 株式会社理光 | 存储器的存取方法 |
CN102982507A (zh) * | 2012-10-30 | 2013-03-20 | 广东威创视讯科技股份有限公司 | 视频图像处理的方法及装置 |
Non-Patent Citations (1)
Title |
---|
王继军 等: "一种新的数字图像分存方法", 《计算机工程与应用》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023103336A1 (zh) * | 2021-12-06 | 2023-06-15 | 苏州浪潮智能科技有限公司 | 一种视频数据传输方法、视频数据解码方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110532219B (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI766396B (zh) | 資料暫存裝置、資料暫存方法以及計算方法 | |
WO2022007266A1 (zh) | 一种卷积神经网络的加速方法及装置 | |
US20200110604A1 (en) | Energy-efficient memory systems and methods | |
US12056530B2 (en) | Dilated convolution acceleration calculation method and apparatus | |
WO2019128548A1 (zh) | 一种信号处理方法及装置 | |
Guan et al. | Memory-efficient deformable convolution based joint denoising and demosaicing for UHD images | |
CN103198451A (zh) | 一种用gpu通过分块实现快速小波变换的方法 | |
CN105488753B (zh) | 一种对图像进行二维傅立叶变换或反变换的方法及装置 | |
CN100589123C (zh) | 一种静止图像缩放装置及其方法 | |
CN110532219A (zh) | 一种基于fpga的去乒乓数据存储方法 | |
CN103916612A (zh) | 一种任意比例缩放系统及方法 | |
JP2009295159A (ja) | メモリのアクセス方法 | |
Xiao et al. | FPGA-based scalable and highly concurrent convolutional neural network acceleration | |
CN102831571B (zh) | 用流水线方式单步实现图形图像缩放、旋转的5阶滤波器的设计方法 | |
CN108920097B (zh) | 一种基于交织存储的三维数据处理方法 | |
Ronggui et al. | Self-similarity enhancement network for image super-resolution | |
CN104657937B (zh) | 一种基于edma的图像放大的方法及装置 | |
CN109727206A (zh) | 一种二值图像中值滤波的快速计算方法以及其实现方法 | |
CN116090530A (zh) | 可配置卷积核大小和并行计算数目的脉动阵列结构及方法 | |
CN116051345A (zh) | 图像数据处理方法、装置、计算机设备及可读存储介质 | |
CN113160321B (zh) | 一种实时图像序列的几何映射方法和装置 | |
CN111368250B (zh) | 基于傅里叶变换/逆变换的数据处理系统、方法及设备 | |
CN111831207B (zh) | 一种数据处理方法、装置及其设备 | |
CN113610221A (zh) | 一种基于fpga的可变膨胀卷积运算硬件系统 | |
CN101989350A (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 |