数字基带传输实验实验报告

  • 格式:doc
  • 大小:981.50 KB
  • 文档页数:25

实验一 数字基带传输实验

一、实验目的

1、提高独立学习的能力;

2、培养发现问题、解决问题和分析问题的能力;

3、学习Matlab 的使用;

4、掌握基带数字传输系统的仿真方法;

5、熟悉基带传输系统的基本结构;

6、掌握带限信道的仿真以及性能分析;

7、 通过观测眼图和星座图判断信号的传输质量。

二、实验原理

1.数字通信系统模型

2.数字基带系统模型

图中各方框功能简述如下:

信道:是允许基带信号通过的媒质,通常会引起传输波形的失真并且引入噪声,实验中假设为均值为零的高斯白噪声。 数字通信系统模型

信源 信 源

编码器 信道

编码器 数字

调制器

数字

解调器 信道

译码器 信 源

译码器 信宿 信道 噪声 数字信源

数字信宿 编码信道 发送滤波器:用于产生适合信道传输的基带信号波形,若采用匹配滤波器,则它与接收滤波器共同决定传输系统的特性。

接收滤波器:用来接收信号,尽可能滤除信道噪声和其他干扰,使输出波形有利于抽样判决。若采用非匹配滤波器,则接收滤波器为直通,不影响系统特性。

抽样判决器:在传输特性不理想及噪声背景下,在规定时刻对接收滤波器的输出波形进行抽样判决以恢复或再生基带信号。

位定时提取:用来位定时脉冲依靠同步提取电路从接收信号中提取,其准确与否直接影响判决结果。

传输物理过程简述如下: 假设输入符号序列为,在二进制的情况下,符号的取值为0,1或-1,+1。为方便分析,我们把这个序列对应的基带信号表示成

这个信号是由时间间隔为Tb的单位冲激响应构成的序列,其每一个强度则由决定。 离散域发送信号——A,比特周期,二进制码元周期

设发送滤波器的传输特性 或 则 当激励发送滤波器时,发送滤波器产生的输出信号为 ==

离散域发送滤波器输出:==

信道输出信号 (信道特性为1) 离散域信道输出信号或接收滤波器输入信号——

或 或

则接收滤波器的输出信号 = = 其中

离散域接收滤波器的输出信号

= =

其中g()=

如果位同步理想,则抽样时刻为

抽样点数值为

判决为 比较即可得到误码率,分析传输质量。

3. 升余弦滚降滤波器

]

