收藏 分享(赏)

(2,1,2)卷积码的译码设计(0).doc

上传人:精品资料 文档编号:10642630 上传时间:2019-12-13 格式:DOC 页数:26 大小:839KB
下载 相关 举报
(2,1,2)卷积码的译码设计(0).doc_第1页
第1页 / 共26页
(2,1,2)卷积码的译码设计(0).doc_第2页
第2页 / 共26页
(2,1,2)卷积码的译码设计(0).doc_第3页
第3页 / 共26页
(2,1,2)卷积码的译码设计(0).doc_第4页
第4页 / 共26页
(2,1,2)卷积码的译码设计(0).doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、(2,1,2)卷积码的译码设计1前言卷积码是由伊莱亚斯(Elias)于 1954 年首先提出来的。它充分利用了各组之间的相关性,本组的信息元不但决定本组的监督元,而且也参与决定以后若干组的监督元。同时在译码过程中,不但从该时刻所收到的码组中提取译码信息,而且还利用以后若干时刻内所收到的码组来提取有关信息。无论从理论上还是实际上均已证明其性能优于线性分组码。近年来众多有关卷积码研究结果表明, 卷积码最有希望实现香农信道编码定理。但卷积码在译码理论及实际应用较为复杂, 这些缺点限制了其进一步发展和应用。维特比译码算法由维特比(Viterbi)1964 年提出,算法实质是最大似然译码,但它利用了编码

2、网格图的特殊结构, 在网格图中选择一条路径,使相应的译码序列与接收到的序列之间的汉明距(即量度)最小的一种最大似然译码方法,从而大大降低了计算的复杂性。目前,第三代移动通信系统(3G) 在我国已经开始紧锣密鼓地实施,它带来的高速度、高品质的无线通信服务,将使我们领略到信息技术的无穷魅力。信道纠错编码技术作为保证信息可靠传输的技术,在 3G各系统中广泛采用,并且我们现在所使用的第二代移动通信系统,如 GSM、 CDMA 通信系统,还有卫星与空间通信系统广泛采用了卷积码信道编、译码技术。本次设计将以(2,1,2)卷积码为例,通过单片机,实现卷积码的译码,借助RS232完成单片机与单片机、单片机与计

3、算机的串口通信,借助 7279完成键盘扫描和数码管显示。(2,1,2)卷积码的译码设计2第一章 系统组成及工作原理本次设计的(2,1,2)卷积码的译码由 89C52单片机为工具,接收来自另一单片机或计算机的编码信息,通过 7279的键盘扫描和数码管显示功能可以方便地观察到单片机接收的信息和译码结果。其系统框图如下图 11 所示。MAX232芯片能实现 EIA-RS-232C的正负电压与 TTL的高低电平之间的转换,通过它能够方便实现单片机与单片机、单片机与计算机间的串口通信。HD7279是一片具有串行接口的, 可同时驱动 8位共阴极数码管的智能显示驱动芯片, 该芯片同时还可连接多达 64键的键

4、盘矩阵 , 单片即可独立完成显示、键盘接口的全部功能。采用 7279芯片能够节省单片机资源,降低编程复杂度。1.1 总体系统分析本系统的具体设计要求为:系统框图1. 用汇编语音进行(2,1,2)卷积码的译码,并要求在数码管上显示输入的信息;2. 用 RS232串行芯片实现单片机与计算机的信息传输;3. 用 RS232串行芯片实现单片机与单片机的信息传输;4. 在上位机上显示所传输的译码结果。1.2 系统单元功能模块本系统具有以下单元功能模块:1. 单片机译码部分;2. RS232串口通信部分;3. 数据显示部分。89C52(编码)89C52MAX232RS2口89C52(译码)89C52727

