CN114115806A - 一种数据流字节滑动异或计算的方法 - Google Patents

一种数据流字节滑动异或计算的方法 Download PDF

Info

Publication number
CN114115806A
CN114115806A CN202111430677.5A CN202111430677A CN114115806A CN 114115806 A CN114115806 A CN 114115806A CN 202111430677 A CN202111430677 A CN 202111430677A CN 114115806 A CN114115806 A CN 114115806A
Authority
CN
China
Prior art keywords
calculation
byte
xor
result
module
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.)
Pending
Application number
CN202111430677.5A
Other languages
English (en)
Inventor
李斌
韩英娜
程琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Optical Electrical Communication Technology Co Ltd
Original Assignee
Tianjin Optical Electrical Communication Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Optical Electrical Communication Technology Co Ltd filed Critical Tianjin Optical Electrical Communication Technology Co Ltd
Priority to CN202111430677.5A priority Critical patent/CN114115806A/zh
Publication of CN114115806A publication Critical patent/CN114115806A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种数据流字节滑动异或计算的方法,本方法涉及通信数据流中对原始数据进行逐字节滑动的异或计算,先计算连续多个循环串联的单字节的连续滑动异或,得到计算的中间结果,再基于此中间结果经过汇总计算得到最终计算结果。本发明的有益效果是:以并行的方式实现了数据流字节滑动异或计算,区别于传统的软件计算实现,更适合以硬件实现计算,并且节约了计算量,节约了硬件资源,提高了数据异或计算的能力。

Description

