CN112702065B - Fpga码流数据校验方法及装置 - Google Patents
Fpga码流数据校验方法及装置 Download PDFInfo
- Publication number
- CN112702065B CN112702065B CN202011506011.9A CN202011506011A CN112702065B CN 112702065 B CN112702065 B CN 112702065B CN 202011506011 A CN202011506011 A CN 202011506011A CN 112702065 B CN112702065 B CN 112702065B
- Authority
- CN
- China
- Prior art keywords
- stream data
- code stream
- column
- row
- code
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Security & Cryptography (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明涉及一种FPGA码流数据校验方法及一种FPGA码流数据校验装置。其中结合校验和校验与行列CRC交叉校验,在确保码流数据的完整性和准确性的基础上,有效检测码流数据在处理、传输及存储过程中是否出现错误,并且能够快速发现错误位置,进而做纠错处理,实现了码流数据的自纠错效果。此外,通过对码流数据进行分块处理,然后再对各码流数据块并行进行循环冗余校验,提高校验速度,提升FPGA设计的可靠性。
Description
技术领域
本发明涉及FPGA开发领域,尤其涉及一种FPGA码流数据校验方法及一种FPGA码流数据校验装置。
背景技术
FPGA(Field Programmable Gate Array,现场可编辑逻辑门阵列)的开发通常包括RTL(寄存器传输级)设计、功能仿真、逻辑综合、布局布线、板级验证等流程,其中,在经过布局布线处理之后,会生成二进制格式的码流数据,将码流数据按照器件时序要求下载到对应的FPGA芯片中,可以实现特定功能。
码流数据信息的正确与否直接决定芯片的功能是否正确。但是,码流数据在处理、存储及传输过程中可能发生异动,如其中一个或数个数据位出现错误,如果直接被应用于实现芯片功能,芯片可能无法正常工作,甚至产生不可预估的后果,因此,需要及时校验写入FPGA芯片的码流数据在存储和传输过程中是否出现错误以及在出错时及时更正错误,避免因为码流数据错误导致FPGA芯片工作异常。
针对码流数据的现有校验方式仅可以确认当次写入芯片的数据存在问题而无法确认问题位置,也无法直接纠错,只能由发送端重新发送来试图解决问题,耗时长,也无助于后续的改进。
发明内容
为了及时校验码流数据在存储和传输过程中是否出现错误,确认错误位置进而纠正错误,本发明提供了一种FPGA码流数据校验方法及一种FPGA码流数据校验装置。
一方面,本发明提供一种FPGA码流数据校验方法,用于对要下载至FPGA芯片的码流数据进行处理,所述校验方法包括以下步骤:接收所述码流数据;将配置信息以外的所述码流数据的值相加以得到校验和,将所述校验和增加到所述码流数据的配置信息中;以及,逐行和逐列对所述码流数据进行循环冗余校验处理,得到多个行CRC码和多个列CRC码,将所述行CRC码增加到相应的行码流数据中,并将所述列CRC码增加到相应的列码流数据中。
可选的,对所述码流数据进行循环冗余校验处理之前,还包括将所述码流数据分成多个码流数据块的步骤;并且,逐行和逐列对所述码流数据进行循环冗余校验处理的步骤包括分别对各个所述码流数据块逐行和逐列进行循环冗余校验处理,从而对于各个所述码流数据块,均得到相应的行CRC码和列CRC码。
可选的,每个所述码流数据块与所述FPGA芯片上要实现的逻辑功能模块对应。
可选的,逐行和逐列对所述码流数据进行循环冗余校验处理之前,所述校验方法还包括:基于所述循环冗余校验采用的多项式建立校验查找表,所述校验查找表存储有分别对应于各行所述码流数据的行CRC码和对应于各列所述码流数据的列CRC码。
一方面,本发明提供一种FPGA码流数据校验装置,用于对要下载至FPGA芯片的码流数据进行处理,所述校验装置包括码流输入模块、校验和模块、循环冗余校验模块以及数据更新模块;其中,所述码流输入模块用于接收所述码流数据;所述校验和模块用于将配置信息以外的所述码流数据的值相加以得到校验和;所述循环冗余校验模块用于逐行和逐列对所述码流数据进行循环冗余校验处理,以得到多个行CRC码和多个列CRC码;所述数据更新模块用于将所述校验和增加到所述码流数据的配置信息中,将所述行CRC码增加到相应的行码流数据中,并将所述列CRC码增加到相应的列码流数据中。
可选的,所述校验装置还包括分块模块,所述分块模块用于对所述码流数据进行分块处理,以获得多个码流数据块,每个所述码流数据块与所述FPGA芯片上实现的逻辑功能模块对应。
可选的,所述循环冗余校验模块还用于所述循环冗余校验模块还用于分别对各个所述码流数据块逐行和逐列进行循环冗余校验处理,对于各个所述码流数据块,均得到相应的行CRC码和列CRC码。
可选的,所述校验装置还包括查找表模块,所述查找表模块用于基于所述循环冗余校验采用的多项式建立校验查找表,所述校验查找表存储有分别对应于各行所述码流数据的行CRC码和对应于各列所述码流数据的列CRC码;其中,所述循环冗余校验模块利用所述校验查找表获得所述行CRC码和所述列CRC码。
上述用于对要下载至FPGA芯片的码流数据进行处理的FPGA码流数据校验方法和FPGA码流数据校验装置,通过计算校验和,可与该码流数据写入FPGA芯片后再次计算得到的校验和(即接收端校验和)进行比较,有助于确保码流数据的完整性和准确性,另外,为了增强检错能力,逐行和逐列对所述码流数据进行循环冗余校验处理,得到多个行CRC码和多个列CRC码,以便于进行交叉校验,确定错误数据的位置。
进一步的,在对码流数据进行循环冗余校验处理之前,还可以对码流数据进行分块处理,从而可以在生成码流数据块后即启动针对相应码流数据块的循环冗余校验处理,而不需要等待全部码流数据块都生成后再单独进行,从而,生成码流数据块的过程可以和循环冗余校验处理并行,有助于提高数据校验速度。
一方面,本发明提供一种FPGA码流数据校验方法,用于在接收端对码流数据进行处理,所述校验方法包括以下步骤:
获取接收端的码流数据,所述码流数据包括校验和,并且每行所述码流数据均包括相应的行CRC码,每列所述码流数据均包括相应的列CRC码;
将配置信息以外的所述码流数据的值相加,得到接收端校验和,将所述接收端校验和与所述码流数据中的校验和进行比较,得到校验和比较结果;
逐行对所述码流数据进行循环冗余校验处理,生成多个接收端行CRC码,判断每个所述接收端行CRC码与相应行码流数据中的行CRC码是否一致,若不一致,继续向下执行;
逐列对所述码流数据进行循环冗余校验处理,生成多个接收端列CRC码,判断每个所述接收端列CRC码与相应列码流数据中的列CRC码是否一致,以找出数据出错的列;以及,
根据出错的行和出错的列定位出数据出错位置,并在接收端修正所述数据出错位置的数据值。
一方面,本发明提供一种FPGA码流数据校验方法,用于在接收端对码流数据进行处理,所述校验方法包括以下步骤:
获取接收端的码流数据,所述码流数据包括校验和,并且每行所述码流数据均包括相应的行CRC码,每列所述码流数据均包括相应的列CRC码;
将配置信息以外的所述码流数据的值相加,得到接收端校验和,将所述接收端校验和与所述码流数据中的校验和进行比较,得到校验和比较结果;
逐列对所述码流数据进行循环冗余校验处理,生成多个接收端列CRC码,判断每个所述接收端列CRC码与相应列码流数据中的列CRC码是否一致,若不一致,继续向下执行;
逐行对所述码流数据进行循环冗余校验处理,生成多个接收端行CRC码,判断每个所述接收端行CRC码与相应行码流数据中的行CRC码是否一致,以找出数据出错的行;以及,
根据出错的行和出错的列定位出数据出错位置,并在接收端修正所述数据出错位置的数据值。
上述在接收端对码流数据进行处理的FPGA码流数据校验方法,先计算得到接收端校验和,通过与码流数据中的校验和进行比较,以检验数据传输和存储过程中是否出错,另外,对行码流数据(或者列码流数据)进行循环冗余校验,并与相应行码流数据中的行CRC码(或者相应列码流数据中的列CRC码)进行比较,在行CRC码(或者列CRC码)不一致的情况下,再通过对列码流数据(或者行码流数据)进行循环冗余校验处理来定位错误的位置,即实现了交叉校验,然后直接在接收端进行纠错,这种交叉校验方式增强了检错能力,并实现码流数据的自纠错效果。
附图说明
图1是本发明实施例在发送端处理码流数据的FPGA码流数据校验方法的流程示意图。
图2是本发明实施例在发送端处理码流数据的FPGA码流数据校验装置的模块示意图。
图3是本发明实施例在接收端处理码流数据的FPGA码流数据校验方法的流程示意图。
图4是本发明实施例在接收端处理码流数据的FPGA码流数据校验方法的流程示意图。
具体实施方式
FPGA芯片可以依据用户设计实现特定功能。用户根据需要设计出功能模块,经过仿真、综合及布局布线处理,生成码流数据下载到FPGA芯片,所述码流数据可看作FPGA芯片的配置文件,用于控制FPGA芯片上可编程的资源(如内部逻辑、内部寄存器和I/O寄存器初始化、I/O驱动器使能等),从而实现特定功能。为了及时校验码流数据在存储和传输过程中是否出现问题,确认错误位置,进而及时纠正错误,本发明提出了一种FPGA码流数据校验方法及一种FPGA码流数据校验装置。
以下结合附图和具体实施例对本发明的FPGA码流数据校验方法及装置作进一步详细说明。根据下面的说明,本发明的优点和特征将更清楚。清楚起见,以下分别通过实施例对发送端采用的校验方法及装置和接收端采用的校验方法进行说明。但应当理解,在不冲突的情况下,各个实施例的特征也可以相互组合及启发,以构成新的实施例。
实施例一
本实施例涉及一种FPGA码流数据校验方法以及一种FPGA码流数据校验装置。所述FPGA码流数据校验方法和所述FPGA码流数据校验装置均用于对要下载至FPGA芯片的码流数据进行处理,以下称为在发送端的校验处理。
图1是本发明实施例在发送端处理码流数据的FPGA码流数据校验方法的流程示意图。参见图1,本实施例的FPGA码流数据校验方法包括以下步骤:
步骤S11,接收码流数据;
步骤S12,将配置信息以外的所述码流数据的值相加以得到校验和,将所述校验和增加到所述码流数据的配置信息中;
步骤S13,逐行和逐列对所述码流数据进行循环冗余校验(Cyclic RedundancyCheck,CRC)处理,得到多个行CRC码和多个列CRC码,将所述行CRC码增加到相应的行码流数据中,并将所述列CRC码增加到相应的列码流数据中。
图2是本发明实施例在发送端处理码流数据的FPGA码流数据校验装置的模块示意图。参见图2,本实施例的FPGA码流数据校验装置100包括码流输入模块110、校验和模块120、循环冗余校验模块130以及数据更新模块140,其中,所述码流输入模块110用于接收要下载至FPGA芯片的码流数据(通常由上一级处理装置如布局布线工具输出)。所述校验和模块用于将配置信息以外的所述码流数据的值相加以得到校验和。所述循环冗余校验模块130用于逐行和逐列对所述码流数据进行循环冗余校验处理,得到多个行CRC码和多个列CRC码。所述数据更新模块140用于将所述校验和增加到所述码流数据的配置信息中,并将所述行CRC码增加到相应的行码流数据中,将所述列CRC码增加到相应的列码流数据中。
下面结合图1和图2对本实施例中的FPGA码流数据校验方法和FPGA码流数据校验装置作进一步说明。
上述FPGA码流数据校验方法的步骤S11可通过上述FPGA码流数据校验装置100的码流输入模块110执行。要下载至FPGA芯片的码流数据指的是经过布局布线之后输出的数据,通常为二进制序列码流数据。所述码流数据可以按照一定时序下载到对应的FPGA芯片中,本实施例在下载到FPGA芯片之前,对所述码流数据进行发送端的校验处理。由于FPGA芯片上的逻辑资源通常按照行列排布,除头部和/或尾部的配置信息外,所述码流数据可分为分别对应于FPGA芯片上的各行逻辑资源而配置的行码流数据,或者分为分别对应于FPGA芯片上的各列逻辑资源而配置的列码流数据。也即,码流输入模块110接收到的码流数据具有与要下载(即写入)的FPGA芯片的阵列分布一致的多行码流数据和多列码流数据。所述码流数据可包括设置于其头部和/或尾部的配置信息,所述配置信息可包括校验控制参数,如步骤S12和步骤S13用到的参数。所述码流输入模块110可以解析所述校验控制参数,以进行后续校验处理。
所述FPGA码流数据校验方法的步骤S12中,将配置信息以外的码流数据的值相加以得到校验和,并将所述校验和增加到所述码流数据的配置信息中。其中,将配置信息以外的所述码流数据的值相加以得到校验和的子步骤可以通过上述FPGA码流数据校验装置100的校验和模块120执行,将所述校验和增加到码流数据的配置信息中的子步骤可以通过上述FPGA码流数据校验装置100的数据更新模块140执行(在一些实施例中,所述校验和模块120和数据更新模块140也可以合并为同一模块)。
上述配置信息以外的码流数据为用来控制FPGA芯片内的逻辑资源的码流数据的值。作为示例,可以以OXFFFF(DWORD类型的最大值)作为连续相加的最大值,在达到最大值后再从一个值开始加,如此循环相加,计算得到的值即为校验和。所述校验和在下载到相应的FPGA芯片之前被写入码流数据的配置信息中,以便于在码流数据发送到接收端之后比对校验和是否发生变化。
通过比对校验和有助于确定码流数据在发送到接收端后是否完整和准确,但是,校验和比对的准确性较差,并且在码流数据出错时无法确定错误位置。故而,本实施例中,所述FPGA码流数据校验方法还包括步骤S13:逐行和逐列对所述码流数据进行循环冗余校验处理,得到多个行CRC码和多个列CRC码,将所述行CRC码增加到相应的行码流数据中,并将所述列CRC码增加到相应的列码流数据中。具体的,逐行和逐列对所述码流数据进行循环冗余校验处理以得到多个行CRC码和多个列CRC码的子步骤可以通过上述FPGA码流数据校验装置100的循环冗余校验模块130执行,将所述行CRC码增加到相应的行码流数据以及将所述列CRC码增加到相应的列码流数据中的子步骤可以通过上述FPGA码流数据校验装置100的数据更新模块140执行。
本实施例中,步骤S12和步骤S13的顺序并不是固定的先后顺序,一些实施例中,也可以先执行步骤S13,再执行步骤S12。另外,一些实施例中,可以先利用步骤S12和步骤S13得到所述码流数据的校验和以及行CRC码和列CRC码后,再进行码流数据更新,将所述校验和增加到所述码流数据的配置信息中,将所述行CRC码增加到相应的行码流数据(例如该行码流数据末尾)中,并将所述列CRC码增加到相应的列码流数据(例如该列码流数据末尾)中。
循环冗余校验又称CRC校验,是数据通信领域常用的一种差错校验码,其中信息字段和校验字段的长度可以任何选定。利用循环冗余校验的校验码(本实施例中分为行CRC码和列CRC码)的编码规则是:先将原信息码(kbit)左移r位(k+r=n,k、r、n均为大于0的整数),然后运用一个生成多项式g(x)(也可看成二进制数)对移动后的式子做模2除法,得到的余数就是校验码。循环冗余校验可以采用硬件或软件实现,具体实现方式可以采用本领域公知的方法,此处不再赘述。
本实施例中,针对每行所述码流数据进行循环冗余校验,可以得到与相应行码流数据有关的行CRC码,该行CRC码可以追加到相应的行码流数据中,例如该行码流数据的二进制序列末尾。针对每列所述码流数据进行循环冗余校验,可以得到与相应列码流数据有关的列CRC码,该列CRC码可以追加到相应的列码流数据中,例如该列码流数据的二进制序列末尾对码流数据的行码流数据和列码流数据均进行循环冗余校验,目的是便于通过行CRC码和列CRC码来交叉校验,共同定位码流数据的出错位置。
另外,随着技术的发展,FPGA芯片的规模不断扩大,布局布线后要写入FPGA芯片的码流数据的大小也逐渐扩大,如何在确保写入完整性、准确性的基础上,同时提高码流数据的校验处理速度和效率非常重要。故而,本实施例中,在执行上述步骤S13之前,可以先根据CRC校验处理采用的多项式建立校验查找表,所述校验查找表包括了分别对应于各行所述码流数据的行CRC码和对应于各列所述码流数据的列CRC码,在执行步骤S13时,可以直接通过查找表的方式进行CRC码查询,从而提高数据处理速度。参见图2,本实施例的FPGA码流数据校验装置100可包括查找表模块150,所述查找表模块150用于基于循环冗余校验采用的多项式建立校验查找表,所述校验查找表存储有分别对应于各行所述码流数据的行CRC码和对应于各列所述码流数据的列CRC码;其中,所述循环冗余校验模块120利用所述校验查找表即可获得所述行CRC码和所述列CRC码。
经过上述步骤S12和步骤S13,与步骤S11相比,码流数据中增加了校验和数据以及行CRC码和列CRC码的校验信息,此处称为更新后的码流数据,用来向接收端即FPGA芯片发送。
本实施例中,考虑到如果对于芯片的码流数据进行全文的循环冗余校验处理,需要在上一级处理装置(如布局布线工具)完成数据生成后,再针对完整的码流数据单独进行循环冗余校验处理,但是,等待数据生成耗费时间长,导致校验以及后续纠错的整体效率较低。故而,可选实施方式中,在执行上述步骤S13之前(也可以在步骤S12之前),本实施例的FPGA码流数据校验方法还可以包括对接收到的码流数据进行分块处理的步骤,目的是获得多个码流数据块。此外,参见图2,本实施例的FPGA码流数据校验装置100还可以包括分块模块160,所述分块模块160用于对所述码流数据进行分块处理,以获得多个码流数据块。每个所述码流数据块与所述FPGA芯片上实现的特定逻辑功能(即具体的逻辑功能模块)对应。本实施例的FPGA码流数据校验方法中的分块处理的步骤可以利用所述分块模块160来实现。
由于码流数据通常按照逻辑功能模块的顺序生成,因此在进行分块处理时,可以依照使每个所述码流数据块与所述FPGA芯片上要实现的逻辑功能模块对应的方式分割码流数据。各个码流数据块的大小可以不同。在上一级处理装置生成各个逻辑功能数据的过程中,可以随着数据的生成即启动对已生成的数据块执行上述步骤S13所述的CRC校验处理,则CRC校验可以与码流数据的信息生成过程同步进行,这样可以大大提高数据校验速度,进而可以提高后期纠错速度。
经过分块处理得到的码流数据块的大小以及对应的逻辑功能可以根据当前处理的码流数据选择,作为示例,所述码流数据块对应的逻辑功能例如是FPGA锁相环功能或者FPGA输入输出功能等。
每个所述码流数据块可看作是行列排布的,具体可以与FPGA芯片上相应功能区域的逻辑资源的行列排列对应。即,在分块获得码流数据块后,每个所述码流数据块可包括在码流数据块范围内的行码流数据以及列码流数据,从而,在步骤S13中,可以分别对各个所述码流数据块中的行码流数据和列码流数据进行循环冗余校验,对于各个所述码流数据块,均得到相应的行CRC码和列CRC码。进而,针对每个所述码流数据块得到的行CRC码可被追加到该码流数据块中相应行码流数据的二进制序列中(例如尾部),而针对每个所述码流数据块得到的列CRC码可被追加到该码流数据块中相应列码流数据的二进制序列中(例如尾部),该过程可以通过上述FPGA码流数据校验装置100的循环冗余校验模块130和数据更新模块140执行。
此外,为了加快数据处理速度,上述校验查找表可以基于针对各个所述码流数据块的循环冗余校验采用的多项式建立,这样,在分别对各个所述码流数据块中的行码流数据和列码流数据进行循环冗余校验处理时,也可以利用所述校验查找表获得所述行CRC码和所述列CRC码,从而可缩短处理时间。
实施例二
本实施例涉及一种FPGA码流数据校验方法。所述FPGA码流数据校验方法用于在接收端对码流数据进行处理。此处FPGA芯片可作为接收端。码流数据在下载至FPGA芯片后,先被存储在FPGA芯片上配置的随机存取存储器(RAM)中。为了校验码流数据在发送端的存储以及传输过程中是否出错,FPGA芯片对存储在RAM的码流数据进行接收端校验,所述接收端的校验过程可以通过FPGA芯片的控制模块(如MCU,微控制器)利用软件程序和/或FPGA芯片的可编程逻辑资源来实现。
图3是本发明实施例在接收端处理码流数据的FPGA码流数据校验方法的流程示意图。参见图3,本实施例的FPGA码流数据校验方法包括以下步骤:
步骤S21:获取接收端的码流数据,所述码流数据包括校验和,并且每行所述码流数据均包括相应的行CRC码,每列所述码流数据均包括相应的列CRC码;
步骤S22:将配置信息以外的所述码流数据的值相加,得到接收端校验和,将所述接收端校验和与所述码流数据中的校验和进行比较,得到校验和比较结果;
步骤S23:逐行对所述码流数据进行循环冗余校验处理,生成多个接收端行CRC码,判断每个所述接收端行CRC码与相应行码流数据中的行CRC码是否一致,若不一致,继续向下执行步骤S24;
步骤S24:逐列对所述码流数据进行循环冗余校验处理,生成多个接收端列CRC码,判断每个所述接收端列CRC码与相应列码流数据中的列CRC码是否一致,以找出数据出错的列;
步骤S25:根据出错的行和出错的列定位出数据出错位置,并在接收端修正所述数据出错位置的数据值。
本实施例的FPGA码流数据校验方法中,步骤S21接收到的码流数据包括校验和,并且每行所述码流数据均包括相应的行CRC码,每列所述码流数据均包括相应的列CRC码,所述校验和、行CRC码及列CRC码可以按照实施例一描述的方法获得。接收端的码流数据与发送端时相似,分为行码流数据和列码流数据。所述行码流数据和列码流数据与所述FPGA芯片的阵列分布一致,从而可以再次分别对各行码流数据和/或各列码流数据进行循环冗余校验处理以及分块处理。
对于进行了分块处理的码流数据,在到达接收端后,接收端的码流数据包括对应的多个码流数据块,每个码流数据块中的各行码流数据均具有相应的行CRC码,各列码流数据均具有相应的列CRC码,可针对每个码流数据块中的各行码流数据和/或各列码流数据进行循环冗余校验处理,并与码流数据中的校验码(行CRC码和列CRC码)比较。
本实施例中,通过步骤S22计算码流数据在接收端的校验和(称为接收端校验和),将其与码流数据中(如在头部配置信息)存储的校验和进行比较,则可以得到校验和比较结果。本实施例的方法将校验和比较与下述的校验码比较结合,可以提高校验准确性,并且可以确定数据出错位置并直接在接收端纠错。
在步骤S23中,先逐行对所述码流数据进行循环冗余校验处理以得到各行码流数据在接收端对应的CRC校验码(称为接收端行CRC码),将所述接收端行CRC码与相应行码流数据中的校验码进行比较,若每行计算得到的接收端校验码均与相应行码流数据中的行CRC码(发送端计算的行CRC码)一致,则说明每行码流数据均没有出错,可输出校验码比较后无错误的结果。但是,如果任意一行码流数据计算得到的接收端校验码与相应行码流数据中的校验码不一致,则说明该行对应的二进制序列在处理、存储或传输过程中出现了错误,但当前结果无法确定具体哪个位出错错误。
在步骤S24中,对每列所述码流数据进行循环冗余校验,生成接收端列CRC码,将所述接收端列CRC码与相应列码流数据中的列CRC码(发送端计算的列CRC码)进行比较,以找出数据出错的列,结合步骤S23得到的存在错误的行码流数据,则可以交叉定位到出错的数据。
在步骤S25中,根据出错的行和出错的列定位出数据出错位置,修正所述数据出错位置的数据值。该操作可以直接在接收端执行,例如,可以通过FPGA软件层面的控制,修改出错位置的二进制值,如使1转换为0,或者0转换为1,则可完成纠错。相对于重新通过发送端修正数据再发送全部数据到接收端的方法,可以大大提高纠错效率,实现码流数据自纠错效果。
实施例三
本实施例涉及一种FPGA码流数据校验方法。所述FPGA码流数据校验方法用于在接收端对码流数据进行处理。
图4是本发明实施例在接收端处理码流数据的FPGA码流数据校验方法的流程示意图。参见图4,本实施例的FPGA码流数据校验方法包括以下步骤:
步骤S31:获取接收端的码流数据,所述码流数据包括校验和,并且每行所述码流数据均包括相应的行CRC码,每列所述码流数据均包括相应的列CRC码;
步骤S32:将配置信息以外的所述码流数据的值相加,得到接收端校验和,将所述接收端校验和与所述码流数据中的校验和进行比较,得到校验和比较结果;
步骤S33:逐列对所述码流数据进行循环冗余校验处理,生成多个接收端列CRC码,判断每个所述接收端列CRC码与相应列码流数据中的列CRC码是否一致,若不一致,则存在出错的列,继续向下执行步骤S24;
步骤S34:逐行对所述码流数据进行循环冗余校验处理,生成多个接收端行CRC码,判断每个所述接收端行CRC码与相应行码流数据中的行CRC码是否一致,以找出数据出错的行;
步骤S35:根据出错的行和出错的列定位出数据出错位置,并在接收端修正所述数据出错位置的数据值。
本实施例与实施例二描述的FPGA码流数据校验方法的构思相同,主要不同点在于本实施例在得到校验和比较结果后,先对每列码流数据进行循环冗余校验处理,并在得到的接收端列CRC码与相应列码流数据中的列CRC码不一致的情况下,再对每行码流数据进行循环冗余校验处理,以定位数据出错位置。
上述实施例描述的FPGA码流数据校验方法及FPGA码流数据装置,结合校验和校验与采用行列CRC校验的交叉校验,可在确保码流数据的完整性和准确性的基础上,有效检测码流数据在处理、传输及存储过程中是否出现错误,并且能够快速发现错误位置,进而进行纠错处理,实现了码流数据的自纠错效果。此外,可以通过对码流数据进行分块处理,然后对各码流数据块并行进行循环冗余校验,可以提高校验速度,提高FPGA设计的可靠性。
上述实施例中的方法和/或装置的处理、执行,一般是以软件程序的方式配合装置或设备来实施,然而,他们全部(或其中一部分)也可以使用电子硬件的方式来实施。不管是以软件或者硬件方式,其个别部分是熟悉电子、软件领域人员可以进行实施的,因此,其细节就不在本说明书中赘述。
本实施例中的方法和结构采用递进的方式描述,在后的方法和结构重点描述说明的是与在前的方法和结构的不同之处,相关之处可以参照理解。
上述描述仅是对本发明较佳实施例的描述,并非对本发明权利范围的任何限定,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
Claims (10)
1.一种FPGA码流数据校验方法,用于对要下载至FPGA芯片的码流数据进行处理,其特征在于,所述校验方法包括:
接收所述码流数据;
将配置信息以外的所述码流数据的值相加以得到校验和,将所述校验和增加到所述码流数据的配置信息中;以及,
逐行和逐列对所述码流数据进行循环冗余校验处理,得到多个行CRC码和多个列CRC码,将所述行CRC码增加到相应的行码流数据中,并将所述列CRC码增加到相应的列码流数据中,所述行CRC码和所述列CRC码分别用于与下载至FPGA芯片后得到的相应的行CRC码和列CRC码进行比较,以根据出错的行和出错的列定位出数据出错位置。
2.如权利要求1所述的校验方法,其特征在于,对所述码流数据进行循环冗余校验处理之前,还包括将所述码流数据分成多个码流数据块的步骤;并且,逐行和逐列对所述码流数据进行循环冗余校验处理的步骤包括分别对各个所述码流数据块逐行和逐列进行循环冗余校验处理,从而对于各个所述码流数据块,均得到相应的行CRC码和列CRC码。
3.如权利要求2所述的校验方法,其特征在于,每个所述码流数据块与所述FPGA芯片上要实现的逻辑功能模块对应。
4.如权利要求1所述的校验方法,其特征在于,逐行和逐列对所述码流数据进行循环冗余校验处理之前,所述校验方法还包括:
基于所述循环冗余校验采用的多项式建立校验查找表,所述校验查找表存储有分别对应于各行所述码流数据的行CRC码和对应于各列所述码流数据的列CRC码。
5.一种FPGA码流数据校验装置,用于对要下载至FPGA芯片的码流数据进行处理,其特征在于,所述校验装置包括:
码流输入模块,用于接收所述码流数据;
校验和模块,用于将配置信息以外的所述码流数据的值相加以得到校验和;
循环冗余校验模块,用于逐行和逐列对所述码流数据进行循环冗余校验处理,以得到多个行CRC码和多个列CRC码,所述行CRC码和所述列CRC码分别用于与下载至FPGA芯片后得到的相应的行CRC码和列CRC码进行比较,以根据出错的行和出错的列定位出数据出错位置;以及,
数据更新模块,用于将所述校验和增加到所述码流数据的配置信息中,将所述行CRC码增加到相应的行码流数据中,并将所述列CRC码增加到相应的列码流数据中。
6.如权利要求5所述的校验装置,其特征在于,还包括:
分块模块,用于对所述码流数据进行分块处理,以获得多个码流数据块,每个所述码流数据块与所述FPGA芯片上要实现的逻辑功能模块对应。
7.如权利要求6所述的校验装置,其特征在于,所述循环冗余校验模块还用于分别对各个所述码流数据块逐行和逐列进行循环冗余校验处理,对于各个所述码流数据块,均得到相应的行CRC码和列CRC码。
8.如权利要求5所述的校验装置,其特征在于,还包括:
查找表模块,用于基于所述循环冗余校验采用的多项式建立校验查找表,所述校验查找表存储有分别对应于各行所述码流数据的行CRC码和对应于各列所述码流数据的列CRC码;其中,所述循环冗余校验模块利用所述校验查找表获得所述行CRC码和所述列CRC码。
9.一种FPGA码流数据校验方法,用于在接收端对码流数据进行处理,其特征在于,所述校验方法包括:
获取接收端的码流数据,所述码流数据包括校验和,并且每行所述码流数据均包括相应的行CRC码,每列所述码流数据均包括相应的列CRC码;
将配置信息以外的所述码流数据的值相加,得到接收端校验和,将所述接收端校验和与所述码流数据中的校验和进行比较,得到校验和比较结果;
逐行对所述码流数据进行循环冗余校验处理,生成多个接收端行CRC码,判断每个所述接收端行CRC码与相应行码流数据中的行CRC码是否一致,若不一致,则存在出错的行,继续向下执行;
逐列对所述码流数据进行循环冗余校验处理,生成多个接收端列CRC码,判断每个所述接收端列CRC码与相应列码流数据中的列CRC码是否一致,以找出数据出错的列;以及,
根据出错的行和出错的列定位出数据出错位置,并在接收端修正所述数据出错位置的数据值。
10.一种FPGA码流数据校验方法,用于在接收端对码流数据进行处理,其特征在于,所述校验方法包括:
获取接收端的码流数据,所述码流数据包括校验和,并且每行所述码流数据均包括相应的行CRC码,每列所述码流数据均包括相应的列CRC码;
将配置信息以外的所述码流数据的值相加,得到接收端校验和,将所述接收端校验和与所述码流数据中的校验和进行比较,得到校验和比较结果;
逐列对所述码流数据进行循环冗余校验处理,生成多个接收端列CRC码,判断每个所述接收端列CRC码与相应列码流数据中的列CRC码是否一致,若不一致,则存在出错的列,继续向下执行;
逐行对所述码流数据进行循环冗余校验处理,生成多个接收端行CRC码,判断每个所述接收端行CRC码与相应行码流数据中的行CRC码是否一致,以找出数据出错的行;以及,
根据出错的行和出错的列定位出数据出错位置,并在接收端修正所述数据出错位置的数据值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011506011.9A CN112702065B (zh) | 2020-12-18 | 2020-12-18 | Fpga码流数据校验方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011506011.9A CN112702065B (zh) | 2020-12-18 | 2020-12-18 | Fpga码流数据校验方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112702065A CN112702065A (zh) | 2021-04-23 |
CN112702065B true CN112702065B (zh) | 2021-10-08 |
Family
ID=75507428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011506011.9A Active CN112702065B (zh) | 2020-12-18 | 2020-12-18 | Fpga码流数据校验方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112702065B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835735A (zh) * | 2021-08-19 | 2021-12-24 | 深圳市紫光同创电子有限公司 | 一种fpga远程升级方法、系统和存储介质 |
CN113904754A (zh) * | 2021-09-29 | 2022-01-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种crc纠错方法及相关装置 |
CN114362882A (zh) * | 2021-12-29 | 2022-04-15 | 郑州众惠通信技术有限公司 | 一种基于CAN总线的256byte数据纠错方法 |
CN116701274B (zh) * | 2023-07-26 | 2023-11-17 | 武汉能钠智能装备技术股份有限公司 | 一种热插拔硬盘数据传输系统及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101604244B (zh) * | 2008-06-13 | 2012-11-28 | 中兴通讯股份有限公司 | 一种实现fpga上电即用和远程升级的装置及方法 |
CN101545933B (zh) * | 2009-04-28 | 2012-01-11 | 国网电力科学研究院 | 用于雷电探测的远程智能升级装置及其实现方法 |
US20120011423A1 (en) * | 2010-07-10 | 2012-01-12 | Mehdi Entezari | Silent error detection in sram-based fpga devices |
CN102999350B (zh) * | 2012-10-24 | 2016-10-05 | 绵阳市维博电子有限责任公司 | 一种数字信号处理平台中fpga程序升级在线下载方法 |
CN111142962B (zh) * | 2019-11-15 | 2020-09-18 | 北京理工大学 | 一种星载fpga的在轨重构方法及系统 |
-
2020
- 2020-12-18 CN CN202011506011.9A patent/CN112702065B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112702065A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112702065B (zh) | Fpga码流数据校验方法及装置 | |
CN108279910B (zh) | 程序代码烧写方法、装置、计算机设备和存储介质 | |
RU2733809C9 (ru) | Способ и устройство для отладки параметра соединения serdes и компьютерный носитель данных | |
CN113489570B (zh) | 一种PCIe链路的数据传输方法、装置及设备 | |
KR20220119468A (ko) | 디코딩 방법, 장치, 네트워크 기기 및 저장 매체 | |
CN111143107A (zh) | 一种fpga单粒子反转校验电路和方法 | |
WO2020199424A1 (zh) | 一种最优h矩阵生成方法及装置 | |
CN111290998A (zh) | 迁移数据的校对方法、装置、设备及存储介质 | |
CN112380046A (zh) | 计算结果校验方法、系统、装置、设备及存储介质 | |
CN109669669B (zh) | 误码生成方法及误码生成器 | |
CN110806948A (zh) | 一种数据校验方法及装置 | |
US7827462B2 (en) | Combined command and data code | |
CN114513285B (zh) | 传输数据检测与校正的方法、装置、设备及可读存储介质 | |
US11604696B2 (en) | Field programmable gate array (FPGA) for improving reliability of key configuration bitstream by reusing buffer memory | |
CN114911647A (zh) | 多项式可配的并行crc硬件实现方法、装置和计算机设备 | |
US20230283298A1 (en) | Data error correction circuit and data transmission method | |
CN113657062B (zh) | 基于奇偶校验提高fpga运行可靠性的方法 | |
CN117615367B (zh) | 一种固件程序更新方法、装置及系统 | |
CN116861493B (zh) | 一种校验码生成方法、处理器及电子设备 | |
US20040153945A1 (en) | Error correction circuit employing cyclic code | |
CN117220832B (zh) | 一种误码插入方法、装置、系统及计算机存储介质 | |
CN110086574A (zh) | 报文处理方法、装置、计算机设备和存储介质 | |
CN117149510B (zh) | 一种循环冗余校核的处理系统及处理方法 | |
CN113076283B (zh) | 文件一致性验证方法、装置及电子设备 | |
CN116722954B (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 |