5、9RS2口数码管、键盘RS2口MAX232RS2口图 11 系统框图(2,1,2)卷积码的译码设计3第二章 软件设计2.1 相关理论说明2.1.1 卷积码的描述卷积码是把 k个信息比特的序列编成 n个比特的码组,每个码组的 n-k个校验位与本码组的 k个信息位有关,而与其他码组无关。为了达到一定的纠错能力和编码效率,分组码的长度一般都比较大。编译码时必须把整个信息码组存储起来,由此产生的译码延时随 n的增加而增加。卷积码是一个有限记忆系统,它也将信息序列分割成长度 k的一个个分组,然后将 k个信息比特编成 n个比特,但 k和 n通常很小,特别适合以串行形式进行传输,时延小。与分组码不同的是在某

6、一分组编码时,不仅参看本时刻的分组而且参看以前的 N-1个分组,编码过程中互相关联的码元个数为 nN。N 称为约束长度。常把卷积码写成(n,k,N-1)卷积码。正因为卷积码在编码过程中,充分利用了各级之间的相关性,无论是从理论上还是实际上均已证明其性能要优于分组码。2.1.2 卷积码的编码本次设计以(2,1,2)卷积码为例。图 21 为这种卷积编码器的结构,它的编码方法是:序列依次移入一个两级移位寄存器,编码器每输入一位信息 bi,输出端的开关就在 c1和 c2之间来回切换一次,输出为 c1,i和 c2,i ,其中c1,i=bi+bi-1+bi-2c2,i=bi+bi-2图 21 (2,1,2

7、)卷积码编码器设寄存器 m1、m 2的起始状态为全零,则编码器的输入输出时序关系可用图 22表示。(2,1,2)卷积码的译码设计4图 22 (2,1,2)卷积码编码器的输入输出时序要使最后 1 位输入同样影响 3对输出,并且使编码器回到全零状态,还需使编码器多输出 2对信息,为了做到这一点,需要增加 2个时钟循环,并且在此期间保持输入为 0,这一过程叫做“点亮”编码器。如果不执行“点亮”操作,最后 2位输入信息的纠错能力就会下降。2.1.3 卷积码的图解表示根据卷积码的特点,常采用图解表示法对其进行研究。主要的图解表示法有两种,即状态转移图、网格图。因为卷积码的编码器的记忆性是有限的,所以可以

8、使用状态转移图来表示其转移过程。在状态转移图中,卷积编码器的每一个状态对应于一个椭圆,状态的转移用两个椭圆间的有向线段表示,在线上标出状态转移的输入和对应的输出。图 31中(2,1,2)卷积码的状态转移图如图 23 所示。图 23 状态转移图另一种更为常用的描述卷积码的方法是网格图。该图根据时间的推进来反映状态的转移。网格图上纵坐标表示状态,横坐标表示时间,每一次状态转移利用连接相邻时间点上两个状态的有向线段来表示。图 24 是图 23 中编码器所对应的网(2,1,2)卷积码的译码设计5格图,其中实线表示“0”,虚线表示“1”。图 24 网格图2.1.4 卷积码的译码卷积码的译码方法可分为两大

9、类。一类是代数译码,利用编码本身的代数结构进行译码,不考虑信道的统计特性;另一类是概率译码,这种译码建立在最大准则的基础上,由于计算时用到了信道的统计特性,因而提高了译码性能,但这是以增加硬件复杂度为代价的,常用的概率译码方法是维特比译码。维特比译码是基于最大似然准则的概率译码,它的基本思想是比较接收序列与所有可能的发送序列,从中选择与接收序列汉明距离最小的发送序列作为译码输出。可能的发送序列与接收序列的汉明距离称为量度。维特比译码使用网格图描述卷积码,每个可能的发送序列都与网格图中的一条路径相对应,如果在某个节点上发现某条路径已不可能与接收序列具有最小距离,那么就放弃这条路径,这样一直进行到

