精华内容
下载资源
问答
  • 某个数据通信系统采用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码。

    展开全文
  • 每个卫星测距码信号使用的唯一C/A码序列就是通过将G1序列和一定抽头选择后的G2序列模2和(modulo-2 sum,其实就是异或运算(^,xor()),就是二进制加法)产生的。 每个M序列寄存器都是10Bit,则根据M序列性质,G1序列和G2...

    b5f41d843234ed78a66af0402b2db8d8.png
    • 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和运算输出。

    824b15692fc3006bdfa44898e2f961c8.png
    GPS CA码通过抽头选择器方式产生

    M序列的使用一般都是提供一个多项式,说明抽头控制;

    49e665dc33649e546afb5cf828e95029.png
    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抽头读取数据,运算后,送到输入端。

    38ca27bd673e319f6ff2c5563ce4bc1a.png
    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码一段波形如下:

    cf63c4fa2ff93778c709777070d6d324.png
    • C/A码自相关和互相关

    C/A码为周期序列信号,重复周期为1023位或1ms,对于C/A码序列本身,具有良好的自相关性。

    即在在同一C/A码序列中任意截取两长度都为1023位的序列,如果两个序列完全一样,则产生最大的相关值,否则,相关值几乎为0。

    两个序列分别用一个向量表示,其自相关值即为两个向量对应值乘积的和,假设用C(i)、C(i+i0) ,i=1,...,1023 ,i0为一个整数, 即第二个向量相对与第一个向量有一个偏差i0,超前或朝后,这样他们的自相关函数的值为(序列按1、-1计)

    253ff2344d2a377179630cfee3f6d0da.png
    C/A码相关运算公式

    以上公式意思就是将C/A码延迟一段时间i0之后,和自身乘积、累加、平均。因为C/A码是周期函数,则Rii也是周期函数,周期是1023,和C/A码周期一致。

    4e8e9900cffe44524bbd2efc43ad82ea.png

    , 即两个序列码相位不同,

    3d3ea89e59f7ac13dd66452a44319a1a.png

    87a286b4c388d6a7029198bf66ce990b.png

    , 即两个序列码相位相同,

    66f7f96600d5d38d5cbaf159684d3e46.png

    下图是序列自相关图:

    6c1449603c4081316fd3bac44310dab2.png

    CA码具有周期性,下图是CA码自相关函数周期性显示,可见,周期就是CA码的周期1023.

    e7d95cba89285e6fcabce2d1fcdfa342.png

    同样,如果在不同C/A码序列中任意截取两长度都为1023位的序列,则无论两序列码相位是否相同与否,其相关值都很小。分别表示两个不同C/A 码的码序列。其中,i=1,1023 ,i0为一个整数,即第二个向量相对与第一个向量有一个偏差i0,超前或朝后,这样他们的互相关函数的值为(序列按1、-1计),对于所有i0有[1],

    ac26278c4c510a4cb30013ee9a5a007e.png

    即不同C/A 码之间几乎不存在相关性.

    下图是两个CA码互相关图。可见,互相关只有3个数值:{-1,-65,63}

    446c6fde84a5fb79e77ca678a202558b.png

    相关函数和功率谱是一对FFT变换对。

    下图是CA码相关函数的FFT变换,可见到CA码带宽是2M左右

    9f3e11ac50bcabec6b8c25c2c4f19440.png

    自相关函数近似一个冲击函数,由于冲击函数的FFT谱近似为一个平坦的噪声频谱。CA码自相关函数和白噪声的自相关函数有点近似,但是CA码自相关函数其它位置数值不为0,与真正的白噪声又不一致:CA码自相关函数之周期函数,而白噪声的自相关函数则不是;延时为0时CA码自相关函数也无法使其它位置数值处处为0。所以CA码是伪随机,与真正的随机码类似但又不知真随机码。

    CA码自相关函数两个相关值之间是线性变化,所以可以通过插值计算更加精确的CA码相位差,提高定位精度。

    为啥互相关和自相关的FFT变换没啥差别呢?

    参考资料:

    GPS Acquisition and Tracking – C/A code spectrum (Part 1)blog.realspatiallabs.com
    e7f8d7617cefef61f14d8876be12b51d.png
    GPS Acquisition and Tracking – C/A code spectrum (Part 2)blog.realspatiallabs.com
    a862b1e46cef2e2ced2531e7f2bd1081.png
    展开全文
  • 循环校验码 (CRC 是一种只能检错不能进行纠错的...首先要先理解生成多项式 x4+x3+x+1的含义,其中最高的次方代表二进制的位数,在本例中最高次方为4则生成二进制数则有5位,x4代表最高位为1,其余以此类推将...
  • 先上代码: ... % 校验多项式 data = [1 1 0 0 1 1 ]; % 原始信号 glen = length(polynomial); while polynomial(1) == 0 polynomial = polynomial(2:glen); glen = length(polynomial); end data_...
  • 分析了分圆陪集的相关性质,确定BCH码包含其Euclidean对偶码的生成多项式,利用扩展的Calderbank- Shor-Steane(CSS)构造即Steane’s构造方法,构造出一批新的非二进制量子码。通过与已有的量子纠错码相比,结果...
  • 答:作二进制除法,1101011011 0000除以10011(这是根据P(X)=X^4+X+1得出的)得余数1110 添加的检验序列是1110作二进制除法,两种错误均可发展仅仅采用了CRC检验,缺重传机制,数据链路层的传输还不是可靠的传输。...
  • 在本文中,从理论上研究了人工生成的具有奇数维数K = 1、3和5的基本突变光学器件,例如Fold,... 通过使用带有定制多项式传输的简单二进制屏幕,在傅立叶变换设备中以光学方式实现K = 1、3和5的突变模式的显示。
  • 使用Matlab生成一个〖0 ~2〗^60-1的随机数,用2048个12位的多项式对其做除法运算,查看其余数的重复情况。 用足够多的随机数(〖0 ~2〗^60-1)做第一问的除法运算,观察总体的重复的概率分布。
  • 点击蓝字默默关注CRC即循环冗余校验码(Cyclic Redundancy Check)是数据通信领域中最常用的一种差错校验码,其特征是...对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K...
  • 1.BCH(26,16)的基本简介 BCH(26,16)是一种缩短循环校验码,它的数据位为16位,校验位是10位,码字的长度为26位。BCH(26,16)码取(31,21)循环码中的前5位...对于铁路在800M频段上的数据业务,它采用的生成多项式为...
  • 利用用整数表示的生成多项式(既约多项式),首先生成二进制序列,然后将产生的二进制序列转换成十六进制序列,返回到输出中去。 该函数只能在MATLAB中使用;对于搜索二进制或多进制相关码具有很好的帮助。
  • CRC校验码

    2011-11-24 11:41:30
    CRC校验码的编码方法是用待发送的二进制数据t(x)除以生成多项式g(x),将最后的余数作为CRC校验码。其实现步骤如下: (1) 设待发送的数据块是m位的二进制多项式t(x),生成多项式为r阶的g(x)。在数据块的...
  • 后期更新:matlab中产生m序列最简单的方法是调用idinput()函数,关于... % 产生随机的二进制数据 1 -1 m = idinput(8191,'PRBS')'; % 产生长度为8192的m序列 m序列的基本生成原理这里就不做介绍了,今天闲着没事时...
  • 软件设计师考试日志

    2004-10-03 22:00:00
    10月4号:循环冗余校验码 几个基本概念 1、多项式二进制数码 多项式二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的...
  • 作业3.17上

    2017-03-17 13:51:00
    简要笔记: 数据链路 点到点 帧首部要有mac地址和目的地址 保证稳定传输 在每一个节点要有存储 验证...三位二进制对应一位八进制 生成多项式 卷积码也是一种检错方式 纠错编码 Ip层 端到端 pc到pc 转载于:h...
  • 示例:, 多项式生成二进制序列位数是最高次幂加一,即6位,即从第0位开始到第5位,多项式中为0的位已经省略,原式为:(0次幂为1),幂次数也即其位置,即:100101 如上,生成二进制序列即为crc检验用到的除数...
  • CRC校验详解

    千次阅读 2016-08-16 16:15:26
    1、多项式与二进制数码;多项式和二进制数有直接对应关系:x的最高幂次对应;多项式包括生成多项式G(x)和信息多项式C(x);如生成多项式为G(x)=x^4+x^3+x+1,;2、生成多项式;是接受方和发送方的一个约定,也就是一...
  • CRC校验生成

    千次阅读 2005-10-08 12:19:00
    CRC码的生成步骤 1、将x的最高幂次为R的生成多项式G(x)转换成对应的R+1位二进制数。 2、将信息码左移R位,相当与对应的信息多项式C(x)*2R 3、用生成多项式二进制数)对信息码做模2除,得到R位的余数。 4、将余数拼...
  • 通俗易懂的CRC校验

    万次阅读 多人点赞 2018-05-05 16:01:44
    CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是...
  • 多项式编码(polynomial code),也称为CRC(cyclic redundancy check,循环冗余校验码),多项式编码的思想是:将位串看成是系数...每一个数据块均被看作是一个二进制多项式,即所有系数均为二进制(即1或0)的多项式
  • Java实现循环冗余码(CRC)生成算法

    千次阅读 2017-09-06 20:14:13
    Java实现循环冗余码(CRC)生成算法一、CRC生成算法原理1.1 多项式编码 多项式编码(polynomial code),也称为CRC(cyclic redundancy...每一个数据块均被看作是一个二进制多项式,即所有系数均为二进制(即1或0)的多
  • CRC校验原理CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里...
  • CRC循环冗余校验

    2017-06-17 20:02:43
    CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是...
  • CRC校验原理

    2017-07-03 18:05:31
    CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 221
精华内容 88
关键字:

二进制生成多项式