CN109710547A - 一种工业物联网中的缓冲内存管理设计与实现方法 - Google Patents
一种工业物联网中的缓冲内存管理设计与实现方法 Download PDFInfo
- Publication number
- CN109710547A CN109710547A CN201811652956.4A CN201811652956A CN109710547A CN 109710547 A CN109710547 A CN 109710547A CN 201811652956 A CN201811652956 A CN 201811652956A CN 109710547 A CN109710547 A CN 109710547A
- Authority
- CN
- China
- Prior art keywords
- data
- read
- sdram
- data frame
- index
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种工业物联网中的缓冲内存管理设计与实现方法,包括以下步骤:采用FPGA作为主控制器完成对SDRAM初始化和主状态机的设计;将SDRAM内存分成索引区和数据区两个部分,为了方便内存管理,进一步将SDRAM数据区分成1KB大小相同的内存块;在内存管理部分完成数据处理模块、读写索引模块、读写数据模块、地址控制模块的设计。本发明解决了工业高速通信发生流量堵塞缓存时,从SDRAM中读取多条数据帧造成的数据错乱等不可靠问题,提高了通信系统的稳定性。
Description
技术领域
本发明涉及工业物联网领域,具体为高速通信时出现流量堵塞时缓冲内存管理设计与实现。
背景技术
随着社会的发展,高速实时通信在许多行业领域扮演着不可或缺的重要角色,如军事、安全监控、工业运动控制、工业物联网等领域。各行各业对高速数据传输的要求也越来越高,所以高速大容量的存储器在其中扮演着非常重要的角色。SDRAM相比其他存储器,具有容量大、体积小、读写效率高、价格低等优点,因此在数据处理量大的系统中常被用做数据缓存器。
以往对SDRAM的使用只是把它当做一个简单的数据存储器,然而如果高速通信中出现流量堵塞将会出现问题,因为如果SDRAM中存放了多条数据帧之后,再从中把数据帧逐条读出来时将无法知道每条数据帧的起始地址和结束地址等信息,这就会引起数据流传输错乱等不可靠问题。
发明内容
本发明的目的在于针对现有技术的不足,提供一种工业物联网中的缓冲内存管理设计与实现方法,将SDRAM内存分为索引区和数据区,使用FPGA作为主控制器来对SDRAM进行内存管理的方法。该设计在实际应用中可以通过识别外界的操作完成对大量数据的有序缓存,操作简单、安全可靠,可以有效解决流量堵塞等问题。
本发明的目的是通过以下技术方案来实现的:一种工业物联网中的缓冲内存管理设计与实现方法,具体包括以下步骤:
步骤1:采用FPGA作为主控制器完成对SDRAM初始化和主状态机的设计,设定状态转移过程中的关键状态的优先级次序,依次为刷新状态、写状态、读状态;将SDRAM内存分成索引区和数据区两块大小,将数据区分成1KB大小相同的内存块。
步骤2:设计数据处理模块。当一条数据帧要存进SDRAM时,先经过数据处理模块进行分析计算;数据处理模块对数据帧进行预处理,计算分析数据帧的类型、长度、在数据区存储的起始地址和结束地址;如果数据区剩余内存大小可以存放当前数据帧时,将计算得到的数据帧的类型、数据长度、在数据区存储的起始地址和结束地址这些索引信息存储在固定大小的寄存器中,否则等待数据区中数据帧被读出后再进行判断;每次读写数据帧成功后,数据处理模块动态更新记录数据区剩余内存值的大小。
步骤3:设计读写索引模块。将数据处理模块得到的索引信息存进SDRAM的索引区;在下次读数据之前,先读出一条索引信息,得到对应的数据帧的类型、长度、在数据区存储的起始地址和结束地址;因为索引信息的长度是固定的,可以通过操作SDRAM控制器经过有限次的读写命令将索引信息写进或读出索引区。
步骤4:设计读写数据模块。根据索引信息在写索引完成后向数据区写入数据帧,在读数据帧的时候,先读出索引信息,根据索引信息操作SDRAM控制器读出数据帧;SDRAM控制器的读写次数根据索引信息确定。
步骤5:设计地址控制模块。每次读写索引区和数据区的起始地址和结束地址都不同,需要不停切换读写的起始地址和结束地址;在SDRAM控制器中增加一个切换地址标志位,只要这个标志位置高,每次读写前就可以自由的切换读写的起始地址和结束地址;索引区的起始地址和结束地址的增量是固定的,数据区的起始地址和结束地址的增量是不固定的。
进一步地,当一条数据帧要存放进SDRAM前会在数据数据处理模块计算其在SDRAM数据区起始地址和结束地址,数据帧大小不足1KB时按1KB计算。
进一步地,数据帧存储进SDRAM的流程为:通过数据处理模块计算分析得到索引信息,将索引信息写进索引区,再将数据帧存储进数据区。
进一步地,数据帧从SDRAM中读出的流程为:从SDRAM读索引信息,再根据索引信息读数据帧。
本发明的有益效果是:本发明提供了一种工业物联网中的缓冲内存管理设计与实现方法,将SDRAM内存分为索引区和数据区,使用FPGA作为主控制器来对SDRAM进行内存管理的方法。该设计在实际应用中可以通过识别外界的操作完成对大量数据的有序缓存,操作简单、安全可靠,可以有效解决流量堵塞等问题。
附图说明
图1是本发明内存管理框架图;
图2是本发明读写数据流程图;
图3是本发明向SDRAM中写入数据的仿真图;
图4是本发明从SDRAM中读出数据的仿真图。
具体实施方式
下面结合附图详细描述本发明,本发明的目的和效果将变得更加明显。
在工业物联网领域,高速实时通信扮演着不可或缺的重要角色。SDRAM具有容量大、体积小、读写效率高、价格低等优点,在高速通信的系统中经常被用作数据缓存器。以往对SDRAM的使用也只是仅仅停留在一个简单的数据存储器,并没有考虑到如果不经过内存管理在SDRAM中存入多条数据帧之后再读取出来的问题,读取时不知道每条数据帧存放的起始地址和结束地址会导致数据传输造成错乱,导致通信不可靠。
如图1所示,本发明提出的一种工业物联网中的缓冲内存管理设计与实现方法,包括以下步骤:
步骤1:采用FPGA作为主控制器完成对SDRAM初始化和主状态机的设计,其中刷新状态、写状态、读状态是状态转移过程中的关键状态。在实际应用中有时会出现对同一块内存地址同时读写等误操作,为此规定了主要状态的优先级次序,依次为刷新状态、写状态、读状态。将SDRAM内存分成索引区和数据区两块大小,为了方便对数据区的管理,进一步将数据区分成1KB大小相同的内存块,每个1KB大小的内存块称之为一页。
步骤2:设计数据处理模块。当一条数据帧要存进SDRAM时,先经过数据处理模块进行分析计算。数据处理模块的主要作用就是对数据帧的预处理,计算分析数据帧的类型、长度、在数据区存储的起始地址和结束地址等信息。如果数据区剩余内存大小可以存放当前数据帧时,将计算得到的数据帧的类型、数据长度、在数据区存储的起始地址和结束地址等索引数据存储在固定大小的寄存器中。否则等待数据区中数据帧被读出后再进行判断。每次读写数据帧成功后,数据处理模块需要动态更新记录数据区剩余内存值的大小,方便下一次数据帧存进SDRAM前判断。
步骤3:设计读写索引模块。为了实现在SDRAM中存放多条数据帧之后可以依次准确读出每条数据帧的目的,需要将数据处理模块中处理得到的索引信息存进SDRAM的索引区。在下次读数据之前,先读出一条索引信息,就可以知道它所对应的数据帧的类型、长度、在数据区存储的起始地址和结束地址等信息,这样读数据时就不会因为不知道数据的类型、从什么位置开始读、从什么位置停止读等问题而造成数据帧的错乱。因为索引信息的长度是固定的,这样就可以通过操作SDRAM控制器经过有限次的读写命令将索引信息写进或读出索引区。最终,在索引区形成一个个井然有序的队列,每个队列都存储着对应数据帧的相关信息。
步骤4:设计读写数据模块。读写数据模块的作用是服务真正的高速通信中的数据帧。读写数据与读写索引是不同的,索引信息长度是固定的,而高速通信中的数据帧长度是不固定的。根据索引信息在写索引完成后向数据区写入数据帧,同样在读数据帧的时候,需要先读出索引信息,根据索引信息操作SDRAM控制器读出数据帧。对于SDRAM控制器的读写次数也是根据索引信息确定的。读写数据的流程图如图2所示。
步骤5:设计地址控制模块。因为事先已经将SDRAM分为索引区和数据区,同时将数据区分成1KB大小相同的内存。当一条数据帧要存放进SDRAM前会在数据处理模块计算其在SDRAM数据区起始地址和结束地址,数据帧大小不足1KB时也按1KB计算。例如当数据帧大小为1400个字节时,其所占的内存大小为2KB也就是2页。数据帧存储进SDRAM的流程大致为:通过数据处理模块计算分析得到索引信息,将索引信息写进索引区,再将数据帧存储进数据区。数据帧从SDRAM中读出的流程大致为:从SDRAM读出索引信息,再根据索引信息读出数据帧。从数据帧写进到读出SDRAM的流程中可以看出每次读写索引区和数据区的起始地址和结束地址都不同,需要不停切换读写的起始地址和结束地址。在SDRAM控制器设计中增加一个切换地址标志位,只要这个标志位置高,每次读写前就可以自由的切换读写的起始地址和结束地址。索引区的起始地址和结束地址的增量是固定的,数据区的起始地址和结束地址的增量是不固定的,地址控制模块需要协调好读写索引、读写数据过程中地址动态变化的问题。
图3和图4给出了ModelSim仿真平台仿真测试的情形,在SDRAM中留出6KB大小的内存作为索引区,剩余的内存划分为数据区。测试的流程是将500组大小不固定的数据存入SDRAM,再从SDRAM中将500组数据读出来。通过这样的方式测试数据处理模块、控制器模块、读写索引模块、读写数据模块、地址控制模块能否正常工作。从图3和图4中可以看出,SDRAM控制器可以按照我们预先的设计进行工作。向SDRAM存储数据时按照先写索引再写数据的顺序,从SDRAM读出数据时按照先读索引再读数据的顺序。地址可以正常切换,数据区也是按照我们划分的以1KB为最小单元存储的。仿真结果表明,在SDRAM中存储多组数据后可以准确的从中读出数据,稳定可靠。
本发明不仅局限于上述具体实施方式,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方案实施本发明。因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护范围。
Claims (4)
1.一种工业物联网中的缓冲内存管理设计与实现方法,其特征在于,包括以下步骤:
步骤1:采用FPGA作为主控制器完成对SDRAM初始化和主状态机的设计,设定状态转移过程中的关键状态的优先级次序,依次为刷新状态、写状态、读状态;将SDRAM内存分成索引区和数据区两块大小,将数据区分成1KB大小相同的内存块。
步骤2:设计数据处理模块。当一条数据帧要存进SDRAM时,先经过数据处理模块进行分析计算;数据处理模块对数据帧进行预处理,计算分析数据帧的类型、长度、在数据区存储的起始地址和结束地址;如果数据区剩余内存大小可以存放当前数据帧时,将计算得到的数据帧的类型、数据长度、在数据区存储的起始地址和结束地址这些索引信息存储在固定大小的寄存器中,否则等待数据区中数据帧被读出后再进行判断;每次读写数据帧成功后,数据处理模块动态更新记录数据区剩余内存值的大小。
步骤3:设计读写索引模块。将数据处理模块得到的索引信息存进SDRAM的索引区;在下次读数据之前,先读出一条索引信息,得到对应的数据帧的类型、长度、在数据区存储的起始地址和结束地址;因为索引信息的长度是固定的,可以通过操作SDRAM控制器经过有限次的读写命令将索引信息写进或读出索引区。
步骤4:设计读写数据模块。根据索引信息在写索引完成后向数据区写入数据帧,在读数据帧的时候,先读出索引信息,根据索引信息操作SDRAM控制器读出数据帧;SDRAM控制器的读写次数根据索引信息确定。
步骤5:设计地址控制模块。每次读写索引区和数据区的起始地址和结束地址都不同,需要不停切换读写的起始地址和结束地址;在SDRAM控制器中增加一个切换地址标志位,只要这个标志位置高,每次读写前就可以自由的切换读写的起始地址和结束地址;索引区的起始地址和结束地址的增量是固定的,数据区的起始地址和结束地址的增量是不固定的。
2.根据权利要求1所述的一种工业物联网中的缓冲内存管理设计与实现方法,其特征在于,当一条数据帧要存放进SDRAM前会在数据数据处理模块计算其在SDRAM数据区起始地址和结束地址,数据帧大小不足1KB时按1KB计算。
3.根据权利要求1所述的一种工业物联网中的缓冲内存管理设计与实现方法,其特征在于,数据帧存储进SDRAM的流程为:通过数据处理模块计算分析得到索引信息,将索引信息写进索引区,再将数据帧存储进数据区。
4.根据权利要求1所述的一种工业物联网中的缓冲内存管理设计与实现方法,其特征在于,数据帧从SDRAM中读出的流程为:从SDRAM读索引信息,再根据索引信息读数据帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811652956.4A CN109710547B (zh) | 2018-12-29 | 2018-12-29 | 一种工业物联网中的缓冲内存管理设计与实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811652956.4A CN109710547B (zh) | 2018-12-29 | 2018-12-29 | 一种工业物联网中的缓冲内存管理设计与实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710547A true CN109710547A (zh) | 2019-05-03 |
CN109710547B CN109710547B (zh) | 2020-12-08 |
Family
ID=66259737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811652956.4A Active CN109710547B (zh) | 2018-12-29 | 2018-12-29 | 一种工业物联网中的缓冲内存管理设计与实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710547B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110322979A (zh) * | 2019-07-25 | 2019-10-11 | 美核电气(济南)股份有限公司 | 基于fpga的核电站数字控制计算机系统核心处理单元 |
CN116150046A (zh) * | 2023-04-21 | 2023-05-23 | 无锡沐创集成电路设计有限公司 | 一种高速缓存电路 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963814A (zh) * | 2006-11-29 | 2007-05-16 | 珠海市泰德企业有限公司 | 存储器数据管理方法 |
CN101316364A (zh) * | 2008-07-15 | 2008-12-03 | 南京信息工程大学 | 图像压缩系统 |
CN102436429A (zh) * | 2011-11-14 | 2012-05-02 | 盛科网络(苏州)有限公司 | Dram存储器及提升dram数据访问带宽的方法 |
EP2100214B1 (en) * | 2006-12-06 | 2013-10-30 | Fusion-io, Inc. | Apparatus, system, and method for storage space recovery in solid-state storage |
US20150006766A1 (en) * | 2013-03-15 | 2015-01-01 | Cyrill Ponce | Hardware-Assisted DMA Transfer with Dependency |
CN105205153A (zh) * | 2015-09-24 | 2015-12-30 | 小米科技有限责任公司 | 文件存储方法和装置 |
CN107197116A (zh) * | 2017-05-25 | 2017-09-22 | 天津大学 | 一种基于udp协议实时可靠图像传输方案 |
CN108563532A (zh) * | 2018-02-28 | 2018-09-21 | 深圳和而泰数据资源与云技术有限公司 | 数据处理方法及相关装置 |
CN108710578A (zh) * | 2018-04-20 | 2018-10-26 | 深圳市战音科技有限公司 | 基于闪存的数据存储方法和装置 |
-
2018
- 2018-12-29 CN CN201811652956.4A patent/CN109710547B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963814A (zh) * | 2006-11-29 | 2007-05-16 | 珠海市泰德企业有限公司 | 存储器数据管理方法 |
EP2100214B1 (en) * | 2006-12-06 | 2013-10-30 | Fusion-io, Inc. | Apparatus, system, and method for storage space recovery in solid-state storage |
CN101316364A (zh) * | 2008-07-15 | 2008-12-03 | 南京信息工程大学 | 图像压缩系统 |
CN102436429A (zh) * | 2011-11-14 | 2012-05-02 | 盛科网络(苏州)有限公司 | Dram存储器及提升dram数据访问带宽的方法 |
US20150006766A1 (en) * | 2013-03-15 | 2015-01-01 | Cyrill Ponce | Hardware-Assisted DMA Transfer with Dependency |
CN105205153A (zh) * | 2015-09-24 | 2015-12-30 | 小米科技有限责任公司 | 文件存储方法和装置 |
CN107197116A (zh) * | 2017-05-25 | 2017-09-22 | 天津大学 | 一种基于udp协议实时可靠图像传输方案 |
CN108563532A (zh) * | 2018-02-28 | 2018-09-21 | 深圳和而泰数据资源与云技术有限公司 | 数据处理方法及相关装置 |
CN108710578A (zh) * | 2018-04-20 | 2018-10-26 | 深圳市战音科技有限公司 | 基于闪存的数据存储方法和装置 |
Non-Patent Citations (3)
Title |
---|
KHALED SALAH等: ""An Area Efficient Multi-Mode Memory Controller Based on Dynamic Partial Reconfiguration"", 《IEEE》 * |
周进刚等: ""一种结构化数据缓存方法"", 《计算机工程》 * |
雷能芳: ""数据采集系统中SDRAM控制器的FPGA设计"", 《电子设计工程》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110322979A (zh) * | 2019-07-25 | 2019-10-11 | 美核电气(济南)股份有限公司 | 基于fpga的核电站数字控制计算机系统核心处理单元 |
CN110322979B (zh) * | 2019-07-25 | 2024-01-30 | 美核电气(济南)股份有限公司 | 基于fpga的核电站数字控制计算机系统核心处理单元 |
CN116150046A (zh) * | 2023-04-21 | 2023-05-23 | 无锡沐创集成电路设计有限公司 | 一种高速缓存电路 |
CN116150046B (zh) * | 2023-04-21 | 2023-07-14 | 无锡沐创集成电路设计有限公司 | 一种高速缓存电路 |
Also Published As
Publication number | Publication date |
---|---|
CN109710547B (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104583891B (zh) | 用于非易失性主存储器系统中的自适应高速缓存更换的装置、系统和方法 | |
CN102831068B (zh) | 一种内存操作记录的处理方法及装置 | |
CN101533408A (zh) | 一种海量数据的处理方法及处理装置 | |
CN104111870B (zh) | 一种中断处理装置及中断处理方法 | |
CN108415853A (zh) | 一种垃圾回收的方法、装置及存储设备 | |
CN109710547A (zh) | 一种工业物联网中的缓冲内存管理设计与实现方法 | |
CN108037725B (zh) | 一种读写plc数据的方法和装置 | |
CN104049947B (zh) | 基于动态重命名的矢量寄存器堆的寄存器重新配置 | |
CN108039190A (zh) | 一种测试方法及装置 | |
TW201447563A (zh) | Cpu的總線測試裝置及其方法 | |
CN103198001A (zh) | 能够自测pcie接口的存储系统及测试方法 | |
CN106648977A (zh) | 一种安卓系统文件的恢复方法及装置 | |
CN113868039A (zh) | 一种测试方法、装置及相关设备 | |
CN105205019B (zh) | 基于高通平台手机的nv参数读写系统及方法 | |
CN113779912A (zh) | 一种芯片验证系统、方法、装置、电子设备及存储介质 | |
CN111291022A (zh) | 一种基于区块链的数据存储系统 | |
CN107391672A (zh) | 数据的读写方法及消息化的分布式文件系统 | |
CN107193729A (zh) | 一种应用程序兼容性测试方法和装置 | |
CN102057362A (zh) | 用pci高速标记字段传递信息 | |
AU2013302149B2 (en) | Image identification system and image storage control method | |
KR20090098275A (ko) | 플래시 메모리 시스템 | |
CN101594305A (zh) | 一种报文处理方法及装置 | |
CN109298953B (zh) | 一种共享内存数据读写的装置和方法 | |
CN105264500B (zh) | 一种数据传输方法及装置 | |
CN105739919B (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 |