一种数据流字节滑动异或计算的方法
技术领域
本发明涉及通信领域,特别涉及一种数据流字节滑动异或计算的方法,具体涉及到通信协议中数据流的字节滑动连续字节按位异或计算。
背景技术
在通信数据流中,在有些应用情景下,需要对原始数据进行逐字节滑动的异或计算,传统做法是针对指定的字节长度进行异或计算后再滑动一个字节再重新进行新的异或计算,这种做法需要做大量的计算并消耗大量算力资源。举例来讲,当需要计算原始数据流中任意连续20个字节的逐字节异或结果,传统做法是计算第1至第20字节的计算结果、然后再计算第2至第21字节的计算结果,以此类推。传统计算方法中,前一次的计算的中间结果未能给下一次的计算提供任何帮助,需要多次重复计算,导致了大量的运算量。硬件实现时,需要从20个计算结果中进行切换选择,消耗很多的硬件资源。
发明内容
本发明的目的就是要改进上述现实应用中存在的问题,提供一种数据流字节滑动异或计算的方法,本方法则只需对原始输入数据流中的每个单字节进行循环串联的单字节异或计算,这些中间计算结果能用于下一次滑动计算,硬件实现时,无需进行切换选择,因此节约了硬件资源。
本发明采取的技术方案是:一种数据流字节滑动异或计算的方法,本方法涉及通信数据流中对原始数据进行逐字节滑动的异或计算,先计算连续多个循环串联的单字节的连续滑动异或,得到计算的中间结果,再基于此中间结果经过汇总计算得到最终计算结果,步骤如下:
将多字节的异或计算问题首先拆解为针对原始数据流中的每一个字节的异或计算,之后将连续多个计算结果组合起来再次计算以得到最终的异或计算结果;
具体来讲,原始的输入数据是连续的字节数据流,对于给定的正整数N,最终输出的是计算得到原始数据字节流中的任意连续N个字节的异或计算结果;
本方法采用完全相同的N个计算子模块,所有的计算子模块的赋值信号采用循环级联方式相连,原始的输入数据流同时输入到所有的计算子模块,所有的计算子模块的输出连接到汇总计算模块,汇总计算模块输出最终计算结果。
本方法采用的计算方式是使用了N个内部结构完全相同的计算子模块和1个汇总计算模块构成的,其中,N个计算子模块以循环级联方式串联,即每个计算子模块的输出连接到下一级计算子模块的输入,所有的N个计算子模块首尾依次相连,直至最后第N的计算子模块的输出连接到第一个计算子模块的输入;
原始的输入数据流同时连接到所有的N个计算子模块上,每个计算子模块都输出各自的一个计算中间结果,这N个计算中间结果连接到汇总计算模块的输入;
每个计算子模块都只计算一个字节宽度的数据的迭代异或计算,具体计算方式是,寄存器锁存原始输入数据流的一个字节,并将此字节与输出的计算中间结果进行异或得到新的计算中间结果输出,并且不停重复这一过程;
汇总计算模块将输入的N个计算中间结果进行汇总计算并得到最终计算结果输出,具体计算方式是,汇总计算模块将输入的这N个计算中间结果数据进行按位异或计算,其结果作为最终计算结果输出。
本发明的有益效果是:以并行的方式实现了数据流字节滑动异或计算,区别于传统的软件计算实现,更适合以硬件实现计算,并且节约了计算量,节约了硬件资源,提高了数据异或计算的能力。
附图说明
图1是本发明的实现方法的流程图;
图2是本发明计算子模块的原理图;
图3是本发明汇总计算模块的原理图。
具体实施方式
相应于图1,按照逐个模块的介绍实现的具体方法。
1)计算子模块
图1中的所有计算子模块的内部结构和实现功能都是完全相同的。计算子模块的原理图如图2所示。每个计算子模块只在其输入的赋值信号值为1时,将此时刻输入的原始输入数据字节流的字节内容写入寄存器,而当其输入的赋值信号值为0时则保持寄存器里存储的字节内容不变。异或计算模块将其输出计算中间结果与寄存器里当前存储的字节内容进行异或计算,异或计算的结果作为新的输出计算中间结果进行输出。并且每个计算子模块都将其输入的赋值信号传递输出,以将所有的计算子模块循环级联起来。任一时刻,所有的计算子模块中有且只有一个计算子模块输入的赋值信号为1,而其余的计算子模块输入的赋值信号都是0。赋值信号在所有的计算子模块中按照顺序依次逐级循环传递。
2)汇总计算模块
如图3所示,汇总计算模块把来自所有的计算子模块的计算中间结果,按照逐字节进行异或计算,异或计算结果输出即为最终的输出计算结果。
列举实例:
举例来讲,在互联网网络通信的数据包中,当需要逐字节滑动进行查找连续N个字节时,需要首先计算此数据包中所有的任意连续N个字节的字节按位异或结果。对于任意给定的正整数N,列举实例不妨假设N=3(N等于任意其他正整数的道理相同,只是有相应的不同数量的计算子模块循环级联)。对于一个8比特位宽的通信输入数据字节流,每次输入数据为8比特(即1字节)。举例不妨假设其字节流依次为“1A2B3C4D5E6F…”(采用十六进制、高位在前的表示方法,以下数据默认均采用此表示方法不再重复声明)。不妨假设当前的所有计算子模块中,只有计算子模块1的输入的赋值信号值为1(赋值信号在所有的计算子模块之间是循环级联的,每一时刻尤其只有其中一个计算子模块输入的赋值信号为1,而其他所有计算子模块输入的赋值信号都是0)。不妨假设所有的计算子模块中的异或计算都是采用的国际电信联盟(ITU)电信标准化部门制定的国际标准中的CRC16-CCITT定义的异或计算(使用其他CRC计算也是可以的,但所有的计算子模块必须全都采用相同的标准)。
因为给定的N=3,所以一共有三个计算子模块(即计算子模块1、计算子模块2、计算子模块3)。
首先输入计算子模块1的原始数据字节流的数据字节为“1A”,此时计算子模块1输入的赋值信号为1,于是计算子模块1将“1A”写入寄存器,并由异或计算电路得到了计算中间结果为“B37B”(按照国际标准定义的CRC16-CCITT的计算,“1A”的异或计算结果为“B37B”,由于这是公开的国际标准定义的基础运算,因此其具体的异或计算过程不作赘述),并且计算子模块1将赋值信号级联给到下一级计算子模块(也就是计算子模块2)。之后的两轮迭代计算中,由于计算子模块1输入的赋值信号为0,于是计算子模块1中寄存器里的值保持“1A”不变,于是异或计算电路迭代计算的结果依次为“ECB8”、“84A2”。直到赋值信号以循环级联的形式经过计算子模块2、计算子模块3之后又循环回到了计算子模块1的输入,此时对应的原始数据字节流输入的数据字节为“4D”。计算子模块1循环重复以上过程,并继续依次输出“9969”、“7B90”、“5FFC”等(之后都是此过程的循环重复,只举例开头一段,后续其余输出结果不全列出)。
计算子模块2收到输入赋值信号为1时的输入原始数据字节为“2B”,计算子模块2的构造、功能、行为都与计算子模块1完全相同,于是计算子模块2的输出依次为“9509”、“DA1C”等(同样的,只举例开头一段,后续其余输出结果不全列出)。同样的道理,计算子模块3的输出依次为“F7DF”、“40F8”等。
所有计算子模块输出的计算中间结果连接到汇总计算模块,汇总计算模块将所有这些计算中间结果进行逐字节异或计算。例如,汇总计算模块将计算子模块1输出的“84A2”、计算子模块2输出的“DA1C”与计算子模块3输出的“F7DF”进行逐字节异或计算,于是得到“A961”即为原始数据字节流的最开头的N(N=3)个字节“1A2B3C”的相应的最终输出计算结果。同样的,汇总计算模块将计算子模块1输出的“9969”、计算子模块2输出的“7637”与计算子模块3输出的“40F8”进行逐字节异或计算,于是得到“AFA6”即为原始数据字节流的从开头向后滑动一个字节的连续N(N=3)个字节“2B3C4D”的相应的最终输出计算结果。之后都是此过程的循环重复,后续其余输出结果不全列出。

