2FSK调制解调实现课程设计报告

上传人:无*** 文档编号:89559953 上传时间:2022-05-13 格式:DOC 页数:13 大小:1.47MB
收藏 版权申诉 举报 下载
2FSK调制解调实现课程设计报告_第1页
第1页 / 共13页
2FSK调制解调实现课程设计报告_第2页
第2页 / 共13页
2FSK调制解调实现课程设计报告_第3页
第3页 / 共13页
资源描述:

《2FSK调制解调实现课程设计报告》由会员分享,可在线阅读,更多相关《2FSK调制解调实现课程设计报告(13页珍藏版)》请在装配图网上搜索。

1、.DSP综合课程设计2FSK调制解调的实现组 号:10组姓 名: yansir学 号:指导老师:日 期:专 业:一、目的和意义1、地位和作用:本课程是信息工程专业的重要课程。它以数字信号处理、DSP原理及应用等课程为先修课程。通过这门课程设计要能够让学生,深层次地理解DSP芯片的使用方法及程序编写的基本原则。2、目的和任务:DSP系统课程设计是一项实践教学内容。通过本课程的学习,使学生掌握典型DSP芯片的结构、原理和典型应用,既巩固数字信号处理基础、DSP原理及应用中的基础理论知识,又为学生日后从事相关系统开发设计奠定基础。二、内容与要求绘制具备AD功能的DSP最小系统电路图,设计基于DSP的

2、2FSK调制解调程序。设计2FSK调制解调的DSP程序,并给出相应的仿真结果。1、DSP综合试验箱的结构原理和设置;存储器、逻辑控制等模块的原理和配置。2、开发工具熟悉DSP开发系统的连接;进一步熟悉CCS2.2开发环境的使用方法。3. DSP结构进一步熟悉DSP的硬件构造,特别是DSP外围存储单元及接口电路的设计。4. DSP最小系统设计绘制DSP最小系统电路图:外围存储器及ADC电路的设计。5. 2FSK调制及解调理解2FSK调制及解调的原理,设计2FSK调制及解调的方案,给出具体的实现思路。6. FIR滤波器计算FIR实现所需的参数。7. FIR滤波器实现编写FIR滤波器实现的 DSP程

3、序。82FSK调制及解调实现给出2FSK调制及解调实现流程图,编写相关DSP实现程序。9仿真验证2FSK调制及解调的DSP程序,给出相应的仿真结果三、 原 理2FSK调制算法2FSK调制采用查表法,可以实现较好的实时性,特别适用于通信载波的生成。在DSP 的程序存储空间,使用Q15 定点数格式在0,2上以2/N的相位间隔固化N 点正弦值,以供查表,在此取N=12。这样对于F0和F1的取样间隔分别为: 1使用DSP定时器T0,用来实现对数据解调DAC输出速率的控制。这样,如要实现12Kbps的数据传输速率,需要将DSP定时器T0的溢出率设置为192KHz。2FSK解调算法FSK解调有相干解调和非

4、相干解调3,4,相干解调对通信设备要求较高,一般数字调频系统都采用非相干解调5。在此,采用实时性较高的2FSK信号差分检波解调算法6。算法的基本思想是已调信号和它的/2的延时信号相乘,然后经过低通滤波,根据滤波结果的符号判断发送信号的值,从而实现信号的解调。算法原理图如下图所示。图2信号采样值S经延时器延迟k个采样点得到S。k要小于每个二进制码元周期内的采样点数,使得S和S是属于同一个二进制码元的采样值。S和S相乘后的输出样值: 2前面一部分是仅与k有关的常数。后面一部分是与n有关的高频分量,可通过对称系数低通滤波器h来滤除。低通滤波器h的截止频率设为12KHz,对称系数经Matlab计算求得

5、:h0=0.00018497,h1=0.26316,h2=0.19272,h3=0.22079,通过该低通滤波器后得到: 3k的选择是设计解调器的关键,应使差值: 4最大,以利于正确区分两种频率,降低判决的误码率。根据实际的测试得到,当k=2时,可以得到较好的区分度。经过低通滤波后的数据U经过判决算法后,可以得到最终所要的解调数据Y。FIR滤波器验证:16KHz与32KHz在192KHz采样频率下Fc=24KHz,F0=16KHz,F1=32KHz,Fs=192KHz,载波为正弦波,调制滤波前波形及滤波后波形;CCS下仿真结果:滤波前 滤波后16KHz与32KHz在192KHz采样频率下Fc=

