CN110532219B - 一种基于fpga的去乒乓数据存储方法 - Google Patents
一种基于fpga的去乒乓数据存储方法 Download PDFInfo
- Publication number
- CN110532219B CN110532219B CN201910553125.XA CN201910553125A CN110532219B CN 110532219 B CN110532219 B CN 110532219B CN 201910553125 A CN201910553125 A CN 201910553125A CN 110532219 B CN110532219 B CN 110532219B
- Authority
- CN
- China
- Prior art keywords
- data
- ram
- column
- reading
- frame
- 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
Links
Images
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];
步骤一、针对输入数据,按照行方向,将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]。
具体处理包括如下步骤:
步骤一、输入数据按照第一个维度,即行方向,进入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];
步骤一、针对输入数据,按照行方向,将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 CN110532219A (zh) | 2019-12-03 |
CN110532219B true 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113873255B (zh) * | 2021-12-06 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种视频数据传输方法、视频数据解码方法及相关装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102982507A (zh) * | 2012-10-30 | 2013-03-20 | 广东威创视讯科技股份有限公司 | 视频图像处理的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4097852B2 (ja) * | 1999-08-26 | 2008-06-11 | 株式会社フィリップスエレクトロニクスジャパン | データ書込読出方法、デインターリーブ方法、データ処理方法、メモリ、及びメモリ駆動装置 |
JP4547224B2 (ja) * | 2004-09-28 | 2010-09-22 | 株式会社日立国際電気 | デジタル移動無線通信方式 |
CN101599167B (zh) * | 2008-06-03 | 2013-02-20 | 株式会社理光 | 存储器的存取方法 |
-
2019
- 2019-06-25 CN CN201910553125.XA patent/CN110532219B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102982507A (zh) * | 2012-10-30 | 2013-03-20 | 广东威创视讯科技股份有限公司 | 视频图像处理的方法及装置 |
Non-Patent Citations (1)
Title |
---|
一种新的数字图像分存方法;王继军 等;《计算机工程与应用》;20071101;第43卷(第31期);第79-81,122页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110532219A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019136764A1 (zh) | 卷积器及其所应用的人工智能处理装置 | |
EP2446413B1 (en) | Apparatus and method for displaying a warped version of a source image | |
WO2019076108A1 (zh) | 卷积神经网络运算电路 | |
CN108573305B (zh) | 一种数据处理方法、设备及装置 | |
KR101550831B1 (ko) | 영상 최적화 롤링 캐시 시스템 | |
CN107748723B (zh) | 支持无冲突跨步按块访问的存储方法及访存装置 | |
JP2010521728A (ja) | データ圧縮のための回路及びこれを用いるプロセッサ | |
WO2019128548A1 (zh) | 一种信号处理方法及装置 | |
CN111984189B (zh) | 神经网络计算装置和数据读取、数据存储方法及相关设备 | |
CN110032538B (zh) | 一种数据读取***和方法 | |
WO2022016925A1 (zh) | 神经网络计算装置 | |
CN111626405A (zh) | 一种cnn加速方法、加速装置及计算机可读存储介质 | |
CN110532219B (zh) | 一种基于fpga的去乒乓数据存储方法 | |
KR20230081697A (ko) | 팽창 컨볼루션 계산 가속화 방법 및 장치 | |
CN105488753A (zh) | 一种对图像进行二维傅立叶变换或反变换的方法及装置 | |
JP5359569B2 (ja) | メモリのアクセス方法 | |
CN109416743B (zh) | 一种用于识别人为动作的三维卷积装置 | |
CN108920097B (zh) | 一种基于交织存储的三维数据处理方法 | |
CN110322389B (zh) | 池化方法、装置及***、计算机可读存储介质 | |
US20190303705A1 (en) | Pooling method and device, pooling system, computer-readable storage medium | |
CN116010313A (zh) | 一种通用、可配置的图像滤波计算多行输出***和方法 | |
CN111831207B (zh) | 一种数据处理方法、装置及其设备 | |
US20120254573A1 (en) | System, data structure, and method for collapsing multi-dimensional data | |
JP7234000B2 (ja) | 2次元画像をアフィン変換するための画像データ処理装置 | |
CN111737169B (zh) | 一种基于edma的大容量高速行列输出缓存结构的实现方法 |
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 |