dsp课程设计报告--TMS320C的信道编码器设计
dsp课程设计报告--TMS320C5416的信道编码器设计本文简介:嵌入式系统A(DSP)课程设计报告题目TMS320C5416的信道编码器设计学院自动化与电气工程学院专业班级学号学生姓名任课教师完成日期摘要摘要循环码是一种系统码,通常前K位是信息码元,后R位是监督码元。它除具有线性分组码的一般性质外,还具有循环性,也据好循环性,也就是说当循环码中的任一码组循环移动
dsp课程设计报告--TMS320C5416的信道编码器设计本文内容:
嵌入式系统A(DSP)
课程设计报告
题
目
TMS320C5416的信道编码器设计
学
院
自动化与电气工程学院
专业班级
学
号
学生姓名
任课教师
完成日期
摘要
摘
要
循环码是一种系统码,通常前K位是信息码元,后R位是监督码元。它除具有线性分组码的一般性质外,还具有循环性,也据好循环性,也就是说当循环码中的任一码组循环移动一位后,所的的码组仍为该循环码的一个准用码组。它是在严密的代数基础上建立起来的,具有许多特殊代数的性质,因此有助于按照所要求的纠错能力系统的构成这类码,并且简化译码方法。循环码还具易实现的特点,编码和译码的设备都不太复杂,而且性能良好,不仅能纠正独立的随机错误,也能纠正突发错误。本课程设计主要介绍了循环码的特点以及循环码的编、译码原理在DSP课程设计中,系统应用平台为TIC5416芯片,使用CCS软件,通过正确编写并运行程序,进行仿真,使得运行结果与理论分析一致,实现设计目的。
关键词
DSP;循环码;编码;译码;CCS;仿真
目
录
摘要………………………………………………………………….………………….1
1
引言………………………………………………………………………………………3
1.1
选题的背景与意义…………………….………………………….………………4
1.2
TMS320C5416DSP及开发系统的特点………………………………………….4
1.3
TMS320C5416DSP在音频处理领域中的应用…………………………………4
参考文献…………………………………………………………………………….….5
2
整体设计……………………………………………………….…………………………5
2.1整体方案的选择………………………………………………………….………5
2.2各模块功能的概述…………………………………………………….…….……6
3具体模块(或硬件/软件/程序)分析…………………………….…………….9
3.1
生成多项式和循环码的生成矩阵……………………………….………………8
3.2
系统原理图……………………………………………………………….9
4系统调试及运行结果……………………………………………………………10
5
设计总结与展望………………………………………………………………………….13
1
引言
循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。正是由于循环码具有码的代数结构清晰、性能较好、编译码简单和易于实现的特点,因此在目前的计算机纠错系统中所使用的线性分组码几乎都是循环码。它不仅可以用于纠正独立的随机错误,而且也可以用于纠正突发错误。它具有下面性质:1、封闭性(线性性)。任何许用码组的线性和还是许用码组。由此性质可以知线性码都是全零码,且最小码距就是码重。2、循环性。任何许用的码组循环移位后的码组还是许用码组。3、每个信息码组长度k=3,则有23=8个不同的信息码组。4、每个信息组加四个监督码元,信息码C6
C5
C4
监督码C3
C2
C1
C0
例如:
则这组码元称为(7,3)线性分组码上式可以完整地表示为:
C6=1*C6+0*C5+0*C4
C5=0*C6+1*C5+0*C4
C4=0*C6+0*C5+0*C4
C3=1*C6+0*C5+1*C4
C2=1*C6+1*C5+1*C4
C1=1*C6+1*C5+0*C4
C0=0*C6+1*C5+1*C4
本课程实际主要是通过仿真纠错编码系统(开发平台为TIC5416芯片)。对输入随机数字信号进行循环纠错编码后,送入含噪信道,在接收端再进行解码和检纠错,改变信道误码率大小,测试接收信号与发送信号之间的误码率,分析该种纠错编码系统的抗噪声性能。模型设计应该符合工程实际,模块参数设置必须与原理相符合,处理结果和分析结论应该一致,而且应符合理论。
1.1
选题的背景与意义
综合运用我们所学过的知识,以达到巩固所学知识,提高我们思考问题、分析问题和解决问题能力的目的。进一步学习了循环码编、译码原理,循环码要通过DSP实现编写程序,仿真出循环码编码前和译码后,以及纠错后的波形了解信道编码技术,学习使用CCS5000实验了解DSP中.asm,以及.cmd文件的使用方法的基本功能。
1.2
TMS320C5416DSP及开发系统的特点
TMS320C5416DSP芯片,是一种低功耗、高性能的定点DSP芯片。它的主要特点有:运算速度快,可达160
MIPS。优化的CPU结构:内部有1个40位的算术逻辑单元(ALU)、2个40位的累加器、2个40位的加法器、1个乘法器和1个40位的桶型移位器、有4条内部总线和2个地址发生器。多总线结构:包括3条独立的16位数据总线和1条23位的地址总线。低功耗方式:TMS320C5416DSP可以在3.3
V,1.6
V的低电压下工作,3种低功耗方式(IDLE1,IDLE2和IDLE3)可以节省DSP功耗。智能外设:包括软件可编程等待状态寄存器、可编程PLL时钟发生器、1个16位的计数器、6个DMA控制器、3个多通道缓冲串行口(McBSP0-2)和与外部处理器通信的HPI(Host
Post
Interface)接口。
CCS是TI推出的用于开发其DSP芯片的集成环境(IDE)。CCS是一个开放环境可以通过设置不同的驱动完成不同环境的支持,CCS
setup配置程序是用来定义DSP芯片和目标板类型。本课程设计采用的是CCS5000。
1.3在音频处理领域中的应用
DSP
技术在音频处理领域的应用越来越广。目前,在很多语音处理系统中都用到了语音录放模块,采集现场的声音并存储起来供以后回放。语音处理系统的实时性、功耗、体积、以及对语音信号的保真度都是很影响系统性能的关键因素。
参考文献
[1]
王金龙.DSP设计与实验教程.机械工业出版社,2007
[2]
周霖.DSP通信工程技术应用.国防工业出版社,2004
[3]
曹志刚,钱亚生.现代通信原理.清华大学出版社,1992
[4]
苗长云等主编.现代通信原理及应用.电子工业出版社,2005
[5]
桑林,郝建军,刘丹.数字通信.北京邮电大学出版社,2002
[6]
樊昌信,曹丽娜.通信原理.国防工业出版社,2008
2
整体设计
2.1整体方案的选择
算法模拟阶段。在这一阶段主要是根据设计任务确定系统的技术指标。首先应根据系统需求进行算法仿真和高级语言
(如MATLAB)模拟实现,以确定最佳算法,并初步
确定相应的参数。
DSP
芯片及外围芯片的确定阶段。根据算法的运算速度、运算精度和存储要求等参数选择DSP
芯片及外围芯片。
软硬件设计阶段。首先按照选定的算法和DSP
芯片,对系统的哪些功能用软件实现,哪些功能用硬件实现进行初步分工。然后,根据系统技术指标要求着手进行硬件设计,完成DSP芯片外围电路和其它电路,根据系统技术指标要求和所确定的硬件编写。
硬件和软件调试阶段。硬件调试一般采用硬件仿真器进行。软件调试一般借助DSP
开发工具如软件模拟器、DSP
开发系统或仿真器进行。
系统集成和测试阶段。硬件和软件调试分别调试完成后,将软件脱离开发系统,装入所设计的系统,形成所谓的样机,并在实际系统中运行,以评估样机是否达到了所要求的技术指标。若系统测试符合指标,则样机的设计完毕。
DSP系统设计流程图
2.2各模块功能的概述
循环码概述
循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若(
…
)为一循环码组,则(
…
)、(
…
)、……还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。
软件模块
DSP软件发送数据
DSP软件接收数据
编码模块
为了方便对编码结果进行验证,程序使用探针(Probe
Point)从PC文件中读取比特数据,编码完成后再用探针将其写入PC文件,其(5,2)循环码的编译流程如下图。
(5,2)循环码编码流程图
(5,2)循环码译码流程图
3具体模块分析
3.1生成多项式和循环码的生成矩阵
循环码完全由其码长n和生成多项式构成。其中g(D)是一个能除尽的n-k阶多项式。阶数低于n并能被g(D)除尽的一组多项式就构成一个(n,k)循环码。也就是说,阶数小于n-1且能被g(D)除尽的每个多项式都是循环码的许用码组。
(全0码字除外)称为生成多项式,用g(x)表示。可以证明生成多项式g(x)具有以下特性:
(1)g(x)是一个常数项为1的r=n-k次多项式;(2)g(x)是Xn+1的一个因式;(3)该循环码中其它码多项式都是g(x)的倍式。
为了保证构成的生成矩阵G的各行线性不相关,通常用g(x)来构造生成矩阵,这时,生成矩阵G(x)可以表
其中,因此,一旦生成多项式g(x)确定以后,该循环码的生成矩阵就可以确定,进而该循环码的所有码字就可以确定。显然,式(8-28)不符合形式,所以此生成矩阵不是典型形式,不过,可以通过简单的代数变换将它变成典型矩阵。
(5,2)循环码的全部码字如下表:
序号
码字
信息位
a4
a3
监督位
a2
a1
a0
1
0
0
0
0
0
2
0
1
1
0
1
3
1
1
0
1
0
4
1
0
1
1
0
通过上表可以构造(5,2)循环码生成矩阵和生成多项式,这个循环码主要参数为,n=5,k=2,r=3。从表中可以看到,其生成多项式可以用第2码字构造
g(x)=x3+x2+1
G=
10110
01101
在实际循环码设计过程中,通常只给出码长和信息位数,这就需要设计生成多项式和生成矩阵,这时可以利用g(x)所具有基本特性进行设计首先,生成多项式g(x)是的一个因式,其次g(x)是一个r次因式。因此,就可以先对进行因式分解,找到它的r次因式。
3.2系统原理图
C5416它的主要特点有:运算速度快,可达160
MIPS。优化的CPU结构:内部有1个40位的算术逻辑单元(ALU)、2个40位的累加器、2个40位的加法器、1个乘法器和1个40位的桶型移位器、有4条内部总线和2个地址发生器。多总线结构:包括3条独立的16位数据总线和1条23位的地址总线。低功耗方式:TMS320C5416DSP可以在3.3
V,1.6
V的低电压下工作,3种低功耗方式(IDLE1,IDLE2和IDLE3)可以节省DSP功耗。智能外设:包括软件可编程等待状态寄存器、可编程PLL时钟发生器、1个16位的计数器、6个DMA控制器、3个多通道缓冲串行口(McBSP0-2)和与外部处理器通信的HPI(Host
Post
Interface)接口。此最小系统包括HPI主机接口,MCBSP串行接口,因为用来与外设连接,所以没有画出外设,此外包括时钟系统,电源系统,JTAG仿真接口。
最小系统原理图
4系统调试及运行结果
功能调试
一、下面介绍具体实现步骤:
1)
新建一个工程,这里假设工程所在目录以及名称为:C:\ti\myprojects\encode。
2)
新建一个.asm源文件,其源代码见附件所示,将其写入并保存在工程所在目录中。这里假设该文件所在目录及文件名称为C:\ti\myprojects\encode\encode.asm。具体的程序如下:
CRC:STM
#(DATA_ADDR),***
;得到输入数据的地址
LED***+,A
;得到第一个数据加载到寄存器A
AND
#00FFh,A
;屏蔽到A的高位数据
LD
#***+,8,B
;第二个数据加载到寄存器B的高位
RPTB
CRC_ONCE_END-1
;循环开始
AND
#00FF00h,B
;屏蔽掉B的低位数据
ANDM
#00FFh,****
;
OR***+,B
;第三个数据加载到寄存器B的低位
ADD
#TABLE_ADDR,A
;得到表格中所要数据的实际地址
READA(table_data)
LD(table_data),A
;到数据加载到寄存器A
XORA,B
;将所得到的表中数据与实际的数据异或
STM#0,B
;寄存器B的高位赋0
LD
B,_8
;将寄存器B中的高8位数据赋值给A作为新的相对地址
STEB,8
;寄存器也左移8位,空出低8位加载新数据
NOP
CRC_ONCE_END
;循环结束
3)
新建一个.cmd文件,其源代码如下,将其写入并保存在工程所在目录。这里假设该文件所在目录及文件名称为C:\ti\myprojects\encode\encode.cmd。其cmd程序如下:
encode.obj
-o
encode.out
-m
encode.
map
-e
start
MEMORY
{
PAGE
0:
VECS:origin
=
0xff80,length
=
0x80
PROG:origin
=
0x1000,length
=
0x1000
PAGE
1:
DATA:origin
=
0x2000,length
=
0x1000
STACK:origin
=
0x3000,length
=
0x1000
}
SECTIONS
{
.vectors:{}>VECS
PAGE
0
.text:{}>PROG
PAGE
0
.data:{}>DATA
PAGE
1
}
4)
将以上两个文件添加到步骤(1)所建的工程中,至此关于循环编码的工程已经建好。此时工程视图窗口应如下图所示。
循环码工程图
5)
为方便编辑,本课程设计采用的PC文件为文本文件。这里可将新建编码数据Unencode_Data.txt文件复制到工程所在目录下,作为输入使用,同时在该目录下新建一个文本文件(后缀为.txt)作为输出使用,假定其文件名con_encodebits.txt。这里需要主要的是,Unencode_Data.txt作为DSP读取的数据文件,它需要满足一定的格式,即在数据前要加入文件头,对于本例格式如下图所示。
比特数据图
6)
执行菜单命令“project”—“rebuild
all”对工程进行编译、汇编和链接,然后执行菜单命令“file”—“load
Program”,选择“encode.out”并打开,将Build生成的程序加载到DSP中,此时汇编窗口出现如图所示的标志。
7)
设置FileI/O从PC文件中读取数据,设置完成以后如图所示。
文件输入设置图
设置FileI/O从PC文件中写入数据,设置完成以后如图所示:
文件输入设置完成图
8)
运行程序,当处理完所有输入比特数据后,单击确定进入下一步。
9)
打开输入和输出数据文件以及MATLAB中生成的编码数据文件Encode_Data.txt进行对比,验证编码程序是否正确,如果所示。
编码前后对比图
5
设计总结与展望
总结和展望
通过以上内容可以实现二进制循环码编码和解码设计和仿真目的,并能在译码过程中实现数无失真的恢复原始信号。
本次课程设计在刚开始的过程中无从下手,手忙脚乱,时间又紧迫,不懂相关原理,不知道做课程设计的步骤,后来通过查看资料,先弄明白其原理,然后对照原理图建立模块,在模块建立后遇到了一些问题,但通过有效的方法,网上查找相关资料实在不懂就向老师请教,最终了解清楚此课程设计所需的算法,了解课程设计的核心部分,从而正确建立模块和设置参数,最后用理论进行验证,得到运行结果与理论结果一致。这次课程设计让我学到了很多东西,不仅锻炼了我的动手能力,加深了对循环码有关知识的了解,也使我对课程设计的流程有了一定的了解,让我深刻了解到理论联系实际的重要性,并且增加了自己的自信,这次课程设计自己独立完成,获得了成功的喜悦,同时提高了我的动手实践和组织能力,这次设计培养了我的设计思维,增加了实际操作能力,并让我收获了很多,给我很多启迪。使我受益匪浅,对我以后的工作和学习是一笔宝贵的财富。
13