6、24KHz,F0=16KHz,F1=32KHz,Fs=192调制信号 延迟相乘后的信号 滤波后的信号四、系统实现1、系统结构2、 电路图设计(1) (3) (5) (7) 最后的PCB图为:3、 程序设计2FSK调制;ZY13DSP12BD ;Mr Li Xiao Bei ;Hu Bei Zhong You;D/A;= main.asm =.mmregs.def _c_int00.def TINT0_ISR.include c54.inc.ref c54init;D/A TLC7524地址DA_AD_CON.set 0x0000DA_ADDR.set 0x0001AD_ADDR.set 0x0

7、002.data*放置正弦波查找表sin0_table:.WORD32767,28508,16384,0,-16384,-28508,-32767,-28508,-16384, 0,16384,28508sin1_table:.WORD28508,0,-28508,-28508,0,28508,28508,0,-28508,-28508,0,28508FSK_DATA:.WORD0x5a36 *设置D/A输出缓冲区 .bss sin0,12 .bss sin1,12 .bss DA_DATA,1 .bss AD_DATA,1 .bss Dis_buff,1 .bss FskData,1 *设置

8、D/A输出计数器 .bss DA_NUM0,1 .bss DA_NUM,1 .bss Flag,1 .bss RET_ADDR,1 .sect progsys .align 0x10_c_int00: STM #0x0f80,SP CALL c54initLD #sin0 ,DPSTM #sin0 , AR1RPT #23MVPD sin0_table , *AR1+;= 设置DAC片选 =ST #0x0,*PORTW *,0x0000;=;= 设置ADC片选 =ST #0x2,*PORTW *,0x0000;=LOOP0:STM#FskData,AR3 MVPD FSK_DATA ,*AR3

9、 LD *AR3 , A ;将需要发送的数据加载到A中ST #0,DA_NUM0 ;=;STM #0x0020,TCR1;启动定时器STM #0x0020,TCR;启动定时器;=LOOP:ADDM #1,DA_NUM0CMPMDA_NUM0,#16;共有16位 BC LOOP_end0,TC ;当16位数据全部输出后,停止发送,关中断AND #0x0001,AST #0,DA_NUM BC SIN0_LOOP,AEQ;当发送的数据为0是发送SIN0的数据B SIN1_LOOP ;当发送的数据为1是发送SIN1的数据;=SIN0_LOOP:;ST #0,DA_NUM STM#sin0,AR1;查

10、找表的首地址 LD #0 , A ;设置查SIN0表标识 STL A , Flag SIN0_LOOP1: MVDK*AR1+,Dis_buffADDM #1,DA_NUMCMPMDA_NUM,#12;共有12个点 ;BC SIN0_LOOP1,NTC ;当输出不到12点的时候继续向下计数 BC LOOP_end,NTC ;当输出不到12点的时候,等待定时器的溢出 LD *AR3 , A ;准备进行下一位数据的调制ROR A STL A, *AR3 B LOOP;当输出达到12点的时候重复计数 ;= SIN1_LOOP: ;ST #0,DA_NUM STM#sin1,AR1;查找表的首地址 L

11、D #1 , A ;设置查SIN1表标识 STL A , Flag ;STM#AD_DATA,AR2 SIN1_LOOP1: MVDK*AR1+,Dis_buffADDM #1,DA_NUMCMPMDA_NUM,#12;共有12个点 BC LOOP_end,NTC ;当输出不到12点的时候,等待定时器的溢出 LD *AR3 , A ;准备进行下一位数据的调制ROR A STL A, *AR3 B LOOP;当输出达到12点的时候重复计数 ;=LOOP_end0: SSBX INTMLOOP_end: B LOOP_end;=;Timer0中断服务程序:TIN0_ISR;=TINT0_ISR:;

12、CMPM Flag,#0x0001;ST #0,DA_NUM BC JMP_SIN1,ANEQ;当发送的数据为0是发送SIN0的数据 ;BC JMP_SIN1,TC;当发送的数据为0是发送SIN0的数据 STM #SIN0_LOOP1 ,AR7 POPD RET_ADDR PSHM AR7 ;堆栈中更新SIN0_LOOP1的地址 B Next ;RETJMP_SIN1: STM #SIN1_LOOP1 ,AR7 POPD RET_ADDR PSHM AR7 ;堆栈中更新SIN1_LOOP1的地址 Next:RETE .end 2FSK解调系统12个采样数据表示一个码元,当判决算法连续判决12个

13、采样数据一个码元包含的采样点满足预设阈值之后,确定一个码元的状态。假设如下判决算法中用都得变量:LPFOUT滤波器输出,DATA_THD幅度判决的阈值,DEC_DATA_CURR当前采样点判决值,DEC_DATA_BE前一次采样点判决值,DEC_NUM判决用计数器,DEC_NUM_X周期计数器。判决算法流程图如下图所示:*FSK延时相乘非相干解调测试程序*Fc=24kHz,F0=16KHz,F1=32KHz,Fs=192Khz *系数对称的FIR滤波器*N=8,h=h*y=h0*x+x+h1*x+x* +h2*x+x+h3*x+x*.titleFSK_Demoduler_X.asm.mmreg

