HUT-基于C6000的QPSK解调器设计与实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

湖南工业大学课程设计资料袋计算机与通信学院(系、部)2015—2016学年第一学期课程名称:DSP应用课程设计指导教师:龙永新职称副教授学生姓名:戴勇建专业班级通信1201班学号12408200115设计题目:基于C6000的QPSK解调器设计与实现成绩:起止日期:2015年12月7日至2015年12月18日目录清单序号材料名称资料数量备注1课程设计任务书12课程设计说明书13课程设计图纸0张456DSP应用课程设计设计说明书基于C6000的QPSK解调器设计与实现起止日期:2015年12月7日至2015年12月18日学生姓名戴勇建班级通信1201学号12408200115成绩指导教师(签字)计算机与通信学院2015年12月18日-1-课题名称基于C6000的QPSK解调器设计与实现人数6组长戴勇建同组人员周利莎、戴平凡、龚胜、陈策力、许增、胡卫明课题的主要内容和要求1.主要内容:(1)编写程序。(2)程序要完善、优化,能运行于C5402开发板,能演示输入输出数据的完整图形,显示结果,并对程序或相关设计予以解释。2.主要任务:(1)算法设计;(2)程序设计;(3)程序的调试与各项性能的测试。具体任务1、编写程序,对QPSK调制信号进行解调。在DSP编程时,直接把载波放入存储器,然后通过统计的方法判断是“1”还是“0”,最后通过并串转换还原出原来信号。2、程序完善、优化,面向C6000开发调试。3、能演示输入输出数据的完整图形,显示结果,并对程序或相关设计予以解释。时间安排与完成情况12月07日:分组、任务分配、课题理解。12月08日-12月14日:功能、程序设计、系统设计和实现。12月15日-12月17日:实验验证和考核。12月18日:总结、书写课程设计说明书。1一、设计目的1、熟悉QPSK解调器的原理、特点和应用2、掌握QPSK解调器设计方法3、熟悉使用DSP实现QPSK信号解调的设计过程通过该设计,熟悉QPSK解调器的原理和方法,掌握其DSP程序设计与实现过程,以及程序的调试技巧。是对DSP应用技术理论学习的总结和补充,为DSP应用系统的开发设计打下基础。二、设计原理QPSK信号解调可以采用相干解调的方法实现,下图为方框图:三、设计所需仪器与设备1、PC微机1台,安装CCS3.02、DSP仿真器TDS510-USB2.0,1套四、设计内容1、编写程序,对QPSK调制信号进行解调。在DSP编程时,直接把载波放入存储器,然后通过统计的方法判断是“1”还是“0”,最后通过并串转换还原出原来信号。2、程序完善、优化,面向C6000开发调试。23、能演示输入输出数据的完整图形,显示结果,并对程序或相关设计予以解释。五、设计步骤1、用仿真机将计算机与TIC54x开发板连接好,然后运行CCS软件。2、新建一个项目:点击Project-New,将项目命名为DEQPSK,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。3、新建一个源文件:点击点击File-New-SourceFile可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(DEQPSK),保存类型选择*.C(如果源文件是C语言编写的,保存类型选择*.C,如果使用汇编语言编写的,选择*.ASM为保存类型),我们在这里将保存名字命名为DEQPSK.c。4、在项目中添加源文件:在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击DEQPSK.pjt,在弹出的菜单中选择AddFiles,然后将刚才建立的DEQPSK.c文件添加到该项目中去。5、编写源程序:在工程管理器中双击DEQPSK.c,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:#includemath.h#defineInputLength15/*IQ两路的长度*/#defineSineLenth64/*一个周期正谐波的长度*/#definep1(sineLength/8)*1/*第一相位*/#definep2(sineLength/8)*3/*第二相位*/#definep3(sineLength/8)*5/*第三相位*/#definep4(sineLength/8)*7/*第四相位*/#defineOutputLengthInputLength*SineLength/*输出数据的总长度*/#definepi3.14159/************************************//********子函数和子程序定义开始*************/voidmain()3{inti=0,j=0,a=0,n,x,b=0;intI[InputLength]={0,0,0,1,0,0,1,1,0,0,0,1,1,1,1};intQ[InputLength]={0,1,1,1,1,1,0,0,0,0,0,1,1,1,1};voidPhaseSelection(inta);/*相位选择函数声明*/IER=0;for(i=0;iSineLength;i++)/*在sin_data[]里面存储一个正弦波*/{sin_data[i]=2047+(sin)(2047.0*sin(2*pi*i/(SineLength)));/*调用sin函数*/}for(j=0;jSineLength;j++)/*再往sin_data[]里面存储一个sin波形,这样sin_data[]里有两个sin波形*/{sin_data[i++]=sin_data[j];}for(j=0;jOutputLength+64;j++)//将输出数组初始化{QPSK[j]=0;}for(j=0;jInputLength;j++)//OQPSK相位选择{if(I[j]==1&&Q[j]==1){phaseSelection(p1);/*选择pi/4的相位*/}if(I[j]==0&&Q[j]==1){phaseSelection(p2);/*选择3pi/4的相位*/}if(I[j]==0&&Q[j]==0){phaseSelection(p3);/*选择5pi/4的相位*/}4if(I[j]==1&&Q[j]==0){phaseSelection(p3);/*选择5pi/4的相位*/}}for(i=OutputLength;iOutputLength+64;i++){QPSK[i]=0;}for(i=0;iOutputLength+8;i++){*(int*)(0x30000+4*i)=QPSK[i];//把数据给一个地址,然后从这个地址看结果(xt1029)a=*(int*)(0x30000+4*i);*(int*)(0x8000+4*i)=a;}for(;;){submit_qdma();wait();}}/****************相位选择函数定义结束*****************/解调程序部分源代码#includemath.h#defineInputLength15/*IQ两路的长度*/#defineSineLenth64/*一个周期正谐波的长度*/#definep1(sineLength/8)*1/*第一相位*/#definep2(sineLength/8)*3/*第二相位*/#definep3(sineLength/8)*5/*第三相位*/#definep4(sineLength/8)*7/*第四相位*/#defineOutputLengthInputLength*SineLength/*输出数据的总长度*/5#definepi3.14159intw=0;staticintm=0;staticintI[InputLength]={0,0,0,1,0,0,1,1,0,0,0,1,1,1,1};/*输入数据1路*/staticintQ[InputLength]={0,1,1,1,1,1,0,0,0,0,0,1,1,1,1};/*输入数据Q路*/staticintQPSK[OutputLength];staticintsin_data[SineLength*2];staticintcos_data[SineLength];staticintI_multply_cos[OutputLength];staticintQ_multply_sin[OutputLength];staticintI_DeQPSK[InputLength];staticintQ_DeQPSK[InputLength];/****************子函数和子程序定义*****************/voidmain(){inti=0,j=0;voidPhaseSelection(inta);voidmultply();voidIQ_Decision();for(i=0;iSineLength;i++){sin_data[i]=(int)(64.0*sin(2*pi*i/(SineLength)));cos_data[i]=(int)(64.0*cos(2*pi*i/(SineLength)));}i=SineLength;for(j=0;jSineLength;j++){sin_data[i++]=sin_data[j];}for(j=0;jInputLength;j++)6{if(I[j]==1&&Q[j]==1){PhaseSelection(p1);}elseif(I[j]==0&&Q[j]==1){PhaseSelection(p2);}elseif(I[j]==0&&Q[j]==0){PhaseSelection(p3);}else{PhaseSelection(p4);}}asm('nop');multply();IQ_Decision();for(i=0;iOutputLength+8;i++){*(int*)(0x30000+4*i)=I_DeQPSK[i];*(int*)(0x31000+4*i)=Q_DeQPSK[i];}for(;;);/***********相位选择函数定义开始*************/voidPhaseSelection(inta){intcount=0;for(m;mOutputLength;m++){7QPSK[m]=sin_data[a++]if(count++==SineLength){break}}}/**************本地信号相乘函数定义开始********************/voidmultply(){inti=0,j=0;for(i=0;iOutputLength;i++){I_multply_cos[i]=QPSK[i]*cos_data[j];Q_multply_sin[i]=QPSK[i]*sin_data[j];j++;if(j==SineLength){j=0;}}}}6、编写链接配置文件如下:vectors.objDEQPSK.obj-oDEQPSK.out-mDEQPSK.map-estartMEMORY{PAGE0:EPROM:org=0090H,len=0F70HVECS:org=0080H,len=0010HPAGE1:DARAM:org=1000H,len=2000H}8SECTIONS{.text:EPROMPAGE0data:DARAMPAGE1STACK:DARAMPAGE1.bss:DARAMPAGE1.vectors:VECSPAGE07、编写中断向量表文件/*vectors.asm*/.title“vectors.asm”/*中断向量表的文件名*/.refstart/*引用外部定义的标号*/.sect“.vectors”/*定义初始化段名*/Bstart/*引用start*/.end8、建立文件sin_cos.inc,文件内容如下:

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功