通信系统原理实验报告.docx

上传人:彩** 文档编号:88260802 上传时间:2023-04-24 格式:DOCX 页数:25 大小:1.32MB
返回 下载 相关 举报
通信系统原理实验报告.docx_第1页
第1页 / 共25页
通信系统原理实验报告.docx_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《通信系统原理实验报告.docx》由会员分享,可在线阅读,更多相关《通信系统原理实验报告.docx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、四川大学电气信息学院试验报告课 程: 试验名称: 课任教师: 专 业:年 级: 学生姓名: 学 号:通信系统原理通信系统原理设计性试验张奕 通信工程2023 级余佩2023141443050通信系统原理设计性试验1一、试验目的l 理解信源编码和解码的原理、步骤以及方法l 复习并更加娴熟地把握汇编语言的编程方法l 学习在 EMC 开发工具下编程l 学习使用 EM78P259N 微掌握器l 通过观测示波器了解编码二、编码试验1、双极性不归零码(1) 试验原理“1“码和“0“码都有电流,但是“1“码是正电流,“0“码是负电流,正和负的幅度相等,极性相反,故称为双极性码。此时的判决门限为零电平,接收端

2、使用零判决器或正负判决器, 接收信号的值假设在零电平以上为正,判为“1“码;假设在零电平以下为负,判为“0“码。(2) 试验流程图开头将 Byte2 和 Byte1 暂存于 Data_temp2 和 Data_temp1中并设置编码计数值输出零电平NData_temp2,7=1?Y输出正电平输出负电平Data_temp2 和 Data_temp1 分别左移Y编码计数值不为 0?N输出零电平完毕1通信系统原理设计性试验2(3) 试验思路需要在单极性不归零码的根底上,在程序的开头和完毕时添加调用零电平的程序即可(4) 试验程序/*双极性不归零码子程序*/Coding_Bi_NRZ:MOV A,By

3、te2MOV Data_temp2,A;将 Byte2 中的数据暂存于 Data_temp2 中MOV A,Byte1MOV Data_temp1,A;将 Byte2 中的数据暂存于 Data_temp1 中MOV A,16MOV temp,A;Byte2,Byte1 中的信息共计 16 位需要编码输出call pulse_zero;=输出 16 位编码= Bi_NRZ_LOOP:JBS Data_temp2,7CALL Pulse_negative;Data_temp2.7=0,调用负脉冲子程序JBC Data_temp2,7CALL Pulse_positive;Data_temp2.7=

4、1,调用正脉冲子程序;信息左移 1 位:RLC Data_temp1; R(n) - R(n+1), R(7) - C=Data_temp1.7RLC Data_temp2; C=Data_temp1.7 - R(0), R(n) - R(n+1), R(7) - C DJZ temp; temp-1=0?JMP Bi_NRZ_LOOP ; NO,连续编码输出call pulse_zero;=RET; NRZ 编码输出完毕/*/(5) 试验结果2通信系统原理设计性试验3(6) 调试分析图一图二如图一所示,输入十六进制码3456相应的二进制为 0011 0100 0101 0110,再翻开示波器

5、,波形如图二所示。2. 传号差分码(1) 试验原理传号差分码的编码规章是用“1”和“0”表示发生电平跳变和电平不跳变,电平跳变用“1”表示,电平不跳变用“0”表示。(2) 试验流程图开头将 Byte2 和 Byte1 暂存于 Data_temp2 和 Data_temp1中,设置编码计数值和存放极性的存放器 YP 并置 0输出零电平上一位电平与当前位电平是否转变?NY输出正电平输出负电平temp 左移Y编码计数值不为 0?3通信系统原理设计性试验2N输出零电平完毕(3试验思路在双极性码的根底上,添加一个存放器用于存放上一位编码的极性,再将存放极性的寄 存器和存放下一位编码的存放器进展异或。假设

6、异或结果为 1,即电平发生了跳变,则输出正电平;假设异或结果为0,同之前比电位没转变,则输出负电平。每次只能读出一位,所以最终再左移存放极性的存放器,然后再进展下一次循环。2通信系统原理设计性试验44试验程序/*传号差分码子程序*/Coding_DE_Mark:;传号差分码子程序;(对存放在 Byte2,Byte1 中的信息进展编码输出)MOV A,Byte2MOV Data_temp2,A;将 Byte2 中的数据暂存于 Data_temp2 中MOV A,Byte1MOV Data_temp1,A;将 Byte2 中的数据暂存于 Data_temp1 中MOV A,16MOV temp,A

