信息论与编码实验指导书0_第1页
信息论与编码实验指导书0_第2页
信息论与编码实验指导书0_第3页
信息论与编码实验指导书0_第4页
信息论与编码实验指导书0_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 信息论与编码实验指导书 河北工业大学信息工程学院 信息论与编码课程组2008年 2月 前 言当前,信息论与编码已经成为电子信息类专业高年级学生必修的专业基础课。尽管各个院校开设课程名称有所不同,但都是以香农信息论为核心 2008年2月 目 录 实验一 信息熵与图像熵计算- 1 实验二 huffman 编码实验- 6 实验三 算术编码实验- 11 实验四 crc校验编码实验-17 实验一 信息熵与图像熵计算(2学时) 一、实验目的1复习matlab的基本命令,熟悉matlab下的基本函数。2复习信息熵基本定义, 能够自学图像熵定义和基本概念。二、实验内容1能够写出matlab源代码,求信源的信

2、息熵。2根据图像熵基本知识,综合设计出matlab程序,求出给定图像的图像熵。三、实验仪器、设备1计算机系统最低配置 256m内存、p4 cpu。2matlab仿真软件 7.0 / 7.1 / 2006a 等版本matlab软件。四、实验原理1 matlab中数据类型、矩阵运算、图像文件输入与输出知识复习。2 利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。 自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。所发出的消息不同,它们所含有的信息量也就不同。任何一个消息的自信息量都代表不了信源所包含的平均自信息量。不能作为整个信源的信息测度,因此定义自信息量的数学期

3、望为信源的平均自信息量:h(x)=elog1p(ai)=-p(ai)logp(ai)i=1n信息熵的意义:信源的信息熵h是从整个信源的统计特性来考虑的。它是从平均意义上来表征信源的总体特性的。对于某特定的信源,其信息熵只有一个。不同的信源因统计特性不同,其熵也不同。3学习图像熵基本概念,能够求出图像一维熵和二维熵。图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令pi表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为:h=pilogpii=0255-1-图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像

4、灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。选择图像的邻域灰度均值作为灰度分布的空间特征量,与图像的像素灰度组成特征二元组,记为( i, j ),其中i表示像素的灰度值(0 <= i <= 255),j表示邻域灰度(0 <= j <= 255),pij=f(i,j)/n2上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i, j)为特征二元组(i, j)出现的频数,n为图像的尺度,定义离散的图像二维熵为:h=pijlogpiji=0255构造的图像二维熵可以在图像所包含信息量的

5、前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征.五、实验步骤1求解信息熵过程:1) 输入一个离散信源,并检查该信源是否是完备集。2) 去除信源中符号分布概率为零的元素。3) 根据平均信息量公式,求出离散信源的熵。2图像熵计算过程:1) 输入一幅图像,并将其转换成灰度图像。2) 统计出图像中每个灰度阶象素概率。3) 统计出图像中相邻两象素的灰度阶联合分布矩阵。4) 根据图像熵和二阶熵公式,计算出一幅图像的熵。六、实验报告要求1 按照本节内容后实验报告形式书写。2 实验总结和心得要详细,可以根据自己实验情况,写出建议。七、实验注意事项1 matlab语言课下多复习,尽量采用

6、模块化编程方法,通过函数调用形式运行程序。2 仔细理解、体会图像熵的概念,能够将其联合熵的概念理解透彻。-2-八、思考题举例说明图像熵、信息熵在现实中有何实践指导意义? 附1:信息熵计算源代码函数源程序 calentropy.m% information shannon entropy calculation% , 22/08/2007% array : discrete probabilities set% h : output shannon entropy function h = calentropy(array)% vector numbernum =

7、length(array); % check probabilities sum to 1:if abs(sum(array) - 1) > .00001,error(probablities dont sum to 1.)end % remove any zero probabilities %zeroprobs = find(array < eps);if isempty(zeroprobs),array(zeroprobs) = ;%disp(removed zero or negative probabilities.)end % compute the entropyh