10、倒数第二级。由于这种方法较早地丢弃了那些不可能的路径,因而减轻了译码的工作量。2.2 系统总流程本系统的总流程图如图 25 所示。其主要功能模块有:系统初始化、数据接收、读数据、数据判断、显示、维特比译码。下面对各个部分进行说明。1.系统初始化堆栈指针 SP设为 67H,清 10H7FH 内存单元,7279 初始化,设置定时器 1工作于方式 2,波特率为 1200,启动定时器,串行口工作于方式 2并允许串口接收数据。2. 数据接收当译码器接收到有效数据时,将接收到的 12字节的数据存于存贮器 16H21H10101111000001 010110100101101111111100000000

11、00011011(2,1,2)卷积码的译码设计6中,并将其转换为适合维特比译码的 6字节数据,存于存贮器 10H15H 单元中。图 25 系统总流程图3.读数据当有键按下时,读取键值,并存于 Acc寄存器中。4.数据判断判断按键号,并根据键号转向相应的处理程序。5.显示(2,1,2)卷积码的译码设计7将接收到的数据或译码结果直观的在数码管上显示出来。6.维特比译码对接收到的数据进行维特比译码,并将译码结果存于存贮器 58H5DH 单元中。2.3 初始化部分系统初始化是为以后串口接收数据,7279 显示作好准备,其的主要工作是将堆栈指针 SP设为 67H,清 10H7FH 内存单元,7279 初

12、始化,设置定时器 1工作于方式 2(自动恢复初始的 8位计数器),波特率为 1200 (不一定要 1200,但波特率过高,数据传输过程中可能出错),启动定时器,串行口工作于方式 2(9 位异步串行通信,一帧信息为 11位:1 位起始位,8 位数据位,1 位附加数据位,1 位停止位)并允许串口接收数据。图 26 系统初始化流程图2.4数据接收部分在主程序的循环中,每次都要判断是否从串中接收到有效数据(RI 是否为 1),当串中接收到有效数据时,将接收到的 12字节的数据存于 16H21H 中,并将其转换为适合维特比译码的 6字节数据,存于 10H15H 单元中。串口数据接收流程如下(2,1,2)

13、卷积码的译码设计8图 27 所示。图 27 接收串口数据流程图2.5 读数据部分主程序循环中每次都要判断是否有键按下,当有键按下时,调用读键值子程序,读出此按键的键号,并将键号存于 Acc寄存器中,为后面的判断键号作准备。读键值流程图如图 28 所示。2.6 数据判断部分当有键按下时,判断按键号,并根据键号转向相应的处理:如果键号为“1”,数码管显示接收数据的前 8位;如果键号为“2”,数码管显示接收数据的后 4位;如果键号为“3”,则对接收到的数据进行译码并显示译码结果;如果键号为“4”,对 7279进行初始化;如果是其它键号,则不做任何处理。其程序流程在主程序流程图 25 中已经体现出来。

14、图 28 读键值流程图7279 的 CS 引角脚置低电平7279 的 CS 引角恢复高电平(2,1,2)卷积码的译码设计92.7 显示部分显示子程序能够将接收到的数据或译码结果直观的在数码管上显示出来。显示子程序有 3个,分别为 DISP1、DISP2、DISP3,它们分别用于显示接收数据的前 8位、接收数据的后 4位、维特比译码结果。现以 DISP3为例说明显示部分,其流程图如图29 所示。图 29 显示子程序流程图2.8 维特比译码部分7279 的 CS 引角脚置低电平7279 的 CS 引角恢复高电平(2,1,2)卷积码的译码设计10维特比译码又可分为维特比译码主程序、求状态历史记录和累

15、计误差子程序、求状态顺序子程序、求译码结果子程序。1维特比译码主程序当按键“3”按下时,对接收到的数据进行维特比译码,并将译码结果存于58H5DH 单元中。维特比译码程序流程图如图 210 所示。图 210 维特比译码流程图2. 求状态历史记录和累计误差子程序状态历史记录表能够记录下维特比译码过程中每一步译码后,状态的变化过程,其所占内存空间为 40H57H。累计误差记录表能够记录上一次译码结束时的累计误差(可能的发送序列与接收序列的汉明距离)和本次译码结束后的累计误差,其中上一次的累计误差存于 30H33H 单元中,本次结束后的累计误差存于 34H37H 单元中。本次设计所接收到的数据总共有