7、;Byte2,Byte1 中的信息共计 16 位需要编码输出call pulse_negative YP=0x24CLR YP;=输出 16 位编码=DE_Mark_LOOP:MOV a,Data_temp2 XOR YP,aJBS yp,7CALL Pulse_negative;Data_temp2.7=0,调用负脉冲子程序JBC yp,7CALL Pulse_positive;Data_temp2.7=1,调用正脉冲子程序RLC Data_temp1; R(n) - R(n+1), R(7) - C=Data_temp1.7RLC Data_temp2; C=Data_temp1.7 -

8、R(0), R(n) - R(n+1), R(7) - C DJZ temp; temp-1=0?JMP DE_Mark_LOOP; NO,连续编码输出call pulse_negative;=RET; 传号差分编码输出完毕/*/(5)试验结果4通信系统原理设计性试验5图三图四6调试分析如图三所示,输入十六进制码 55D3相应的二进制为 0101 0101 1101 0011,经过传号差分码编码后的二进制结果为 0110 0110 1001 1101。翻开示波器,波形如图四所示。,理解并学会活用给存放器赋值,学会 CLR3. 空号差分码(1) 试验原理空号差分码的编码规章是用“0”和“1”表示

9、发生电平跳变和电平不跳变。与传号差分码相反,空号差分码中,电平跳变用“0”表示,电平不跳变用“1”表示。(2) 试验流程图开头将 Byte2 和 Byte1 暂存于 Data_temp2 和 Data_temp1中,设置编码计数值和存放极性的存放器 YP1 置 1输出零电平N上一位电平与当前位电平是否转变?Y输出负电平输出正电平5通信系统原理设计性试验6temp 左移Y编码计数值不为 0?N输出零电平完毕3试验思路由于空号差分码正电平和负电平的编码规章与传号差分码的正好相反,所以空号差分码的程序段需要在传号差分码的根底上添加一个取反的语句, 即 MOV A,0XFF XOR YP1,A,将上一

10、步骤的异或结果取反。将异或取反后的结果置于存放器 YP1 中,输 t 出 emp 的最高位再左移 temp,然后再进展下一次的循环。(4) 试验程序/*空号差分码子程序*/Coding_DE_Space:;空号差分码子程序;(对存放在 Byte2,Byte1 中的信息进展 HDB3 编码输出)MOV A,Byte2MOV Data_temp2,A;将 Byte2 中的数据暂存于 Data_temp2 中MOV A,Byte1MOV Data_temp1,A;将 Byte2 中的数据暂存于 Data_temp1 中MOV A,16MOV temp,A;Byte2,Byte1 中的信息共计 16

11、位需要编码输出call pulse_positive YP1=0x25MOV A,0xFF MOV YP1,A6通信系统原理设计性试验7DE_Space_LOOP:MOV A,0xFF XOR YP1,AMOV a,Data_temp2 XOR YP1,aJBC yp1,7CALL Pulse_negative;Data_temp2.7=0,调用负脉冲子程序JBS yp1,7CALL Pulse_positive;Data_temp2.7=1,调用正脉冲子程序RLC Data_temp1; R(n) - R(n+1), R(7) - C=Data_temp1.7RLC Data_temp2;