8、= -sum(array .* log2(array); % 单位 bit/symbol 附2:图像熵计算源代码函数源程序 imgentropy.m% image entropy calculation % , 22/08/2007% img : input image data% h1,h2 : output 1&2 order entropy function h1,h2 = imgentropy(img) % color image transformationi = imread(img);img = rgb2gray(i);imview(i),

9、imview(img); -3-ix,iy = size(img); %compute probs for each scale level in imagep1 = imhist(img)/(ix*iy); temp = double(img); % for the index of image piexltemp = temp , temp(:,1); % correlation prob matrix between 0 . 255 gray levels coefficientmat = zeros(256,256); for x = 1:ixfor y = 1:iyi = temp(

10、x,y); j = temp(x,y+1);coefficientmat(i+1,j+1) = coefficientmat(i+1,j+1)+1; endend % compute the prob of matrixp2 = coefficientmat./(ix*iy); h1 = 0; h2 = 0; for i = 1:256% calculate 1 ord image entropyif p1(i) = 0h1 = h1 - p1(i)*log2(p1(i);end% compute 2 ord image entropyfor j = 1:256if p2(i,j) = 0h2

11、 = h2 - p2(i,j)*log2(p2(i,j);endendend h2 = h2/2; % mean entropy /symbol sprintf(1 ord image entropy is : %d,h1)sprintf(2 ord image entropy is : %d,h2) 函数调用实例 test.m-4-% information theory experiment testing file% , 22/08/2007% testing discrete shannon entropy % discrete probabilities

12、 setprobset = 0.1 0.2 0.3 0.15 0.25;% call calentropy functionh = calentropy(probset);sprintf(shannon entropy is: %d,h) % calculate the image entropyh1,h2 = imgentropy(lena.jpg); 附3:实验报告固定样式 实 验 报 告班级: 姓名: 学号: 组别: 同组人: 课程名称: 实验室: 实验时间: (使用实验报告纸的,以上信息熵与图像熵计算一、实验目的:二、实验内容与原理:三、实验器材(设备、元器件、软件工具、平台):四、实

13、验步骤:五、实验数据及结果分析:六、实验结论:七、思考题八、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。 -5-实验二 huffman 编码(2学时) 一、实验目的1复习c+程序基本编写方法,熟悉vc编程环境。2会用vc调试huffman编码程序。二、实验 visual c+ 8.0 (microsoft visual studio 2005)四、实验原理1 huffman 编码原理:将信源符号按概率从大到小的顺序排列,令p(x1) p(x2) p(xn)给两个概率最小的信源符号p(xn-1)和p(xn)各分配一个码位“0”和“1”,将这两个信源符号合并成一个新符号,并用这

14、两个最小的概率之和作为新符号的概率,结果得到一个只包含(n1)个信源符号的新信源。称为信源的第一次缩减信源,用s1表示。将缩减信源s1的符号仍按概率从大到小顺序排列,重复步骤2,得到只含(n2)个符号的缩减信源s2。重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩两个符号的概率之和必为1。然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的码字。2huffman树的编码原理:步骤1: 将各个符号及其出现频率分别作为不同的小二叉树(目前每棵树只有根节点)步骤2: 在步骤1中得到的树林里找出频率值最小的两棵树,将他们分别作为-6-左、右子树连成一棵大一些的二叉树,该二叉树的

15、频率值设为两棵子树频率值之和。步骤3:对上面得到的树林重复步骤2的做法,直到所有符号都连入树中为止。五、实验步骤1vc环境下,建一个c+控制台应用程序,并把源代码考到该程序目录下。2项目文件中含有一个预编译头文件,一个主函数入口文件和huffman编码算法文件。3在入口文件中,输入任一个离散信源进行编码调试。4设置好程序断点,仔细分析huffman树每步的建立过程。5输出离散信源中每个符号的huffman编码,并与手工运算的结果进行比较。六、实验报告要求1 按照实验一附3中实验报告样式书写本次实验报告。2 总结c+语言学习心得,并结合huffman编码实验总结自己的得失,指出今后自己要练习改进

16、之处。根据自己实验情况,对本实验写出建议。七、实验注意事项1指针数据结构定义typedef struct unsigned long weight; int parent, lchild, rchild; htnode, *huffmantree;typedef char* huffmancode; / 指向存放数组指针的数组即二维数组2二叉树生成操作放在数组中(节点n和数组大小m关系为:m=2*n-1)。每次在树中找到两颗最小子树,其函数为select(huffmantree ht, int n, int *s1, int *s2),实际实现的是在数组中找到最小两个元素。另外注意c+的数组起

17、始索引是0,matlab起始索引是1;程序中为了方便从1开始索引数组,ht0.weight 的大小设为0xffffffffl。为了输出二进制huffman码,程序最后对每个符号进行深度优先搜索,得到该符号的二进制字符,然后进行字符串拷贝,直到最后输出。-7-八、思考题根据huffman算法的c源程序,试着写出huffman编码的matlab程序?附1:huffman编码源代码源代码列表:stdafx.hhuffman.cpp预编译头文件:stdafx.h 以下代码 #pragma once#include <iostream>#include <tchar.h>#inc

18、lude <stdio.h>#include <string.h>#include <stdlib.h>控制台应用cpp文件:huffman.cpp#include "stdafx.h"typedef structunsigned long weight;int parent, lchild, rchild; htnode, *huffmantree; typedef char* huffmancode; huffmancode hc; void select(huffmantree ht, int n, int *s1, int *s2

19、); void huffmancoding(unsigned long *w, int n)int i;if( n<=1 ) return;int m = 2*n - 1;huffmantree p;huffmantree ht = (huffmantree)malloc(m+1)*sizeof(htnode);memset(ht, 0, sizeof(htnode) * (m+1);for( p=ht,i=1; i<=n; +i)+p;+w;p->weight = *w;-8-int s1, s2;for( i=n+1; i<=m; +i )select(ht, i-

20、1, &s1, &s2);hts1.parent = i; hts2.parent = i;hti.lchild = s1; hti.rchild = s2;hti.weight = hts1.weight + hts2.weight; hc = (huffmancode)malloc(n+1)*sizeof(char*); char *cd = (char*)malloc(n*sizeof(char);cdn-1 = 0;int start;unsigned long f;for( i=1; i<=n; +i )start = n - 1;int c;for( c=i,

21、 f=hti.parent; f!=0; c=f, f=htf.parent ) if( htf.lchild = c )cd-start = 0;elsecd-start = 1;hci = (char*)malloc(n-start)*sizeof(char); strcpy(hci, &cdstart);free( ht );/free( cd ); void select(huffmantree ht, int n, int *s1, int *s2) int i;ht0.weight = (unsigned long)(-1l);*s1 = *s2 = 0;for( i=1;

22、 i<=n; i+ )if( hti.parent = 0 )if( hti.weight < ht*s1.weight ) *s2 = *s1;*s1 = i;-9-else if( hti.weight < ht*s2.weight ) *s2 = i;/ 函数测试实例int _tmain(int argc, _tchar* argv)const int len = 3;int i;unsigned long weightlen+1; weight0 = 0;weight1 = 1;weight2 = 7;weight3 = 2; huffmancoding( weigh

23、t, len );for( i=1; i<=len; i+ )printf("%sn", hci);return 0;/ end of huffman.cpp-10-实验三 算术编码(2学时) 一、实验目的1进一步学习c+语言概念和熟悉vc编程环境。2学习算术编码基本流程, 学会调试算术编码程序。3. 根据给出资料,自学自适应0阶算术编、解码方法。二、实验内容1复习c+代码基本语法(类和虚函数等面向对象数据结构定义)2根据实验提供的源代码,学习算术编码实现流程,培养实际动手调试能力和相应的编程技巧。三、实验仪器、设备1计算机系统最低配置 256m内存、p4 cpu。2

24、c+ 编程软件 visual c+ 7.0 (microsoft visual studio 2003)visual c+ 8.0 (microsoft visual studio 2005)四、实验原理1算术编码基本原理是将编码消息表示成实数0和1之间的一个间隔,消息越长,编码表示它的间隔就越小,表示这一间隔所需的二进制位就越多。 算术编码用到两个基本的参数:符号的概率和它的编码间隔。信源符号的概率决定压缩编码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在0到1之间。编码过程中的间隔决定了符号压缩后的输出。首先借助下面一个简单的例子来阐释算术编码的基本原理。考虑某条信息中可能出现的

25、字符仅有 a b c 三种,我们要压缩保存的信息为 bccb。在没有开始压缩进程之前,假设对 a b c 三者在信息中的出现概率一无所知(采用的是自适应模型),暂认为三者的出现概率相等各为 1/3,将 0 - 1 区间按照概率的比例分配给三个字符,即 a 从 0.0000 到 0.3333,b 从 0.3333 到 0.6667,c 从 0.6667 到 1.0000。进行第一个字符 b编码,b 对应的区间 0.3333 - 0.6667。这时由于多了字符 b,三个字符的概率分布变成:pa = 1/4,pb = 2/4,pc = 1/4。按照新的概率分布比例划分 0.3333 - 0.6667

26、 这一区间,划分的结果可以用图形表示为: -11-+- 0.6667pc = 1/4 |+- 0.5834|pb = 2/4 |+- 0.4167pa = 1/4 |+- 0.3333接着拿到字符 c,现在要关注上一步中得到的 c 的区间 0.5834 - 0.6667。新添了 c 以后,三个字符的概率分布变成 pa = 1/5,pb = 2/5,pc = 2/5。用这个概率分布划分区间 0.5834 - 0.6667: +- 0.6667|pc = 2/5 |+- 0.6334|pb = 2/5 |+- 0.6001pa = 1/5 |+- 0.5834输入下一个字符 c,三个字符的概率分布

27、为:pa = 1/6,pb = 2/6,pc = 3/6。接着来划分 c 的区间 0.6334 - 0.6667: -12-+- 0.6667|pc = 3/6 |+- 0.6501|pb = 2/6 |+- 0.6390pa = 1/6 |+- 0.6334输入最后一个字符 b,因为是最后一个字符,不用再做进一步的划分了,上一步中得到的 b 的区间为 0.6390 - 0.6501,最后在这个区间内随便选择一个容易变成二进制的数,例如 0.64,将它变成二进制 0.1010001111,去掉前面没有太多意义的 0 和小数点,可以输出 1010001111,这就是信息被压缩后的结果,由此完成了

28、一次最简单的算术压缩过程。如何解压缩呢?那就更简单了。解压缩之前仍然假定三个字符的概率相等。解压缩时面对的是二进制流 1010001111,先在前面加上 0 和小数点把它变成小数 0.1010001111,也就是十进制 0.64。这时我们发现 0.64 在分布图中落入字符 b 的区间内,立即输出字符 b,并得出三个字符新的概率分布。类似压缩时采用的方法,我们按照新的概率分布划分字符 b 的区间。在新的划分中,我们发现 0.64 落入了字符 c 的区间,我们可以输出字符 c。同理,我们可以继续输出所有的字符,完成全部解压缩过程。2小数存储方法如果信息内容特别丰富,我们要输出的小数将会很长很长,该

29、如何在内存中表示如此长的小数呢?其实,没有任何必要在内存中存储要输出的整个小数。从上面的例子可以知道,在编码的进行中,会不断地得到有关要输出小数的各种信息。具体地讲,当我们将区间限定在 0.6390 - 0.6501 之间时,我们已经知道要输出的小-13-数第一位(十进制)一定是 6,那么我们完全可以将 6 从 输出区间的上限-压缩前 0.0 1.0输入 b 0.0 0.5输入 c 0.25 0.5输入 c 0.375 0.5输入 b 0.375 0.4375最后的输出区间在 0.375 - 0.4375 之间,甚至连一个十进制位都没有确定,也就是说,整个信息根本用不了一个十进制位。自适应模型

30、既然使用静态模型可以很好地接近熵值,为什么还要采用自适应模型呢?要知道,静态模型无法适应信息多样性,例如,上面得出的概率分布没法在所有待压缩信息上使用,为了能正确解压缩,我们必须再消耗一定的空间保存静态模型统计出的概率分布,保存模型所用的空间将使我们重新远离熵值。其次,静态模型需要在压缩前对信息内字符的分布进行统计,这一统计过程将消耗大量的时间,使得本来就比较慢的算术编码压缩更加缓慢。另外还有最重要的一点,对较长的信息,静态模型统计出的符号概率是该符号在整个信息中的出现概率,而自适应模型可以统计出某个符号在某一局部的出现概率或某个符号相对于某一上下文的出现概率,换句-14-话说,自适应模型得到

31、的概率分布将有利于对信息的压缩(可以说结合上下文的自适应模型的信息熵建立在更高的概率层次上,其总熵值更小),好的基于上下文的自适应模型得到的压缩结果将远远超过静态模型。自适应模型的阶通常用“阶”(order)这一术语区分不同的自适应模型。前面例子中采用的是 0 阶自适应模型,该例子中统计的是符号在已输入信息中的出现概率,没有考虑任何上下文信息。如果我将模型变成统计符号在某个特定符号后的出现概率,那么,模型就成为了 1 阶上下文自适应模型。举个例子要对一篇英文文本进行编码,已经编码了 10000 个英文字符,刚刚编码的字符是 t,下一个要编码的字符是 h。我们在前面的编码过程中已经统计出前 10

32、000 个字符中出现了 113 次字母 t,其中有 47 个 t 后面跟着字母 h。我们得出字符 h 在字符 t 后的出现频率是 47/113,我们使用这一频率对字符 h 进行编码,需要 -log2(47/113) = 1.266 bit。对比 0 阶自适应模型,如果前 10000 个字符中 h 的出现次数为 82 次,则字符 h 的概率是 82/10000,我们用此概率对 h 进行编码,需要 -log2(82/10000) = 6.930 bit。考虑上下文因素的优势显而易见。还可以进一步扩大这一优势,例如要编码字符 h 的前两个字符是 gt,而在已经编码的文本中 gt 后面出现 h 的概率

33、是 80%,那么我们只需要 0.322 bit就可以编码输出字符 h。此时,使用的模型叫做 2 阶上下文自适应模型。最理想的情况是采用 3 阶自适应模型。此时,如果结合算术编码,对信息的压缩效果将达到惊人的程度。采用更高阶的模型需要消耗的系统空间和时间至少在目前还无法让人接受,使用算术压缩的应用程序大多数采用 2 阶或 3 阶的自适应模型。五、实验步骤项目文件建立步骤同实验二,下面列出对给定序列的算术编码步骤:步骤1:编码器在开始时将“当前间隔” l, h) 设置为0,1)。步骤2:对每一事件,编码器按步骤(a)和(b)进行处理(a)编码器将“当前间隔”分为子间隔,每一个事件一个。(b)一个子

34、间隔的大小与下一个将出现的事件的概率成比例,编码器选择子间隔对应于下一个确切发生的事件相对应,并使它成为新的“当前间隔”。-15-步骤3:最后输出的“当前间隔”的下边界就是该给定事件序列的算术编码。六、实验报告要求1 按照实验一附3中实验报告样式提交本次实验报告。2 算术编码学习心得,特别是根据自适应模型0阶编码,调整概率分布方法。根据自己实验情况,写出自己的做实验中遇到的具体问题,对本实验提出建议。七、实验注意事项1. 几个重要概念在实验前一定搞清楚:1)编码概论累加分布;2)编码区间上限和下限迭代算法;3)自适应模型0阶的编码原理。2. 程序设计时注意内容:1)基本概论模型的确定(等概率分

35、布,255个字符);2)自适应调整概率分布;3)e1/e2/e3 放大原理,及它们之间关系(认真阅读参考资料);4)理解从buffer中写bit和读bit的方法;5)理解字节对齐的方法。八、思考题能否根据算法流程和c+源代码写出matlab下算术编码程序? -16-实验四 crc校验码编码实验(2学时) 一、实验目的1学习crc编码基本流程, 学会调试循环冗余校验码编码程序。2掌握crc校验码的编码原理,重点掌握按字节(byte)编码方法。二、实验内容1根据实验原理掌握crc校验码编码/解码基本流程。2在c+编译器下能够调试编码算法每一个步骤,重点掌握按字节编码的过程。三、实验仪器、设备1计算