16、 6组,所以要将译码分为 6步实现。已知起始状态为“0”(00),则下一个状态只可能是“0”(00)或“2”(10)(参考图24),所以第一步译码只需计算两个累计误差,并将其存于 30H、32H 单元中即可,第二步译码需根据第一次译码的累计误差求出本次译码完后的累计误差,存于34H37H 单元中,用 34H37H 中的内容覆盖 30H33H 中的内容,作为下一步的起始累计误差,并将各个状态的前导状态分别存于 44H47H 单元中,第三步的译码过程较第二步只需加一个累计误差的比较,淘汰较大的累计误差,以后的译码都是第三步译码的重复,所以从第三步开始可以用循环完成。(2,1,2)卷积码的译码设计1

17、1假如输入的序列为 010100,则接收到的序列(译码后的序列)为001110001011,根据上述过程,可以得到状态历史记录表 2.1,其中带阴影的为幸存路径所经历的状态。表 2.1 状态历史记录表1 2 3 4 5 600 00 00 00 01 00 0101 00 02 02 03 02 0010 00 00 00 01 00 0011 00 02 02 03 00 00求状态历史记录和误差流程图如图 211 所示,其流程图又可以分为三个部分,分别如图 212、213、214 所示。图 211 求状态历史记录和误差流程图t状 态(2,1,2)卷积码的译码设计12图 213 求第 2步译

18、码状态历史记录和误差流程图图 212 求第 1步译码状态历史记录和误差流程图(2,1,2)卷积码的译码设计13图 214 求第 3,4,5,6 步译码状态历史记录和误差流程图3. 求状态顺序子程序根据上面求出的状态历史记录表,可以求出状态顺序表,将状态顺序存于(2,1,2)卷积码的译码设计1460H66H 单元中。求状态顺序流程图如图 215 所示。图 216 求译码结果流程图图 215 求状态顺序流程图4. 求译码结果子程序根据上一步的状态顺序表,可以查 TRANS_TAB表得出维特比译码结果,将译码结果保存在 58H5DH 单元中。求译码结果流程图如图 216 所示。第三章 实验调试与分析

19、(2,1,2)卷积码的译码设计153.1 使用的主要仪器和工具1. 带有串行接口的微机一台2. 5V稳压电源一个3. 单片机最小系统板两块4. 串口线一根5 Keil仿真软件6. 串口调试助手3.2 调试方法在设计过程中,要先编写好软件,软件又可分为多个模块,需要对每个模块分别进行调试。维特比译码是此次设计的核心部分。先编写好维特比译码程序,在 Keil中对其进行编译,检查是否存在语法错误,如有语法错误,先要排除所有语法错误;为了进行仿真,需要在仿真前先假定已接收到编码数据 001110001011,在维特比译码程序中已经预留了 READ子程序,可用来在仿真前将以上 6组数据分别写入 10H1

20、5H内存单元中;然后可以进行仿真,观察 40H57H 单元中的状态历史记录表、60H66H 单元中的状态顺序记录表、58H5DH 中的译码结果是否与理论值一致,如不一致,察看问题出在哪里,对其进行修改,在此过程中可以使用 Keil的断点执行、单步执行功能,并随时关注寄存器、关键内存单元中内容的变化,这样可以方便地逐步对维特比译码程序进行完善,最后能够实现正确译码功能。其它如键盘扫描、数码管显示、数据接收等模块,其程序执行过程与外部输入有关,所以不能使用 Keil进行仿真(但可使用 Keil对语法错误进行检查),要把这些程序连同维特比译码程序一起烧入单片机中,使单片机与微机进行串口通信,观察实验