12、C=Data_temp1.7 - R(0), R(n) - R(n+1), R(7) - C DJZ temp; temp-1=0?JMP DE_Space_LOOP ; NO,连续编码输出call pulse_negativeRET/*/(5) 试验结果图五图六(6) 调试分析如图五所示,输入十六进制码 4723相应的二进制为 0100 0111 0010 0011,经过空号差分码的编码后,二进制结果为1101 0000 1001 0111。翻开示波器,波形如图六所示。 在设定的存放器时,没有把握好存放器的定义,将存放器先置0 了再将马上数存进去, 这样就没意义,编码就是要求精简而准确。4.

13、 AMI 码7开头将 Byte2 和 Byte1 暂存于 Data_temp2 和 Data_temp1中,置 YP2 为 0输出零电平Data_temp2=0?YNYP2=0?N输出零电平Y输出负电平输出正电平YP2 为 1YP2 为 0Data_temp2 和 Data_temp1 左移一位Y编码计数值不为 0?N输出零电平完毕通信系统原理设计性试验8(1) 试验原理AMI 码属于单极性码的变形,当遇 0 码时为零电平,当遇 1 码则存在两种交替转换器极性,这样确保正负极性个数相等。编码规章:遇到编码为0 时就只消灭 0;消息代码中的1传 输 码 中 的 +1 、 -1交 替 。 例 如

14、: 消 息 代 码 :1011010111AMI 码: +1 0 -1+10-1 0 +1 -1 +1(2) 试验流程图8通信系统原理设计性试验9(3) 试验思路输入为 0 的时候输出为零电平,输入为1 的时候为了满足极性交替的规律,需要设置标志位,给标志位计数。设标志位为1 时输出正电平,标志位为0 时输出负电平。同时还要在输出正电寻常转变标志位加 1 为 0,输出负电寻常转变标志位加 1 为 1。(4) 试验程序/*AMI码子程序*/Coding_AMI:;AMI 码子程序;(对存放在 Byte2,Byte1 中的信息进展 HDB3 编码输出)MOV A,Byte2MOV Data_tem

15、p2,A;将 Byte2 中的数据暂存于 Data_temp2 中MOV A,Byte1MOV Data_temp1,A;将 Byte2 中的数据暂存于 Data_temp1 中MOV A,16MOV temp,A;Byte2,Byte1 中的信息共计 16 位需要编码输出CALL PULSE_ZERO YP2=0x26CLR YP2AMI_LOOP:JBS Data_temp2,7 JMP YYJBC DATA_TEMP2,7 INC YP2JBC YP2,0CALL PULSE_POSITIVE JBS YP2,0CALL PULSE_NEGATIVE JMP YY2YY:CALL PUL

