定点DSP实现的Turbo码译码器设计与测试

4星 · 超过85%的资源 需积分: 10 6 下载量 179 浏览量 更新于2024-09-12 收藏 171KB PDF 举报
"这篇论文是关于 Turbo 码译码器的定点 DSP 实现,主要针对 WCDMA 系统,采用 TMS320C6201 DSP 进行设计,并在 EVM 板上进行了测试,展示了良好的性能表现。文章详细探讨了 Turbo 编码器和译码器的结构以及译码算法,包括 Max-Log-MAP 算法的应用。" Turbo 码,自1993年被提出以来,因其高效的纠错能力在通信系统中得到了广泛的关注。然而,Turbo 译码器的高运算复杂度和存储需求成为其实现的一大挑战。为解决这一问题,研究人员采用了一种简化的最大后验概率(MAP)算法——Max-Log-MAP算法,它在保持性能的同时降低了计算复杂度,更适合工程应用。 本文中,作者们基于数字信号处理器(DSP),具体是 Texas Instruments 的 32 位定点 DSP 模型 TMS320C6201,实现了 Turbo 码的译码器。这个译码器适用于 WCDMA(宽频码分多址)系统,经过测试,证明了其优异的性能,满足了 WCDMA 系统的需求。 Turbo 编码器的结构通常由两个约束长度为 4,码率为 1/2 的 RSC(递归系统卷积)编码器通过交织器并行级联组成。为了优化性能,编码器在结束时添加了 3 个尾比特,使得最终状态为全零。在译码过程中,采用反馈迭代的方式,包括交织器、解交织器以及两个级联的分量码译码器。分量码译码器的输出经过处理,形成外信息,输入到另一个分量码译码器,进行迭代译码,最后进行硬判决输出。 在 Turbo 码的译码算法中,通常采用软输入、软输出的 MAP 算法。由于逐序列译码算法如软输出维特比算法(SOVA)的计算复杂度较低,适合硬件实现,因此在某些情况下会优先考虑。而 MAP 算法及其在对数域的简化形式 Log-MAP 算法则提供了更好的性能,但计算复杂度较高。在本研究中,作者们选择了 Max-Log-MAP 算法,它在性能和实现难度之间找到了一个平衡点。 通过使用 TMS320C6201 DSP,作者成功地将 Turbo 码译码器实现了定点化,这不仅降低了硬件实现的难度,还减少了对存储空间的需求。在 EVM 板上的测试验证了该译码器的有效性和稳定性,为 Turbo 码在实际通信系统中的应用提供了可靠的解决方案。 这篇文章详细介绍了 Turbo 码译码器的定点 DSP 实现,讨论了算法选择和系统设计的关键点,为通信系统的错误纠正提供了重要的参考。
158 浏览量
ORG 0000H LJMP START ORG 0030H START: MOV TMOD,#1 ;设置定时器工作方式 ORL P3,#0CH ;将P3.0(列0,KB0)~P3.3(列3,KB3)设置为输入状态 MOV R3,#0FEH ;8个LED初始状态(亮灯编码),FEH=11111110B,最低位为0,对应的右数第一个LED亮 LOP: LCALL KEY_SND ;调用按键发声子程序 SJMP LOP ;重新开始下一轮按键扫描与发声 KEY_SND: ;按键发声子程序 CLR P3.7 ;将行4送0 MOV A,P3 ;读列状态 ORL A,#0F0H ;屏蔽无效的高4位,保留低4位列值 CPL A ;取反,以判断按键状态 JZ EXIT ;判断是否有键按下:A=00H,无键按下,则转EXIT(子程序返回) LCALL Delays ;否则A≠0,有键按下,则调用延时子程序去抖 CLR P3.7 ;再将行4送0 MOV A,P3 ;读列状态 ORL A,#0F0H ;屏蔽无效的高4位,保留低4位列值 CPL A ;取反,以判断按键状态 JZ EXIT ;确认是否 有键按下:A=00H,无键按下,则转EXIT(子程序返回) JNB P3.2,dd1 ;是KB2,则转dd1: JNB P3.3,dd2 ;是KB3,则转dd2: JMP EXIT dd1: MOV P0,R3 ;将亮灯编码从P0口输出到LED LCALL DelaysD ;调用延时子程序 MOV A,R3 RL A ;循环左移1位,亮灯编码=0FDH,下一个LED亮 MOV R3,A JMP dd1 ;重新开始,循环输出显示 JMP EXIT dd2: MOV p0,#0FFH next1: MOV p0,#000H Lcall DelaysD MOV p0,#0FFH Lcall DelaysD jmp next1 EXIT: RET ;按键发声子程序返回 Delays:MOV R6,#20 ;延时子程序 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET DelaysD: ;延时子程序(三重循环) MOV R7,#255 ;为R7设置延时值 DL1: MOV R6,#32 ;为R6设置延时值 DL2: MOV R5,#16 ;为R5设置延时值 DL3: DJNZ R5,DL3 ;若R5-1不为0,则转DL3 DJNZ R6,DL2 ;若R6-1不为0,则转DL2 DJNZ R7,DL1 ;若R7-1不为0,则转DL1 RET ;子程序返回 END
2025-01-08 上传