奇偶校验实验报告.docx
- 文档编号:1161707
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:6
- 大小:19.67KB
奇偶校验实验报告.docx
《奇偶校验实验报告.docx》由会员分享,可在线阅读,更多相关《奇偶校验实验报告.docx(6页珍藏版)》请在冰豆网上搜索。
奇偶校验实验报告
竭诚为您提供优质文档/双击可除
奇偶校验实验报告
篇一:
奇偶校验
实验项目四:
数据的校验(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.学习原理图方式自定义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 奇偶校验 实验 报告