奇偶校验实验报告.docx

上传人:b****4 文档编号:1161707 上传时间:2022-10-18 格式:DOCX 页数:6 大小:19.67KB
下载 相关 举报
奇偶校验实验报告.docx_第1页
第1页 / 共6页
奇偶校验实验报告.docx_第2页
第2页 / 共6页
奇偶校验实验报告.docx_第3页
第3页 / 共6页
奇偶校验实验报告.docx_第4页
第4页 / 共6页
奇偶校验实验报告.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

奇偶校验实验报告.docx

《奇偶校验实验报告.docx》由会员分享,可在线阅读,更多相关《奇偶校验实验报告.docx(6页珍藏版)》请在冰豆网上搜索。

奇偶校验实验报告.docx

奇偶校验实验报告

竭诚为您提供优质文档/双击可除

奇偶校验实验报告

  篇一:

奇偶校验

  实验项目四:

数据的校验(2学时)

  一、实验目的:

  1.了解数据的校验机制。

  *2.掌握海明码校验实施过程(选做)。

  *3.掌握循环冗余码校验实施过程(选做)。

  二、实验要求:

  1.设计一个程序模拟奇偶校验实施过程(提示:

主函数、发送函数、传输函数、校验函数)。

  首先奇偶校验过程的基本过程:

奇偶校验位有两种类型:

偶校验位与奇校验位。

如果一组给定数据位中1的个数是奇数,那么偶校验位就置为1,从而使得总的1的个数是偶数。

如果给定一组数据位中1的个数是偶数,那么奇校验位就置为1,使得总的1的个数是奇数。

