FSK通信系统课程设计
一、 目的
通过本课程设计使学生深入理解和掌握FSK通讯系统的各个关键环节,包括基带信号形成、调试、解调、滤波、传输、噪声对通信质量的影响等。在数字信号处理实验课的基础上更加深入地掌握数字滤波器的设计原理及实现方法。使学生对FSK系统各个关键点的信号波形及频谱有深刻的认识。
二、 意义
通讯技术的发展日新月异,本专业的学生不但需要掌握扎实的基础理论,而且还应该特别注意实践能力的培养。本次设计是对学生综合能力的检验,它涉及三门主干课程,包括《通信原理》、《数字信号处理》、《C语言程序设计》。通过本次设计对学生的综合运用专业基础知识及软件设计能力也会有较大的提高。
三、 设计内容
本次设计的主要内容是用软件模拟FSK系统。原理如下所示:
基带信号LPF信道噪声cos(2πfct)基带信号抽样判决LPFBPF 基带信号采用双极性二元码。基带信号经过低通滤波后再与载波相乘进行调制,经过调制后的信号送入信道传输,在传输过程中,有用信号会受到各种信道噪声影响,我们用白噪声模拟信道噪声。在接收端先经过通带滤波器提取信号,再采用相干解调和抽样判决恢复基带信号。
四、 设计要求
a) 基带信号由本人学号的最低四位生成,每位学号用4位二进制表示,共16位。如
学号为98042099,最低四位为2099,其相应的基带信号为:0010000010011001,用双极性二元码表示为:
-1-11-1-1-1-1-11-1-111-1-11。基带信号的码元宽度T=1/200s,载波频率fc为1000hz和2000hz。
b) BPF及LPF均采用有限长滤波器,用频率采样法或窗函数法设计,滤波器的阶数可
选63、、127、128。LPF及BPF的特性如下图:
0
10.5100200300(hz)10.51000110012001300(hz)
c) 滤波在时域中用卷积实现。
d) 用C语言或matlab语言实现整个系统,并在屏幕上绘出各点的时域及频域图。 e) 实验不同的噪声强度对系统的影响。
五、 设计步骤
a) b) c) d)
设计滤波器。 绘软件流程图。 软件设计。 软件调试。
六、 程序流程
a) 设计LPF、BPF,得到它们的单位冲激响应h1(n)及h2(n)。画出它们的时域图及频率
特性。
b) 由学号的最低四位产生相应的基带信号,以fs对基带信号进行抽样,每个码元用fsT
个采样点表示,产生离散的基带信号s(n),画出s(n)的时域图及频谱。 c) 基带信号进行低通滤波,滤波后的信号b(n)=s(n)*h1(n)。画出b(n)的时域图及频谱。
注意:滤波后信号的长度为N+M-1,M为输入信号的长度,N为滤波器的长度,为了消除滤波器延时特性的影响,可以去掉滤波后的序列的前(N-1)/2点和最后的(N-1)/2点,这样滤波后的序列长度仍然为M。后面的滤波也照此处理。
d) 对b(n)进行调制得到c(n),c(n)=b(n)cos(2πfcn/fs),fs为抽样频率。画出c(n)的时域
图及频谱。
e) 对b(n)叠加白噪声得到d(n),d(n)=c(n)+N(n),N(n)为白噪声。画出d(n)的时域图及
频谱。
f) 对d(n)进行带通滤波得到e(n),e(n)=d(n)*h2,画出e(n)的时域图及频谱。
g) 对e(n)进行相干解调得到f(n),f(n)=e(n)cos(2πfcn/fs),画出f(n)的时域图及频谱。 h) 对f(n)进行低通滤波,滤波后的信号g(n)=f(n)*h1(n)。画出g(n)的时域图及频谱。 i) 对g(n)进行判决得到基带信号s1(n),画出s1(n)的时域图并且与s(n)作比较。
七、 源程序
1
八、 附加题
a) 改变滤波器带宽,观察各个点的信号波形有何变化,从理论上解释观察到的现象。
为了避免码元干扰,滤波器应该具有什么特性?
b) 噪声强度多大时有误判决?与理论推导的结果比较。 c) 不同的抽样频率fs对系统有何影响?
d) 滤波器采用不同的阶数对系统有何影响? e) 用窗函数法设计滤波器,采用不同的抽样位置对系统的性能有何影响?如何确定最
佳抽样位置?
f) 在判决前要进行抽样,不同的抽样位置对系统的性能有何影响?如何确定最佳抽样
位置?
g) 考察加上纠错编码(如汉明码、BCH码)后对通讯可靠性有什么影响? h) 选用不同的基带波形(如三角波、升余弦波)对系统有何影响? i) 如果把2ASK改为4ASK(即基带信号用4进制表示),程序应该如何修改?判决规
则是什么?结构如何?
%绘制基带信号0806 S=ones(1,200);
T=[-S,-S,-S,-S, -S,S,S,S S,-S,-S,S, -S,S,-S,S]; Tf=abs(fft(T)); figure;
subplot(2,1,1);
plot(T);title('T(n)');%基带信号时域图像 axis([0 3200 -1.5 1.5]); subplot(2,1,2);
plot(Tf);title('T(f)');%基带信号频域图像 %LPF低通滤波器设计 N=127;
f1=100; f0=300; fc=1000; fs=8000;
w1=(2*f1)/fs; w0=(2*f0)/fs; wL=[0 w1 w0 1]; mL=[1 1 0 0]; h1=fir2(N,wL,mL);
[H1,f]=freqz(h1,1,1024,fs); figure;
subplot(2,1,1);
plot(h1);title('LPF:h1(n)'); subplot(2,1,2);
plot(f,abs(H1));title('H1(f)'); %设计带通滤波器(BPF) w0l=(2*(fc-f0))/fs; w1l=(2*(fc-f1))/fs;
2
w1r=(2*(fc+f1))/fs; w0r=(2*(fc+f0))/fs;
fB=[0 w0l w1l w1r w0r 1]; mB=[0 0 1 1 0 0]; h2=fir2(N,fB,mB);
[H2,f]=freqz(h2,1,1024,fs); figure;
subplot(2,1,1);
plot(h2);title('BPF:h2(n)'); subplot(2,1,2);
plot(f,abs(H2));title('H2(f)'); %基带信号进行低通滤波 b=conv(T,h1); Bf=abs(fft(b)); figure;
subplot(2,1,1); plot(b);title('b(n)'); subplot(2,1,2); plot(Bf);title('B(f)');
%用滤波后的信号对载波进行调制 n=0:3199;
wc=(2*pi*fc)/fs; %数字角频率(模拟角频率/抽样频率)y=cos(wc*n); Yf=abs(fft(y)); figure;
subplot(3,1,1);
plot(n,y);title('y=cos((2*pi*fc/fs)*n)'); subplot(3,1,2); plot(n,y);
axis([0 150 -1.5 1.5]); subplot(3,1,3); plot(Yf);title('Y(f)');
b2=b(63:3262);
c=b2.*y; figure;
subplot(2,1,1); plot(c);title('c(n)'); subplot(2,1,2); Cf=abs(fft(c));
plot(Cf);title('C(f)');
%向已调信号中加入白噪声 Noisy=1*rand(size(c)); d=c+Noisy;
3
figure;
subplot(2,1,1); plot(d);title('d(n)'); subplot(2,1,2); Df=abs(fft(d));
plot(Df);title('D(f)');
%加入白噪声后的信号通过带通滤波器 e=conv(d,h2); figure;
subplot(2,1,1); plot(e);title('e(n)'); subplot(2,1,2); Ef=abs(fft(e));
plot(Ef);title('E(f)'); axis([0 3300 0 600]);
%用相干法进行解调(y=cos(wc*n)) e2=e(63:3262); %e2=e(127:3326); n=0:3199;
f=e2.*y; figure;
subplot(2,1,1); plot(f);title('f(n)'); subplot(2,1,2); Hf=abs(fft(f));
plot(Hf);title('F(f)');
%解调后信号通过低通滤波器 g=conv(f,h1); g2=g(63:3262); %g2=g(127:3326); figure;
subplot(2,1,1);
plot(g2);title('g(n)'); subplot(2,1,2); Gf=abs(fft(g2)); plot(Gf);title('G(f)');
%判决恢复后的基带信号波形 for p=1:32 sum=0; for q=1:200
sum=sum+g2((p-1)*200+q); end
4
if sum>0 R(p)=1; else
R(p)=-1; end end
for i=1:32
if R(i)==1
for j=1:200
K((i-1)*200+j)=1; end else
for j=1:200
K((i-1)*200+j)=-1; end end end figure;
subplot(2,1,1); plot(R);
axis([0 32 -2.5 -2.5]); subplot(2,1,2);
plot(K); title('s1(n)'); axis([0 3200 -2.5 -2.5]);
5
6
7
8
9
10
1.绘制基带信号0795 S=ones(1,200);
T=[-S,-S,-S,-S, -S,S,S,S S,-S,-S,S, -S,S,-S,S]; Tf=abs(fft(T)); figure;
subplot(2,1,1);
plot(T);title('基带信号时域波形'); axis([0 3200 -1.5 1.5]); subplot(2,1,2);
plot(Tf); title('基带信号频域波形'); axis([-50,3250,0,1600]);
2.低通滤波 fs1=3150;
wp=100*2*pi/fs1; ws=300*2*pi/fs1; wd=ws-wp;
N=ceil(8*pi/wd); wn=(ws+wp)/2;
b1=fir1(N,wn/pi,hamming (N+1)); figure(2);
11
subplot(2,1,1); freqz(b1,1,1024);
title('低通滤波器的数字频率相应'); subplot(2,1,2); stem(b1,'.');
axis([0,65,-0.05,0.15]);
title('低通滤波器的单位冲击相应');
3.基带信号经过低通滤波后的时域频域图 figure(3);
T1=conv(T,b1); T2=T1(32:3231); subplot(2,1,1); plot(T2);
title('经过低通滤波器后的时域波形'); subplot(2,1,2); plot(abs(fft(T2)));
axis([-55,3255,0,1520]);
title('经过低通滤波器后的频域波形');
12
4.载波调制 n=0:3199;
carrier=cos(2*pi*0.05*n); T3=T2.*carrier; figure(4);
subplot(2,1,1); plot(T3);
axis([0,3200,-1.5,1.5]); title('调制后的时域波形'); subplot(2,1,2); plot(abs(fft(T3))); axis([0,3220,0,700]);
title('调制后的频域波形');
13
5.加噪声
T4=T3+0.3*randn(1,3200); figure(5);
subplot(2,1,1); plot(T4);
title('加噪声后的时域波形'); subplot(2,1,2); plot(abs(fft(T4))); title('噪声后的频域波形');
14
6.带通滤波 fs2=20000;
wp=[2*800/fs2 2*1200/fs2]; M=127;
b2=fir1(2*M,wp); figure(6);
subplot(2,1,1); freqz(b2,1,1024);
title('带通滤波器的数字频率相应'); subplot(2,1,2); stem(b2,'.')
axis([0 280 -0.06 0.06])
title('带通滤波器的时域相应'); T5=conv(T4,b2); T6=T5(128:3327); figure(7)
subplot(2,1,1); plot(T6);
title('通过带通滤波器后的时域波形'); subplot(2,1,2);
15
plot(abs(fft(T6)));
title('通过带通滤波器后的频域波形');
16
7.解调
T7=T6.*carrier; figure(8);
subplot(2,1,1); plot(T7);
title('解调后的时域波形'); subplot(2,1,2); plot(abs(fft(T7)));
axis([-553255 -20 360]) title('解调后的频域波形');
8.再次经过低通滤波 T8=filter(b1,1,T7); figure(9); subplot(2,1,1); plot(T8);
title('再经过低通滤波器后的时域波形'); subplot(2,1,2); plot(abs(fft(T8)));
axis([-553250 -20 360])
17
title('再经过低通滤波器后的频域波形');
9.判决、信号恢复 for p=1:16 sum=0; for q=1:200
sum=sum+T8((p-1)*200+q); end if sum>0 R(p)=1; else
R(p)=-1; end end
figure(10); subplot(2,1,1); stem(R,'.');
axis([118 -1.5 1.5]);
title('抽样判决后的时域波形'); subplot(2,1,2);
18
stem(abs(fft(R)),'*'); axis([1 18 1 8]);
title('抽样判决后的频域波形'); for i=1:16
if R(i)==1;
for j=1:200
Y((i-1)*200+j)=1; end else
for j=1:200
Y((i-1)*200+j)=-1; end end end
figure(11); subplot(2,1,1); plot(Y);
axis([-10 3250 -1.5 1.5]);
title('信号还原后的时域波形'); subplot(2,1,2); plot(abs(fft(Y)));
axis([-553255 -10 1655]); title('信号还原后的频域波形');
19
20
a) 改变滤波器带宽,观察各个点的信号波形有何变化,从理论上解释观察到的现象。
为了避免码元干扰,滤波器应该具有什么特性?
b) 噪声强度多大时有误判决?与理论推导的结果比较。 c) 不同的抽样频率fs对系统有何影响?
d) 滤波器采用不同的阶数对系统有何影响? e) 用窗函数法设计滤波器,采用不同的抽样位置对系统的性能有何影响?如何确定最
佳抽样位置?
f) 在判决前要进行抽样,不同的抽样位置对系统的性能有何影响?如何确定最佳抽样
位置?
g) 考察加上纠错编码(如汉明码、BCH码)后对通讯可靠性有什么影响? h) 选用不同的基带波形(如三角波、升余弦波)对系统有何影响? i) 如果把2ASK改为4ASK(即基带信号用4进制表示),程序应该如何修改?判决规
则是什么?结构如何?
(1)
答: BCH码、网格码已被广泛地应用于移动通信、卫星通信和频带数据传输中。RS码也被广泛应用于光盘的存储中。大多数纠错码是设计来纠随机误码的,可以通过交织的方法使它适用于对突发误码的纠错。交织是一种使得集中出现的突发误码在解码时进行分散化的措施,从而使其不超出纠错码的纠错能力范围。
(2)不同的抽样频率fs对系统有何影响?
答:抽样定理指出,由样值序列无失真恢复原信号的条件是f S≥2 f h ,为了满足抽样定理,要求模拟信号的频谱在0~f h之内(fh为模拟信号的最高频率)。为此,在抽样之前,先设置一个前置低通滤波器,将模拟信号的带宽在fh以下,如果前置低通滤波器特性不良或者抽样频率过低都会产生折叠噪声。
21