36、机系统最低配置 256m内存、p4 cpu。2c+ 编程软件 visual c+ 7.0 (microsoft visual studio 2003)visual c+ 8.0 (microsoft visual studio 2005)四、实验原理1 crc校验码介绍crc 校验的基本思想是利用线性编码理论,在发送端根据要传送的k 位二进制码序列,以一定的规则产生一个校验用的监督码(crc 码)r 位,并附在信息后边,构成一个新的二进制码序列数共 (k+r) 位,最后发送出去。在接收端,则根据信息码和crc码之间所遵循的规则进行检验,以确定传送中是否出错。16位的crc 码产生的规则是先将要

37、发送的二进制序列数左移16位(乘以216)后,再除以一个多项式,最后所得到的余数既是crc 码。求crc码所采用模2 加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。接收方将接收到的二进制序列数(包括信息码和crc 码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输有误。2按位计算crc一个二进制序列数可以表示为 求此二进制序列数的crc 码时,先乘以216后(左移16位),再除以多项式g(x) ,所得的余数就是所要求的crc 码。-17- 可以设: 其中q n (

38、x) 为整数, r n (x) 为16位二进制余数,将上式代入前式得: 再设: 其中qn-1(x) 为整数, rn-1(x) 为16位二进制余数,继续代入前式,多次迭代得到: 根据crc 的定义,很显然,十六位二进制数r0(x) 即是要求的crc码。3按字节计算crc对于一个二进制序列数可以按字节表示为下式,其中bn(x) 为一个字节(共8 位): 求此二进制序列数的crc码时,先乘以216后(左移16位),再除以多项式g(x),所得的余数即是所要求的crc 码。 可以设: 其中qn(x) 为整数, rn(x) 为16位二进制余数,将上式代入前式得:-18- 由于: 其中rnh8(x) 是rn

39、(x)的高八位, rnl8(x)是rn(x)的低八位,代入前式得到: 再设: 其中qn-1(x ) 为整数, rn-1(x ) 为16位二进制余数,继续代入前式,多次迭代得到: 显然,十六位二进制数r0(x)即是要求的crc码。五、实验步骤项目文件建立步骤同实验二,下面列出对给定字符串crc校验主要步骤: 步骤1:从主函数入口输入一个字符串,并且确定按字节32位crc校验编码,编码多项式采用ccitt标准形式多项式。步骤2:调用编码函数,依次读入字符串每个自己,进行模2除法运算。 步骤3:将原来字符串左移32位,将除法最后的余式追加到字符串的后32位中去,得到该字符串crc校验编码结果。步骤4

40、:如果要解码,首先确认编码多项式,然后将接收字符串除以编码多项式。如果能够整除,说明字符串在传输或存储中没有发生错误;否则,表明字符串在传输或存储中产生错误,导致crc校验失败。六、实验报告要求1 按照实验一附3中实验报告样式提交本次实验报告。2 要求写出crc校验编码学习心得,最好是能够结合硬件设计谈一下校验编码的设计体会。根据自己实验情况,写出自己的做实验中遇到的具体问题,-19-对本实验提出建议。七、实验注意事项1几个重要概念在实验前一定搞清楚:1) 模2 加减法 = 异或(xor)。2) 多项式的表示方法。3) crc 校验的基本理论a 可以参考前面文中的推导。b 自己通过一个除法运算

