CN110362417B - Fpga实现断电续存功能的系统及方法 - Google Patents
Fpga实现断电续存功能的系统及方法 Download PDFInfo
- Publication number
- CN110362417B CN110362417B CN201910527857.1A CN201910527857A CN110362417B CN 110362417 B CN110362417 B CN 110362417B CN 201910527857 A CN201910527857 A CN 201910527857A CN 110362417 B CN110362417 B CN 110362417B
- Authority
- CN
- China
- Prior art keywords
- written
- module
- data
- power
- page
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种FPGA实现断电续存功能的系统及方法,针对在弹箭飞行过程中可能产生瞬时断电的故障,导致主控器中应写地址的丢失,从而引起重新上电后数据无法写入Flash芯片等问题,以FPGA为主控制器,利用折半查找的算法,在上电复位后快速找出存储芯片中已写过的范围,保证上电后所传输数据能够沿续断电前的已写页后写入,从而避免数据无法写入Flash等问题,提高数据存储器记录数据的可靠性。
Description
技术领域
本发明涉及系统断电后重新上电的数据续存领域,具体是一种FPGA实现断电续存功能的系统及方法。
背景技术
弹箭飞行过程中的各运动参数对弹体的控制与校准十分重要,需要利用数据采集存储器对该飞行参数进行记录。而在弹箭飞行过程中可能会产生瞬时断电的故障,导致主控器中应写地址的丢失,从而引起重新上电后数据无法写入Flash芯片等问题,而这样的情况是不利于对数据的记录以及后续的分析工作。
现有技术是对Flash的扇区进行顺序检测,即从存储区域开始扇区的第一步开始,一步一步往下找,直到找到还没有进行存储的那一扇区,然后在对当前数据进行存储。这种方式需要对当前所有存储的扇区进行检测,当存储数据多时,它需要耗费的时间会很多,会降低效率,当弹箭在飞行过程中所要的时间很有限,当断电恢复后,现有技术的断电续存的方法会造成数据的遗失。
发明内容
本发明的目的在于提供一种FPGA实现断电续存功能的系统及方法。
实现本发明目的的技术解决方案为:一种FPGA实现断电续存功能的系统,包括上电复位模块、折半查找模块、SPI读写控制模块、数据FIFO模块;其中:
上电复位检测模块与折半查找模块相连,上电复位检测模块检测到上电后,发送至折半查找模块以开始断电前已写页数的查找;
折半查找模块分别与SPI读写控制模块以及数据FIFO模块相连,折半查找模块通过控制SPI读写控制模块进行Flash存储内容的读取,并使用折半查找算法找到已写页数;
数据FIFO模块与串口接收端、SPI读写控制模块相连,当折半查找模块找到已写页数后,将已写页数信息以及准许写入Flash的信号传送给数据FIFO,可保证串口数据在断电前已写页数后继续写入Flash,从而完成断电续存的功能。
所述折半查找模块,其输入端连接上电复位检测模块,用于接收启动查找信号,其输出端连接数据FIFO模块以及SPI控制读写模块,使用折半查找算法找到已写页数由一个状态机实现,定义首页与尾页的变量,通过折半逼近,最终找出断电前的已写页数;找到后,将已写页数信息和准许接收数据信号输出至数据FIFO模块,使得系统继续保存数据。
一种FPGA实现断电续存功能的方法,包括以下步骤:
数据由串口传输至FPGA的缓存区,当数据量满足Flash一页的存储字节量时,通过FPGA内的SPI读写控制模块写入至Flash芯片内;
当该存储系统瞬时断电后的重新上电时,触发FPGA内的上电复位模块,上电复位模块开始启动折半查找模块对断电前Flash芯片已写页数进行查找;
当折半查找模块查找出断电前已写页数时,即将已写页数参数传递给SPI读写控制模块,至此,系统将缓存区的数据沿续断电前的已写页之后写入Flash芯片,完成断电续存功能。
折半查找模块对断电前Flash芯片已写页数进行查找的具体步骤为:
(1)定义三个变量参数Min、Max、k,Min变量为Flash芯片的首页,Max变量为Flash芯片的尾页;
(2)k的取值为k=(Min+Max)/2;
(3)折半查找模块通过SPI读写控制模块查询Flash的第k页,对其进行是否写过的检测,若已写过数据,则转步骤(4),若未写过数据,则转步骤(5);
(4)第k页还未写入数据;则将Max变量赋予k值,Min变量不变,回到第(2)步;
(5)第k页已经写入数据,则将Min变量赋予k值,Max变量不变,回到第(2)步;
第k页已经写入数据,则将Min变量赋予k值,Max变量不变,并判断是否满足满足Max-Min=1的条件,若是,则查找的续存页数便为Max,即查找完成;否则,回到第(2)步。
本发明与现有技术相比,其显著优点:(1)本发明通过折半查找的方法,对断电前的Flash已存地址进行查找,使得数据能够延续在断电前的已写页数后保存;(2)折半查找算法相比于对地址进行的顺序遍历查找,缩短了查找时间,提高了效率。当已存数据量变得较多时,现有技术中的顺序查找速度会变得越来越慢,而本发明的折半查找方法不会受到较大影响。
附图说明
图1为本发明的系统结构图。
图2为本发明的折半查找算法流程图。
具体实施方式
针对在弹箭飞行过程中可能产生瞬时断电的故障,导致主控器中应写地址的丢失,从而引起重新上电后数据无法写入Flash芯片等问题,本发明以FPGA为主控制器,利用折半查找的算法,在上电复位后快速找出存储芯片中已写过的范围,保证上电后所传输数据能够沿续断电前的已写页后写入,从而避免数据无法写入Flash等问题。
下面结合本说明书附图对本发明作进一步描述。
参照附图1,图1是本发明的系统结构图。数据由串口传输至FPGA的缓存区,当数据量满足Flash一页的存储字节量时,该缓存模块遵循先进先出(First in First out)的规则。
在数据缓存区中达到Flash一页的字节数量后,然后数据通过FPGA内的SPI读写控制模块写入至Flash芯片内,顺序写入Flash芯片中的每页。而本发明所使用的Flash芯片为W25Q系列,该系列Flash的特征为:一页所存储的字节数为256Byte,当某页没有写入过数据时,该页256Byte的值全为0xFF。
在数据传送过程中发生瞬时断电时,导致主控器FPGA中应写Flash地址的丢失。在恢复上电后,触发FPGA内的上电复位模块,启动FPGA折半查找出断电前的应写Flash地址。
折半查找的方法参照图2,图2是本发明的折半查找算法流程图。联系具体Flash芯片W25Q来说明该算法的运行流程。
首先给定初始状态,将Flash首页的地址设为Min,末页设为Max。因为Flash在没写入数据时,其中存储的数据都为FF,我们定义k=(Min+Max)/2,对k页中的数据进行判断,若它的256个字节数据都为FF则将k值赋给Max;若它的它的256个字节数据不全为FF则将k的值赋给Min。
接着将赋了新地址的Min或者Max带回到初始的状态,进行下一次的循环。通过不断的循环,当初始状态中,Max及Min满足Max-Min=1这个条件时,即完成了折半查找,而Max的值就是要续写的页数地址。
接着,按照图1中的流程,将串口接收到的数据传给数据缓存区,再通过读写控制将数据不断的传输到查找到的flash的Max的地址中,从而实现断电续存的功能。
本发明通过折半查找的方法,对重新上电的FPGA存储地址进行折半查找,使得数据能够继续保存,相比于现有技术对地址进行从头到尾的顺序检测,缩短了时间,提高了查找效率。而且,当Flash中的已写数据量越来越大时,顺序查找方法的查找速度会越来越慢,但折半查找方法的查找速度受此情况影响较小。另外,具体实施例中折半查找算法并不局限于该类芯片,可以针对具体Flash芯片一页规定的字节数以及其没有写过数据的特征作判断条件的调整,来使用折半查找算法。
Claims (4)
1.一种FPGA实现断电续存功能的系统,其特征在于:包括上电复位模块、折半查找模块、SPI读写控制模块、数据FIFO模块;其中:
上电复位检测模块与折半查找模块相连,上电复位检测模块检测到上电后,发送至折半查找模块以开始断电前已写页数的查找;
折半查找模块分别与SPI读写控制模块以及数据FIFO模块相连,折半查找模块通过控制SPI读写控制模块进行Flash存储内容的读取,并使用折半查找算法找到已写页数;
数据FIFO模块与串口接收端、SPI读写控制模块相连,当折半查找模块找到已写页数后,将已写页数信息以及准许写入Flash的信号传送给数据FIFO模块,保证串口数据在断电前已写页数后继续写入Flash,从而完成断电续存的功能。
2.根据权利要求1所述的FPGA实现断电续存功能的系统,其特征在于:所述折半查找模块,其输入端连接上电复位检测模块,用于接收启动查找信号,其输出端连接数据FIFO模块以及SPI控制读写模块,使用折半查找算法找到已写页数由一个状态机实现,定义首页与尾页的变量,通过折半逼近,最终找出断电前的已写页数;找到后,将已写页数信息和准许接收数据信号输出至数据FIFO模块,使得系统继续保存数据。
3.一种FPGA实现断电续存功能的方法,其特征在于,包括以下步骤:
数据由串口传输至FPGA的缓存区,当数据量满足Flash一页的存储字节量时,通过FPGA内的SPI读写控制模块写入至Flash芯片内;
当存储系统瞬时断电后的重新上电时,触发FPGA内的上电复位模块,上电复位模块开始启动折半查找模块对断电前Flash芯片已写页数进行查找;
当折半查找模块查找出断电前已写页数时,即将已写页数参数传递给SPI读写控制模块,至此,系统将缓存区的数据沿续断电前的已写页之后写入Flash芯片,完成断电续存功能。
4.根据权利要求3所述的FPGA实现断电续存功能的方法,其特征在于,折半查找模块对断电前Flash芯片已写页数进行查找的具体步骤为:
(1)定义三个变量参数Min、Max、k,Min变量为Flash芯片的首页,Max变量为Flash芯片的尾页;
(2)k的取值为k=(Min+Max)/2;
(3)折半查找模块通过SPI 读写控制模块查询Flash的第k页,对其进行是否写过的检测,若已写过数据,则转步骤(4),若未写过数据,则转步骤(5);
(4)第k页还未写入数据;则将Max变量赋予k值,Min变量不变,回到第(2)步;
(5) 第k页已经写入数据,则将Min变量赋予k值,Max变量不变,回到第(2)步;
第k页已经写入数据,则将Min变量赋予k值,Max变量不变,并判断是否满足Max-Min=1的条件,若是,则查找的续存页数便为Max,即查找完成;否则,回到第(2)步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910527857.1A CN110362417B (zh) | 2019-06-18 | 2019-06-18 | Fpga实现断电续存功能的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910527857.1A CN110362417B (zh) | 2019-06-18 | 2019-06-18 | Fpga实现断电续存功能的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110362417A CN110362417A (zh) | 2019-10-22 |
CN110362417B true CN110362417B (zh) | 2022-09-27 |
Family
ID=68216346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910527857.1A Active CN110362417B (zh) | 2019-06-18 | 2019-06-18 | Fpga实现断电续存功能的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110362417B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324917A (zh) * | 2020-03-31 | 2020-06-23 | 南京辉腾电子科技有限公司 | 一种fpga实现的断电续存功能的系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100014330A1 (en) * | 2008-07-16 | 2010-01-21 | Acbel Polytech Inc. | Ac to dc power converter with hold-up time function |
US20160023773A1 (en) * | 2014-07-23 | 2016-01-28 | Hamilton Sundstrand Corporation | Hybrid electric pulsed-power propulsion system for aircraft |
CN106055274A (zh) * | 2016-05-23 | 2016-10-26 | 联想(北京)有限公司 | 一种数据存储方法、数据读取方法及电子设备 |
CN106649142A (zh) * | 2016-12-02 | 2017-05-10 | 北京航天长征飞行器研究所 | 一种具有断电续存功能的高速存储器 |
-
2019
- 2019-06-18 CN CN201910527857.1A patent/CN110362417B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100014330A1 (en) * | 2008-07-16 | 2010-01-21 | Acbel Polytech Inc. | Ac to dc power converter with hold-up time function |
US20160023773A1 (en) * | 2014-07-23 | 2016-01-28 | Hamilton Sundstrand Corporation | Hybrid electric pulsed-power propulsion system for aircraft |
CN106055274A (zh) * | 2016-05-23 | 2016-10-26 | 联想(北京)有限公司 | 一种数据存储方法、数据读取方法及电子设备 |
CN106649142A (zh) * | 2016-12-02 | 2017-05-10 | 北京航天长征飞行器研究所 | 一种具有断电续存功能的高速存储器 |
Also Published As
Publication number | Publication date |
---|---|
CN110362417A (zh) | 2019-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2187315A1 (en) | Method for accessing data in flash memory and data accessing controller | |
US8010770B2 (en) | Caching device for NAND flash translation layer | |
CN101719103B (zh) | 基于存储设备的信息处理方法以及存储设备 | |
US10430331B2 (en) | Reconstruct drive for dynamic resizing | |
US7571276B2 (en) | Read operation for semiconductor memory devices | |
CN106021120B (zh) | 存储系统及其操作方法 | |
CN106802867B (zh) | 固态储存装置及其数据编程方法 | |
JP2006172458A (ja) | 不揮発性保存装置にマルチメディアデータをブロック単位で保存する方法及び装置 | |
US9449660B2 (en) | Sampling circuit module, memory control circuit unit, and method for sampling data | |
US8775742B2 (en) | System and method for cache management in a DIF enabled storage system | |
US20120011299A1 (en) | Memory device with dynamic controllable physical logical mapping table loading | |
US9606811B2 (en) | Operating method of data storage device | |
US20040193864A1 (en) | System and method for actively booting a computer system | |
TW202009936A (zh) | 快閃記憶體控制器及相關的存取方法及電子裝置 | |
CN110362417B (zh) | Fpga实现断电续存功能的系统及方法 | |
TW202011411A (zh) | 快閃記憶體控制器及相關的存取方法及電子裝置 | |
US9928177B2 (en) | Managing method for cache memory of solid state drive | |
CN111026325B (zh) | 闪存控制器、闪存控制器的控制方法及相关的电子装置 | |
TWI534814B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN111324917A (zh) | 一种fpga实现的断电续存功能的系统及方法 | |
CN113010236B (zh) | 一种程序执行方法、装置、设备及存储介质 | |
CN109729730B (zh) | 写入信息的方法和装置 | |
US20140089356A1 (en) | Data storage device and operating method thereof | |
CN112673364A (zh) | 数据传输方法、数据传输装置、电子设备和存储介质 | |
CN113836059B (zh) | 一种应用于eeprom存储器的控制系统 |
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 |