Claims (2)

1.一种数据流字节滑动异或计算的方法,其特征在于,本方法涉及通信数据流中对原始数据进行逐字节滑动的异或计算,先计算连续多个循环串联的单字节的连续滑动异或,得到计算的中间结果,再基于此中间结果经过汇总计算得到最终计算结果,步骤如下:
将多字节的异或计算问题首先拆解为针对原始数据流中的每一个字节的异或计算,之后将连续多个计算结果组合起来再次计算以得到最终的异或计算结果;
具体来讲,原始的输入数据是连续的字节数据流,对于给定的正整数N,最终输出的是计算得到原始数据字节流中的任意连续N个字节的异或计算结果;
本方法采用完全相同的N个计算子模块,所有的计算子模块的赋值信号采用循环级联方式相连,原始的输入数据流同时输入到所有的计算子模块,所有的计算子模块的输出连接到汇总计算模块,汇总计算模块输出最终计算结果。
2.根据权利要求1所述的一种数据流字节滑动异或计算的方法,其特征在于,本方法采用的计算方式是使用了N个内部结构完全相同的计算子模块和1个汇总计算模块构成的,其中,N个计算子模块以循环级联方式串联,即每个计算子模块的输出连接到下一级计算子模块的输入,所有的N个计算子模块首尾依次相连,直至最后第N的计算子模块的输出连接到第一个计算子模块的输入;
原始的输入数据流同时连接到所有的N个计算子模块上,每个计算子模块都输出各自的一个计算中间结果,这N个计算中间结果连接到汇总计算模块的输入;
每个计算子模块都只计算一个字节宽度的数据的迭代异或计算,具体计算方式是,寄存器锁存原始输入数据流的一个字节,并将此字节与输出的计算中间结果进行异或得到新的计算中间结果输出,并且不停重复这一过程;
汇总计算模块将输入的N个计算中间结果进行汇总计算并得到最终计算结果输出,具体计算方式是,汇总计算模块将输入的这N个计算中间结果数据进行按位异或计算,其结果作为最终计算结果输出。
CN202111430677.5A 2021-11-29 2021-11-29 一种数据流字节滑动异或计算的方法 Pending CN114115806A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111430677.5A CN114115806A (zh) 2021-11-29 2021-11-29 一种数据流字节滑动异或计算的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111430677.5A CN114115806A (zh) 2021-11-29 2021-11-29 一种数据流字节滑动异或计算的方法

Publications (1)

Publication Number Publication Date
CN114115806A true CN114115806A (zh) 2022-03-01

Family

ID=80371061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111430677.5A Pending CN114115806A (zh) 2021-11-29 2021-11-29 一种数据流字节滑动异或计算的方法

Country Status (1)

Country Link
CN (1) CN114115806A (zh)

Similar Documents

Publication Publication Date Title
US9071275B2 (en) Method and device for implementing cyclic redundancy check codes
CN107154836B (zh) 一种基于fpga的并行循环冗余crc校验方法
US7590916B2 (en) Cyclic redundancy checking value calculator
CN112214349B (zh) 一种数据循环冗余校验装置和方法
JP2006521730A (ja) 巡回冗長検査(crc)計算のための反復回路を最適化するためのシステムおよび方法
Anand Design of high speed CRC algorithm for ethernet on FPGA using reduced lookup table algorithm
CN105138306A (zh) 一种数据位数可选的伪随机信号发生方法
CN114115806A (zh) 一种数据流字节滑动异或计算的方法
CN106059597B (zh) 一种基于概率Turbo译码器的有符号概率计算单元
CN113452381B (zh) 基于fpga的crc实现系统
Garlapati et al. A low power hard decision decoder for BCH codes
CN108833043B (zh) 基于Polar法改进的AWGN信道实现方法及装置
GB2585271A (en) Cyclic redundancy check computation circuit, communication unit, and method therefor
CN113821370B (zh) 一种用于数据传输错误校验的高速crc产生方法和装置
CN113472358B (zh) 一种基于准循环生成矩阵的高速并行编码器
CN204856461U (zh) 一种数据位数可选的伪随机信号发生器
CN114667698B (zh) 一种校验和计算方法及电路
CN115134040A (zh) 一种数据编码处理方法、装置、存储介质及电子装置
US9000959B2 (en) Turbo encoder apparatus
CN111884680A (zh) 一种应用于电力线载波通信系统的rs编码方法
CN113285724B (zh) 一种基于码率自适应的小型化ldpc编码器电路
US20240045758A1 (en) Method and Chip for Cyclic Code Encoding, Circuit Component, and Electronic Device
CN112803955B (zh) 通用Turbo码编码器结构、编码器、方法、装置、设备及介质
Chen et al. An Improved Successive-Cancellation Decoding Algorithm for Polar Code Based on FPGA
CN118118953B (zh) 一种5g通信系统的时域块浮点压缩和解压缩算法

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