具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本案申请人经研究发现,在利用现有的循环冗余校验装置进行数据校验时,在CPU配置完校验通道之后,该校验通道只能使用一种校验配置,实现一种类型的数据校验任务,并且,在完成一次数据校验后,CPU需要重新配置该校验通道的CRC初始值。基于此,在校验通道数量有限的情况下,难以满足对不同类型的数据校验需求,为使一校验通道实现不同的类型的数据校验任务,需要CPU重新配置校验通道。也就是说,在利用现有的循环冗余校验装置进行大量的数据校验任务时,CPU需要频繁更新循环冗余校验装置的配置参数和CRC初始值,增加了CPU负载。
为解决上述问题,本申请提供了一种循环冗余校验装置及循环冗余校验方法,可以实现校验参数的自动更新任务,降低CPU负载。
图1是根据本申请实施例示出的一种循环冗余校验装置的结构示意图,结合图1所示,所述循环冗余校验装置可以包括:校验参数缓存电路11、触发控制电路12和循环冗余校验电路13。
所述校验参数缓存电路11,可以用于存储预配置的若干个校验参数块。
其中,校验参数块可以包括:待校验数据的数据校验过程所需的各种参数。示例如:配置参数、待校验数据长度、期望结果和CRC初始值,其中,配置参数,即CRC算法相关参数,可以包括:CRC算法、输入值反转、输出值反转、结果异或值、大小端转换等信息。
所述触发控制电路12,可以用于在预设的校验触发条件满足时,向所述校验参数缓存电路发送触发信号。
其中,所述校验触发条件可以包括:接收到校验完成信号。可选的,校验完成信号可以是循环冗余校验电路输出的信号,该信号可以表征循环冗余校验电路当前空闲,可以支持新的数据校验任务。此外,所述触发信号可以用于触发所述校验参数缓存电路从所述若干个校验参数块中确定一个目标校验参数块。其中,所述目标校验参数块是所述循环冗余校验电路校验当前的待校验数据时所需的一个校验参数块。可选的,在所述触发信号的触发下,所述校验参数缓存电路可以将所述若干个校验参数块中的写入时间最早的校验参数块,确定为目标校验参数块。
所述循环冗余校验电路13可以用于:获取待校验数据;从校验参数缓存电路获取所述目标校验参数块;基于所述目标校验参数块,使用所述循环冗余校验电路中预先配置的循环冗余校验算法,对所述待校验数据进行校验;以及,在完成校验后,向所述触发控制电路12发送所述校验完成信号。
在一种可能的实现方式中,所述校验参数缓存电路11上可以包含有触发信号输入端口和目标校验参数块输出端口;所述触发控制电路12可以包含有触发信号输出端口和校验完成信号输入端口;所述循环冗余校验电路13可以包含有待校验数据输入端口、目标校验参数块输入端口和校验完成信号输出端口。其中,触发信号输入端口连接触发信号输出端口,目标校验参数块输出端口连接目标校验参数块输入端口,校验完成信号输入端口连接校验完成信号输出端口。循环冗余校验电路13可以通过待校验数据输入端口获取待校验数据,可以通过目标校验参数块输入端口获取目标校验参数块,可以通过校验完成信号输出端口输出校验完成信号。
在借由本申请实施例提供的循环冗余校验装置进行数据校验时,触发控制电路可以在预设的校验触发条件满足时,向所述校验参数缓存电路发送触发信号,以触发校验参数缓存电路从其存储的预配置的若干个校验参数块中确定一个目标校验参数块;而后循环冗余校验电路获取待校验数据和目标校验参数块,并基于目标校验参数块,使用其预先配置的循环冗余校验算法,对待校验数据进行校验,从而实现了对待校验数据的校验任务。
此外,由于预设的校验触发条件可以包括接收到校验完成信号,并且,循环冗余校验电路在完成校验后,会向触发控制电路发送校验完成信号,因此在借由本申请实施例提供的循环冗余校验装置进行数据校验时可以实现:在一次校验完成后,触发控制电路可以输出新的触发信号,校验参数缓存电路可以确定新的目标校验参数块,循环冗余校验电路可以处理新的数据校验任务。
综上,借由校验参数缓存电路可以缓存多次校验所需的多个校验参数块,依托校验参数缓存电路和触发控制电路,本申请提供的循环冗余校验装置,也可以称作增强型循环冗余校验装置,可以实现校验参数自更新任务,并且在此过程中无需CPU参与,从而在一定程度上减少了CPU配置校验通道的次数,在一定程度上降低了CPU负载。
图2是根据本申请实施例示出的一种校验参数缓存电路的结构示意图,结合图2所示,所述校验参数缓存电路可以包括:校验参数队列21和校验参数缓冲区22。
所述校验参数队列21,可以用于存储所述预配置的若干个校验参数块,例如图2所示的校验参数块0、校验参数块1、……、校验参数块n。
所述校验参数缓冲区22,可以用于存储所述目标校验参数块。
在本申请提供的一些实施例中,所述循环冗余校验装置还可以包括:队列入口寄存器,可以用于接收数据校验所需的配置参数、待校验数据长度、期望结果和CRC初始值,将所述配置参数、所述待校验数据长度、所述期望结果和所述CRC初始值配置成校验参数块,并将该校验参数块写入所述校验参数队列。
其中,所述配置参数可以包括:CRC算法、输入值反转、输出值反转、结果异或值、大小端转换等信息。
图3示例了一种校验参数缓存电路和队列入口寄存器的连接关系示意图,结合图3所示,校验参数缓存电路的结构可以参照图2,队列入口寄存器31(即CRCQIN)连接校验参数缓存电路11中的校验参数队列21,以便队列入口寄存器31将由配置参数、待校验数据长度、期望结果和CRC初始值配置出的校验参数块,写入校验参数队列21,也就是说,校验参数队列可以缓存从队列入口寄存器写入的值,即校验参数块。
可选的,校验参数队列可以缓存不完整的校验参数块,所述不完整的校验参数块为缺少上述的配置参数、待校验数据长度、期望结果和CRC初始值中的至少一个参数值的参数块。特殊的,不完整的校验参数块,可以永远位于校验参数队列末尾,不会被提供给循环冗余校验电路。
在本申请提供的一些实施例中,所述循环冗余校验装置还可以包括:队列控制寄存器。所述队列控制寄存器可以连接所述校验参数缓存电路。
可选的,所述队列控制寄存器可以包括:队列使能控制器,可以用于响应人工设置,向所述校验参数缓存电路发送与所述人工设置对应的使能控制指令。
其中,所述使能控制指令可以用于将所述校验参数队列配置为使能队列或不使能队列。具体的,在所述校验参数队列为使能队列时,所述目标校验参数块被加载到所述校验参数缓冲区,由所述校验参数缓冲区向所述循环冗余校验电路提供所述目标校验参数块;在所述校验参数队列为不使能队列时,所述目标校验参数块被直接提供给所述循环冗余校验电路。
也就是说,在所述校验参数队列为使能队列的情况下,所述校验参数缓存电路在接收到所述触发信号之后,可以进行如下步骤:
从校验参数队列中存储的若干个校验参数块中,确定出校验所需的目标校验参数块,并将目标校验参数块加载到校验参数缓冲区,以便校验参数缓冲区向循环冗余校验电路提供目标校验参数块。
在所述校验参数队列为不使能队列的情况下,所述校验参数缓存电路在接收到所述触发信号之后,可以进行如下步骤:
从校验参数队列中存储的若干个校验参数块中,确定出校验所需的目标校验参数块,并由校验参数队列直接向循环冗余校验电路提供目标校验参数块。
上述的方案,通过队列使能控制器将校验参数队列配置为使能队列或不使能队列,其中,使能队列可以更新校验参数,不使能队列无法更新校验参数,借由使能队列可以满足多组数据的自动校验需求,适用于连续校验多组数据的情况;借由不使能队列可以满足单组数据的校验需求,适用于当前只需要校验一组数据,后续暂时不需要校验其他数据的情况。
在本申请提供的一些实施例中,所述队列控制寄存器还可以包括:队列清空控制器,和/或,队列重载控制器。需要说明的是,所述队列控制寄存器中的各个控制器可以分别连接所述校验参数缓存电路。
其中,所述队列清空控制器可以用于:响应人工配置的队列清空请求,向所述校验参数缓存电路发送队列清空指令,所述队列清空指令用于清空所述校验参数队列。也就是说,校验参数缓存电路在接收到队列清空指令之后,执行清空校验参数队列中存储的各校验参数块的步骤。
所述队列重载控制器可以用于:响应人工配置的队列重载请求,向所述校验参数缓存电路发送重载控制指令,所述重载控制指令用于将所述目标校验参数块重新写入所述校验参数队列。
需要说明的是,若校验参数缓存电路未接收到重载控制指令,即通常情况下,校验参数块在被确定为目标校验参数块之后,将从校验参数队列中移出;在校验参数缓存电路接收到重载控制指令的情况下,校验参数块在被确定为目标校验参数块之后,将从校验参数队列中移出,并重新写入校验参数队列。示例性的,在将校验参数队列首端的校验参数块确定为目标校验参数块的情况下,经过重载,该校验参数块会被重新插入到校验参数队列尾部,从而实现CRC校验参数的循环更新。
示例性的,图4示例了循环冗余校验装置的校验状态示意图,结合图4所示,可以包括四种状态阶段,分别是:
第一状态、空队列阶段,是指校验参数缓存电路中没有存储校验参数块,即校验参数队列为空队列的阶段,发生在循环冗余校验装置复位之后或借由队列控制寄存器对校验参数队列进行清空处理之后。
第二状态、队列填充阶段,是指借由队列入口寄存器向校验参数队列中写入校验参数块的阶段。
第三状态、校验参数加载阶段,是指在校验参数队列为使能队列的情况下,校验参数缓存电路响应于触发信号,从校验参数队列中确定目标校验参数块,(例如将校验参数队列中的首个校验参数块作为目标校验参数块),并将目标校验参数块加载到校验参数缓冲区,以供循环冗余校验电路获取的阶段;或,在校验参数队列为不使能队列的情况下,校验参数缓存电路响应于触发信号,从校验参数队列中确定目标校验参数块,以供循环冗余校验电路获取的阶段。
第四状态、校验阶段,是指循环冗余校验电路根据目标校验参数块和待校验参数进行数据校验的阶段。
需要说明的是,若当前处于第二状态或第四状态,并且进行了循环冗余校验装置复位或队列清空控制,则将转到第一状态,特殊的,可以设置:优先校验完当前的待校验数据,在校验完成之后再转到第一状态,并且校验参数缓存电路不响应触发信号;若当前处于第四状态,并且在校验完成之后接收到了触发信号的情况下,则将转到第三状态。
在本申请提供的一些实施例中,所述循环冗余校验装置还可以包括:队列长度寄存器。
其中,所述队列长度寄存器与所述校验参数缓存电路连接,可以用于记录所述校验参数队列中的校验参数块的数量。
在上述的基础上,所述循环冗余校验装置还可以包括:转发控制器。
具体的,所述转发控制器可以位于触发控制电路和校验参数缓存电路的连接线路上,可以用于:拦截所述触发控制电路发送给所述校验参数缓存电路的所述触发信号,并在所述校验参数块的数量不等于零的情况下,将所述触发信号转发给所述校验参数缓存电路。
也就是说,借由所述转发控制器可以实现,在校验参数队列中的校验参数块的数量为零的情况下,即当前不具备校验所需的校验参数块时,暂不转发触发信号,不触发后续流程。
在本申请提供的一些实施例中,所述校验触发条件还包括:接收到校验触发信号。
具体的,在所述循环冗余校验装置处于外部触发模式时,所述校验触发信号为所述循环冗余校验装置外部的触发信号;在所述循环冗余校验装置处于内部触发模式时,所述校验触发信号为所述循环冗余校验电路发送的所述校验完成信号。
可选的,所述触发控制电路可以包含有校验触发信号选择器,用于根据人工选择配置循环冗余校验装置的触发模式。
在一种可能的实现方式中,所述校验触发信号选择器可以是二选一数据选择器,其控制端可以连接触发源选择寄存器,所述触发源选择寄存器可以供人工选择触发源。
示例性的,所述校验触发信号选择器的第一输入端可以是外部触发信号输入端,用于接收所述循环冗余校验装置外部的触发信号;所述校验触发信号选择器的第二输入端可以是内部触发信号输入端,用于接收所述循环冗余校验电路发送的所述校验完成信号。在此基础上,若人工通过触发源选择寄存器设置了外部触发模式,则触发源选择寄存器向校验触发信号选择器的控制端提供逻辑0信号,而后校验触发信号选择器对外输出由第一输入端接收到的所述循环冗余校验装置外部的触发信号;若人工通过触发源选择寄存器设置了内部触发模式,则触发源选择寄存器向校验触发信号选择器的控制端提供逻辑1信号,而后校验触发信号选择器对外输出由第二输入端接收到的所述循环冗余校验电路发送的所述校验完成信号。
作为一种可能实现,图5示例了一种触发控制电路的结构示意图,结合图5所示,触发控制电路可以包括:触发源选择寄存器(即SELECT)51、校验触发信号选择器52、触发检测器53、门控检测器54和与运算器55。
其中,触发源选择寄存器51连接校验触发信号选择器52的控制端;校验触发信号选择器52的第一输入端口为外部触发信号输入端口;校验触发信号选择器52的第二输入端口为内部触发信号输入端口,连接循环冗余校验电路的校验完成信号输出端口;校验触发信号选择器52的输出端连接触发检测器53的输入端口,以便触发检测器53检测校验触发信号;触发检测器53的输出端口连接与运算器55的第一输入端口;门控检测器54的输入端口连接循环冗余校验电路的校验完成信号输出端口,以便门控检测器54检测校验完成信号;门控检测器54的输出端口连接与运算器55的第二输入端口;与运算器55的输出端口为触发控制电路的触发信号输出端口。
上述的触发控制电路,可以在触发检测器和门控检测器均检测到对应信号的情况下,输出触发信号。并且,可以借由校验触发信号选择器选择不同的触发源。例如,在外部触发模式下,可以通过其他外设输出的外部触发信号控制循环冗余校验装置的校验参数更新,也即在当前的数据校验完成后,需要等待外部触发信号来更新校验参数,而后开始校验下一组数据;在内部触发模式下,可以通过在当前的数据校验完成后,生成的内部触发信号,自动更新校验参数,自动开始校验下一组数据,从而满足了多样的数据校验需求。
在本申请提供的一些实施例中,所述校验参数块中可以配置有循环冗余校验算法信息。
在此基础上,图6示例了一种循环冗余校验电路的结构示意图,结合图6所示,所述循环冗余校验电路可以包括:校验通道寄存器61、CRC算法内核选择器62和若干个不同的CRC算法内核63。
其中,所述校验通道寄存器61上包含有待校验数据输入端口和目标校验参数块输入端口,可以用于获取待校验数据,从校验参数缓存电路获取所述目标校验参数块。
在一种可能的实现方式中,校验通道寄存器(Channel Register Bank)中可以包含有输入数据寄存器,可以由CPU或DMA将待校验数据写入到校验通道寄存器。
所述CRC算法内核选择器62连接所述校验通道寄存器61,可以用于:根据所述校验通道寄存器61获取的所述目标校验参数块中的循环冗余校验算法信息,从所述若干个不同的CRC算法内核中确定目标CRC算法内核;并向所述目标CRC算法内核提供所述校验通道寄存器61获取的所述待校验数据和所述目标校验参数块;
所述目标CRC算法内核是所述若干个不同的CRC算法内核63中的一个,可以用于:基于所述目标校验参数块,使用所述目标CRC算法内核中预先配置的循环冗余校验算法,对所述待校验数据进行处理,得到所述待校验数据的处理结果;并在完成校验后,向所述校验通道寄存器61发送所述待校验数据的处理结果。
需要说明的是,不同的CRC算法内核中预先配置了不同的循环冗余校验算法,例如:CRC8、CRC16、CRC32等,基于此,通过CRC算法内核选择器的选择,可以由与校验需求匹配的目标CRC算法内核进行数据校验,实现数据校验任务。
在上述的基础上,所述校验通道寄存器61还可以用于:获取所述待校验数据的处理结果,确定所述待校验数据的校验状态,并在所述待校验数据的校验状态表征所述待校验数据校验完成的情况下,向所述触发控制电路发送所述校验完成信号。
示例性的,所述目标校验参数块可以包括:所述配置参数、所述待校验数据长度、所述期望结果和所述CRC初始值。在此基础上,所述校验通道寄存器61可以存储有待校验数据长度,即所述待校验数据可以包括若干个子数据,校验通道寄存器61可以在接收到一个子数据的处理结果之后,将其存储的待校验数据长度减一,基于此,校验通道寄存器可以根据其存储的待校验数据长度确定校验状态;所述校验通道寄存器61可以存储有期望结果,可以通过比较所述待校验数据的处理结果和所述期望结果,确定所述待校验数据的校验状态,例如,所述待校验数据的校验结果正确或错误。综上,所述校验通道寄存器可以存储校验过程涉及的目标校验参数块、待校验数据、待校验数据的处理结果和校验状态(例如校验结果正确或错误)。
此外,可以根据校验需求设置所述待校验数据的校验结果正确或错误是否表征所述待校验数据校验完成。
在一种可能的实现方式中,所述待校验数据的校验结果正确用于表征所述待校验数据校验完成,即在校验结果错误的情况下,不输出校验完成信号,不触发下一组数据校验。可选的,可以在所述待校验数据的校验状态为校验结果错误的情况下,输出用于表征校验失败的信息,通知CPU出现了校验错误,以供人工处理。
在另一种可能的实现方式中,所述待校验数据的校验结果正确和错误均用于表征所述待校验数据校验完成,即可以在得到所述待校验数据的校验状态之后,输出校验完成信号。可选的,还可以由所述目标CRC算法内核,在得到所述待校验数据的处理结果之后,向所述触发控制电路输出校验完成信号。
根据本申请实施例提供的循环冗余校验装置,图7示例了另一种循环冗余校验装置的结构示意图,结合图7所示,该装置可以包括:校验参数缓存电路、触发控制电路和循环冗余校验电路;
触发控制电路可以包括:触发源选择寄存器SELECT、校验触发信号选择器52、触发检测器53、门控检测器54和与运算器55;其中,校验触发信号选择器52的第一输入端口可以接收外部触发信号,第二输入端口可以接收循环冗余校验电路输出的校验完成信号,与运算器55的输出端口可以输出触发信号;
校验参数缓存电路可以包括:校验参数队列,和,校验参数缓冲区22;校验参数队列可以接收由队列入口寄存器CRCQIN写入的校验参数块,存储校验参数块0、校验参数块1、……、校验参数块n;校验参数缓冲区22连接校验参数队列的输出端口;
校验参数缓存电路可以连接用于进行使能、重载或清空控制的队列控制寄存器CRCQCTRL;校验参数缓存电路可以连接用于记录校验参数队列中的校验参数块的数量的队列长度寄存器CRQCLEN;并且队列长度寄存器CRQCLEN连接转发控制器71;
转发控制器71接收触发控制电路输出的触发信号,并在校验参数队列中的校验参数块的数量不等于零的情况下,向校验参数缓存电路转发触发信号,以使校验参数缓存电路确定并向循环冗余校验电路提供目标校验参数块;
循环冗余校验电路可以包括:校验通道寄存器61、CRC算法内核选择器62和若干个不同的CRC算法内核63;其中,校验通道寄存器61可以获取目标校验参数块和待校验数据,而后CRC算法内核选择器62根据目标校验参数块中的CRC算法信息,从若干个不同的CRC算法内核63中确定目标CRC算法内核,以便目标CRC算法内核进行校验并反馈处理结果;最后由校验通道寄存器61确定校验状态并输出校验完成信号。
图7所示的循环冗余校验装置可以支持队列扩展功能,可以实现自动更新多种校验参数的CRC校验功能。
图8是根据本申请实施例示出的一种循环冗余校验方法的流程示意图,所述循环冗余校验方法可以应用于循环冗余校验装置,所述循环冗余校验装置包含有:用于存储预配置的若干个校验参数块的校验参数缓存电路。对所述循环冗余校验方法的说明可以参照上述的循环冗余校验装置。结合图8所示,该方法可以包括:
步骤S101、在预设的校验触发条件满足时,从所述若干个校验参数块中确定一个目标校验参数块。
其中,所述校验触发条件可以包括:接收到校验完成信号。
步骤S102、获取待校验数据,从校验参数缓存电路获取所述目标校验参数块,基于所述目标校验参数块,使用预先配置的循环冗余校验算法,对所述待校验数据进行校验。
步骤S103、在完成校验后,发送所述校验完成信号。
需要说明的是,在执行完步骤S103之后,可以判断是否满足校验触发条件,即返回执行步骤S101,以便从所述若干个校验参数块中确定新的目标校验参数块,自动更新校验参数,对新的待校验数据进行校验。
在本申请提供的一些实施例中,所述校验参数缓存电路可以包括:校验参数队列和校验参数缓冲区;其中,所述校验参数队列,可以用于存储所述预配置的若干个校验参数块;所述校验参数缓冲区,可以用于存储所述目标校验参数块。
在本申请提供的一些实施例中,所述循环冗余校验方法还可以包括:
响应人工设置,将所述校验参数队列配置为使能队列或不使能队列。
其中,所述校验参数队列为使能队列时,所述目标校验参数块被加载到所述校验参数缓冲区,由所述校验参数缓冲区提供所述目标校验参数块;所述校验参数队列为不使能队列时,由所述校验参数队列直接提供所述目标校验参数块。
在本申请提供的一些实施例中,所述循环冗余校验方法还可以包括:
响应人工配置的队列清空请求,清空所述校验参数队列。
在本申请提供的一些实施例中,所述循环冗余校验方法还可以包括:
响应人工配置的队列重载请求,将所述目标校验参数块重新写入所述校验参数队列。
在本申请提供的一些实施例中,所述校验参数队列中的校验参数块可以按照如下步骤配置:
接收数据校验所需的配置参数、待校验数据长度、期望结果和CRC初始值;将所述配置参数、所述待校验数据长度、所述期望结果和所述CRC初始值配置成校验参数块,并将该校验参数块写入所述校验参数队列。
在本申请提供的一些实施例中,在预设的校验触发条件满足时,从所述若干个校验参数块中确定一个目标校验参数块,可以包括:
在预设的校验触发条件满足时,且在所述校验参数队列中的校验参数块的数量不等于零的情况下,从所述若干个校验参数块中确定一个目标校验参数块。
在本申请提供的一些实施例中,所述校验参数块中可以配置有循环冗余校验算法信息。
在上述的基础上,所述基于所述目标校验参数块,使用预先配置的循环冗余校验算法,对所述待校验数据进行校验,可以包括步骤A-B:
步骤A、根据所述目标校验参数块中的循环冗余校验算法信息,确定待使用的目标循环冗余校验算法。
步骤B、基于所述目标校验参数块,使用所述目标循环冗余校验算法,对所述待校验数据进行处理,得到所述待校验数据的处理结果。
在上述的基础上,所述在完成校验后,发送所述校验完成信号,可以包括:
根据所述待校验数据的处理结果,确定所述待校验数据的校验状态,并在所述待校验数据的校验状态表征所述待校验数据校验完成的情况下,发送所述校验完成信号。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。