21、现象,根据实验现象逐步定位并排除程序或硬件错误,最后要能实现所有功能。在串口调试助手的发送框中输入 001110001011,点击发送按钮(之前波特率要设为 1200),查看单片机是不是接收到 001110001011,是否译码结果为 010100,如果是说明所有模块工作正常。再将发送框中的 001110001011改为000110001011(只要改动不大,其它数据也可以),再次发送,看是否单片机还能够译码为 010100,如果是说明所编写的维特比译码程序具有纠错能力。把另一块编码单片机与此单片机通过 MAX232进行连接,重复使用串口调试助手完成的功能,验证两块单片机之间是否能够正常通信。

22、(2,1,2)卷积码的译码设计163.3 调试中出现的故障及解决方案上述调试过程并不是一帆风顺的,调试过程中会遇到许多故障,有些故障很容易找到原因,但有一些故障,其原因难以发现。例如程序中有一句“DJNZ R7,LW0”,由于 LWO太远(离“DJNZ R7,LW0”超过128字节),所以程序找不到,需要将其拆分为“DJNZ R7,LP0”和“LP0: LJMP LW0”两句。还有在用两块单片机进行通信时,只要编码单片机一发送数据,译码单片机就会死机,开始怎么也找不到错误,后面将编码单片机与微机(串口调试助手波特率设为 1200)进行通信,发现单片机每发送 12个数据,串口调试助手则接收到 1

23、8个数据,所以怀疑是由波特率不一致导致的错误,后来检查发现编码单片机的晶振频率为 6MHz,与译码单片机的 11.0592MHz不同,所以两者波特率不同,导致接收单片机接收到 18个数据,陷入死循环,改变编码单片机的 TH1、TL1,使编码单片机与译码单片机的波特率都为 1200,两块单片机能够正常通信。(2,1,2)卷积码的译码设计17第四章 总结4.1 方案的缺点和改进卷积码的纠错性能虽然优于分组码,但是卷积码的译码存在一些缺点:译码器只有在收到全部序列(卷积码可能非常长)之后,才能开始译码,并且需要记录下所有的幸存路径。可见维特比算法的时延很大,同时还需要大量的存储空间来保存历史状态记录

24、。在实际中可以采用路径存储截断法,具体过程是:译码过程中,译码器在每一级不必搜索到起始状态,而只向后搜索 x级,这样在第 x+1级状态上,译码器将输出对应于第一级的输入,而以后收到的序列不会对这个判决结果产生影响。4.2 收获和体会通过本次设计,在理论与实践上都有很大的提高,学会了卷积码的原理和维特比译码方法,并且熟悉了 Keil和串口调试助手两个软件的使用方法,以下是我的在这次设计中的心得体会。查阅资料的能力很重要。当你接到一个课题时,你不可能对其牵涉到的原理都清楚,这就需要你又快、又准地找到相关资料来做参考或是把原理搞懂,这样才能在较短的时间里设计出好的东西来。在设计中一定要心细,尤其是在

25、是在编程和软件调试时,忽略任何细节都可能导致严重的错误。在出现故障时,要从故障出现的现象,分析导致可能故障的原因、故障的位置以及故障的排除方法。要理论联系实际,用理论知识解决实际问题,并能够通过实际现象,验证理论的正确性并帮助更好的理解理论知识。(2,1,2)卷积码的译码设计18参考文献1 朱小龙. 数字通信技术.北京:化学工业出版社, 2004 年2 张立科. 单片机典型模块设计实例导航.北京: 人民邮电出版社, 2004 年3 John G.Proakis. 通信系统原理.北京:电子工业出版社, 2006 年4 周荫清. 信息理论基础.北京:北京航空航天大学出版社,2006 年5 张友德.