41、推导。4) 常用的两种方法:a bit 长度运算b byte 长度运算(可以将字节除法余式表保存下来,通过查表,计算比较快)2. 程序设计时注意高字节前,低字节后,采用通常理论推导公式编写程序。b 低字节前,高字节后,采用向右移位方式。(这是数据通信中常用方式,多项式采用反转多项式,添加余式时注意低位在前,高位在后)2) 注意寄存器初始值选择ccitt 和crc32 如果用在通信中,常采用初始值为0xffff或0xffffffffl,可以开始纠正数字通信中几个bit连续为0的情况。为保持其输出和采用初始值为0xffff或0xffffffffl一致,最后crc校验值要与0xffff或0xffff

42、ffffl进行异或运算(xor)得到最终crc校验码。八、思考题1掌握按字节编码的过程,试着写出crc校验编码的matlab程序?2如何设计fpga实现crc校验计算? -20- 荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆

43、肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇

44、肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅

45、肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅

46、膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆

47、螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄

48、螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅

49、袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅

50、袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃

51、袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄

52、羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄

53、羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆袀腿膇蒂衿衿莂莈蒆羁膅芄薅肃莀薃薄螃膃葿薃袅荿蒅薂肇节莁薁膀肄虿薀衿芀薅薀羂肃蒁蕿肄芈莇蚈螄肁芃蚇袆芆薂蚆肈聿薈蚅膁莅蒄蚅袀膈莀蚄羃莃芆蚃肅膆薄蚂螅莁蒀螁袇膄莆螀罿莀节蝿膁膂蚁蝿袁羅薇螈羃芁蒃螇肆肃荿螆螅艿芅螅袈肂薄袄羀芇蒀袃肂肀莆袃螂芆莂袂羄膈蚀袁肇莄薆

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论