偶校验实际上是循环冗余校验的一个特例,通过多项式x+1得到1位cRc。

  *2.设计一个程序模拟海明码校验实施过程(提示:

主函数、发送函数、传输函数、校验函数、纠错函数)。

  *3.设计一个程序模拟循环冗余码校验实施过程(提示:

主函数、发送函数、传输函数、校验函数、纠错函数)。

  三、实验报告:

  1.给出源程序和执行结果。

  #include

  #include

  #include

  voidproduct();

  voidtrans();

  voidpop();

  intp1,p2;

  inta[8]={0};

  intmain()

  {

  product();//产生一个随机的八位二进制的数

  trans();//设置传输出错一位或者没有出错的情况

  pop();//判断有无出错的情况

  return0;

  }

  voidproduct()

  {

  inti,data;intcount1=0;srand((unsigned)time(0));data=0+rand()%128;//产生0-127的随机数printf("随机的产生一个128以内的十进制数为%d\n",data);for(i=0;i  if(count1%2==0)//奇校验奇数个1校验位为0,偶数个1为1a[7]=1;}for(i=0;i  else

  a[7]=0;

  p1=a[7];

  printf("初始二进制校验位放在最高位它为:

%d\n",p1);

  printf("产生随机二进制数为");

  /*

  while(i>=0)

  printf("%d",a[--i]);*/

  for(i=7;i>=0;--i)

  {

  printf("%d",a[i]);

  }

  printf("\n");

  }

  voidtrans()

  {

  inti;

  srand((unsigned)time(0));

  i=0+rand()%9;//产生0-8的随机数

  if(i==0)

  printf("机器内部设置传输过程中没有出错\n");

  else

  {

  a[i-1]=(a[i-1]==0)?

1:

0;

  printf("传输过程将机器内部的数据进行了一位改动,改动位

  为%d\n",i);

  }

  voidpop()

  {

  printf("接收数据计算出的校验位为:

%d\n",p2);if(p2!

=a[7])printf("通过校验位p1与p2的比较得出传输过程中数据出错了。

if(count2%2==0)p2=1;inti,count2=0;printf("接收数据为:

");for(i=7;i>=0;i--){}printf("\n");//求接收数据的偶校验位for(i=6;i>=0;i--){}if(a[i]==1)count2++;printf("%d",a[i]);}elsep2=0;

  \n");

  elseprintf("通过校验位p1与p2的比较得出在传输的过程中数据没有出错!

\n");

  }

  篇二:

实验报告

  实验一

  1.ADs1.2下建立工程

  

(1)运行ADs1.2集成开发环境(codewarriorforARmDevelopersuite),点击File|new,在new对话框中,选择project栏,其中共有7项,ARmexecutableImage是ARm的通用模板。

选中它即可生成ARm的执行文件。

还要在,projectname栏中输入项目的名称,以及在Location中输入其存放的位置。

按确定保存项目。

  

(2)在新建的工程中,选择Debug版本,如图,使用edit|Debugsettings菜单对Debug版本进行参数设置。

  (3)在如图2-1-3中,点击Debugsetting按钮,

  图2-1-3

  (4)在如图2-1-5中,点击ARmAssembler,在Architectureorprocesser

  图

  2-1-5

  栏中选ARm920T。

这是要编译的cpu核。

  (5)在如图2-1-6中,点击ARmccompliler,在Architectureorprocesser栏中选ARm920T。

这是要编译的cpu核。

  图2-1-6

  (6)点击ARmlinker,在outpur栏中设定程序的代码段地址,以及数据使用

  的地址。

图中的Robase栏中填写程序代码存放的起始地址,Rwbase栏中填写程序数据存放的起始地址。

该地址是属于sDRAm的地址。

  (7)在如图2-1-10中,即在Debugsetting对话框中点击左栏的ARmfromeLF

  项,在outputfilename栏中设置输出文件名*.bin,前缀名可以自己取,在outputformat栏中选择plainbinary,这是设置要下载到flash中的二进制文件。

  图2-1-10

  (8)到此,在ADs1.2中的基本设置已经完成,可以将该新建的空的项目文件作为模板保存起来。

首先,要将该项目工程文件改一个合适的名字,如s3c2410ARm.mcp等,然后,在ADs1.2软件安装的目录下的stationary目录下新建一个合适的模板目录名,如,s3c2410ARmexecutableImage,再将刚刚设置完的s3c2410ARm.mcp项目文件存放到该目录下即可。

这样,就能在图2-1-10中看到该模板。

  (9)新建项目工程后,就可以执行菜单project|AddFiles把和工程所有相关的文件加入,ADs1.2不能自动进行文件分类,用户必须通过

  project|create

  group来创建文件夹,然后把加入的文件选中,移入文件夹。

或者鼠标放在文件填加区,右键点击,即出!

先选AddFiles,加入文件,再选creategroup,创建文件夹,然后把文件移

  入文件夹内。

读者可根据自己习惯,更改edit|preference窗口内关于文本编辑的颜色、字体大小,形状,变量、函数的颜色等等设置。

  2.ADs1.2下仿真、调试

  在ADs1.2下进行仿真调试,首先需要一根仿真调试电缆。

其驱动程序的安装

  和使用在光盘中的\实验软件\ARm9_RDI中,里面有相关的文档。

在连上调试电缆后,给实验箱上电,

  打开调试软件AxDDebugger。

点击File|loadimage加载文件ADs.axf(\实验程

  序\hARDwARe\ADs\实验一\ADs\ADs_data目录下)。

打开超级终端,设置其参数为:

波特率为115200,数据位数8,奇偶校验无,停止位无1,数据流控无。

点击全速运行,出现图2-1-13的界面:

  图2-1-13

  在  

最后介绍调试按钮,

  上图,左起第一个是全速运行,第二个是停止运行,第三个跳入函数内部,第四个单步执行,第五个跳出函数。

  到此,开发环境就全部介绍完了,这是ARm的开发基础,希望你有所收获。

  实验二

  1.本实验仅使用实验教学系统的cpu板,串口。

在进行本实验时,LcD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。

  2.在pc机并口和实验箱的cpu板上的JTAg接口之间,连接仿真调试电缆,以及串口间连接公/母接头串口线。

  3.检查连接是否可靠,可靠后,接入电源线,系统上电。

  4.打开ADs1.2开发环境,从里面打开\实验程序\hARDwARe\ADs\实验二\asm.mcp项目文件,进行编译。

  5.编译通过后,进入ADs1.2调试界面,加载\实验程序\hARDwARe\ADs\实验二\asm_Data\Debug中的映象文件程序映像asm.axf。

  6.打开超级终端,配置波特率为115200,校验位无,数据位为8,停止位为1。

之后,在ADs调试环境下全速运行映象文件,应出现图2-2-1界面:

  图2-2-1

  本程序连续发送了128个字节的AscII字符。

  下面分析一下程序的源码。

  在uART前的部分为系统的初始化,这在后边booTLoADeR的章节里,要详细介绍。

uART后的程序为主程序,在程序中找到下面这部分的代码,

  //呼叫主应用程序

  buART

  uART

  ldrr0,=gphcon;//设置gpIo(RxD0,TxD0引脚)

  ldrr1,=0x2afaaa

  strr1,[r0]

  ldrr0,=gphup

  ldrr1,=0x7ff

  strr1,[r0];//gph[10:

0]禁止上拉

  ldrr0,=uFcon0;//禁用FIFo

  ldrr1,=0x0

  strr1,[r0]

  ldrr0,=umcon0;//禁用AFc

  ldrr1,=0x0

  strr1,[r0]

  ldrr0,=uLcon0;//设置线寄存器

  ldrr1,=0x3;//正常模式,无奇偶校验,一个停止位,8个数据位

  strr1,[r0]

  ldrr0,=ucon0;//设置uart0控制器

  ldrr1,=0x245;//Rx边沿触发,Tx电平触发,禁用延时中断,使用Rx错误中断,正常操作模式,中断请求或表决模式

  strr1,[r0]

  ldrr0,=ubRDIV0;//设置波特率为115200

  ldrr1,=0x1a;//int(50700000/16/115200)-1=26

  strr1,[r0]

  movr1,#100

  Delay

  subr1,r1,#0x1

  bneDelay;//开中断

  ldrr0,=InTmsK

  ldrr1,[r0]

  andr1,r1,#0xefffffff

  strr1,[r0]

  moVR5,#127;//设置要打印的字符的个数

  moVR1,#0x0;//设置要打印的字符

  Loop

  LDRR3,=uTRsTAT0

  LDRR2,[R3]

  TsTR2,#0x04;//判断发送缓冲区是否为空

  beQLoop;//为空则执行下边的语句,不为空则跳转到Loop

  LDRR0,=uTxh0

  sTRR1,[R0];//向数据缓冲区放置要发送的数据

  ADDR1,R1,#1

  subR5,R5,#0x01;//计数器减一

  cmpR5,#0x0

  bneLoop

  Loop2bLoop2

  分析清楚之后,我们改变R1的数据,换成其他的数据,然后保存、编译、调试。

观察结果,比如0xaa,0x01等等。

  篇三:

奇偶校验电路设计

  奇偶校验电路设计

  一、实验目的

  1.熟悉QuartusII的使用;

  2.学习在QuartusII中;

  3.学习原理图方式自定义

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1