-
某个数据通信系统采用CRC校验方式,并且生成多项式的二进制比特序列为11001,目的结点接收到的二进制比特...
2014-10-22 21:17:44某个数据通信系统采用CRC校验方式,并且生成多项式的二进制比特序列为11001,目的结点接收到的二进制比特序列为 110111001(含CRC校验码)。请判断传输过程中是否出现了差错?为什么? 出现了差错。因为...某个数据通信系统采用CRC校验方式,并且生成多项式的二进制比特序列为11001,目的结点接收到的二进制比特序列为 110111001(含CRC校验码)。请判断传输过程中是否出现了差错?为什么?
出现了差错。因为110111001/11001=10011(商)……10(余数) 余数不为0,所以出现了差错。
-
CRC 生成多项式
2016-08-01 11:33:50是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。 在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和...是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。
在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。
应满足以下条件:
a、生成多项式的最高位和最低位必须为1。
b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。
c、不同位发生错误时,应该使余数不同。
d、对余数继续做模2除,应使余数循环。
将这些要求反映为数学关系是比较复杂的。但可以从有关资料查到常用的对应于不同码制的生成多项式如图9所示:
N
K
码距d
G(x)多项式
G(x)
7
4
3
x3+x+1
1011
7
4
3
x3+x2+1
1101
7
3
4
x4+x3+x2+1
11101
7
3
4
x4+x2+x+1
10111
15
11
3
x4+x+1
10011
15
7
5
x8+x7+x6+x4+1
111010001
31
26
3
x5+x2+1
100101
31
21
5
x10+x9+x8+x6+x5+x3+1
11101101001
63
57
3
x6+x+1
1000011
63
51
5
x12+x10+x5+x4+x2+1
1010000110101
1041
1024
x16+x15+x2+1
11000000000000101
图9 常用的生成多项式
例如第一项可以写成:x3+x2+x+1 有幂次就为1 没有幂次就为0 首尾一定要是1 所以 1 0 1 1
一道计算题:
已知信息位为1100,生成多项式G(x) = x3+x+1,求CRC码。
M(x) = 1100 M(x)*x3 = 1100000 G(x) = 1011
M(x)*x3 / G(x) = 1110 + 010 /1011 R(x) = 010
CRC码为: M(x)*x 3+R(x)=1100000+010 =1100010
其原理是:CRC码一般在k位信息位之后拼接r位校验位生成。编码步骤如下:
(1)将待编码的k位信息表示成多项式 M(x)。
(2)将 M(x)左移 r 位,得到 M(x)*xr 。
(3)用r+1位的生成多项式G(x)去除M(x)*xr 得到余数R(x)。
(4)将M(x)*xr 与R(x)作模2加,得到CRC码。
原文地址:http://blog.sina.com.cn/s/blog_64c236b10100of4a.html
-
CRC 生成多项式
2014-03-31 19:12:54是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。 在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定...是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。
在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。
应满足以下条件:
a、生成多项式的最高位和最低位必须为1。
b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。
c、不同位发生错误时,应该使余数不同。
d、对余数继续做模2除,应使余数循环。
将这些要求反映为数学关系是比较复杂的。但可以从有关资料查到常用的对应于不同码制的生成多项式如图9所示:
N
K
码距d
G(x)多项式
G(x)
7
4
3
x3+x+1
1011
7
4
3
x3+x2+1
1101
7
3
4
x4+x3+x2+1
11101
7
3
4
x4+x2+x+1
10111
15
11
3
x4+x+1
10011
15
7
5
x8+x7+x6+x4+1
111010001
31
26
3
x5+x2+1
100101
31
21
5
x10+x9+x8+x6+x5+x3+1
11101101001
63
57
3
x6+x+1
1000011
63
51
5
x12+x10+x5+x4+x2+1
1010000110101
1041
1024
x16+x15+x2+1
11000000000000101
图9 常用的生成多项式
例如第一项可以写成:x3+x2+x+1 有幂次就为1 没有幂次就为0 首尾一定要是1 所以 1 0 1 1
一道计算题:
已知信息位为1100,生成多项式G(x) = x3+x+1,求CRC码。
M(x) = 1100 M(x)*x3 = 1100000 G(x) = 1011
M(x)*x3 / G(x) = 1110 + 010 /1011 R(x) = 010
CRC码为: M(x)*x 3+R(x)=1100000+010 =1100010
其原理是:CRC码一般在k位信息位之后拼接r位校验位生成。编码步骤如下:
(1)将待编码的k位信息表示成多项式 M(x)。
(2)将 M(x)左移 r 位,得到 M(x)*xr 。
(3)用r+1位的生成多项式G(x)去除M(x)*xr 得到余数R(x)。
(4)将M(x)*xr 与R(x)作模2加,得到CRC码。 -
crc码生成多项式怎么算出来的_GPS C/A码产生与性质
2020-12-27 15:44:52每个卫星测距码信号使用的唯一C/A码序列就是通过将G1序列和一定抽头选择后的G2序列模2和(modulo-2 sum,其实就是异或运算(^,xor()),就是二进制加法)产生的。 每个M序列寄存器都是10Bit,则根据M序列性质,G1序列和G2...- C/A码产生方法
根据GPS ICD描述,CA码发射发生器使用2个M序列构成,分别被称为G1序列和G2序列。每个卫星测距码信号使用的唯一C/A码序列就是通过将G1序列和一定抽头选择后的G2序列模2和(modulo-2 sum,其实就是异或运算(^,xor()),就是二进制加法)产生的。
每个M序列寄存器都是10Bit,则根据M序列性质,G1序列和G2序列的周期都是2^10-1=1023。两个序列模2和运算得到的Gold码周期也是1023,也就是书上到处说的1023个码片(CA Chip)。
由于Gold码周期是1023个码片,所以在1.023MHz时钟驱动下,一个周期信号长度(1023个码片)为1ms,即每隔1ms产生一个周期的全部1023个码片,每个码片持续时间长度为1ms/1023 ≈1us.
如下图是2个线性移位寄存器组,每个寄存器组是10bit,上本部分产生G1序列,下半部分产生G2序列,受GPS时钟控制。CA码时钟是1.023MHz。
输出的C/A码是G1的最后一级寄存器内容和G2抽头选择寄存器输出,进行模2和运算输出。
GPS CA码通过抽头选择器方式产生 M序列的使用一般都是提供一个多项式,说明抽头控制;
G1和G2生成多项式 G1和G2的初始相位设置为全1.M寄存器初始值不能全0,否则反馈值即根据以上多项式计算出来的数值永远是0,得到的M序列也是全0.
- M序列多项式如何使用呢?
如G1多项式,到底是如何进行运算的呢?X代表什么呢?其实就是二进制加法运算。X^10就是把第10级寄存器数据位数据取出来,X^3就是把第3级寄存器数据取出来。这个寄存器索引从1开始,1-10进行编号,1是常数,模2运算是必须加入运算的。如下图,从3抽头和10抽头读取数据,运算后,送到输入端。
G1序列发生控制详细图 实际运算是,就是M序列寄存器位的数据与M多项式按位相乘,然后模2累加各个对应位乘法结果,M多项式为表示出来的各个为按0系数处理。M多项式就是对寄存器各个位进行加权累加和而已,只是这个权值是0或者1,累加是按照模2累加。
这个M多项式称为特征多项式。式中x仅指明其系数gi的值(1或0),x本身的取值并无实际意义,也不需要去计算x的值。例如,若特征方程为f(x)=1+x+x4则它仅表示x0,x1和x4的系数c0=c1=c4=1,其余为零。经严格证明:若反馈移位寄存器的特征多项式为本原多项式,则移位寄存器能产生m序列。只要找到本原多项式,就可构成m系列发生器。
MATLAB内实现一般按照如下方法:
% G1 LFSR: x^10+x^3+1
s = [0 0 1 0 0 0 0 0 0 1]; %选择tap3 和tap10
g1 = ones(1,n); %initialization vector for G1
.....
g1 = [ mod( sum(g1.*s) , 2 ) g1(1:n-1) ]; %该语句循环往复即可得到G1序列,
程序内,模2和运算即: mod( sum(g1.*s) , 2 ) ,乘累加 sum(g1.*s)然后模2运算。
一般这样运算出来的结果是0或1,而我们MATLAB内仿真模2乘法时,都是把0转换为-1运算。这样模2和运算直接转换为乘法运算 。
CA码一段波形如下:
- C/A码自相关和互相关
C/A码为周期序列信号,重复周期为1023位或1ms,对于C/A码序列本身,具有良好的自相关性。
即在在同一C/A码序列中任意截取两长度都为1023位的序列,如果两个序列完全一样,则产生最大的相关值,否则,相关值几乎为0。
两个序列分别用一个向量表示,其自相关值即为两个向量对应值乘积的和,假设用C(i)、C(i+i0) ,i=1,...,1023 ,i0为一个整数, 即第二个向量相对与第一个向量有一个偏差i0,超前或朝后,这样他们的自相关函数的值为(序列按1、-1计)
C/A码相关运算公式 以上公式意思就是将C/A码延迟一段时间i0之后,和自身乘积、累加、平均。因为C/A码是周期函数,则Rii也是周期函数,周期是1023,和C/A码周期一致。
当
, 即两个序列码相位不同,
当
, 即两个序列码相位相同,
下图是序列自相关图:
CA码具有周期性,下图是CA码自相关函数周期性显示,可见,周期就是CA码的周期1023.
同样,如果在不同C/A码序列中任意截取两长度都为1023位的序列,则无论两序列码相位是否相同与否,其相关值都很小。分别表示两个不同C/A 码的码序列。其中,i=1,1023 ,i0为一个整数,即第二个向量相对与第一个向量有一个偏差i0,超前或朝后,这样他们的互相关函数的值为(序列按1、-1计),对于所有i0有[1],
即不同C/A 码之间几乎不存在相关性.
下图是两个CA码互相关图。可见,互相关只有3个数值:{-1,-65,63}
相关函数和功率谱是一对FFT变换对。
下图是CA码相关函数的FFT变换,可见到CA码带宽是2M左右
自相关函数近似一个冲击函数,由于冲击函数的FFT谱近似为一个平坦的噪声频谱。CA码自相关函数和白噪声的自相关函数有点近似,但是CA码自相关函数其它位置数值不为0,与真正的白噪声又不一致:CA码自相关函数之周期函数,而白噪声的自相关函数则不是;延时为0时CA码自相关函数也无法使其它位置数值处处为0。所以CA码是伪随机,与真正的随机码类似但又不知真随机码。
CA码自相关函数两个相关值之间是线性变化,所以可以通过插值计算更加精确的CA码相位差,提高定位精度。
为啥互相关和自相关的FFT变换没啥差别呢?
参考资料:
GPS Acquisition and Tracking – C/A code spectrum (Part 1)blog.realspatiallabs.comGPS Acquisition and Tracking – C/A code spectrum (Part 2)blog.realspatiallabs.com -
循环校验码 CRC 原始报文为 “11001010101”,其生成多项式为:x^4^+x^3^+x+1.对其进行CRC编码后的结果为?
2020-01-26 11:44:45循环校验码 (CRC 是一种只能检错不能进行纠错的...首先要先理解生成的多项式 x4+x3+x+1的含义,其中最高的次方代表二进制的位数,在本例中最高次方为4则生成的二进制数则有5位,x4代表最高位为1,其余以此类推将... -
CRC校验-基于matlab的简易生成二进制发送信息
2020-03-26 08:43:26先上代码: ... % 校验多项式 data = [1 1 0 0 1 1 ]; % 原始信号 glen = length(polynomial); while polynomial(1) == 0 polynomial = polynomial(2:glen); glen = length(polynomial); end data_... -
论文研究-基于分圆陪集非二进制量子码的构造方法.pdf
2019-09-07 06:31:48分析了分圆陪集的相关性质,确定BCH码包含其Euclidean对偶码的生成多项式,利用扩展的Calderbank- Shor-Steane(CSS)构造即Steane’s构造方法,构造出一批新的非二进制量子码。通过与已有的量子纠错码相比,结果... -
采用CRC的生成多项式是P(X)=X^4+X+1.试求应添加在数据后面的余数。数据在传输过程中最后一个1变成了0,问...
2018-06-28 10:31:59答:作二进制除法,1101011011 0000除以10011(这是根据P(X)=X^4+X+1得出的)得余数1110 添加的检验序列是1110作二进制除法,两种错误均可发展仅仅采用了CRC检验,缺重传机制,数据链路层的传输还不是可靠的传输。... -
论文研究 - 二进制屏幕在光学中产生某些突变
2020-05-16 01:15:26在本文中,从理论上研究了人工生成的具有奇数维数K = 1、3和5的基本突变光学器件,例如Fold,... 通过使用带有定制多项式传输的简单二进制屏幕,在傅立叶变换设备中以光学方式实现K = 1、3和5的突变模式的显示。 -
CRC二进制除法的一些总结
2020-10-08 16:21:23使用Matlab生成一个〖0 ~2〗^60-1的随机数,用2048个12位的多项式对其做除法运算,查看其余数的重复情况。 用足够多的随机数(〖0 ~2〗^60-1)做第一问的除法运算,观察总体的重复的概率分布。 -
查看文件二进制编码_文件验证
2020-12-30 01:36:47点击蓝字默默关注CRC即循环冗余校验码(Cyclic Redundancy Check)是数据通信领域中最常用的一种差错校验码,其特征是...对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K... -
缩短循环码BCH(26,16)编解码原理与二进制算法
2018-11-29 13:39:311.BCH(26,16)的基本简介 BCH(26,16)是一种缩短循环校验码,它的数据位为16位,校验位是10位,码字的长度为26位。BCH(26,16)码取(31,21)循环码中的前5位...对于铁路在800M频段上的数据业务,它采用的生成多项式为... -
产生十六进制序列的Matlab算法
2018-07-28 15:31:48利用用整数表示的生成多项式(既约多项式),首先生成二进制序列,然后将产生的二进制序列转换成十六进制序列,返回到输出中去。 该函数只能在MATLAB中使用;对于搜索二进制或多进制相关码具有很好的帮助。 -
CRC校验码
2011-11-24 11:41:30CRC校验码的编码方法是用待发送的二进制数据t(x)除以生成多项式g(x),将最后的余数作为CRC校验码。其实现步骤如下: (1) 设待发送的数据块是m位的二进制多项式t(x),生成多项式为r阶的g(x)。在数据块的... -
matlab生成m序列的函数(本原多项式产生所有m序列)
2018-12-03 20:42:44后期更新:matlab中产生m序列最简单的方法是调用idinput()函数,关于... % 产生随机的二进制数据 1 -1 m = idinput(8191,'PRBS')'; % 产生长度为8192的m序列 m序列的基本生成原理这里就不做介绍了,今天闲着没事时... -
软件设计师考试日志
2004-10-03 22:00:0010月4号:循环冗余校验码 几个基本概念 1、多项式与二进制数码 多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的... -
作业3.17上
2017-03-17 13:51:00简要笔记: 数据链路 点到点 帧首部要有mac地址和目的地址 保证稳定传输 在每一个节点要有存储 验证...三位二进制对应一位八进制 生成多项式 卷积码也是一种检错方式 纠错编码 Ip层 端到端 pc到pc 转载于:h... -
【CRC循环冗余校验-2】crc多项式及校验原理
2020-09-27 15:41:30示例:, 多项式生成的二进制序列位数是最高次幂加一,即6位,即从第0位开始到第5位,多项式中为0的位已经省略,原式为:(0次幂为1),幂次数也即其位置,即:100101 如上,生成的二进制序列即为crc检验用到的除数... -
CRC校验详解
2016-08-16 16:15:261、多项式与二进制数码;多项式和二进制数有直接对应关系:x的最高幂次对应;多项式包括生成多项式G(x)和信息多项式C(x);如生成多项式为G(x)=x^4+x^3+x+1,;2、生成多项式;是接受方和发送方的一个约定,也就是一... -
CRC校验生成
2005-10-08 12:19:00CRC码的生成步骤 1、将x的最高幂次为R的生成多项式G(x)转换成对应的R+1位二进制数。 2、将信息码左移R位,相当与对应的信息多项式C(x)*2R 3、用生成多项式(二进制数)对信息码做模2除,得到R位的余数。 4、将余数拼... -
通俗易懂的CRC校验
2018-05-05 16:01:44CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二... -
Java实现循环冗余码(CRC)生成算法源代码
2017-09-06 20:17:48多项式编码(polynomial code),也称为CRC(cyclic redundancy check,循环冗余校验码),多项式编码的思想是:将位串看成是系数...每一个数据块均被看作是一个二进制多项式,即所有系数均为二进制(即1或0)的多项式。 -
Java实现循环冗余码(CRC)生成算法
2017-09-06 20:14:13Java实现循环冗余码(CRC)生成算法一、CRC生成算法原理1.1 多项式编码 多项式编码(polynomial code),也称为CRC(cyclic redundancy...每一个数据块均被看作是一个二进制多项式,即所有系数均为二进制(即1或0)的多 -
32位crc校验码程序_CRC码计算及校验原理的最通俗诠释
2020-12-28 21:28:53CRC校验原理CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里... -
CRC循环冗余校验
2017-06-17 20:02:43CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二... -
CRC校验原理
2017-07-03 18:05:31CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二...
-
php软件开发--php进阶
-
【花式GIS】QGIS加地图服务
-
2021周记08:春困的一周
-
AcWing 1089. 烽火传递(单调队列优化dp)
-
python-3.86.zip
-
面试:HashMap 底层实现原理
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
MySQL 性能优化(思路拓展及实操)
-
使用Chrome快速实现数据的抓取(一)——概述
-
js浅拷贝、深拷贝的实现
-
MySQL 四类管理日志(详解及高阶配置)
-
基于Qt的LibVLC开发教程
-
公安系统集成项目标准汇总
-
尚观教育嵌入式4个月培训课堂笔记
-
NEUQ-2021寒假训练-搜索
-
基于springboot实现表单重复提交.docx
-
IDEA远程调试SpringBoot项目.pdf
-
文件操作所需Jar.zip
-
零基础一小时极简以太坊智能合约开发环境搭建并开发部署
-
零基础极简以太坊智能合约开发环境搭建并开发部署