16、SE_ZEROYY2:RLC Data_temp1; R(n) - R(n+1), R(7) - C=Data_temp1.7RLC Data_temp2; C=Data_temp1.7 - R(0), R(n) - R(n+1), R(7) - C DJZ temp; temp-1=0?JMP AMI_LOOP; NO,连续编码输出call pulse_zeroRET9通信系统原理设计性试验10/*/(5) 试验结果图七图八(6) 调试分析如图七所示,输入十六进制码4123相应的二进制为 0100 0001 0010 0011,经过AMI的编码后,结果为 0 0+1 0 0 0 0 -1 0

17、 0 +1 0 0 0 -1 +1。翻开示波器,波形如图八所示。AMI 码实际上比较简洁,主要就是要学会分状况争论,然后设置好跳转的程序,这里消灭 0 位一种直接调用零电平,消灭 1 的时候则推断 1 的奇偶数,后面 HDB3 的程序也可以出这里得到灵感。5. HDB3 码1试验原理首先,将输入的原码变换成 AMI 码。然后 4 位 4 位的进展推断,检查 AMI 码中连“0” 的状况,当没有觉察 4 个或 4 个以上连“0”时,则不作转变,AMI 码就是 HDB3 码。当觉察 4 个或 4 个以上连“0”的码元串时,就将第4 个“0”变成与其前一个非“0”码元同极性的码元。 将这个码元称为“

18、破坏码元”,并用符号“V”表示,即用“+ V”表示“1”,用“ V”表示“1”。为了保证相邻“V”的符号也是极性交替:当相邻“V”之间有奇数个非“0”码元时,这是能够保证的。当相邻“V”之间有偶数个非“0”码元时,不符合此“极性交替” 要求。这时,需插入补性码,将这个连“0”码元串的第 1 个“0”变成“B”或“B”。B的符号与前一个非“0”码元的符号相反,最终让之后的非“0”码元符号从V 码元开头再交替变化,从而就能得到HDB3 码。10通信系统原理设计性试验112)试验流程图开头将 Byte2 和 Byte1 暂存于 Data_temp2 和 Data_temp1 中, 定义编码时所需的各

19、种存放器输出零电平YData_temp2=0?N记零存放器加一N记零存放器是否Y为 4?Y数值标志存放器N是否为 0?输出-B输出+B输出零电平Y极性标志存放器是否为 0?N输出-V输出+V标志存放器置 0标志存放器置1标志存放器置0标志存放器置1NBU 存放器是否为 0Y插入补性码Data_temp2 和 Data_temp1 左移一位11Y编码计数值不为 0?N输出零电平完毕通信系统原理设计性试验123试验思路依据 HDB3 码的规章,首先推断连 0 的状况,假设小于 4 则程序正常运行,调用脉冲,消灭1 时候,则开头计数,依据推断B 存放器的奇偶性推断输出正负,当连 0 大等于 4 则对

20、 V 存放器计数,依据奇偶性推断正负,调用脉冲,同时对BU 计数,统计 1 的个数,推断补信码的存在,其余的正常输出。4试验程序/*HDB3 码子程序*/Coding_HDB3:MOV A,0X43MOV Data_temp2,A MOV A,0X05MOV Data_temp1,A MOV A,16MOV temp,Ab=0x27;定义存放器 b,用于计数 B 和 B”的个数及推断极性v=0x28;定义存放器 v,用于推断 V 码的个数和极性bu=0x29;定义存放器 bu,用于计数 B,B;V;的个数及极性MOV A,0MOV b,A MOV v,A MOV bu,ALOOP_HDB3:J

21、BC Data_temp2,4JMP Output_normal;假设 Data_temp2 第四位不为 0,跳转正常输出JBS Data_temp2,412通信系统原理设计性试验13JBC Data_temp2,5JMP Output_normal;假设 Data_temp2 第五位不为 0,跳转正常输出JBS Data_temp2,5JBC Data_temp2,6JMP Output_normal;假设 Data_temp2 第六位不为 0,跳转正常输出JBS Data_temp2,6JBC Data_temp2,7JMP Output_normal;假设 Data_temp2 第七位不

22、为 0,跳转正常输出BS Data_temp2,4 INC vdec bJBS bu,0BS Data_temp2,7 JBS Data_temp2,7 JMP Output_normal JBC Data_temp2,7 inc buinc bOutput_buxinma:JBC b,0CALL Pulse_negative JBS b,0CALL Pulse_positive JMPOutput_zuoyiOutput_normal:JBS Data_temp2,7 CALL Pulse_zero JBS Data_temp2,7 JMP Output_zuoyi JBC Data_tem

23、p2,7 INC bINC bu JBC b,0CALL Pulse_positive JBS b,0CALL Pulse_negative13;消灭四个连 0;推断存放器 bu 的值是奇数还是偶数;偶数时,则存在补信码 B”;奇数时,无补信码 B”;没有参加补信码,跳转正常输出通信系统原理设计性试验14Output_zuoyi:RLC Data_temp1; R(n) - R(n+1), R(7) - C=Data_temp1.7RLC Data_temp2; C=Data_temp1.7 - R(0), R(n) - R(n+1), R(7) - C BS Data_temp1,7DJZ

