版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、四川大学电气信息学院实验报告课程:通信系统原理实验名称:通信系统原理设计件实验课任老师:张奕专业:通信工程年级:2013级余佩学生姓名:学号:20理解信源编码和解码的原理、步骤以及方法复习并更加熟练地掌握汇编语言的编程方法学习在EMCF发工具下编程学习使用EM78P259微控制器通过观测示波器了解编码:、编码实验1、双极性不归零码(1)实验原理1码和0”码都有电流,但是“1”码是正电流,0码是负电流,正和负的幅度相等,极性相反,故称为双极性码。此时的判决门限为零电平,接收端使用零判决器或正负判决器,接收信号的值若在零电平以上为正,判为1码;若在零电平以下为负,判为0码。(2)实验流程图将Byt
2、e2和Byte1暂存声和ata_temp2和Data_temp1NDatatemp2,7=1?输出正电平YData_temp2和Data_temp1分别左移编码计数值不为0?N输出零电平结束输出负电平中并设置编码计数值输出零电平(3)实验思路需要在单极性不归零码的基础上,在程序的开始和结束时添加调用零电平的程序即可(4)实验程序/*双极性不归零码子程序*/Coding_Bi_NRZ:MOVA,Byte2MOVData_temp2,A;将Byte2中的数据暂存于Data_temp2中MOVA,Byte1MOVData_temp1,A;将Byte2中的数据暂存于Data_temp1中MOVA,16
3、MOVtemp,A;Byte2,Byte1中的信息共计16位需要编码输出callpulse_zero;=输出16位编码=Bi_NRZ_LOOP:JBSData_temp2,7CALLPulse_negative;Data_temp2.7=0,调用负脉冲子程序JBCData_temp2,7CALLPulse_positive;Data_temp2.7=1,调用正脉冲子程序;信息左移1位:RLCData_temp1RLCData_temp2;R(n)-R(n+1),R(7)-C=Data_temp1.7;C=Data_temp1.7-R(0),R(n)-R(n+1),R(7)-CDJZtemp;t
4、emp-1=0?JMPBi_NRZ_LOOP;NO,继续编码输出callpulse_zeroRET;NRZ编码输出完毕/*/(5)实验结果图一图二(6)调试分析如图一所示,输入十六进制码3456(相应的二进制为0011010001010110),再打开示波器,波形如图二所示。2 .传号差分码(1)实验原理传号差分码的编码规则是用“1”和“0”表示发生电平跳变和电平不跳变,电平跳变用“1”表示,电平不跳变用“0”表示。(2)实验流程图开始将Byte2和Byte1普解磬Dafe_temp2和Data_temp1中,设置编码计数值和存放极性的寄存器YP并置0上一位电平与当前位电N平是否改变?输出正电
5、平/.输出负电平temp左移电平;若异或结果为0,同之前比电位没改变,则输出负电平。每次只能读出一位,所以最后再左移存放极性的寄存器,然后再进行下一次循环。(4)实验程序/*传号差分码子程序*/Coding_DE_Mark:;传号差分码子程序;(对存放在Byte2,Byte1中的信息进行编码输出)MOVA,Byte2MOVData_temp2,A;将Byte2中的数据暂存于Data_temp2中MOVA,Byte1MOVData_temp1,A;将Byte2中的数据暂存于Data_temp1中MOVA,16MOVtemp,A;Byte2,Byte1中的信息共计16位需要编码输出callpuls
6、e_negativeYP=0x24CLRYP;=输出16位编码=DE_Mark_LOOP:MOVa,Data_temp2XORYP,aJBSyp,7CALLPulse_negativeJBCyp,7CALLPulse_positiveRLCData_temp1RLCData_temp2DJZtemp;Data_temp2.7=0,调用负脉冲子程序;Data_temp2.7=1,调用正脉冲子程序;R(n)-R(n+1),R(7)-C=Data_temp1.7;C=Data_temp1.7-R(0),R(n)-R(n+1),R(7)-C;temp-1=0?JMPDE_Mark_LOOP;NO,继续
7、编码输出callpulse_negativeRET;传号差分编码输出完毕/*/(5)实验结果图三图四(6)调试分析如图三所示,输入十六进制码55D3(相应的二进制为0101010111010011),经过传号差分码编码后的二进制结果为0110011010011101。打开示波器,波形如图四所示。,理解并学会活用给新寄存器赋值,学会CLR3 .空号差分码(1)实验原理空号差分码的编码规则是用“0”和“1”表示发生电平跳变和电平不跳变。与传号差分码相反,空号差分码中,电平跳变用“0”表示,电平不跳变用“1”表示。(2)实验流程图开始1将Byte2和Byte1暂存于Data_temp2和Data_t
8、emp1中,设置编码计数值和存放极性的寄存器YP1置1输出零电平上一位电平与当前位电平是否改变?输出负电平temp左移输出正电平YN(3)实验思路结束编码计数值不为0?输出零电平由于空号差分码正电平和负电平的编码规则与传号差分码的正好相反,所以空号差分码的程序段需要在传号差分码的基础上添加一个取反的语句,即MOVA,0XFFXORYP1,A,将上一步骤的异或结果取反。将异或取反后的结果置于寄存器YP1中,输t出emp的最高位再左移temp,然后再进行下一次的循环。(4)实验程序/*空号差分码子程序*/Coding_DE_Space:;空号差分码子程序;(对存放在Byte2,Byte1中的信息进
9、行HDB3编码输出)MOVA,Byte2MOVData_temp2,A;将Byte2中的数据暂存于Data_temp2中MOVA,Byte1MOVData_temp1,A;将Byte2中的数据暂存于Data_temp1中MOVA,16MOVtemp,A;Byte2,Byte1中的信息共计16位需要编码输出callpulse_positiveYP1=0x25MOVA,0xFFMOVYP1,ADE_Space_LOOP:MOVA,0xFFXORYP1,AMOVa,Data_temp2XORYP1,aJBCyp1,7CALLPulse_negative;Data_temp2.7=0,调用负脉冲子程序
10、JBSyp1,7CALLPulse_positive;Data_temp2.7=1,调用正脉冲子程序RLCData_temp1;R(n)-R(n+1),R(7)-C=Data_temp1.7RLCData_temp2;C=Data_temp1.7-R(0)R(n)-R(n+1),R(7)-CDJZtemp;temp-1=0?JMPDE_Space_LOOP;NO,继续编码输出callpulse_negative*/ret/*(5)实验结果图五图六(6)调试分析如图五所示,输入十六进制码4723(相应的二进制为0100011100100011),经过空号差分码的编码后,二进制结果为1101000
11、010010111。打开示波器,波形如图六所示。在设定新的寄存器时,没有掌握好寄存器的定义,将新寄存器先置0了再将立即数存进去,这样就没意义,编码就是要求精简而准确。4 .AMI码(1)实验原理AMI码属于单极性码的变形,当遇0码时为零电平,当遇1码则存在两种交替转换器极性,这样确保正负极性个数相等。编码规则:遇到编码为0时就只出现0;消息代码中的1传输码中的+1、-1交替。例如:消息代码:1011010111AMI码:+10-1+10-10+1-1+1(2)实验流程图开始将Byte2和Byte1暂存于Data_temp2和Data_temp12文档来源为:欢陶湃超强.word版本可编辑.输出
12、零电平(3)实验思路输入为0的时候输出为零电平,输入为1的时候为了满足极性交替的规律,需要设置标志位,给标志位计数。设标志位为1时输出正电平,标志位为0时输出负电平。同时还要在输出正电平时改变标志位加1为0,输出负电平时改变标志位加1为1。(4)实验程序/*AMI码子程序*/Coding_AMI:;AMI码子程序;(对存放在Byte2,Byte1中的信息进行HDB3编码输出)MOVA,Byte2MOVData_temp2,A;将Byte2中的数据暂存于Data_temp2中MOVA,Byte1MOVData_temp1,A;将Byte2中的数据暂存于Data_temp1中MOVA,16MOVt
13、emp,A;Byte2,Byte1中的信息共计16位需要编码输出CALLPULSE_ZEROYP2=0x26CLRYP2AMI_LOOP:JBSData_temp2,7JMPYYJBCDATA_TEMP2,7INCYP2JBCYP2,0CALLPULSE_POSITIVEJBSYP2,0CALLPULSE_NEGATIVEJMPYY2YY:CALLPULSE_ZEROYY2:RLCData_temp1RLCData_temp2DJZtemp;R(n)-R(n+1),R(7)-C=Data_temp1.7;C=Data_temp1.7-R(0),R(n)-R(n+1),R(7)-C;temp-1
14、=0?JMPAMI_LOOP;NO,callpulse_zero继续编码输出RET/*/(5)实验结果图八图七(6)调试分析5.HDB3040将这个码元称为(2)实验流程图开始输出零电平NYData_temp2=0NYY记零寄存器是否N输出+BBY输出零电平N的码元串时“破坏码元”4个或4个以上连(1)实验原理极性标志寄存器是否为0?如图七所示,的编码后,结果为实际上比较简单,直接调用零电平,数值标志寄存器是否为0?,并用符号“V”耒的符号也是极性交替:V”之间有偶数个非0”码元串的第4文档来源为:从网络收集整理.word版本可编辑将输入的原码变换成AMI的情况,当没有发现个或4个以上连V表示
15、“1”。为了保证相邻“V码元时,这是能够保证的。当相邻要求。这时,需插入补性码,将这个连的符号与前一个非“0”码元的符号相反,最后让之后的非替变化,从而就能得到HDB纲。“0”码元同极性的表示“+1”,用“之间有奇数个非“0三,即用“+V”当相邻“V。然后4位4位的进行判断,检查AMI码中连“0”时,则不作改变,AMI码就是HDB3码。当发现输入十六进制码4123(相应的二进制为0100000100100011),经过AMI00+10000-100+1000-1+1。打开示波器,波形如图八所示。AMI码主要就是要学会分情况讨论,然后设置好跳转的程序,这里出现0位一种出现1的时候则判断1的奇偶数
16、,后面HDB3的程序也可以出这里得到灵将Byte2和Byte1暂存于Data_temp2和Data_temp1定义编码时所需的各种寄存器“0”码元时,不符合此“极性交替”1个“0”变成“+B”或“B”。B0”码元符号从V码元开始再交输出-V输出+V标志寄存器置0标志寄存器置1标志寄存器置0标志寄存器置1BU寄存器是否为0插入补性码Data_temp2和Data_temp1左移一位编码计数值不为0?(3)实验思路输出零电平结束根据HDB3码的规则,首先判断连0的情况,若小于4则程序正常运行,调用脉冲,出现1时候,则开始计数,根据判断存器计数,根据奇偶性判断正负,的存在,其余的正常输出。B寄存器的
17、奇偶性判断输出正负,当连0大等于4则对V寄调用脉冲,同时对BU计数,统计1的个数,判断补信码(4)实验程序/*Hdb3码子程序*/Coding_HDB3:MOVA,0X43MOVData_temp2,AMOVA,0X05MOVData_temp1,AMOVA,16MOVtemp,Ab=0x27;定义寄存器b,用于计数B和B的个数及判断极性v=0x28;定义寄存器v,用于判断V码的个数和极性bu=0x29;定义寄存器bu,用于计数B,B;V;的个数及极性MOVA,0MOVb,AMOVv,AMOVbu,ALOOP_HDB3:JBCData_temp2,4JMPOutput_normalJBSDat
18、a_temp2,4;若Data_temp2第四位不为0,跳转正常输出JBCData_temp2,5JMPOutput_normalJBSData_temp2,5;若Data_temp2第五位不为0,跳转正常输出JBCData_temp2,6JMPOutput_normal;若Data_temp2第六位不为0,跳转正常输出JBSData_temp2,6JBCData_temp2,7JMPOutput_normal若Data_temp2第七位不为0,跳转正常输出BSData_temp2,4INCvdecbJBSbu,0BSData_temp2,7JBSData_temp2,7JMPOutput_n
19、ormalJBCData_temp2,7incbuincb;出现四个连0;判断寄存器bu的值是奇数还是偶数;偶数时,则存在补信码B;奇数时,无补信码B;没有加入补信码,跳转正常输出Output_buxinma:JBCb,0CALLPulse_negativeJBSb,0CALLPulse_positiveJMPOutput_zuoyiOutput_normal:JBSData_temp2,7CALLPulse_zeroJBSData_temp2,7JMPOutput_zuoyiJBCData_temp2,7INCbINCbuJBCb,0CALLPulse_positiveJBSb,0CALLP
20、ulse_negativeOutput_zuoyi:RLCData_temp1RLCData_temp2BSData_temp1,7DJZtemp;R(n)-R(n+1),R(7)-C=Data_temp1.7;C=Data_temp1.7-R(0),R(n)-R(n+1),R(7)-C;temp-1=0?JMPLoop_HDB3;(学生编写程序段)RET;16位编码输出完毕/*/(5)实验结果图H一图十二(6)调试分析如图H一所示,输入十六进制码861E(相应的二进制为1000011000011110),经过HDB3编码后,结果为+B000+V-B+B-B00-V+B-B+B-B0打开示波器
21、,波形如图十二所示。HDB新就是将前面的码综合运用,所以分情况比较多,并且复杂。因此我的思路就是四位四位地比较,但是这样就出现了一些考虑不周的情况导致错误的情况错误一:没有考虑第一为为0的情况,直接给B码计数,导致不能满足首位为0的情况错误二:在用B码计数的时候没有考虑每次计数之后当左移再次到达该数的时候多记了一次1.因此输出为错误,后面添加DECB从而得到正确情况错误三:没有考虑最后一位为0的情况,这样16位左移完了之后,会自动补0会多出现4位0的情况,从而影响,之后在每次左移之后加入BSDATA_TEMP)17从而解决6.汉明码的编码(7,4码的编码)(1)实验原理汉明码是d0=3、高效的
22、(7,4)线性分组码,它有纠正单个随机差错或检测两个错误的能力。(2)实验流程图开始定理例修器调用汉胡芋程序输出8缰用码(3)实验思路根据线性分组码的计算规则,得到十进制0至15所对应的汉明码,如下图所示:利用RETL语句和以上表格中的数据即可编出汉明码的编码。(4)实验程序/*汉明码白*编码*/Coding_T8:MOVA,8MOVtemp3,A;(7,4)线性分组码;定义输出计零寄存器CALLPulse_zeroCALLHamming_Code;将累加器A中的汉明码存放到temp1中;输出汉明码查表=;将输入数据从Byte1中存入累加器A中;通过累加器A查表得出汉明码MOVtemp1,AC
23、ircle:JBCtemp1,7CALLPulse_positiveJBStemp1,7CALLPulse_negativeRLCtempiDJZtemp3JMPCircleCALLPulse_zeroRET尸=Hamming_Code:MOVA,Byte1ADDR2_SP,ARETL0;0RETL11;1RETL21;2RETL30;3RETL38;4RETL45;5RETL51;6RETL56;7RETL71;8RETL76;9RETL82;ARETL89;BRETL97;CRETL106;DRETL116;ERETL127;F/*/(5)实验结果图十三图十四;=查表=Hamming_Co
24、de:7,汉明码的解码(1)实验原理汉明码是d0=3、高效的(7,4)线性分组码,它有纠正单个随机差错或检测两个错误的能力。(2)实验思路输入8位十六进制的数存于Byte2中,再将Byte2中的数值与表中存放的汉明码数值相异或,再统计异或结果中“1”的个数,即码距。若“1”的个数为一个或是0个则此时所取的汉明码的原码是所解码的数值。最后再把解码出的数值置于Bytel中输出。(3)实验流程图异或结果有0个1Y输出该汉明码对应的原码(4)实验程序/*开始Byte2与蒯酎期解表中的数值进行异或异或结果有一个输出该汉明码对应的原码Coding_T8:;(7,4)线性分组码提取下一个神码汉明码白解码*/
25、将存放于Byte2中的信息码字(bit3bit0)合法码字存入Byte1(bit6bit0),并通过转换为(7,4)码的合法码字,Signal口输出到示波器;(学生编写程序段)MOVA,7MOVTEMP,Amova,Byte2callencode74movByte1,acallencode74_outputretencode74:movA,Byte2addR2_SP,Aretl0b00000000;0000retl0b00001011;0001retl0b00010101;0010retl0b00011110;0011retl0b00100110;0100retl0b00101101;0101
26、retl0b00110011;0110retl0b00111000;0111retl0b01000111;1000retl0b01001100;1001retl0b01010010;1010retl0b01011001;1011retl0b01100001;1100retl0b01101010;1101retl0b01110100;1110retl0b01111111;1111RETencode74_output:JBSByte1,6callPulse_negativeJBCByte1,6CALLPulse_positiveRLCByte1DJZtempJMPencode74_outputRE
27、T/*/Coding_T8:rrr=0x30;收到的码字aaa=0x31;存放查表指针hanming=0x32;存放正确码字ccc=0x33;存放查表得到的码字yihuoqs=0x34;存放异或后结果sum=0x35;码距clrrrrclraaaclrcccclrhanmingclryihuoqsmova,1movsum,a;给各寄存器赋初始状态值loop_qs:jbsaaa,4;aaa.4=0,还没有判断完16位码,继续nopjbcaaa,4;aaa.41,已经判断完16位汉明码后仍无匹配结果,程序自动结束ret;已经判断完16位汉明码后自主结束。mova,Byte2movrrr,a;将输入
28、信息放到rrrcallencode74;调用查表子程序JMPjudge74;跳转到判断码距程序K1:JMPoutput74;跳转到解码输出程序K2:ret;汉明码解码输出完毕encode74:nop/*子程序段*/movA,aaa;查表指针给到A,根据指针查表,将查得结果又放到A中addR2_SP,Aretl0b00000000;0000retl0b00001011;0001retl0b00010101;0010retl0b00011110;0011retl0b00100110;0100retl0b00101101;0101retl0b00110011;0110retl0b00111000;0111retl0b01000111;1000retl0b01001100;1001retl0b01010010;1010retl0b01011001;1011retl0b01100001;1100retl0b01101010;1101retl0b01110100;1110retl0b01111111;1111RET;查表程序结束judge74:movccc,a;将查表结果放至
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国再生革行业前景预测及发展潜力分析报告
- 2024-2030年中国全自动大型轮胎拆装机境外融资报告
- 2024-2030年中国光学加工机械行业机遇挑战与发展应对策略分析报告
- 2024年度文化产业反担保及担保合作协议3篇
- 2024-2030年中国催化器境外融资报告
- 2024-2030年中国假烟行业市场现状分析规划研究报告
- 2024-2030年中国保健冰糖行业销售预测及未来5发展趋势报告
- 2024-2030年中国供应链管理行业发展展望与投资策略建议报告
- 2024-2030年中国低度白酒行业市场销售预测及未来5发展趋势报告
- 人教版四年级上册数学第四单元《三位数乘两位数》测试卷带答案(培优)
- 学校工程验收报告单
- 线路工程灌注桩施工作业指导书施工方案
- 重力坝的分缝与止水
- 三重管高压旋喷桩施工工艺规程与施工方案
- 云南白药公司近三年财报分析
- 卫浴产品世界各国认证介绍
- 个体诊所药品清单
- 深度学习数学案例(课堂PPT)
- 中国地图含省份信息可编辑矢量图
- 卧式钻床液压系统设计课件
- 水库维修养护工程施工合同协议书范本
评论
0/150
提交评论