26、 单片微型机原理、应用与实验.上海:复旦大学出版社,2008 年6 马海武.通信原理.北京:北京邮电大学出版社, 2004(2,1,2)卷积码的译码设计19附录 程序清单ORG 0000HMAIN: MOV SP,#67HMOV R1,#10HMOV R7,#70HMM1: MOV R1,#00H ;清内存单元INC R1DJNZ R7,MM1LCALL INITIALMOV TMOD,#20H ;定时器 1工作于方式 2MOV TH1,#0E8H ;设置波特率为 1200MOV TL1,#0E8HSETB TR1 ;定时器开始工作MOV SCON,#50H ;串行口工作于方式二并开串口接收M

27、0: JNB RI,M1LCALL RECE ;如果接收到数据,调用接收子程序M1: MOV C,P1.3JC M2 ;没有键按下,跳到 M2JB 10H,M3 ;按键没有弹起,跳至 M3LCALL KEY ;有按键按下且上次按键已弹起,调用读键盘子程序SETB 10HCJNE A,#1FH,M4LCALL DISP1 ;键 1按下,调用显示 1子程序LJMP M0M4: CJNE A,#1EH,M5LCALL DISP2 ;键 2按下,调用显示 2子程序LJMP M0M5: CJNE A,#1DH,M6LCALL YM ;键 3按下,调用维特比译码子程序LCALL DISP3LJMP M0M

28、6: CJNE A,#1CH,M3LCALL INITIAL ;键 4按下,7279 初始化子程序LJMP M0M2: CLR 10HM3: MOV A,#0FFHLJMP M0 ;主程序循环,等待接收和按键RECE: MOV R0,#16H ;接收 12字节程序MOV R7,#0CHWAIT: JBC RI,RR0AJMP WAITRR0: MOV A,SBUF(2,1,2)卷积码的译码设计20MOV R0,AINC R0DJNZ R7,WAITLCALL CHANGRETKEY: CLR P1.0 ;读键值程序MOV R6,18HK1: DJNZ R6,K1MOV A,#15HLCALL

29、STFSMOV R6,#0CHK2: DJNZ R6,K2LCALL STJSSETB P1.0RETINITIAL: ;7279初始化程序CLR P1.0MOV R6,#18HLI0: DJNZ R6,LI0MOV A,#0A4HACALL STFSMOV R6,#02HLI1: DJNZ R6,LI1SETB P1.0RETDISP1: MOV R5,#08H ;显示程序MOV R0,#16HAJMP D0DISP2: LCALL INITIALMOV R5,#04HMOV R0,#1EHAJMP D0DISP3: LCALL INITIALMOV R5,#06HMOV R0,#58HD0

30、: MOV R1,#87HD1: CLR P1.0MOV R6,#18HDJNZ R6,$MOV A,R1ACALL STFS(2,1,2)卷积码的译码设计21MOV R6,#0CHDJNZ R6,$MOV A,R0ACALL STFSMOV R6,#04HDJNZ R6,$SETB P1.0INC R0DEC R1DJNZ R5,D1RETSTFS: MOV R7,#08H ;给 7279发送一字节程序FS0: RLC AMOV P1.2,CSETB P1.1MOV R6,#04HDJNZ R6,$CLR P1.1MOV R6,#04HDJNZ R6,$DJNZ R7,FS0RETSTJS:

31、 MOV R7,#08H ;从 7279接收一字节程序SETB P1.2JS1: SETB P1.1MOV R6,#04HDJNZ R6,$MOV C,P1.2RLC ACLR P1.1MOV R6,#04HDJNZ R6,$DJNZ R7,JS1RETCHANG: MOV R7,#06H ;串口收到的 12字节,转换为 6字节程序MOV R0,#16HMOV R1,#10HC0: MOV A,R0INC R0SWAP AXCHD A,R0(2,1,2)卷积码的译码设计22MOV R1,AINC R0INC R1DJNZ R7,C0RETYM: LCALL READLCALL WTBYM ;维

