2FSK调制解调器的设计
四、 程序设计、调试与结果分析
1. 参数定义说明
float _COSX; #define x 12 #define N 40*x float _sinx[N]; Int16 sdata[N]; Int16 rdata[N]; Int16 rdata1[N]; Int16 sourData[N]={0}; Int16 outData[N]={0}; num=40*m; int i,k,num,m=0,b=0; char q; float B; int n,p=20; int a[x]; int r[x]; //误码率 //延迟点数 p //输入数据 //判决后再生数据
二、 设计内容
1.掌握 CCS 的安装、设置,工程的建立、打开以及编译运行和调试方法。 2.编写 C 语言程序实现设计要求,并在 CCS 集成开发环境下调试通过,实现设 计所要求的各项功能。 3.按要求撰写课程设计报告。
三、 设计原理、算法原理说明 1、调制器设计
对于 2FSK,调制就是把输入数字序列变成适合于信道传输的正弦波。产生 正弦波有差分迭代法、泰勒级数法、查表法等多种方法。查表法虽然要占用较多 的存储空间,但速度快,实时性好,特别适用于通信载波的生成。但是查表法对 于后期解调来说稍微困难, 因此我们用计算法 (差分迭代) 产生不同频率正弦波。 产生一个 40 点的正弦表,通过设计 CODEC 的采样率为 48KHz,既可以产 生 1200Hz 的波形,同理,产生 20 个点的正弦表,就可以产生 2400Hz 的波形。
3
北 京 交 通 大 学 DSP 课 程 设 计 报 告
所以,S(n)和 S(n—k)相乘后产生一倍频项和一常数项。若使乘法器的输出信号 V(n)通过低通滤波器,可滤除上式中的倍频分量,得到常数项:
为了区别两种不同的频率,降低误码率,K 的选择是关键,该值应使:
差值最大。经计算,得出当 K 的值是 4 的倍数的时候,可以获得 d(k)的最大值。
DSP 系 统 课 程 设 计
——2FSK 调制解调器的设计
学
院:
电子信息工程学院 赵伟杰 孙李年 12274056 12213080
同组成员:
指导教师: 日 期:
钱 满 义 2015 年 6 月 10 日
北 京 交 通 大 学 DSP 课 程 设 计 报 告
目
录
一、 设计任务书 ................................................................................. 2 二、 设计内容 ..................................................................................... 2 三、 设计原理、算法原理说明 .......................................................... 2 1、调制器设计 ....................................................................................... 2 2、解调器设计 ....................................................................................... 3 四、 程序设计、调试与结果分析 ...................................................... 4 1. 参数定义说明 ..................................................................... 4 2. 键盘输入数据 ..................................................................... 5 3. 调制 .................................................................................... 5 4. 延时、相乘......................................................................... 6 5. 信号输出与接收 ................................................................. 6 6.低通滤波 .............................................................................. 7 7. 抽样判决再生 ..................................................................... 8 8. 计算误码率......................................................................... 8 9. 改变波特率......................................................................... 8 五、在 view 下的 graphical display 波形 ............................................... 9 1 下载并运行........................................................................... 9 2 图形显示(1200baud) ..................................................... 10 3 图形显示(2400baud) ..................................................... 13 五、 设计(安装)与调试的体会 .................................................... 14 六、参考文献 ....................................................................................... 15
图 差分检波解调原理图
差分检波法的算法思想: 经过带通滤波器的信号 S(n)与延时 k 个采样点的样 值 s(n—k)相乘, 通过低通滤波器滤去高频分量, 得到一个常数项, 从而实现 2FSK 的解调。 设经过 2FSK 数字调制得到信号样值 x(n),经接收带通滤波器输出信号采样 值 S(n):
其中 A 为载波幅度, TS 为采样周期。S(n)被分为两路,一路直接送到乘法器, 另一路经延时 k(k 要小于每个二进制码元周期的采样点数,使 S(n)与 S(n-k)属于 同一个二进制码元的采样值)个时间片得到 S(n-k)后送人乘法器。S(n)和 S(n-k)相 乘后的输出样值:
4
//计算参数 //比特数 //总的点数 //存放 sin 数据,浮点型
#pragma DATA_SECTION(_sinx,"data_out1"); //发送数据 //接收延迟数据 //相乘结果 //接收数据 //实际点数
北 京 交 通 大 学 DSP 课 程 设 计 报 告
2. 键盘输入数据
2
北 京 交 通 大 学 DSP 课 程 设 计 报 告
图 连续相位的二进制频移键控(2FSK)信号波形图
2、解调器设计
2FSK 信号的数字解调采用如下图所示这种简单、占用存储空间小的 2FSK 信号差分检波解调算法。 它是模拟信号解调电路用到的差分检波原理在 2FSK 信 号数字解调中的具体实现。
//函数初始值的第一个数
//函数初始值的第一个数
_sinx[i]=2*_COSX*_sinx[i-1]-_sinx[i-2]; sdata[i]=_sinx[i]*128; }
4. 延时、相乘
前面已经计算过要延时 20 个采样点,将延时之后的数据放入 rdata 中,再与 接收的没有延时的数据相乘,结果放于 rdata1 中。 for(n=0;n<num-20;n++) rdata[n]=outData[p++]; for(p=0;p<20;p++) rdata[n++]=outData[p]; for(i=0;i<num-1;i++) { rdata1[i]=rdata[i]*outData[i]; }
5. 信号输出与接收
1
北 京 交 通 大 学 DSP 课 程 设 计 报 告
一、 设计任务书
频移键控 FSK(Frequency Shift Key)是数据通信中常用的一种数字调制方式。 由于 FSK 系统受幅度非线性的影响小,且容易用软件来实现,所以 FSK 在中低 速数据通信系统(如电力载波通信系统)中得到了广泛地应用。用 DSP 设计实现 2FSK,可以简化 2FSK 调制解调器系统的硬件电路,提高系统的可靠性与灵活 性。 基本部分:使用 DSP 设计 2FSK 调制解调器,波特率为 1200Baud,发送“1” 时载波频率为 F1 =1200Hz,发送“0”时载波频率为 F2=2400Hz。输入数字信号序 列如“00110010110000101001”由计算机键盘输入,2FSK 解调结果在 CCS 输出窗 口进行显示。 发挥部分:实时显示数据传输误码率。并修改载波频率 F1 和 F2 等程序相关 内容将通信波特率提高到 2400 Baud。
2]
其中: a 2 f 0 / f s 为角度的计算步长。f0 是正弦信号的频率,fS 是 D/A 转 换速率。 设计中,我们用 48KHz 的采样频率,分别计算 20 和 40 个点,就可以得到 2.4KHz 和 1.2KHz 的正弦波。当输入为 1 时,a=2π1.2KHz/48KHz=π/20, cos(a)=cos(π/20)= 0.9876883406; y(0)=0,y(1)=sin(2π/40)= 0.156434465; 同理,当输入为 0 时,a=2π2.4KHz/48KHz=π/10, cos(a)=cos(π/10)=0.95105651, y(0)=0,y(1)=sin(2π/20)= 0.3090169944 。 利用递推公式,可以得出调制波形。对不同的频率设置不同的初始值,通过判断 数据是 0 还是 1 来进行选择。 直接计算出来的是-1 到 1 之间的浮点数, 放于_sinx 中,要将其转化成整型,放于 sdata 中。 for(k=0;k<m;k++) { if (a[k]==0) { // 20 个点 _COSX=0.9510565163; /*将函数的前两个值进行初始化,便于下面的递推计算*/