(2) TfTTfTfTTTfTfH2)1(||2)1(,2)1(||,0)21|(|cos122)1(||,)(222/41/cos//sin)(TtTtTtTtth

4.最佳基带系统

要求接受滤波器的频率特性与发送信号频谱共轭匹配。由于最佳基带系统的总特性是确定的,故最佳基带系统的设计归结为发送滤波器和接受滤波器特性的选择。

设信道特性理想,则有

(延时为0)

可选择滤波器长度使其具有线性相位。

如果基带系统为升余弦特性,则发送和接收滤波器为平方根升余弦特性。

三、实验内容

1. 信源模块

function [ x,y ]=source( L,A)%产生源序列,生成0、1等概率分布的二进制信源序列

A=4;%每个间隔抽取4个点

a=rand(1,L);%产生0-1之间均匀分布的随机序列

for i=1:L

if (a(i)>0.5) %若产生的随机数在(0.5,1)区间内,则为1

a(i)=1;

else

a(i)=-1;%若产生的随机数在(0,0.5)区间内,则为-1

end

end d=zeros(1,length(a)*A);%产生零序列

for i=1:length(a)

d(1+A*(i-1))=a(i);%每两点之间插入三个零点,即模拟每周期取四个取样点

x=a;

y=d;

end

2. 匹配滤波器模块

function [ht,Hrf,n,f]=matched_filter(Ts,F0,N,alpha)

%匹配滤波器模块,由频域到时域

n=[-(N-1)/2:(N-1)/2];%时域取值范围为-15--15

f1=(1-alpha)/(2*Ts);

f2=(1+alpha)/(2*Ts);

k=n;

f=n*F0/N;%频域

Hf=zeros(1,N); %升余弦滚降滤波器

for i=1:31 %升余弦滚降滤波器频域特性

if (abs(f(i))<=f1)

Hf(i)=Ts;

elseif(abs(f(i))<=f2)

Hf(i)=Ts/2*(1+cos(pi*Ts/alpha*(abs(f(i))-(1-alpha)/(2*Ts))));

else Hf(i)=0;

end

end

Hrf=sqrt(Hf);%根升余弦滚降滤波器

ht=1/N*Hrf*exp(j*2*pi/N*k'*n); %根升余弦滚降滤波器时域特性

end

3. 非匹配滤波器模块

function [ht1,Hf,n,f]=unmatched_filter(Ts,T0,N,alpha)

%非匹配滤波器模块,由频域到时域。

F0=1/T0;

n=[-(N-1)/2:(N-1)/2]; f1=(1-alpha)/(2*Ts);

f2=(1+alpha)/(2*Ts);

n=[-(N-1)/2:(N-1)/2];

k=n;

f=n*F0/N;

Hf=zeros(1,N); %升余弦滚降滤波器

for i=1:31 %升余弦滚降滤波器频域特性

if (abs(f(i))<=f1)

Hf(i)=Ts;

elseif(abs(f(i))<=f2)

Hf(i)= Ts/2*(1+cos(pi*Ts/alpha*(abs(f(i))-(1-alpha)/(2*Ts))));

else Hf(i)=0;

end

end ht1=1/N*Hf*exp(j*2*pi/N*k'*n); %升余弦滚降滤波器时域特性

end

4. 加性白噪声信道模块

function n0=guass(SNR,y,L,A)%生成高斯白噪声

Eb=0; %初始能量赋值

for i=1:length(y) %计算能量总和

Eb=Eb+abs(y(i))*abs(y(i));

end

Eb=Eb/L; %计算平均比特能量

N0=Eb/(10^(SNR/10)); %计算单边功率谱密度

sgma=sqrt(N0/2);%标准差

n0=0+sgma*randn(1,L*A); %得到均值为0,方差为N0的高斯噪声

end

5. 误码率模块

function j=BER(a,b,L)

j=0;

for i=1:L

if a(i)~=b(i)%与发送序列进行比较

j=j+1;

end

end

6. 抽样判决模块

function[sample,sample1]=samples(L,A,r)

sample=zeros(1,L);%判决后输出序列

sample1=zeros(1,L);%直接抽样序列

m=1:L;

for i=1:L

sample1(i)=real(r(1+(i-1)*A)); %取出n*Tb+1位置上的L个值

end

for i=1:L

if sample1(i)>0%若抽样值为正,判为1

sample(i)=1;

else sample(i)=-1; %若抽样值为负,判为-1

end

end

end

7.主函数 匹配滤波器

clear;

clc;

L=input('传送比特个数L=');%使输入值可变

Rb=input('比特速率=');

A=4;

Ts=1/Rb;

T0=Ts/A; F0=1/T0;

N=31;

SNR=input('信噪比SNR=');

alpha=input('滚降系数alpha=');

%信源模块

[ a,d ]=source( L,A)

m1=1:L;

figure(1);

subplot(2,1,1);

stem(m1,a);%输入序列

m2=1:L*A;

subplot(2,1,2);

stem(m2,d);%输出序列

%发送滤波器

[ht,Hrf,n,f]=matched_filter(Ts,F0,N,alpha)

figure(2);

subplot(2,1,1),stem(f,Hrf);%频域画图

title('匹配滤波器频域');

subplot(2,1,2),stem(n,ht);%时域画图

title('匹配滤波器时域');

y=conv(d,ht); %发送滤波器输出

y=y(1+floor(N/2):L*F0/Rb+floor(N/2));

figure(3) %观察发送滤波器输出波形

t=1:L*A;

subplot(3,2,1),plot(t,real(y));

title('匹配发送滤波器输出')

%高斯噪声

n0=guass(SNR,y,L,A);

subplot(3,2,2),plot(t,n0);

title('噪声图像')

y1=y+n0; %加入噪声后信号

subplot(3,2,3),plot(t,real(y1));

title('加入噪声后信号')

%接收滤波器

r=conv(y1,ht); %观察接收滤波器输出

r=r(1+ (N-1)/2:L*F0/Rb+(N-1)/2);

subplot(3,2,4),plot(t,real(r));

title('接收滤波器输出')

%抽样判决

[sample,sample1]=samples(L,A,r)

m=1:L;

subplot(3,2,5);stem(m,sample1);

title('抽样序列')

subplot(3,2,6);stem(m,sample);