32、特比译码程序LCALL ZTSXLCALL OUTPUTRETREAD: RETWTBYM: MOV R0,#10H ;维特比译码主体程序(求状态历史记录和累计误差)MOV R1,#44HMOV A,R0MOV R2,AMOV R3,#00HLCALL CMPMOV 30H,AMOV R3,#11HLCALL CMPMOV 32H,AINC R0MOV A,R0MOV R2,AMOV R3,#00HLCALL CMPADD A,30HMOV 34H,AMOV R1,#00HINC R1MOV R3,#10HLCALL CMPADD A,32HMOV 35H,AMOV R1,#02HINC R1

33、MOV R3,#11HLCALL CMPADD A,30HMOV 36H,AMOV R1,#00H(2,1,2)卷积码的译码设计23INC R1MOV R3,#01HLCALL CMPADD A,32HMOV 37H,AMOV R1,#02HINC R1MOV 30H,34HMOV 31H,35HMOV 32H,36HMOV 33H,37HMOV R7,#04HLW0: INC R0MOV A,R0MOV R2,AMOV R3,#00HLCALL CMPADD A,30HMOV 34H,AMOV R3,#11HLCALL CMPADD A,31HCJNE A,34H,LW1LW1: JC LW

34、2MOV R1,#00HAJMP LW3LW2: MOV 34H,AMOV R1,#01HLW3: INC R1CJNE R7,#01H,LW00LJMP LW01LW00: MOV R3,#10HLCALL CMPADD A,32HMOV 35H,AMOV R3,#01HLCALL CMPADD A,33HCJNE A,35H,LW4LW4: JC LW5MOV R1,#02HAJMP LW6LW5: MOV 35H,A(2,1,2)卷积码的译码设计24MOV R1,#03HLW6: INC R1CJNE R7,#02H,LW02INC R1INC R1LJMP LW01LW02: MOV

35、R3,#11HLCALL CMPADD A,30HMOV 36H,AMOV R3,#00HLCALL CMPADD A,31HCJNE A,36H,LW7LW7: JC LW8MOV R1,#00HAJMP LW9LW8: MOV 36H,AMOV R1,#01HLW9: INC R1MOV R3,#01HLCALL CMPADD A,32HMOV 37H,AMOV R3,#10HLCALL CMPADD A,33HCJNE A,37H,LW10LW10: JC LW11MOV R1,#02HAJMP LW12LW11: MOV 37H,AMOV R1,#03HLW12: INC R1LW01

36、: MOV 30H,34HMOV 31H,35HMOV 32H,36HMOV 33H,37HLJMP LP1LP0: LJMP LW0LP1: DJNZ R7,LP0RETZTSX: MOV R0,#65H ;将状态顺序存于 60H66H 单元中MOV R1,#54H(2,1,2)卷积码的译码设计25MOV 66H,#00HMOV R7,#06HMOV A,R1LZ0: MOV R0,ACJNE R7,#01H,LZ1RETLZ1: MOV R2,AMOV A,R1SUBB A,#04HADD A,R2MOV R1,AMOV 03H,R1MOV A,R2XCH A,R1SUBB A,R1XCH

37、 A,R1MOV A,03HDEC R0DJNZ R7,LZ0RETOUTPUT: MOV R7,#06H ;将译码结果存于 58H5DH 单元中MOV R0,#60HMOV R1,#58HMOV R2,#00HCLR CLOUT0: MOV A,R0RL ARL AINC R0ADD A,R0MOV DPTR,#TRANS_TABMOVC A,A+DPTRMOV R1,AINC R1JZ LOUT1SETB CLOUT1: MOV A,R2RLC AMOV R2,ADJNZ R7,LOUT0RETCMP: MOV A,R2XRL A,R3MOV R3,#00H(2,1,2)卷积码的译码设计26JNB ACC.0,LC0INC R3LC0: JNB ACC.4,LC1INC R3LC1: MOV A,R3RETTRANS_TAB: DB 00H,0FFH,01H,0FFH,00H,0FFH,01H,0FFHDB 0FFH,00H,0FFH,01H,0FFH,00H,0FFH,01H END

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报