14、s.defstartDataNum .set196DATA_THD .set12000H;幅度判决的阈值DEC_PASS_NUMN .set3;DEC_PASS_NUM .set2;DEC_BYPASS_NUM .set12-DEC_PASS_NUMN;.bssy,1.bssx_disp,1.bssZ_disp,1.bssLPFOUT,1;滤波器输出.bssDEC_DATA_CURR,1;当前采样点判决值.bssDEC_DATA_BE,1;前一次采样点判决?.bss DEC_DATA_CE,1;前前一次采样点判霆.bssDEC_NUM,1;判决用计数器.bssDEC_NUM_X,1;周期计数器

15、.bssDEC_DONE,1;x_new.usectDATA1,4x_old.usectDATA2,4Y_OUT.usectDATA3,32;给转换结果开辟了一个存储区,实际做的时候需要进行串转并;outputdata.usectDATA3,DataNumfilterdata.usect filter_vars,DataNumsize.set4.datainputdata:*噪音* .WORD 18295,-6420,19759,-29306,6924,-10388,12834,12498.WORD -7547,0,-18295,6420,6084,10388,0,-8530.WORD -12

16、834,6420,622,18918,-7547,-6420,-6084,-10388.WORD 25843,-10388,19759,-25338,-622,0,622,25338.WORD -19759,10388,-25843,10388,6084,6420,7547,-18918.WORD -622,-6420,12834,8530,0,-10388,-6084,-6420.WORD 18295,0,7547,-12498,-12834,10388,-6924,29306.WORD -19759,6420,-18295,0,18295,-6420,19759,-29306*F0和F1的

17、余弦表*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,*.WORD32767,28508,16384,0,-16384,-28508,-32767,-28508,-16384, 0,16384,28508.WORD28508,0,-28508,-28508,0,28508,28508,0,-28508,-28508, 0,28508.WORD32767,28508,1

18、6384,0,-16384,-28508,-32767,-28508,-16384, 0,16384,28508.WORD32767,28508,16384,0,-16384,-28508,-32767,-28508,-16384, 0,16384,28508.WORD28508,0,-28508,-28508,0,28508,28508,0,-28508,-28508, 0,28508.WORD32767,28508,16384,0,-16384,-28508,-32767,-28508,-16384, 0,16384,28508.WORD28508,0,-28508,-28508,0,28

19、508,28508,0,-28508,-28508, 0,28508.WORD28508,0,-28508,-28508,0,28508,28508,0,-28508,-28508, 0,28508.WORD32767,28508,16384,0,-16384,-28508,-32767,-28508,-16384, 0,16384,28508.WORD28508,0,-28508,-28508,0,28508,28508,0,-28508,-28508, 0,28508.WORD28508,0,-28508,-28508,0,28508,28508,0,-28508,-28508, 0,28

20、508;.WORD32767,28508,16384,0,-16384,-28508,-32767,-28508,-16384, 0,16384,28508;.WORD32767,28508,16384,0,-16384,-28508,-32767,-28508,-16384, 0,16384,28508;.WORD28508,0,-28508,-28508,0,28508,28508,0,-28508,-28508, 0,28508;.WORD32767,28508,16384,0,-16384,-28508,-32767,-28508,-16384, 0,16384,28508;.WORD

21、28508,0,-28508,-28508,0,28508,28508,0,-28508,-28508, 0,28508;COEF.word1*32768/10,2*32768/10;.word3*32768/10,4*32768/10COEF.word18*32768/100000,26316*32768/100000.word19272*32768/100000,22079*32768/100000;0.000184970.263160.192720.22079.textstart:LD#x_new,DP;设置数据存储器页指针的起始位置SSBXFRCT;小数乘法* STM#DataNum,

22、AR3 STM#Z_disp,AR7STM8765h,*AR6+ ST #0,DEC_NUM ST #0,DEC_NUM_X ST #0,DEC_DONE* STM#inputdata,AR5XXX: MVDK*AR5+,x_disp;在此加断点通过图形窗口可以观察调制后的数据波形 BANZ XXX,*AR3-* STMY_OUT,AR1* STM#x_new,AR2;AR2指向新缓冲区第1个单元STM#x_old+,AR3;AR3指向老缓冲区最后1个单元STM#size,BK;设置循环缓冲区长度BK =sizeSTM#-1,AR0;循环控制增量AR0=-1*STM#inputdata,AR5

