CN111176884A - 用于fpga配置存储器的sec校验方法和装置 - Google Patents
用于fpga配置存储器的sec校验方法和装置 Download PDFInfo
- Publication number
- CN111176884A CN111176884A CN201911395482.4A CN201911395482A CN111176884A CN 111176884 A CN111176884 A CN 111176884A CN 201911395482 A CN201911395482 A CN 201911395482A CN 111176884 A CN111176884 A CN 111176884A
- Authority
- CN
- China
- Prior art keywords
- data
- configuration memory
- fpga configuration
- error
- sec
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 228
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000012795 verification Methods 0.000 title claims abstract description 48
- 125000004122 cyclic group Chemical group 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- 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
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种用于FPGA配置存储器的SEC校验方法,包括:获取并保存参考ECC校验码;根据所述参考ECC校验码对所述FPGA配置存储器中的数据逐帧进行ECC校验并修改错误数据;对所述FPGA配置存储器中的数据进行CRC校验并在出现错误时对配置存储器中的所有帧进行数据重置。还公开了一种用于FPGA配置存储器的SEC校验装置,包括校验码存储模块、SEC校验模块、校正模块、配置模块和片外存储器,用于执行所述SEC校验方法。本发明的方法和装置使用ECC校验和CRC校验在FPGA芯片正常工作时对FPGA配置存储器中的数据进行检测和错误校正,两种校验方式共同作用,提高了FPGA芯片工作的正确性和稳定性。
Description
技术领域
本发明属于FPGA配置存储器技术领域,具体涉及一种用于FPGA配置存储器的SEC校验方法和装置。
背景技术
FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)配置存储器分布贯穿于整个FPGA芯片,是芯片内部数量最多的存储单元,其中的数据控制着布线资源、查找表等可配置逻辑资源,决定了用户电路的行为。在对FPGA芯片进行配置的过程中,会按照配置存储器各存储单元的分布位置将其划分为多个地址,每个地址存放固定长度的数据。在FPGA配置完成进入正常工作状态后,受各种因素影响,芯片内部配置存储器中的数据可能会出现错误,导致芯片无法正常工作。为了保证FPGA芯片工作的正确性和稳定性,在FPGA芯片正常工作的过程中,需要监视、检测并校正配置存储器中出现的错误。
现有技术中公开了一种软错误检测方法,用来对FPGA配置存储器中的错误进行检验校正,其实现方法是读取FPGA配置存储器中的所有数据后进行CRC校验(CyclicRedundancy Check,循环冗余校验),若发现错误则重启配置,将片外存储器保存的所有配置数据再次写入FPGA配置存储器中,但重启配置只能在MSPI(Master Serial PeripheralInterface,主串行外围接口)配置模式下才能进行,其他配置模式下无法校正配置数据中的错误,其错误的检测率和修改率会受校验方法自身弊端的限制。
现有的另一种软错误缓冲方法用于对FPGA配置存储器中的错误进行检验校正,其实现方法是对FPGA配置存储器中的数据进行ECC(Error Correcting Code,纠错码)校验和CRC校验,其在数据校正过程中,将校正后的一帧配置数据重新写入FPGA配置存储器中是通过多个模块来控制启动配置模块,执行写配置数据的命令来实现的,且要产生配置模块能够识别的比特流数据,操作复杂。
发明内容
为了解决现有技术中存在的上述问题,本发明提供了一种用于FPGA配置存储器的SEC校验方法和装置。本发明要解决的技术问题通过以下技术方案实现:
本发明的一个方面提供了一种用于FPGA配置存储器的SEC校验方法,包括:
获取并保存参考ECC校验码;
根据所述参考ECC校验码对所述FPGA配置存储器中的数据逐帧进行ECC校验并修改错误数据;
对所述FPGA配置存储器中的数据进行CRC校验并在出现错误时对配置存储器中的所有帧进行数据重置。
在本发明的一个实施例中,获取并保存参考ECC校验码,包括:
在启动SEC校验后第一次从FPGA配置存储器中读取数据时,从所述FPGA配置存储器的0地址开始依次读取所有地址中的每一帧数据;
按照ECC校验码计算方法计算所述每一帧数据的参考ECC校验码并保存至校验码存储器的对应位置。
在本发明的一个实施例中,根据所述参考ECC校验码对所述FPGA配置存储器中的数据逐帧进行ECC校验并修改错误数据,包括:
计算所述FPGA配置存储器中当前帧数据的实际ECC校验码;
判断所述实际ECC校验码与当前帧数据对应的所述参考ECC校验码是否一致,若是,继续获取下一帧数据的ECC校验码并对所述下一帧数据进行ECC校验,若否,对当前帧错误数据进行修改或对所述FPGA配置存储器中的所有数据进行重新配置。
在本发明的一个实施例中,对当前帧错误数据进行修改或对所述FPGA配置存储器中的所有数据进行重新配置,包括:
根据用户设置的参数,判断是否对当前帧错误数据进行校正,若预先设定为不进行校正,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验;若预先设定为进行校正,判断当前帧错误数据是否为可校正错误,若为可校正错误,修改所述当前帧错误数据,并将修改后的数据重新写入所述FPGA配置存储器的对应位置;若为不可校正错误,发送校验错误报告并根据用户设置对所述FPGA配置存储器中的所有数据进行重新配置。
在本发明的一个实施例中,若为可校正错误,修改所述当前帧错误数据,并将修改后的数据重新写入所述FPGA配置存储器的对应位置,包括:
确定所述当前帧错误数据在所述FPGA配置存储器中的地址以及当前帧的错误比特位;
根据所述当前帧错误数据的地址,通过控制地址移位寄存器和数据移位寄存器从所述FPGA配置存储器的相应地址中读取所述当前帧错误数据,并根据所述错误比特位将所述当前帧错误数据的对应比特位取反;
通过控制地址移位寄存器和数据移位寄存器将校正后的数据重新写入所述FPGA配置存储器的对应地址中。
在本发明的一个实施例中,若为不可校正错误,发送校验错误报告并根据用户设置对所述FPGA配置存储器中的所有数据进行重新配置,包括:
判断当前用户设置是否可重启配置,若否,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验;若是,则对所述FPGA配置存储器中的所有数据进行数据重置,并从数据重置后的FPGA配置存储器的0地址开始重新进行ECC校验。
在本发明的一个实施例中,对所述FPGA配置存储器中的数据进行CRC校验并在出现错误数据时根据用户设置进行数据重置,包括:
在所述FPGA配置存储器中的最后一帧数据完成ECC校验后,对所述FPGA配置存储器中的数据进行CRC校验,若CRC校验成功,则重新从所述FPGA配置存储器的0地址开始进行ECC校验;若CRC校验失败,根据用户设置来判断是否可重启配置,若是,对所述FPGA配置存储器中的所有数据进行数据重置,并从数据重置后的FPGA配置存储器的0地址开始重新进行ECC校验,若否,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验。
本发明的另一方面提供了一种用于FPGA配置存储器的SEC校验装置,用于执行上述实施例中任一项所述的SEC校验方法,所述SEC校验装置包括校验码存储模块、SEC校验模块、校正模块、配置模块和片外存储器,其中,所述校验码存储模块用于获取并保存参考ECC校验码;
所述SEC校验模块连接所述校验码存储模块,用于进行CRC校验以及根据所述参考ECC校验码对FPGA配置存储器中的数据进行ECC校验;
所述校正模块连接所述SEC校验模块和所述FPGA配置存储器,用于根据所述SEC校验模块的控制信号对所述FPGA配置存储器中的可校正错误进行修改;
所述配置模块连接所述SEC校验模块和所述片外存储器,所述片外存储器连接所述FPGA配置存储器,所述配置模块用于根据所述SEC校验模块的控制信号,利用所述片外存储器中的FPGA配置数据对所述FPGA配置存储器中的不可进行ECC校正错误时进行重新配置,重置所述FPGA配置存储器中的所有数据。
在本发明的一个实施例中,所述校正模块包括地址移位寄存器和数据移位寄存器,其中,所述地址移位寄存器和所述数据移位寄存器用于在检测到当前帧数据为可校正错误时,从所述FPGA配置存储器中读取所述当前帧数据并进行修改,并将修改后的数据重新写入所述FPGA配置存储器的对应地址中。
所述用于FPGA配置存储器的SEC校验装置还包括状态寄存器,连接所述SEC校验模块,用于当检测到的信号是不可校正错误或用户设置为不进行校正的错误时,接收和存储来自所述SEC校验模块的错误指示信号。
与现有技术相比,本发明的有益效果在于:
1、本发明用于FPGA配置存储器的SEC校验方法是使用ECC校验和CRC校验在FPGA芯片正常工作时对FPGA配置存储器中的数据进行检测和错误校正,其中,ECC校验可校正每一帧配置数据中的1比特错误,不需重启配置过程,不影响FPGA芯片的正常工作,且可重复进行;CRC校验可检测到配置数据中的任何错误,不受错误比特个数的影响,能刷新配置存储器中的所有数据,通过两种校验共同作用,提高了FPGA芯片工作的正确性和稳定性。
2、本发明的SEC校验控制电路预留有用户介入接口,用户可根据具体需求自主决定校验的使能与关闭及校验的次数。
3、本发明的SEC校验方法和装置,在完成一帧数据校正后,通过简单的控制信号来控制FPGA芯片中原有的地址移位寄存器和数据移位寄存器,将纠错后的数据重新写入FPGA配置存储器的对应位置,简化了电路和控制流程。
以下将结合附图及实施例对本发明做进一步详细说明。
附图说明
图1是本发明实施例提供的一种用于FPGA配置存储器的SEC校验方法的流程图;
图2是本发明实施例提供的一种用于FPGA配置存储器的SEC校验方法的另一流程图;
图3是本发明实施例提供的一种用于FPGA配置存储器的SEC校验方法的模块图;
图4是本发明实施例提供的一种用于FPGA配置存储器的SEC校验方法的结构图。
具体实施方式
为了进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及具体实施方式,对依据本发明提出的一种用于FPGA配置存储器的SEC校验方法和装置进行详细说明。
有关本发明的前述及其他技术内容、特点及功效,在以下配合附图的具体实施方式详细说明中即可清楚地呈现。通过具体实施方式的说明,可对本发明为达成预定目的所采取的技术手段及功效进行更加深入且具体地了解,然而所附附图仅是提供参考与说明之用,并非用来对本发明的技术方案加以限制。
应当说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。
实施例一
请参见图1,图1是本发明实施例提供的一种用于FPGA配置存储器的SEC校验方法的流程图。在FPGA芯片配置完成后,通过控制信号启动SEC软错误校验功能。本实施例的SEC校验方法包括:
S1:获取并保存参考ECC校验码;
S2:根据所述参考ECC校验码对所述FPGA配置存储器中的数据逐帧进行ECC校验并修改错误数据;
ECC是一种内存纠错方式,当一帧数据中只有1比特错误时,能够定位并校正该错误;当一帧数据中有2比特错误时,能够检测出该错误。ECC是通过在原来的数据位上外加校验位来实现的,如果数据位是8位,则需增加5位来进行ECC错误检查和纠正,数据位每增加一倍,ECC只增加一位校验位,也就是说当数据位为16位使ECC位为6位,32位时ECC位为7位,64位时ECC位为8位,依次类推,数据位每增加一倍,ECC位只增加一位。
S3:对所述FPGA配置存储器中的数据进行CRC校验并在出现错误时对配置存储器中的所有帧进行数据重置。
CRC是根据数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误,不受错误位数的限制。
进一步地,步骤S1包括:
在启动SEC校验后第一次从FPGA配置存储器中读取数据时,从所述FPGA配置存储器的0地址开始依次读取所有地址中的每一帧数据;按照ECC校验码计算方法计算所述每一帧数据的参考ECC校验码并保存至校验码存储器的对应位置。
具体地,在本实施例中,当FPGA配置存储器配置完成后,启动SEC校验装置,SEC校验模块会从FPGA配置存储器的0地址开始,依次读取所有地址中的数据。每读取一帧数据,按照ECC校验码计算方法计算出该帧数据的参考ECC校验码,若为第一次从FPGA配置存储器中读取数据,则依次将各帧数据的参考ECC校验码保存在ECC校验码存储器的对应地址中。优选地,所述ECC校验码存储器为sram_sp_hde存储器。
进一步地,步骤S2包括:
S21:计算所述FPGA配置存储器中当前帧数据的实际ECC校验码;
具体地,完成了第一次数据读取并生成参考ECC校验码后,再次从FPGA配置存储器的0地址开始,将FPGA配置存储器中的所有数据依次实时读出。每读取一帧数据,就按照ECC校验码计算方法计算出当前帧数据的ECC校验码,作为当前帧数据的实际ECC校验码。
S22:判断所述实际ECC校验码与对应的参考ECC校验码是否一致,若是,继续获取下一帧数据的ECC校验码并对所述下一帧数据进行ECC校验,若否,对当前帧错误数据进行修改或对FPGA配置存储器中的所有数据进行重新配置。
进一步地,步骤S22中所述的对当前帧错误数据进行修改或对FPGA配置存储器中的所有数据进行重新配置,包括:
根据用户预先设定的参数,判断是否对所述当前帧的错误数据进行校正,若预先设定为不进行校正,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验;若预先设定为进行校正,判断当前帧错误数据是否为可校正错误,若为可校正错误,修改所述当前帧错误数据,并将修改后的数据重新写入所述FPGA配置存储器的对应位置;若为不可校正错误,发送校验错误报告并根据用户设置对所述FPGA配置存储器中的所有数据进行重新配置。
具体地,执行本实施例的SEC校验方法的装置可以设置用户介入接口,用户可根据具体需求自主决定校验的使能与关闭及校验的次数,例如,用户可以根据需求设置对于检测到的错误是否进行修改或发出警报,或者,用户可以根据需求设置对FPGA配置存储器中的数据进行循环校验或只进行一次校验。
进一步地,若为可校正错误,修改所述当前帧错误数据,并将修改后的数据重新写入所述FPGA配置存储器的对应位置,包括:
确定所述当前帧错误数据在所述FPGA配置存储器中的地址以及当前帧的错误比特位;根据所述当前帧错误数据的地址,通过控制地址移位寄存器和数据移位寄存器从所述FPGA配置存储器的相应地址中读取所述当前帧错误数据,并根据所述错误比特位将所述当前帧错误数据的对应比特位取反;通过控制地址移位寄存器和数据移位寄存器将校正后的数据重新写入所述FPGA配置存储器的对应地址中。
进一步地,若为不可校正错误,发送校验错误报告并根据用户设置对所述FPGA配置存储器中的所有数据进行重新配置,包括:
判断当前用户设置是否可重启配置,若否,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验;若是,则对所述FPGA配置存储器中的所有数据进行数据重置,并取消SEC错误报告,从数据重置后的FPGA配置存储器的0地址开始重新进行ECC校验。
进一步地,对所述FPGA配置存储器中的数据进行CRC校验并在出现错误数据时根据用户设置进行数据重置,包括:
在所述FPGA配置存储器中的最后一帧数据完成ECC校验后,对所述FPGA配置存储器中的数据进行CRC校验,若CRC校验成功,则重新从所述FPGA配置存储器的0地址开始进行ECC校验;若CRC校验失败,根据用户设置来判断是否可重启配置,若是,对所述FPGA配置存储器中的所有数据进行数据重置,并从数据重置后的FPGA配置存储器的0地址开始重新进行ECC校验,若否,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验。
本实施例的用于FPGA配置存储器的SEC校验方法使用ECC校验和CRC校验在FPGA芯片正常工作时对FPGA配置存储器中的数据进行检测和错误校正,其中,ECC校验可校正每一帧配置数据中的1比特错误,不需重启配置过程,不影响FPGA芯片的正常工作,且可重复进行;CRC校验可检测到配置数据中的任何错误,不受错误比特个数的影响,能刷新配置存储器中的所有数据,通过两种校验共同作用,提高了FPGA芯片工作的正确性和稳定性。
实施例二
请参见图2,图2是本发明实施例提供的一种用于FPGA配置存储器的SEC校验方法的另一流程图。
本实施例的SEC校验方法包括:
当FPGA配置存储器配置完成后,启动SEC校验装置,SEC校验模块会从FPGA配置存储器的0地址开始,依次读取所有地址中的数据,判断是否为第一次从FPGA配置存储器中读取数据,若是,则依次计算各帧数据的ECC校验码最为参考ECC校验码,并保存在ECC校验码存储器的对应地址中,优选地,所述ECC校验码存储器为sram_sp_hde存储器,若不是第一次从FPGA配置存储器中读取数据,则说明在之前的步骤中已经保存了参考ECC校验码,此时计算当前读取的一帧数据的实际校验码并从存储器对应地址中读取该帧数据的参考校验码进行对比运算。
接着,判断所述实际ECC校验码与该帧数据对应的参考ECC校验码是否一致,若一致,说明该帧数据没有错误,接着判断该帧数据是否为FPGA配置存储器的最后一帧数据,若不是最后一帧数据,则继续获取下一帧数据的ECC校验码并对所述下一帧数据进行ECC校验,若为最后一帧数据,则进入CRC校验步骤,关于CRC校验步骤的具体过程,以下将详细描述。
若实际ECC校验码与该帧数据对应的参考ECC校验码不一致,则根据用户预先设定的参数,判断是否对所述当前帧的错误数据进行校正,若预先设定为不进行校正,则向状态寄存器中对应的sed错误指示信号拉高,并重新从所述FPGA配置存储器的0地址开始进行ECC校验;若预先设定为进行校正,判断当前帧错误数据是否为可校正错误,若为可校正错误,则确定所述当前帧错误数据在所述FPGA配置存储器中的地址以及当前帧的错误比特位,根据所述当前帧错误数据的地址,通过控制地址移位寄存器和数据移位寄存器从所述FPGA配置存储器的相应地址中读取所述当前帧错误数据,并根据所述错误比特位将所述当前帧错误数据的对应比特位取反,通过控制地址移位寄存器和数据移位寄存器将校正后的数据重新写入所述FPGA配置存储器的对应地址中;若为不可校正错误,判断当前用户设置是否可重启配置,若否,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验;若是,则对所述FPGA配置存储器中的所有数据进行数据重置,并取消SEC错误报告,从数据重置后的FPGA配置存储器的0地址开始重新进行ECC校验。
需要说明的是,在每次读取FPGA配置存储器中的数据时,会判断该帧数据为FPGA配置存储器的最后一帧数据,若是,则进入CRC校验步骤,若否,则继续获取下一帧数据的ECC校验码并对所述下一帧数据进行ECC校验。
在所述FPGA配置存储器中的最后一帧数据完成ECC校验后,对所述FPGA配置存储器中的数据进行CRC校验,若CRC校验成功,则重新从所述FPGA配置存储器的0地址开始进行ECC校验;若CRC校验失败,根据用户设置来判断是否可重启配置,若是,对所述FPGA配置存储器中的所有数据进行数据重置,并从数据重置后的FPGA配置存储器的0地址开始重新进行ECC校验,若否,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验。
进一步地,在进行CRC校验之后还包括:
检测是否设置了持续进行校验,若是,则重新从所述FPGA配置存储器的0地址开始进行ECC校验,如否,则在对所述FPGA配置存储器进行一次ECC校验和CRC校验之后,结束校验。此外,还可以将校验循环次数设置为具体地次数。
实施例三
在上述实施例的基础上,本实施例提供了一种用于FPGA配置存储器的SEC校验装置,用于执行实施例一中所述的SEC校验方法。
请参见图3,图3是本发明实施例提供的一种用于FPGA配置存储器的SEC校验方法的模块图。本实施例的SEC校验装置包括校验码存储模块101、SEC校验模块102、校正模块103、配置模块104和片外存储器105,其中,校验码存储模块101用于获取并保存参考ECC校验码;SEC校验模块102连接校验码存储模块101,用于进行CRC校验以及根据所述参考ECC校验码对FPGA配置存储器(106)中的数据进行ECC校验;校正模块103连接SEC校验模块102和FPGA配置存储器106,用于根据SEC校验模块102的控制信号对FPGA配置存储器106中的可校正错误进行修改;配置模块104连接SEC校验模块102和片外存储器105,片外存储器105连接FPGA配置存储器106,配置模块104用于根据SEC校验模块102的控制信号,利用片外存储器105中的FPGA配置数据对FPGA配置存储器106中的不可进行ECC校正错误时进行重新配置,重置所述FPGA配置存储器中的所有数据。
在实际运行过程中,当FPGA配置存储器106配置完成后,启动SEC校验,SEC校验模块102会从FPGA配置存储器106的0地址开始,依次读取所有地址中的数据,若为第一次从FPGA配置存储器102中读取数据,则依次计算各帧数据的ECC校验码最为参考ECC校验码,并保存在ECC校验码存储器101的对应地址中。所述参考ECC校验码即为随后ECC校验时判断FPGA配置存储器102钟的数据是否正确的标准。在本实施例中,SEC校验模块102包括ECC校验单元和CRC校验单元。
随后,完成了第一次数据读取并生成参考ECC校验码后,随后即可开始FPGA配置存储器106数据的校验过程。具体地,在FPGA芯片正常工作中,再次从FPGA配置存储器106的0地址开始,将FPGA配置存储器106中的所有数据依次实时读出。每读取一帧数据,所述ECC校验单元按照ECC校验码计算方法计算出当前帧数据的ECC校验码,作为当前帧数据的实际ECC校验码;并且所述ECC校验单元对所述实际ECC校验码与对应的所述参考ECC校验码进行比较结果,随后根据对比结果控制校正模块103对当前帧错误数据进行修改或控制配置模块104对所述FPGA配置存储器106中的所有数据进行重新配置。
接着,在FPGA配置存储器106中的最后一帧数据完成ECC校验后,利用CRC校验单元对FPGA配置存储器106中的数据进行CRC校验,若CRC校验成功,则重新从FPGA配置存储器106的0地址开始进行ECC校验;若CRC校验失败,根据用户设置来判断是否可重启配置,若可重启配置,则所述CRC校验单元对配置模块104发送控制信号,控制配置模块104利用片外存储器105中存储的配置数据对FPGA配置存储器106中的所有数据进行数据重置,并从数据重置后的FPGA配置存储器106的0地址开始重新进行ECC校验;若不可重启配置,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验。
进一步地,所述SEC校验装置还包括状态寄存器,连接所述SEC校验模块,用于当检测到的信号是不可校正错误、预先设定为不进行校正的错误或为不可重置的错误时,接收和存储来自所述SEC校验模块的错误指示信号。具体的比较和判断过程,在实施例一和实施例二中已经进行了具体描述,请参见实施例一和实施例二,这里不再赘述。
进一步地,请参见图4,图4是本发明实施例提供的一种用于FPGA配置存储器的SEC校验方法的结构图。校正模块103包括地址移位寄存器1031和数据移位寄存器1032,其中,地址移位寄存器1031和数据移位寄存器1032用于在检测到当前帧数据为可校正错误时,从FPGA配置存储器106中读取当前帧数据并进行修改,并将修改后的数据重新写入FPGA配置存储器106的对应地址中。优选地,所述ECC校验码存储器101为sram_sp_hde存储器。
此外,需要说明的是,本实施例的SEC校验控制电路预留有用户介入接口,用户可根据具体需求自主决定校验的使能与关闭及校验的次数,例如,用户可以根据需求设置对于检测到的错误是否进行修改或发出警报,或者,用户可以根据需求设置对FPGA配置存储器中的数据进行循环校验或只进行一次校验。
综上,现有技术的校验方法将校正后的一帧配置数据重新写入FPGA配置存储器中是通过多个模块来控制启动配置模块,执行写配置数据的命令来实现的,且要产生配置模块能够识别的比特流数据,操作复杂。而本实施例的SEC校验方法和装置,在完成一帧数据校正后,通过简单的控制信号来控制FPGA芯片中原有的地址移位寄存器和数据移位寄存器,将纠错后的数据重新写入FPGA配置存储器的对应位置,简化了电路和控制流程。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种用于FPGA配置存储器的SEC校验方法,其特征在于,所述方法包括:
获取并保存参考ECC校验码;
根据所述参考ECC校验码对所述FPGA配置存储器中的数据逐帧进行ECC校验并修改错误数据;
对所述FPGA配置存储器中的数据进行CRC校验并在出现错误时对配置存储器中的所有帧进行数据重置。
2.根据权利要求1所述的用于FPGA配置存储器的SEC校验方法,其特征在于,获取并保存参考ECC校验码,包括:
在启动SEC校验后第一次从FPGA配置存储器中读取数据时,从所述FPGA配置存储器的0地址开始依次读取所有地址中的每一帧数据;
按照ECC校验码计算方法计算所述每一帧数据的参考ECC校验码并保存至校验码存储器的对应位置。
3.根据权利要求1所述的用于FPGA配置存储器的SEC校验方法,其特征在于,根据所述参考ECC校验码对所述FPGA配置存储器中的数据逐帧进行ECC校验并修改错误数据,包括:
计算所述FPGA配置存储器中当前帧数据的实际ECC校验码;
判断所述实际ECC校验码与当前帧数据对应的所述参考ECC校验码是否一致,若是,继续获取下一帧数据的ECC校验码并对所述下一帧数据进行ECC校验,若否,对当前帧错误数据进行修改或对所述FPGA配置存储器中的所有数据进行重新配置。
4.根据权利要求3所述的用于FPGA配置存储器的SEC校验方法,其特征在于,对当前帧错误数据进行修改或对所述FPGA配置存储器中的所有数据进行重新配置,包括:
根据用户设置的参数,判断是否对当前帧错误数据进行校正,若预先设定为不进行校正,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验;若预先设定为进行校正,判断当前帧错误数据是否为可校正错误,若为可校正错误,修改所述当前帧错误数据,并将修改后的数据重新写入所述FPGA配置存储器的对应位置;若为不可校正错误,发送校验错误报告并根据用户设置对所述FPGA配置存储器中的所有数据进行重新配置。
5.根据权利要求4所述的用于FPGA配置存储器的SEC校验方法,其特征在于,若为可校正错误,修改所述当前帧错误数据,并将修改后的数据重新写入所述FPGA配置存储器的对应位置,包括:
确定所述当前帧错误数据在所述FPGA配置存储器中的地址以及当前帧的错误比特位;
根据所述当前帧错误数据的地址,通过控制地址移位寄存器和数据移位寄存器从所述FPGA配置存储器的相应地址中读取所述当前帧错误数据,并根据所述错误比特位将所述当前帧错误数据的对应比特位取反;
通过控制地址移位寄存器和数据移位寄存器将校正后的数据重新写入所述FPGA配置存储器的对应地址中。
6.根据权利要求4所述的用于FPGA配置存储器的SEC校验方法,其特征在于,若为不可校正错误,发送校验错误报告并根据用户设置对所述FPGA配置存储器中的所有数据进行重新配置,包括:
判断当前用户设置是否可重启配置,若否,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验;若是,则对所述FPGA配置存储器中的所有数据进行数据重置,并从数据重置后的FPGA配置存储器的0地址开始重新进行ECC校验。
7.根据权利要求1所述的用于FPGA配置存储器的SEC校验方法,其特征在于,对所述FPGA配置存储器中的数据进行CRC校验并在出现错误数据时根据用户设置进行数据重置,包括:
在所述FPGA配置存储器中的最后一帧数据完成ECC校验后,对所述FPGA配置存储器中的数据进行CRC校验,若CRC校验成功,则重新从所述FPGA配置存储器的0地址开始进行ECC校验;若CRC校验失败,根据用户设置来判断是否可重启配置,若是,对所述FPGA配置存储器中的所有数据进行数据重置,并从数据重置后的FPGA配置存储器的0地址开始重新进行ECC校验,若否,则向状态寄存器中发送错误指示信号,并重新从所述FPGA配置存储器的0地址开始进行ECC校验。
8.一种用于FPGA配置存储器的SEC校验装置,其特征在于,用于执行权利要求1至7中任一项所述的SEC校验方法,所述SEC校验装置包括校验码存储模块(101)、SEC校验模块(102)、校正模块(103)、配置模块(104)和片外存储器(105),其中,
所述校验码存储模块(101)用于获取并保存参考ECC校验码;
所述SEC校验模块(102)连接所述校验码存储模块(101),用于进行CRC校验以及根据所述参考ECC校验码对FPGA配置存储器(106)中的数据进行ECC校验;
所述校正模块(103)连接所述SEC校验模块(102)和所述FPGA配置存储器(106),用于根据所述SEC校验模块(102)的控制信号对所述FPGA配置存储器(106)中的可校正错误进行修改;
所述配置模块(104)连接所述SEC校验模块(102)和所述片外存储器(105),所述片外存储器(105)连接所述FPGA配置存储器(106),所述配置模块(104)用于根据所述SEC校验模块(102)的控制信号,利用所述片外存储器(105)中的FPGA配置数据对所述FPGA配置存储器(106)中的不可进行ECC校正错误时进行重新配置,重置所述FPGA配置存储器中的所有数据。
9.根据权利要求8所述的用于FPGA配置存储器的SEC校验装置,其特征在于,所述校正模块(103)包括地址移位寄存器(1031)和数据移位寄存器(1032),其中,所述地址移位寄存器(1031)和所述数据移位寄存器(1032)用于在检测到当前帧数据为可校正错误时,从所述FPGA配置存储器(106)中读取所述当前帧数据并进行修改,并将修改后的数据重新写入所述FPGA配置存储器(106)的对应地址中。
10.根据权利要求8或9所述的用于FPGA配置存储器的SEC校验装置,其特征在于,还包括状态寄存器,连接所述SEC校验模块(102),用于当检测到的信号是不可校正错误或用户设置为不进行校正的错误时,接收和存储来自所述SEC校验模块(102)的错误指示信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911395482.4A CN111176884B (zh) | 2019-12-30 | 2019-12-30 | 用于fpga配置存储器的sec校验方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911395482.4A CN111176884B (zh) | 2019-12-30 | 2019-12-30 | 用于fpga配置存储器的sec校验方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111176884A true CN111176884A (zh) | 2020-05-19 |
CN111176884B CN111176884B (zh) | 2023-05-16 |
Family
ID=70654253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911395482.4A Active CN111176884B (zh) | 2019-12-30 | 2019-12-30 | 用于fpga配置存储器的sec校验方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111176884B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131828A (zh) * | 2020-09-18 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN113157633A (zh) * | 2021-01-28 | 2021-07-23 | 厦门智多晶科技有限公司 | 一种在sec校验中启动重配置的方法、装置及fpga |
CN113608918A (zh) * | 2021-08-19 | 2021-11-05 | 无锡中微亿芯有限公司 | 具有对可编程逻辑模块自动检纠错功能的fpga |
CN113608919A (zh) * | 2021-08-19 | 2021-11-05 | 无锡中微亿芯有限公司 | 通过复用缓冲内存提高关键配置码流可靠性的fpga |
US11604692B2 (en) | 2021-08-19 | 2023-03-14 | Wuxi Esiontech Co., Ltd. | Field programmable gate array (FPGA) with automatic error detection and correction function for programmable logic modules |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203890B1 (en) * | 2004-06-16 | 2007-04-10 | Azul Systems, Inc. | Address error detection by merging a polynomial-based CRC code of address bits with two nibbles of data or data ECC bits |
CN101178675A (zh) * | 2007-12-14 | 2008-05-14 | 华为技术有限公司 | 校验数据的方法和装置 |
US7398449B1 (en) * | 2004-06-16 | 2008-07-08 | Azul Systems, Inc. | Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module |
-
2019
- 2019-12-30 CN CN201911395482.4A patent/CN111176884B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203890B1 (en) * | 2004-06-16 | 2007-04-10 | Azul Systems, Inc. | Address error detection by merging a polynomial-based CRC code of address bits with two nibbles of data or data ECC bits |
US7398449B1 (en) * | 2004-06-16 | 2008-07-08 | Azul Systems, Inc. | Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module |
CN101178675A (zh) * | 2007-12-14 | 2008-05-14 | 华为技术有限公司 | 校验数据的方法和装置 |
Non-Patent Citations (1)
Title |
---|
王轩;常亮;李杰;: "基于FPGA的NAND Flash ECC校验系统设计与实现" * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131828A (zh) * | 2020-09-18 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN112131828B (zh) * | 2020-09-18 | 2022-06-17 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN113157633A (zh) * | 2021-01-28 | 2021-07-23 | 厦门智多晶科技有限公司 | 一种在sec校验中启动重配置的方法、装置及fpga |
CN113157633B (zh) * | 2021-01-28 | 2023-05-26 | 厦门智多晶科技有限公司 | 一种在sec校验中启动重配置的方法、装置及fpga |
CN113608918A (zh) * | 2021-08-19 | 2021-11-05 | 无锡中微亿芯有限公司 | 具有对可编程逻辑模块自动检纠错功能的fpga |
CN113608919A (zh) * | 2021-08-19 | 2021-11-05 | 无锡中微亿芯有限公司 | 通过复用缓冲内存提高关键配置码流可靠性的fpga |
WO2023019742A1 (zh) * | 2021-08-19 | 2023-02-23 | 无锡中微亿芯有限公司 | 具有对可编程逻辑模块自动检纠错功能的fpga |
US11604692B2 (en) | 2021-08-19 | 2023-03-14 | Wuxi Esiontech Co., Ltd. | Field programmable gate array (FPGA) with automatic error detection and correction function for programmable logic modules |
CN113608918B (zh) * | 2021-08-19 | 2023-04-28 | 无锡中微亿芯有限公司 | 具有对可编程逻辑模块自动检纠错功能的fpga |
CN113608919B (zh) * | 2021-08-19 | 2024-02-02 | 无锡中微亿芯有限公司 | 通过复用缓冲内存提高关键配置码流可靠性的fpga |
Also Published As
Publication number | Publication date |
---|---|
CN111176884B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111176884B (zh) | 用于fpga配置存储器的sec校验方法和装置 | |
US7412575B2 (en) | Data management technique for improving data reliability | |
US8572444B2 (en) | Memory apparatus and testing method thereof | |
TWI685850B (zh) | 記憶體管理方法以及儲存控制器 | |
TWI816418B (zh) | 半導體儲存裝置及其操作方法 | |
JP6290303B2 (ja) | 誤り訂正能力をテストするための回路および方法 | |
JP2019096281A (ja) | データ記憶装置および関連する操作方法 | |
JP4950214B2 (ja) | データ記憶装置における停電を検出する方法、およびデータ記憶装置を復旧する方法 | |
JP4851525B2 (ja) | データ処理システムおよびその駆動方法 | |
JP7379932B2 (ja) | 制御装置、ユーザプログラムの実行制御方法、およびシステムプログラム | |
US11088711B2 (en) | Memory apparatus and data accessing method thereof | |
CN105787388B (zh) | 控制黑匣子的方法和装置 | |
US9519539B2 (en) | Monitoring data error status in a memory | |
CN112151104B (zh) | 存储器存放装置及其动态数据修复的方法 | |
CN110874281B (zh) | 存储器管理方法以及存储控制器 | |
JP2025054822A (ja) | 制御装置、検出方法、及び検出プログラム | |
CN117909130A (zh) | 判定Flash扇区数据写入异常的方法、装置、存储介质和终端设备 | |
CN119829325A (zh) | 内存ecc功能的验证方法、装置、电子设备及存储介质 | |
JPS6261974B2 (zh) | ||
JPH054266U (ja) | メモリ装置 | |
CN119883105A (zh) | 存储数据修复方法、装置、设备及介质 | |
CN116013397A (zh) | 一种固态硬盘注错测试方法、装置、设备及介质 | |
TW202101470A (zh) | 具有動態資料修復機制的記憶體存放裝置及其動態資料修復的方法 | |
CN111949433A (zh) | 非易失性存储器工作参数的处理方法、控制装置及存储器 | |
JPH05108496A (ja) | パトロール制御方式 |
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 |