以香农编码为信源编码、(7,4)循环码为信道编码的2FSK信号的调制解调

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

1 课程设计目的 (1)

2 课程设计正文 (1)

2.1 调制原理 (1)

2.2 解调原理 (3)

2.3 程序分析 (3)

3 课程设计总结 (9)

4 参考文献 (9)

1 课程设计目的

通过我们对这次CDIO二级项目的学习和理解,综合运用课本中所学到的理论知识完成一个以香农编码为信源编码、(7,4)循环码为信道编码的2FSK信号调制解调的课程设计。以及锻炼我们查阅资料、方案比较、团结合作的能力。学会了运用MA TLAB编程来实现2FSK调制解调过程,并且输出其调制及解调过程中的波形,并且讨论了其调制和解调效果,增强了我们的动手能力,为以后学习和工作打下了基础。

2 课程设计正文

本次课程设计我们所做的课题是一个以香农编码为信源编码、(7,4)循环码为信道编码的2FSK信号调制解调的CDIO项目,这就要求我们需要完成信源编码、信道编码、信号的调制解调以及误码率分析等问题。

图1 数字通信系统模型

数字信号的传输方式分为基带传输和带通传输,在实际应用中,大多数信道具有带通特性而不能直接传输基带信号。为了使数字信号在带通信道中传输,必须使用数字基带信号对载波进行调制,以使信号与信道的特性相匹配。这种用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数字调制。

2.1 调制原理

用基带信号

)(t

f对高频载波的瞬时频率进行控制的调制方式叫做调频,在数字调制

系统中则称为频移键控(FSK)。频移键控在数字通信中是使用较早的一种调制方式,这种方式实现起来比较容易,抗干扰和抗衰落的性能也较强。其缺点是占用频带较宽,频带利用串不够高,因此,额移键控主要应用于低、中速数据的传输,以及衰落信道与频带较宽

的信道。

频移键控是利用载波的频率变化来传递数字信息。在2FSK 中,载波的频率随二进制基带信号在1f 和2f 两个频率点间变化。故其表达式为:

假设二进制序列s (t )为l01001时,则2FSK 信号的波形如图2.1.2所示

图2 2FSK 信号的波形

从图中可以看出,一个2FSK 信号可以看成是两个不同载频的2ASK 信号的叠加。因此,2FSK 信号的时域表达式又可写成

式中:g(t)为单个矩形脉冲,脉宽为

s T ;

x a 是x a 的反码,若x a =1,则x a =0;若x a =0,则x a =1,于是

n ϕ和n θ分别是第n 个信号码元的初相位。在移频键控中,n ϕ和n θ不携带信息,通常可令和为零。

2.2 解调原理

数字调频信号的解调方法很多,如相干检测法、包络检波法、过零检测法、差分检测法等。过零检测法较其他三种分析方法更简单,下面我们以过零检测法为例来解释一下解调原理。

单位时间内信号经过零点的次数多少,可以用来衡量频率的高低。数字调频波的过零点数随不同载频而异,故检出过零点数可以得到关于频率的差异,这就是过零检测法的基本思想。过零检测法方框图及各点波形如图2.2.4所示。在图中,2FSK信号经限幅、微分、整流后形成与频率变化相对应的尖脉冲序列,这些尖脉冲的密集程度反映了信号的频率高低,尖脉冲的个数就是信号过零点数。把这些尖脉冲变换成较宽的矩形脉冲,以增大其直流分量,该直流分量的大小和信号频率的高低成正比。然后经低通滤波器取出此直流分量,这样就完成了频率——幅度变换,从而根据直流分量幅度上的区别还原出数字信号“1”和“0”。

图3 过零检测法方框图及各点波形图

2.3 程序分析

2.3.1香农编码实现程序

%求解给定信源符号概率的香农编码

n=input('输入信源符号个数n=');

p=zeros(1,n);

for i=1:n

p(1,i)=input('输入信源符号概率:');

end

if sum(p)~=1

error('输入概率不符合概率分布')

end

y=fliplr(sort(p)); %从大到小的排序

D=zeros(n,4); %生成7*4的零矩阵

D(:,1)=y; %把y赋给零矩阵D的第一列

for i=2:n

D(1,2)=0;%令第一行第二列的元素为0

D(i,2)=D(i-1,1)+D(i-1,2);%第二列其余的元素用此式求得,即为累加概率

end

for i=1:n

D(i,3)=-log2(D(i,1));%求第三列的元素

D(i,4)=ceil(D(i,3));%求第四列的元素,对D(i,3)向无穷方向取最小正整数 end

A=D(:,2); %取出D中第二列元素

B=D(:,4); %取出D中第四列元素

for j=1:n

C=shancode(A(j),B(j))%自定义编码函数

End

定义编码函数:

function C=shancode(A,B) %定义对累加概率求二进制的函数

C=zeros(1,B); %生成零矩阵用于存储生成的二进制数,对二进制的每一位进行操作temp=A; %temp赋初值

for i=1:B %累加概率转化为二进制,循环求二进制的每一位,A控制生成二进制的位数

temp=temp*2;

if temp>1

temp=temp-1;

C(1,i)=1;

else

C(1,i)=0;

end

end

2.3.2循环码编码

(7,4)循环码为一组码长为7位二进制数,其中4位信息位,3位由信息经运算产生的监督码,自定义一个生成矩阵或监督矩阵利用循环码编码原理编辑程序如下。

function [ ] = coding( a )

%(7,4)循环码编码程序%

a=input('输入信息元序列(请按格式输入,如[0 1 0 1]):');

n = 7; k = 4;

G = [1 0 1 1 ];

stage = [0 0 0]; %寄存器初始化%

for i=1:k

temp=a(i);

s_stage=stage;

stage(1)=xor(temp,s_stage(3));

stage(3)=s_stage(2);

stage(2)=xor(s_stage(1),stage(1));

temp

stage

end

%多项式除法运算,stage中存储寄存器的值,s_stage为stage上次时序中存储的数

相关文档
最新文档