23、STM#,AR4;调制后数据首地址延时Pi/2*STOR:STM#filterdata,AR6* ;STM#inputdata,AR5;RPT#;MVKDoutputdata,*AR5+*STM#inputdata,AR5;MVDD*AR5+,*AR2STM#,BRCRPTBHHend-1FIR:*MPY *AR5+,*AR4+,A;调制后的数据与移位后的数据相乘 STHA,*AR2 ;MVDK *AR2,x_disp;在此加断点通过图形窗口可以观察延时相乘后的数据波形* ADD*AR2+0%,*AR3+0%,A;AH=xn+ xn-7第一次RPTZB,#;B=0,下条指令执行size次FIR

24、S*AR2+0%,*AR3+0%,COEF;B+=AH*h0,AH=xn-1+xn-6STHB,*AR6+;保存结果到y* ;MVDK *AR6,x_disp MVDK *AR6,x_disp;在此加断点通过图形窗口可以观察延时相乘及滤波后的数据波形 ;需要在上面加端点*在此开始对LPF输出数据进行判决* LD DEC_DONE,A SUB #1,A BC DEC_BYPASS,AEQ*DEC_NUM_DONE=0,表示一次新的数据判决开始 LD *AR6,B; ABS B,A; 对LPFOUT输出数据取绝对值 SUB #DATA_THD,A;将结果与设定的阈值进行比较 BC DEC_END,

25、ALT;如果采样数据小于设定的阈值,则直接返回 AND #8000H,B;测试LPUOUT的极性 BC DEC_POS,BEQ;相与的结果=0,说明LPFOUT为正 ST #0,DEC_DATA_CURR;存储测定的结果 B DEC_NUM_ADDDEC_POS: ST #1,DEC_DATA_CURR;存储测定的结果DEC_NUM_ADD: /修改后的程序 ADDM #1,DEC_NUM LD DEC_NUM,A SUB #DEC_PASS_NUMN,A BC DEC_CMMP,ALT;判断DEC_NUM=3,小于3则跳转到DEC_CMMP ;BC DEC_CMMP,AEQ;判断DEC_NU

26、M = 3;DEC_CMMP: LD DEC_DATA_CURR,A;DEC_NUM = 3,判断DATA_CURR=DEC_DATA_BE? SUB DEC_DATA_CE,A BC DEC_NOPPASS,ANEQ* MVKD DEC_DATA_CURR,*AR1+;存储判决后的数据 * ST #0,DEC_NUM_X ST #1,DEC_DONE B DEC_END *DEC_CMMP: LD DEC_NUM,A SUB #DEC_PASS_NUM,A BC DEC_BE_CURR,ALT;判断DEC_NUM=2,小于2则跳转到DEC_BE_CURR ;BC DEC_CMP,AEQ;判断

27、DEC_NUM = 2;DEC_CMP: LD DEC_DATA_CURR,A;DEC_NUM = 2,判断DATA_CURR=DEC_DATA_BE? SUB DEC_DATA_BE,A BC DEC_NOPASS,ANEQ* B DEC_CE_CURR *DEC_NUM_DONE=1,表示一次判决已结束,开始计数10次 DEC_BYPASS: ADDM #1,DEC_NUM_X;DEC_NUM_DONE=1 LD DEC_NUM_X,A SUB #DEC_BYPASS_NUM,A BC DEC_END,ANEQ ST #0,DEC_NUM ;ST #0,DEC_NUM_X ST #0,DE

28、C_DONE B DEC_END * DEC_NOPASS: ST #1,DEC_NUM;DEC_NUM=1*DEC_BE_CURR: LD DEC_DATA_CURR,A STL A,DEC_DATA_BE B DEC_END*DEC_NOPPASS: ST #1,DEC_NUM;DEC_NUM=1*DEC_CE_CURR: LD DEC_DATA_BE,A STL A,DEC_DATA_CE B DEC_END*DEC_END:*MAR*+AR2%;修正AR2,指向新缓冲区最老的数据MAR*AR3+%;修正AR3,指向老缓冲区最老的数据MVDD*AR2,*AR3+0%;新缓冲区向老缓冲区传送一个数;MVDD*AR5+,*AR2HHend:BHHend.end4、 调试结果加了码元判决后的仿真测试结果,由图可以看到在有效数据01001011011前面加了噪声后,经过判决程序,依然可以将原来的数据找出来。关键是需要设置相应判决的阈值需要根据具体的电路和采样数据来更改相应的值。这里使用4000H作为判决阈值,当采样点取绝对值后的值连大两次的时候判断有一个码元出现。五、收获和心得体会.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!