24、temp; temp-1=0? JMP Loop_HDB3;(学生编写程序段)RET;16 位编码输出完毕/*/(5) 试验结果图十一图十二(6) 调试分析14通信系统原理设计性试验15如图十一所示,输入十六进制码 861E相应的二进制为 1000 0110 0001 1110,经过 HDB3 编码后,结果为+B0 0 0 +V -B +B -B 0 0 -V +B -B +B -B 0 。翻开示波器,波形如图十二所示。HDB3 码就是将前面的码综合运用,所以分状况比较多,并且简单。因此我的思路就是四位四位地比较,但是这样就消灭了一些考虑不周的状况导致错误的状况错误一:没有考虑第一为为 0 的

25、状况,直接给 B 码计数,导致不能满足首位为 0 的状况错误二:在用 B 码计数的时候没有考虑每次计数之后当左移再次到达该数的时候多记了一次 1.因此输出为错误,后面添加 DEC B 从而得到正确状况错误三:没有考虑最终一位为 0 的状况,这样 16 位左移完了之后,会自动补 0 会多消灭 4 位 0 的状况,从而影响,之后在每次左移之后参加BS DATA_TEMP1,7 从而解决6. 汉明码的编码7,4 码的编码(1) 试验原理汉明码是d0=3、高效的7,4线性分组码,它有订正单个随机过失或检测两个错误的力量。(2) 试验流程图开头输入原码定义计数存放器输出零电平调用汉明码编码子程序输出 8

26、 位编码完毕15通信系统原理设计性试验16(3) 试验思路依据线性分组码的计算规章,得到十进制0 至 15 所对应的汉明码,如以下图所示:利用 RETL 语句和以上表格中的数据即可编出汉明码的编码。(4) 试验程序/*汉明码的编码*/Coding_T8:;7,4线性分组码MOV A,8MOV temp3,A;定义输出计零存放器CALL Pulse_zeroCALL Hamming_CodeMOV temp1,A;将累加器 A 中的汉明码存放到 temp1 中Circle:RETJBC temp1,7;输出汉明码CALL Pulse_positiveJBS temp1,7CALL Pulse_n

27、egative RLC temp1DJZ temp3 JMP CircleCALL Pulse_zero;=查表=Hamming_Code:MOV A,Byte1;将输入数据从 Byte1 中存入累加器 A 中ADD R2_SP,A;通过累加器 A 查表得出汉明码RETL 0;0RETL 11;1RETL 21;2RETL 30;3RETL 38;416通信系统原理设计性试验17RETL 45;5RETL 51;6RETL 56;7RETL 71;8RETL 76;9RETL 82;ARETL 89;BRETL 97;CRETL 106;DRETL 116;ERETL 127;F/*/(5)

28、试验结果图十三图十四;=查表=Hamming_Code:.7. 汉明码的解码(1) 试验原理汉明码是 d0=3、高效的7,4线性分组码,它有订正单个随机过失或检测两个错误的力量。(2) 试验思路输入 8 位十六进制的数存于Byte2 中,再将 Byte2 中的数值与表中存放的汉明码数值相异或,再统计异或结果中“1”的个数,即码距。假设“1”的个数为一个或是0 个则此时所取的汉明码的原码是所解码的数值。最终再把解码出的数值置于Byte1 中输出。(3) 试验流程图开头17通信系统原理设计性试验18输入 Byte2Byte2 与存放汉明码表中的数值进展异或N异或结果有一个“1”?Y异或结果有 0

29、个“1”?N输出该汉明码对应的原码Y输出该汉明码对应的原码提取下一个汉明码完毕(4) 试验程序/*汉明码的解码*/Coding_T8:;7,4线性分组码;将存放于 Byte2 中的信息码字(bit3bit0)转换为7,4码的合法码字,;合法码字存入 Byte1(bit6bit0),并通过 Signal 口输出到示波器;(学生编写程序段) MOV A,7 MOV TEMP,A18通信系统原理设计性试验19mov a,Byte2call encode74 mov Byte1,acall encode74_output retencode74:mov A,Byte2 add R2_SP,Aretl

30、0b00000000;0000 retl 0b00001011;0001 retl 0b00010101;0010 retl 0b00011110;0011 retl 0b00100110;0100 retl 0b00101101;0101 retl 0b00110011;0110 retl 0b00111000;0111 retl 0b01000111;1000 retl 0b01001100;1001 retl 0b01010010;1010 retl 0b01011001;1011 retl 0b01100001;1100 retl 0b01101010;1101 retl 0b0111

