信号解调FSK.docx
《信号解调FSK.docx》由会员分享,可在线阅读,更多相关《信号解调FSK.docx(18页珍藏版)》请在冰豆网上搜索。
信号解调FSK
成绩评定表
学生姓名
唐微
班级学号
1003030112
专业
电子信息工程
课程设计题目
信号解调(FSK)
评
语
组长签字:
成绩
日期
年月日
课程设计任务书
学院
信息科学与工程学院
专业
电子信息工程
学生姓名
唐微
班级学号
1003030112
课程设计题目
信号解调(FSK)
实践教学要求与任务:
要求:
将模拟信号(FSK调制)解调成数字信号。
任务:
通过对课程设计任务的完成,使学生理解课题教学的理论内容,并且能够掌握和熟悉DSP的开发流程和基本的编程方法,熟悉DSP5000系列芯片,并利用CCS5000系列的开发环境进行程序设计,完成相应功能。
冋时,由于设计中涉及到各种器件的使用,可以起到综合运用各种技术和知识的作用。
此外学生的实验技能、动手能力、分析问题、解决问题的能力都将得到培养,为进步进行工程实践奠定良好的基础。
工作计划与进度安排:
第1周:
熟悉环境,查阅相关资料
第2周:
代码编译链接与仿真设计
第3周:
程序调试与编译,性能分析及验收
第4周:
撰写课程设计报告、答辩
指导教师:
年月曰
专业负责人:
年月曰
学院教学副院长:
年月曰
摘要
信号处理的内容含滤波、均衡、放大、噪声消除、信号产生、检测、运算和参量提取等许多方面。
数字信号处理器DSP是针对数字信号处理需要而设计的一种可编程的单片机,它具有运算速度快、可编程特性及接口灵活等优点,用来实现数字信号处理系统更成了当前发展趋势。
FSK(Frequency-shiftkeying):
频移键控,就是用数字信号去调制载波的频率。
是信息传输中使用得较早的一种调制方式,它的主要优点是:
实现起来较容易,抗噪声与抗衰减的性能较好,在中低速数据传输中得到了广泛的应用。
它是利用基带数字信号离散取值特点去键控载波频率以传递信息的一种数字调制技术。
本文通过对FSK信号解调原理的分析,提出了用DSP实现FSK解调的方法,将模拟信号解调成数字信号,重点讨论该方法的软件设计与仿真,即FSK解调
在TMS320C55xDSP上的实现方法。
采用过零计数算法进行解调。
通过实验证明,本方法设计的FSK调制解调器具有调制相位连续、解调无相位抖动、传输速率快等特性。
此种运算具有实现简单,效率较高,用于系统的调制与解调,占用CPU系统资源较少等特点。
关键词:
DSPFSK解调过零计数算法软件仿真
1设计目的及要求1
1.1设计目的1
1.2设计要求1
2设计原理1
2.1FSK概述1
2.2FSK解调原理1
3CCS软件介绍3
4设计过程4
5软件程序5
5.1输入信号程序5
5.2正弦波信号程序5
5.3FSK解调程序10
5.4命令文件程序11
6仿真结果12
7个人总结12
参考文献13
1设计目的及要求
1.1设计目的
课程设计的实践教学环节。
学生通过动手做软件和硬件设计,能够熟练掌握数字信号处理技术,提高学生综合分析问题、发现问题和解决问题的能力,增加对基础知识的消化和理解。
其内容包括:
FIR滤波器,IIR滤波器,FFT快速傅里叶变换,语音处理,A/D,D/A转换等。
1.2设计要求
将模拟信号(FSK调制)解调成数字信号。
2设计原理
2.1FSK概述
FSK是频移键控的简称,故二进制频移键控常简写为2FSK。
数字调频又可称作频移键控(FSK),它是利用载频频率变化来传递数字信息。
这种调制解调方式容易实现,抗噪声和抗衰减性能较强,因此在中低速数据传输系统中得到了较为广泛的应用。
在实际应用中,应用最为泛的是2FSK,故FSK常泛指为2FSK<2FSK信号是O符号对应于载频为W1,而1符号对应于载频W2,而且两者之间的改变是瞬间完成的。
容易想到,2FSK信号可利用一个矩形脉冲序列对一个载波进行调频而获得。
这正是频率键控通信方式早期采用的实现方法,也是利
用模拟调频法实现数字调频的方法。
2FSK信号的另一产生方法便是采用键控法,即用受矩形脉冲序列控制的开关电路对两个不同的独立频率源进行选通
22FSK解调原理
FSK有多种方法解调,如包络检波法、相干解调法、鉴频法、过零检测法及
差分检波法等,相应的接收系统的框图如图1所示,
(a)非a相干方式
COSω
I
COSω〔t
(b)相干方式
(C)过零检测法
图12FSK解调原理框图
这里采用的是过零检测法对FSK调制信号进行解调。
2FSK信号的过零点数随不同载频而异,故检出过零点数就可以得到关于频率的差异,这就是过零检测法的基本思想。
用过零检测法对FSK信号进行解调的原理框图如图1(C)所示。
其中整形1和整形2的功能类似于比较器,可在其输入端将输入信号叠加在2.5V上。
2FSK调制信号从“FSKlN”输入。
U6(LM339)的判决电压设置在2.5V,可把输入信号进行硬限幅处理。
这样,整形1将FSK信号变为TTL电平;整形2和抽样电路共同构成抽样判决器,其判决电压可通过电位器进行调节。
单稳1(74LS123)和单稳2(74LS123)分别被设置为上升沿触发和下降沿触发,它们与相加器U7(74LS32)一起共同对TTL电平的FSK信号进行微分、整流处理。
再通过低通滤波器滤除高次谐波,再依次通过整形2和抽样电路共同构成抽样判决器,便能得到FSK解调信号。
其解调原理图如下:
图2零点检测法解调原理
3CCS软件介绍
CCS为信号处理器的开发过程提供配置、构造、调试、跟踪和分析程序的工具,在基本代码产生工具的基础上增加了调试和实时分析的功能。
开发设计人
员可在不中断程序运行的情况下检查算法的对错,实现对硬件的实时跟踪调试,从而大大缩减了程序的开发时间。
CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具。
CCS有两种工作模式,即:
软件仿真器模式:
可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。
硬件在线编程模式:
可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。
面,提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具。
CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C++和汇编的混合编程,其主要功能如下:
1)具有集成可视化代码编辑界面,用户可通过其界面直接编写C、汇编、.cmd文件等;
2)含有集成代码生成工具,包括汇编器、优化C编译器、链接器等,将代码的编辑、编译、链接和调试等诸多功能集成到一个软件环境中;
3)基本调试工具具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试;
4)断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置。
4设计过程
1、CCS的软仿真设置:
(a)•运行桌面上的“SetUPCCStUdiOv3.T后,将弹出的“CodeComposerStUdiOSetup”系统配置对话框(b).在Platform下选择SimUlatOr,在AVaiIabIeFaCtOryBOardS中只显示软件仿真驱动,选中相应的驱动C55xxRev3.0CPUFUnctionalSimUIatOr。
(C).点击<点击SaVe&Quit。
(d).保存设置并退出CodeComposerStUdiOSetUP程序,此时将弹出一个选择的对话框,点击Yes,将保存设置退出CodeComposer
StUdiOSetUP程序并启动运行CodeComposerStUdiO
所有步骤可见图3中标注。
防t⅝⅛4⅞v⅞⅞4⅛tτ⅞r¾⅛⅞λt1-4ft1««hM«b#«rd1«lk∙ty⅞⅝w
2、程序是由输入已调制的信号、正弦波信号、汇编源程序(完成乘法运算)以及一个命令文件组成。
3、建立工程,往工程中添加文件。
将各程序进行编译,成功后观察运行结果。
5软件程序
5.1输入信号程序
#include"stdio.h"
#include"math.h"
main()
{
inti;
floatf[256];
FlLE*fp;
if((fp=fopen(l"d:
\\firdinput.dat","w+"))==NULL)
{
Printf("can'topenfile!
∖n");
exit(0);
}
for(i=0;i<=255;i++)
{
f[i]=(cos(2*3.14159265*i*1000∕10000)+cos(2*3.14159265*i*3000∕10000))∕4;
fprintf(fp,"%ld∖n",(long)(f[i]*32767));
}
fclose(fp);
}
5.2正弦波信号程序
.title”sin_wave.asm”.mmregs
.def_c_intOO.bssL,1
.bssK,1
.bssAx,1
FS
.set10000
;A/D转换率
F
.set100
;信号频率
L_v
.setFs/F
;每个周期输出点数
K_v
.set720
;预先计算点数
AX_v
.set50*32768/100
;幅值系数
sin_x
.usectSin_x”,K_v
d_XS
.usectSin_vars”,1
d_SqUr_XS
.usectSin_varS',1
d_temp_s
.usectSin_vars”,1
d_Sinx
.usectSin_vars”,1
d」_S
.usectSin_vars”,1
d_XC
.usectcos_varS',1
d_SqUr_XC
.usectcos_varS',1
d_temp_c
.usectcos_varS',1
d_cosx
.usectcos_varS',1
d」_C
.usectcos_varS',1
STACK
.usect.Stack”,200h
SYSSTACK
.usect.'Sysstack',200h
K_theta.set(314159265/K_v)*32767/100000000;theta=(pi/720)*32768(0.25deg)
.data
table_s:
.word01c7h,030bh,0666h,1556h
table_c:
.word0249h,0444h,0aabh,4000h
.text
_c_int00:
amov#STACK+100h,xsp
amov
#STACK+200h,xssp
mov
#0,mmap(imr0)
mov
#0,mmap(imr1)
bclr
AR3LC
mov
#k_theta,ar0
mov
#0,ar1
amov
#Sin_x,xar6
mov
#K_v/4,mmap(brc0)
rptb
loop1-1
mov
mmap(ar1),ac0
mov
ac0<<#0,*(#d_XS)
mov
ac0<<#0,*(#d_XC)
call
Sinx
call
cosx
amov
#d_Sinx,xar3
amov
#d_cosx,xar4
bset
fret
mpym
*ar3,*ar4,ac0
mov
hi(ac0«#1),*ar6+
amar
*ar1+0
Ioopl:
amov
#Sin_x+K_v/4-1,xar7;Sin91(deg)--sin179(deg)
mov
#K_v/4-2,mmap(brc0)
rptb
loop2-1
mov
*ar7-,*ar6+
Ioop2:
mov
#K_v/2,mmap(brc0)
amov
#Sin_x,xar7
rptb
loop3-1
mov
*ar7+,ac0
neg
ac0
mov
ac0«#0,*ar6+
Ioop3:
nop
amov
#sin_x,XAR3
amov
#Sin_x,XAR5
bclr
SXmd
bclr
frct
amov
#0,ar1
;N
amov
#L,xar2
;L
mov
#L_v,*ar2+
mov
#K_v,*ar2+
;K=720
mov
#AX_v,*ar2+
;AX
amov
#Sin_wave,xar4
mov
#2000,mmap(brc0)
rptb
loop4-1;loop
bclr
frct
mov
ar1,hi(ac0)
;N
Sftl
ac0,#-16,ac0
;取N/L余数
amov
#L,xar2
rpt
#15
SubC
*ar2,ac0
amov
#K,ar2
mpym
*ar2,ac0,ac0
;720*N
amov
#L,xar2
rpt
#15
SUbC
*ar2,ac0
;720*N/L
mov
#0ffffh,ac1
and
ac1,ac0
amar
*ar2+;K
rpt
#15
SUbC
*ar2,ac0;取余数
mov
hi(ac0),ar5
Ioop4:
sinx:
add
ar3,ar5
amov
#Ax,xar2
bset
fret
mpym
*ar2,*ar5,acθ
mov
hi(acθ),*ar4+
amar
*ar1+
b
Ioop4
bset
fret
amov
#table_s,xar3
amov
#d_xs,xar2
amov
#d」_s,xar4
mov
#7fffh,*ar4
Sqrmr
*ar2+,ac0
mov
*ar4«#16,ac1
:
:
mov
hi(ac0),*ar2
masmr
t3=*ar2+,*ar3+,ac1,acθ
mpy
t3,ac0,ac0
mov
hi(ac0),*ar2
masmr
*ar2-,*ar3+,ac1,acθ
mpym
*ar2+,acθ,acθ
mov
hi(ac0),*ar2
masmr
*ar2-,*ar3+,ac1,acθ
mpym
*ar2+,acθ,acθ
mov
hi(ac0),*ar2
masmr
*ar2-,*ar3+,ac1,acθ
amov
#d_xs,xar5
mpym
*ar5,acθ,acθ
mov
hi(ac0),*(#d_Sinx)
nop
ret
cosx:
bset
frct
amov
#d_xc,xar2
amov
#d」_c,xar4
mov
#7fffh,*ar4
Sqrmr
*ar2+,acθ
mov
*ar4«#16,ac1
:
:
mov
hi(acθ),*ar2
masmr
t3=*ar2+,*ar3+,ac1,acθ
mpy
t3,acθ,acθ
mov
hi(acθ),*ar2
masmr
*ar2-,*ar3+,ac1,acθ
mpym
*ar2+,acθ,acθ
mov
hi(acθ),*ar2
masmr
*ar2-,*ar3+,ac1,acθ
SftS
acO,#-1
neg
ac0
mpym
*ar2+,acθ,acθ
amar
*ar2+
add
*ar4,16,ac0
mov
hi(acθ),*ar2
ret
.end
5.3FSK解调程序
.title
"DEFSK.asm"
.mmregs
.def
Start
.bss
temp,1
Indata.usect"buffer",64
Out.usect"buffer",1
STACK.usect
"STACK",10
distance
.set31
amplitude
.set32700
************************************
.text
start:
LD
#indata,DP
STM
#indata,AR1
nop
JUDGE:
LD
*AR1+,A;循环检测幅度是否大于amplitude
SUB
#amplitude,A
BC
A1,AGT
B
JUDGE
************************************
A1:
MAR
*+AR1(distance)
LD
*AR1+,A
SUB
#amplitude,A
BC
F1,AGT
***********************************
F0:
ST
#0,@oUt
B
Start
F1:
ST
#1,@oUt
B
Start
.end
***********************************
5.4命令文件程序
MEMoRY
{
PAGE0:
VECS:
Origin=0xff80,Iength=0x80
PROG:
Origin=0x1000,length=0x1000
PAGE1:
DATA:
Origin=0x4000,length=0x1000
STACK:
Origin=0x3000,length=0x1000
}
SECTIONS
.vectors:
{}
>
VECSPAGE0
.text:
{}
>
PRoGPAGE0
.data:
{}
>
DATAPAGE1
.stack:
{}
>
STACKPAGE1
6仿真结果
根据断点的设置,运行仿真步骤,可得如下仿真结果:
吕北1Si>ql4il4r/Crlr-C5<τISis⅞l⅞l*T)-Caii⅛,⅛fLl⅛f≤H
7个人总结
通过这次的课程设计,我发现我在基于dsp平台的编程方面还不是很到位,平时学习的知识也欠缺全面性。
这次在老师的耐心指导下,我学到了很多很实际的解决问题的方法。
这次我以定点DSPTMS320VC55x及其仿真的信号解调为题,完成了对FSK信号解调的任务。
但上述过程尚有许多不成熟、不完善的地方,这也是需要今后进一步开展的工作。
同时通过这次课程设计,使我对DSP技术有了更进一步的了解。
同时对CCS集成环境更为熟悉了。
通过这次课程设
计使我大体了解了DSP工程中的诸多进程,为我在今后的工作中奠定了坚实的实践基础。
我会在今后的日子里,继续努力学习的。
参考文献
[1]戴明帧∙TMS320C54X原理与应用•北京航空航天大学出版社,2004
[2]程佩青.数字信号处理教程.北京:
清华大学出版社,2007
[3]赵洪亮黄鹤松.TMS320C55xDSP应用程序设计与开发•北京:
北京航空航天大学出版社,2002
[4]赵红怡.DSP技术与应用实例.西安:
电子工业出版社,2009
[5]张邹彦.DSP原理及应用.北京:
电子工业出版社,1999