2FSK调制解调系统设计Word文档格式.docx
- 文档编号:16894368
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:23
- 大小:373.10KB
2FSK调制解调系统设计Word文档格式.docx
《2FSK调制解调系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《2FSK调制解调系统设计Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
2fsk,modulation,Synchronized,demodulation
前言
课题主要研究2FSK信号的调制解调系统的实现,完成对数字信号的调制及解调,使系统简单,并要调制解调过程容易实现,能正确的完成调制解调任务。
在现代数字通信系统中,频带传输系统的应用最为突出。
用基带数字信号控制高频载波,把基带数字信号变换为频带数字信号的过程称为数字调制,已调信号通过信道传输到接收端,在接收端通过解调器把频带数字信号还原成基带数字信号,这种数字信号的反变换称为数字解调,把包含调制和解调过程的传输系统叫做数字信号的频带传输系统。
数字调制解调技术是现代通信的一个重要的内容,在数字通信系统中,由于基带数字信号包含了丰富的低频部分,如果要远距离传输,特别是在有限带宽的高频信道无线或光纤信道传输时,必须对数字信号进行载波调制,使基带信号的功率谱搬移到较高的载波频率上,这就称为数字调制(Digital
Modulation)
。
它可以分别对载波的幅度、频率、相位进行调制,于是有ASK(移幅键控)
、FSK(移频键控)
、PSK(移相键控)
等调制方式。
数字调制同时也是时分复用的基本技术,其中FSK
是利用数字信号去调制载波的频率,是信息传输较早的一种传输方式,(2FSK)
在通信系统中应用广泛。
以数字信号作为调制信号的调制技术。
一般采用正弦波作为载波,这种数字调制又称为载波键控。
用电键进行控制,这是借用了电报传输中的术语。
载波键控是以数字信号作为电码,用它对正弦载波进行控制,使载波的某个参数随电码变化。
FSK(Frequency-shiftkeying)-频移键控是利用载波的频率变化来传递数字信息。
它是利用基带数字信号离散取值特点去键控载波频率以传递信息的一种数字调制技术。
是信息传输中使用得较早的一种调制方式,它的主要优点是:
实现起来较容易,抗噪声与抗衰减的性能较好。
在中低速数据传输中得到了广泛的应用。
1二进制频移键控(2FSK)
1.1FSK的基本原理
FSK(Frequency-shiftkeying)频移键控-----利用载频频率变化来传递数字信息,是信息传输中使用得较早的一种调制方式。
主要优点:
1.实现起来较容易。
2.抗噪声与抗衰减的性能较好。
3.在中低速数据传输中得到了广泛的应用。
FSK用载波频率的变化来表征被传信息的状态的,被调载波的频率随二进制序列0、1状态而变化,即载频为时代表传0,载频为时代表传1。
图一:
2FSK的典型时域波形
1.22FSK基本原理
A.表达式:
在2FSK中,载波的频率随二进制基带信号在f1和f2两个频率点间变化。
故其表达式为
B.典型波形:
由图可见,2FSK信号的波形(a)可以分解为波形(b)和波形(c),也就是说,一个2FSK信号可以看成是两个不同载频的2ASK信号的叠加。
因此,2FSK信号的时域表达式又可写成
式中g(t)-单个矩形脉冲,Ts-脉冲持续时间;
n和n分别是第n个信号码元(1或0)的初始相位,通常可令其为零。
因此,2FSK信号的表达式可简化为
1.2.12FSK信号的产生方法
1)采用模拟调频电路来实现:
信号在相邻码元之间的相位是连续变化的。
2)采用键控法来实现:
相邻码元之间的相位不一定连续。
图二:
信号产生流程图
2调制原理
从2FSK的调制方法有两种:
(1)频率选择法;
(2)载波调频法。
不同的方法有不同的优缺点,在不同的情况下使用不同的方法。
2FSK调制采用查表法,可以实现较好的实时性,特别适用于通信载波的生成。
2.12FSK调制原理
2FSK信号的产生通常有两种方式:
●频率选择法
-------产生的2FSK信号为两个彼此独立的载波振荡器输出信号之和,在二进制码元状态转换(或)时刻,2FSK信号的相位通常是不连续的,这会不利于已调信号功率谱旁瓣分量的收敛。
●载波调频法
------在一个直接调频器中产生2FSK信号,这时的已调信号出自同一个振荡器,信号相位在载频变化时始终是连续的,这将有利于已调信号功率谱旁瓣分量的收敛,使信号功率更集中于信号带宽内。
2.22FSK调制算法
2FSK调制就是把输入数字序列变成适合于信道传输的变频正弦波-----2FSK的DSP实现关键就是产生正弦或余弦波形。
产生正弦波的方法有差分迭代法、泰勒级数展开法、查表法等多种方法。
在DSP的程序存储空间,使用Q15定点数格式在[0,2π]上以2π/N的相位间隔固化N点正弦值,以供查表(这些值可由MATLAB软件首先计算好),在此取N=12。
这样对于F0和F1的取样间隔分别为:
使用DSP定时器T0,用来实现对数据解调DAC输出速率的控制。
这样,如要实现12Kbps的数传输速率,需要将DSP定时器T0的溢出率设置为192KHz。
2.3调制主程序流程图
本文使用查表法提供2FSK调制所需要的两路正弦波,即sin0_table和sin1_table,当发送的数据为“0”时是发送sin0的数据,当发送的数据为“1”是发送sin1的数据。
初始化完后,接收数据,判断“0”或“1”,打开中断,则定时器每隔一个周期产生一次中断,中断服务程序则完成一个采样点的输出。
一个码元周期结束后,关中断,判断下一个发送数据,继续循环。
图三:
调至主程序流程图
3解调原理
3.1常见解调方法
解调的原理就是将2FSK信号分解为上下两路分别进行解调,然后进行判别。
2FSK信号的解调方法有:
如包络检波法、相干解调法、鉴频法、过零检测法及差分检波法等。
1)非相干解调:
2)相干解调:
相干解调器的一般模型为
相干解调器原理:
为了无失真地恢复原基带信号,接收端必须提供一个与接收的已调载波严格同步(同频同相)的本地载波(称为相干载波),它与接收的已调信号相乘后,经低通滤波器取出低频分量,即可得到原始的基带调制信号。
已调信号的一般表达式为
与同频同相的相干载波c(t)相乘后,得
经低通滤波器后,得到
因为sI(t)是m(t)通过一个全通滤波器HI()后的结果,故上式中的sd(t)就是解调输出,即
3)过零检测法:
3.2实验解调算法
算法的基本思想是已调信号和它的延时信号相乘,然后经过低通滤波,根据滤波结果的符号判断发送信号的值,从而实现信号的解调。
前面一部分是仅与k有关的常数。
后面一部分是与n有关的高频分量,可通过对称系数低通滤波器h(n)来滤除。
低通滤波器h(n)的截止频率设为12KHz,通过该低通滤波器后得到:
k的选择是设计解调器的关键,应使差值:
最后,以利于正确区分两种频率,降低判决的误码率。
根据实际的测试得到,当k=2时,可以得到较好的区分度。
经过低通滤波后的数据U(n)经过判决算法后,可以得到最终所要的解调数据Y(n)。
4实验流程
4.1调制实验
本次实验是2FSK基于DSP的调制实验,是在CodeComposerStudio2.2上实现的。
4.1.1调制主程序
详见附录1。
4.1.2调制过程
将实验原程序中的FSK_DATA数据变更为0x6b17。
如图所示。
在软件频率显示图中,将属性变为如图所示的情况。
在经过程序和软件上的调试后,最终我们可以得到频率结果图。
4.2解调实验
本次实验是2FSK基于DSP的解调实验,是在CodeComposerStudio2.2上实现的。
4.2.1解调主程序
4.2.2解调过程
将实验原程序中的FSK调制数据改为01101011000。
将频率显示图的属性更改为如图的属性,如此可方便的出最后的结果图。
经过程序和软件属性的修改,得到了如图所示的结果图,我们一开始输入的FSK解调数为01101011000,可以从图上看出数据为01101011000。
是相符合的。
总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
这次课程设计,至今我仍感慨颇多,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以所学过的知识理解得不够深刻,掌握得不够牢固。
这次课程设计历时两个星期多左右,通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
参考文献
[1]解月珍.秦履多.谢沅清.信号产生电路[M].电子工业出版,1994.
[2]王慕坤.通信原理[M].哈尔滨工业大学出版社,2003.
[3]鲜继清.张德民.现代通信系统[M].西安电子科技大学出版社,2002.
[4]阎石.数字电子技术基础[M].高等教育出版社,2006.
[5]苏涛.DSP实用技术[M].西安电子科技大学出版社,2002.
[6]高海林,钱满义.DSP技术及其应用[M].北京交通大学出版社.2009.
附件1实验程序
A1.1调制主程序
#include"
myapp.h"
intconstsin0_table[16]={0,1158,1638,1158,0,-1159,-1638,-1158,0,1158,1638,1158,0,-1159,-1638,-1158};
intconstsin1_table[16]={0,1254,2317,3027,3276,3027,2317,1254,0,-1254,-2317,-3027,-3276,-3027,-2317,-1254};
//intconstsin1_table[16]={0,627,1158,1514,1638,1514,1158,627,0,-627,-1159,-1514,-1638,-1513,-1158,-626};
//intconstsin0_table[16]={0,1158,1638,1158,0,-1159,-1638,-1158,0,1158,1638,1158,0,-1159,-1638,-1158};
unsignedintFSK_DATA=0x6b17;
unsignedintFSK_Tran_BUFF;
//变量的地址可以查看工程目录中的.map文件(可以txt文本打开)本例地址为0x2001
unsignedintFSK_Tran_Flag=0;
//定时中断控制位
unsignedintCounter;
unsignedintCounter0;
unsignedintCounter1;
unsignedintTemp_DATA;
voidmain(void)
{
//unsignedintCounter;
c54init();
asm("
SSBXCPL"
);
//需要注意的是函数中的局部变量编译成汇编后会进行直接寻址,
//因此必须初始化DP页指针,这样在函数中使用局部变量就不会出现问题。
LD#0x40,DP"
//同样需要将SP指针初始化一下
SP=0x3400;
//
RSBXINTM"
initCLK(CPU_SPEED_160M);
initInterrupt();
rsbxINTM"
//开全局开中断
TCR=0x0020;
//TSS=0Timerstart,TRB=1Reload
Temp_DATA=FSK_DATA;
for(Counter=0;
Counter<
16;
Counter++)
{
if(FSK_DATA&
0x0001)
sin0_Trans();
FSK_DATA=FSK_DATA>
>
1;
}
else
sin1_Trans();
//port8000=0;
//port8000=0x8888;
//for(;
;
}
voidsin0_Trans(void)
//unsignedinti;
//unsignedintCounter0;
for(Counter0=0;
Counter0<
Counter0++)
while(!
FSK_Tran_Flag);
FSK_Tran_BUFF=sin0_table[Counter0];
//在此加断点
FSK_Tran_Flag=0;
voidsin1_Trans(void)
//unsignedintCounter1;
for(Counter1=0;
Counter1<
Counter1++)
FSK_Tran_BUFF=sin1_table[Counter1];
interruptvoidTINT0_ISR(void)
FSK_Tran_Flag=1;
A1.2解调主程序
R#include"
math.h"
/************************************************
*************************************************
*FSK延时相乘非相干解调测试程序
*Fc=24kHz,F0=16KHz,F1=32KHz,Fs=192Khz
*系数对称的FIR滤波器*
*N=8,h(n)=h(N-1-n)*
*y(n)=h0*[x(n)+x(n-7)]+h1*[x(n-1)+x(n-6)]*
*+h2*[x(n-2)+x(n-5)]+h3*[x(n-3)+x(n-4)]*
*************************************************/
//---------------------------所有全局变量的地址可以在工程目录的.map文件中查看--------------------
//本程序中先关变量的地址如下,程序如有改动,地址会有变动
/*
GLOBALSYMBOLS:
SORTEDALPHABETICALLYBYName
addressname
------------
000020d0_DEC_By_NUM
000020ce_DEC_DATA_BEF
000020cd_DEC_DATA_CURR
000020d3_DEC_DATA_Ser
000020d6_DEC_Flag_X
000020cc_DEC_IN
000020cf_DEC_NUM
000020d1_DEC_NUM_X
000020d7_DEC_OUT
000020e3_DSIP
00002000_FIRBUFF
0000210b_FIR_COEF
0000210f_FSK_DATA
00002008_LPFOUT
000020d2_ONCE_DEC_DONE
000001dc_TINT0_ISR
000020e4_Temp_DATA
*/
intconstFIR_COEF[4]={0x0005,0x21AF,0x18AB,0x1C42};
//FIR滤波器系数
//intconstFIR_COEF[4]={18*32768/100000,26316*32768/100000,19272*32768/100000,22079*32768/100000};
//intconstFIR_COEF[4]={0.238917554963298*32768,0.098771820314121*32768,0.109997582034483*32768,0.116532535567211*32768};
//intconstFIR_COEF[4]={0.08977454978001*32768,0.1142599216456*32768,0.1325311332693*32768,0.1422899911346*32768};
/*************************************************
*前半部分噪音
*后半部分FSK调制数据
*F0和F1的余弦表
*F0:
32767,28508,16384,0,-16384,-28508,-32767,-28508,-16384,0,16384,28508,
*F1:
28508,0,-28508,-28508,0,28508,28508,0,-28508,-28508,0,28508,
*FSK调制数据表示"
01001011011"
,程序运行结束后可以在DEC_OUT[DataSer_Num]数组中看到
intconstFSK_DATA[DataNum]={
//*噪音64个点
18295,-6420,19759,-29306,6924,-10388,12834,12498,
-7547,0,-18295,6420,6084,10388,0,-8530,
-12834,6420,622,18918,-7547,-6420,-6084,-10388,
25843,-10388,19759,-25338,-622,0,622,25338,
-19759,10388,-25843,10388,6084,6420,7547,-18918,
-622,-6420,12834,8530,0,-10388,-6084,-6420,
18295,0,7547,-12498,-12834,10388,-6924,29306,
-19759,6420,-18295,0,18295,-6420,19759,-29306,
//*FSK调制数据11*1601101011000
0x0000,0x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FSK 调制 解调 系统 设计