31、0100;1110 retl 0b01111111;1111 RETencode74_output:JBS Byte1,6call Pulse_negative JBC Byte1,6CALL Pulse_positive RLC Byte1DJZ tempJMP encode74_outputRET/*/ Coding_T8:rrr=0x30;收到的码字19通信系统原理设计性试验20aaa=0x31;存放查表指针hanming=0x32;存放正确码字ccc=0x33;存放查表得到的码字yihuoqs=0x34;存放异或后结果sum=0x35;码距clr rrr clr aaa clr ccc

32、clr hanming clr yihuoqs mov a,1mov sum,a ;给各存放器赋初始状态值loop_qs:jbs aaa,4;aaa.4=0,还没有推断完 16 位码,连续nopjbc aaa,4;aaa.41,已经推断完 16 位汉明码后仍无匹配结果,程序自动完毕ret;已经推断完 16 位汉明码后自主完毕。mov a,Byte2mov rrr,a;将输入信息放到 rrr call encode74;调用查表子程序JMP judge74;跳转到推断码距程序K1:JMP output74;跳转到解码输出程序K2:ret;汉明码解码输出完毕/*子程序段*/ encode74:no

33、pmov A,aaa;查表指针给到 A,依据指针查表,将查得结果又放到 A 中add R2_SP,Aretl 0b00000000;0000 retl 0b00001011;0001 retl 0b00010101;0010 retl 0b00011110;0011 retl 0b00100110;0100 retl 0b00101101;0101 retl 0b00110011;0110 retl 0b00111000;0111 retl 0b01000111;100020通信系统原理设计性试验21retl 0b01001100;1001 retl 0b01010010;1010 retl

34、0b01011001;1011 retl 0b01100001;1100 retl 0b01101010;1101 retl 0b01110100;1110 retl 0b01111111;1111RET;查表程序完毕judge74:mov ccc,a;将查表结果放到 ccc mov a,rrrxor a,ccc;将查表结果与收到信息进展异或比较mov yihuoqs,a;异或结果存放在 yihuoqs 中mov a,8mov temp,a ;temp=8,共计 8 位需推断loop_judge74code :jbs yihuoqs,7;yihuoqs.7=0,最高位为 0,连续nopjbc

35、yihuoqs,7;yihuoqs.7=1,最高位为 1,sum+1 inc sumrlc yihuoqs;yihuoqs 信息左移一位djz temp;temp-1=0?jmp loop_judge74code;NO,连续循环djz sum;sum-1=0? jmp judge741; 码距大于 0K3:;码距为 0 时则解码结果就是指针当前值mov a,aaamov hanming,aJMP K1;跳转到 K1 进展输出judge741:;码距大于 0 的状况djz sum ;sum-1=0?jmp judge742;码距大于 1mov a,aaa ;码距为 1 则解码结果仍是指针当前值m

36、ov hanming,aJMP K1;跳转到 K1 进展输出21通信系统原理设计性试验22judge742:;码距大于 1 的状况mov a,1mov sum,a ;将 sum 重赋值 1 inc aaa;指针指向下一个值jmp loop_qs ;跳转到 loop_qs 连续循环output74: ;输出程序段mov a,hanmingmov Data_temp2,a;将要输出的结果存放在 Data_temp2 中mov a,8mov temp,a;共计 8 位编码需输出loop_74output:jbs Data_temp2,7;Data_temp2.7=0,调用负电平子程序call Pul

37、se_negativejbc Data_temp2,7;Data_temp2.7=1,调用正电平子程序call Pulse_positiverlc Data_temp2;Data_temp2 信息左移一位djz temp;temp-1=0?jmp loop_74output;NO,连续编码输出JMP K2;直接跳转到 K2 返回/*/(5) 试验结果22通信系统原理设计性试验23图十五图十六试验心得:这次做试验是大学以来感觉做试验最有收获 的一次,特别是在一次次调试当中不断深化了各种编码的概 念,当波形都出来之后也特别有成就感,最重要的是对程序 要有整体的大框架,有思路比较清楚,做试验更快。23

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