哈工程通信原理软件仿真实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
哈尔滨工程大学教务处制实验一基带码型仿真
(一)单、双极性归零码仿真
一、实验原理
1.1归零码
归零码,是信号电平在一个码元之内都要恢复到零的编码方式,它包括曼彻斯特编码和差分
曼彻斯特编码两种编码方式。
1.2单、双极性归零码
对于传输数字信号来说,最常用的方法是用不同的电压电平来表示两个二进制数字,即数字
信号由矩形脉冲组成。
A)单极性不归零码,无电压表示”0”,恒定正电压表示” 1”,每个码元时间的中间点是采
样时间,判决门限为半幅电平。
单极性归零码(RZ)即是以高电平和零电平分别表示二进制码1和0,而且在发送码1时高电平在整个码元期间T只持续一段时间T其余时间返回零电平. 在单极性归零码中,T /T 称为占空比•单极性归零码的主要优点是可以直接提取同步信号,因此单极性归零码常常用
作其他码型提取同步信号时的过渡码型.也就是说其他适合信道传输但不能直接提取同步信
号的码型,可先变换为单极性归零码,然后再提取同步信号|
B)双极性不归零码,” 1”码和” 0”码都有电流,”1”为正电流,” 0”为负电流,正和负的幅度相等,判决门限为零电平。
双极性归零码是二进制码0和1分别对应于正和负电平的波形的编码,在每个码之间都有间隙产生.这种码既具有双极性特性,又具有归零的特性•双极性归零码的特点是:接收
端根据接收波形归于零电平就可以判决1比特的信息已接收完毕,然后准备下一比特信息
的接收,因此发送端不必按一定的周期发送信息.可以认为正负脉冲的前沿起了起动信号的作用,后沿起了终止信号的作用.因此可以经常保持正确的比特同步. 即收发之间无需特别
的定时,且各符号独立地构成起止方式,此方式也叫做自同步方式.由于这一特性,双极性归零码的应用十分广泛。
1.3功率谱密度
求信号的功率谱,功率谱=信号的频率的绝对平方/传输序列的持续时间,求得的
功率谱进行单位换算以dB值表示
1.4占空比(Duty Ratio)在电信领域中有如下含义:
例如:脉冲宽度1ys,信号周期4 s 的脉冲序列占空比为 0.25。
在一段连续工作时间内脉冲占用的时间与总时间的比值。
二、仿真方案
2.1程序流程图
22参数设计
分别设置占空比为 0.5、0.75、1.0 采样点数为2A k , k 取正整数 每码元采样点数为 64 码元速率为2Mb/s
U)
:世制松碍
n 〔门 KZ^Kft)
4
nr
(cl MHZ4M )
<n NKZisj
■I
II
Z -----------------------
定义占空比 定义其他变量
绘制图形
产生双极性归零 码并计算功率
3.实验程序
global dt t df N
close all k=14;
Rt=0.5; %占空比 N=2A k; %采样点数 L=64; %每码元的采样点数 M=N/L; %码元数
Rb=2;
%码速率为 2Mb/s
Ts=1/Rb; %码元间隔 dt=Ts/L; %时域采样间隔 df=1/(N*dt); %频域采样间隔 T=N*dt;
%截短时间
Bs=N*df/2;
%系统带宽 t=linspace(-T/2,T/2,N); %时域横坐标 f=linspace(-Bs,Bs,N); %频域横坐标
EP=zeros(1,N);
%产生M 个取值0 , 1等概的随机码
%产生一个 N 个元素的零序列
%产生单极性归零码
%傅氏变换
%P 为单极性归零码的功率 %累计平均 %加 eps 以避免除以零 subplot(2,2,2) plot(f,aa, 'r' )
title( ' 单极性归零码的功率谱 ' ) xlabel( 'f/MHZ' ) ylabel( 'Ps(f)/MHZ' ) axis([-15,+15,-50,50]) grid subplot(2,2,1) plot(t,s, 'g' )
title( ' 单极性归零码 ' ) xlabel( 't(ms)' )
for jj=1:100 a=round(rand(1,M)); s=zeros(1,N); for ii=1:Rt*Ts/dt s(ii+[0:M-1]*L)=a; end Q=t2f(s); P=Q.*conj(Q)/T; EP=(EP*(ii-1)+P)/ii;
aa=30+10*log10(EP+eps); end
ylabel( 's(t)(V)' ) axis([-5,5,-0.5,1.5]) grid for jj=1:100
s=zeros(1,N); for ii=1:Rt*Ts/dt s(ii+[0:M-1]*L)=a; end
%产生双极性归零码Q=t2f(s); P=Q.*conj(Q)/T; EP=(EP*(ii-1)+P)/ii; aa=30+10*log10(EP+eps); end
%付氏变换
%P 为双极性归零码的功率 %累计平均 %加 eps 以避
免除以零
subplot(2,2,4)
%set(2,'position',[10,50,750,350]) % plot(f,aa, 'r' ) title( ' 双极性归零码的功率 ' ) xlabel( 'f(MHZ)' )
ylabel( 'Ps(f)(MHZ)' ) axis([-15,+15,-50,50]) grid subplot(2,2,3) plot(t,s, 'g' ) title( ' 双极性归零码 ' ) xlabel( 't(ms)' ) ylabel( 's(t)(V)' ) axis([-5,5,-1.5,1.5]) grid
子程序 function X=t2f(x) global dt df N t f T %X=t2f(x)
°%X 与 x 长度相同,并为2的整幕。
%本函数需要一个全局变量
dt( 时域取样间隔 ) H=fft(x); X=[H(N/2+1:N),H(1:N/2)]*dt; end
a=round(rand(1,M)); a=1-2*a;
%产生M 个取值0 , 1等概的随机码
%产生一个 N 个元素的零序列 设定窗口位置及大小
单-做性心零码
t(ms)
迫极性归零码的功率谱
o
o
5
N
工
乏
&
访
50
J
5
収极件』T疇
创
t(ms)
图一占空比为0.5的波形
单极性UI寒码
O
ZHPVesd
t(ms) 取毁性归
零码
t(ms)
双极件归疼码的功率
f(MHZ}
N
工
乏
o
駐
50
-
J
单极性归零码的功率谱
「0 0 10 f/MHZ
双极性归零码的功率
o
o
5
N
工
壬
)
£
£
50
■
图二占空比为0.75的波形
单概性归零诃的功率谱
f(MHZJ
图三占空比为1.0的波形 (二) AMI 码和 HDB3码仿真 一、实验原理
1.1 AMI 码
1码通常称为传号,0码则叫空号,这是沿用了早期电报通信中的叫法。
从形态上看, 它已是三状态信
号,所以
AMI 码是伪三进制码。
(1) 编码规则: 消息代码中的0传输码中的0
消息代码中的1传输码中的+1、-1交替 例如:
消息代码:1 0 1 0 1 0 0 0 1 0 1 1 1
AMI 码:+1 0 -1 0 +1 0 0 0 -1 0 +1 -1 +1
(2) AMI 码的特点:
1由AMI 码确定的基带信号中正负脉冲交替,
而0电位保持不变;所以由AMI 码确定的
基带信号无直流分量,且只有很小的低频分量
;
t (ms )
収扱枠UI 寒側
50 -
5
o O 5
NH
t(ms) 1
(/>
1 1 0
-1
-10 0 10 f/MHZ
双极性归零码的功率
2在接收端不易提取定时信号,由于它可能出现长的连0串;
3具有检错能力,如果在整个传输过程中,因传号极性交替规律受到破坏而出现误码时,在接收端很容易发现这种错误。
(3 )解码规则
从收到的符号序列中将所有的-1变换成+1后,就可以得到原消息代码
1.2 HDB3 码
三阶高密度双极性码(英语:High Density Bipolar of Order 3 ,简称:HDB3码)是一
种适用于基带传输的编码方式,它是为了克服AMI码的缺点而出现的,具有能量分散,抗
破坏性强等特点。
三阶高密度双极性码用于所有层次的欧洲E-carrier系统,HDB3码将4个连续的“0位
元取代成“000V或“B00V。
这个做法可以确保连续的violations are of differing polarity ,即是相隔单数的一般B记号。
1先将消息代码变换成AMI码,若AMI码中连0的个数小于4,此时的AMI码就是HDB3 码;
2若AMI码中连0的个数大于3,则将每4个连0小段的第4个0变换成与前一个非0 符号(+1或-1)同极性的符号,用表示(+1 + ,-1-);
3为了不破坏极性交替反转,当相邻V符号之间有偶数个非0符号时,再将该小段的第1个0变换成+B或-B,符号的极性与前一非零符号的相反,并让后面的非零符号从符号开
始再交替变化。
例如:
消息代码:1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1
AMI 码:+1 0 0 0 0 -1 0 0 0 0 +1 -1 0 0 0 0 +1 -1
HDB3 码:+1 0 0 0 +V -1 0 0 0 -V +1 -1 +B 0 0 +V -1 +1
二、实验程序
global dt df t f N
close all
N=2A14; %采样点数
L=64; %每码元的采样点数
M=N/L; %码元数
Rb=2;
Ts=0.5; %码元宽度是0.5us
dt=Ts/L;
df=1/(N*dt); %MHz
RT=0.5; %占空比
T=N*dt ; %截短时间
Bs=N*df/2; %系统带宽
t=[-T/2+dt/2:dt:T/2]; %时域横坐标
f=[-Bs+df/2:df:Bs]; %频域横坐标
EPAMI=zeros(size(f)); EPHDB=zeros(size(f));
for ii=1:8 ami=zeros(1,M); hdb=zeros(1,M);
a=round(rand(1,M));
b=3; %表示0000 之间循环个数c=-1; %记载相邻V 之间的1 元素个数sign1=-1; %标志前一个信号sign2=-1; %标志前一个信号
for ii=1:M
if a(ii)==1 sign1=0-sign1;
ami(ii)=sign1;
end
end
for ii=1:M
if b==3 %表示非0000
if a(ii)==1 sign2=0-sign2;
hdb(ii)=sign2;
if c>=0 %表示不是第一个0000
c=c+1; %用来计算相邻v 之间的非0 元素个数
end elseif ii<=M-3 & a(ii)+a(ii+1)+a(ii+2)+a(ii+3)==0 if mod(c,2)==1 %000V hdb(ii+3)=sign2;
else %B00V sign2=0-sign2;
hdb(ii)=sign2; hdb(ii+3)=sign2;
end
c=0;
b=0;
end
elseif b<3 %对0000 的循环
b=b+1;
end
end
for i=[1:L]
ami1(i+[0:M-1]*L)=ami; hdb1(i+[0:M-1]*L)=hdb; end
AMI=t2f(ami1); PAMI=AMI.*conj(AMI)/T;
HDB=t2f(hdb1); PHDB=HDB.*conj(HDB)/T; EPAMI=(EPAMI*(ii-1)+PAMI)/ii; EPHDB=(EPHDB*(ii-
1)+PHDB)/ii;
%画出RNZ、AMI 、HDB3 码波形
figure(1) subplot(3,1,1) tt=[1:40];
stem(a(1:40)) axis([1,40,-1.5,1.5]) title( ' 原始RNZ 信号' ) subplot(3,1,2) stem(tt,ami(1:40)') title( 'AMI 码' ) subplot(3,1,3) stem(tt,hdb(1:40)) title( 'HDB3 码' )
%画出AMI 的功率谱密度图
figure(2)
subplot(2,2,1)
stem(tt,ami(1:40)', 'g' ) title( 'AMI 码' ) subplot(2,2,3)
stem(tt,hdb(1:40), 'g' ) title( 'HDB3 码' ) subplot(2,2,2)
aa=30+10*log10(EPAMI+eps);
%加eps以避免除以零bb=30+10*log10(EPHDB+eps); plot(f,aa, 'r');
grid
axis([-8,+8,-80,40])
xlabel( 'f/MHz' ) ylabel( 卩s(f)(dBm/MHz)'
title( 'AMI功率谱密度')
%画岀HDB3的功率谱密度图
subplot(2,2,4)
plot(f,bb, 'r');
grid
axis([-8,+8,-80,40])
xlabel( 'f/MHz' ) ylabel( 卩s(f)(dBm/MHz)'
title( 'HDB3功率谱密度')
end
氐始RNZfri号
/MHz
实验2:采用2DPSK 调制的数字通信系统
-、实验原理
1.1 2DPSK 信号原理
2DPSK 方式即是利用前后相邻码元的相对相位值去表示数字信息的一种方 式。
现假设用①表示本码兀初相与前一码兀初相之差, 并规定:①二0表示0码, ①二冗表示1码。
则数字信息序列与2DPSK 信号的码元相位关系可举例表示如 2PSK 信号是用载波的不同相位直接去表示相应的数字信号而得出的,在接收端 只能采用相干解调,它的时域波形图如图 2.1所示。
AMI 码
1 rO ~—O —一 V3 ----------- O O ◎~
40
AMIU 力率谱密座
NH
巨
EHP )£M
-1 0 3~(DO O 0—询 Q> ❻ i -80
0 10 20 30
40
40
5
0 5 0 -0.5
-1
HDB3M!
1 i O 0 Q Q H 0——0 Og
O
10
-80
N
工运
EHP)U
5
f/MHz
HDB 狄率谱密度
40 a
■
图1.1 2DPSK信号
在这种绝对移相方式中,发送端是采用某一个相位作为基准,所以在系统接收端也必须采用相同的基准相位。
如果基准相位发生变化,则在接收端回复的信号将与发送的数字信息完全相反。
所以在实际过程中一般不采用绝对移相方式,而采用相对移相方式。
定义为本码元初相与前一码元初相之差,假设:
一数字信息“ 0”;
一数字信息“1 ”。
则数字信息序列与2DPSK信号的码元相位关系可举例表示如下:
数字信息: 1 0 1 1 0 1 1 1 0 1
DPSK信号相位:
或:0
1.2 2DPSK信号的调制原理
图1.2.1模拟调制法
1.3 2DPSK信号解调的差分相干解调法
差分相干解调的原理是2DPSK言号先经过带通滤波器,去除调制信号频带以外的在信道中混入的噪声,此后该信号分为两路,一路延时一个码元的时间后与
另一路的信号相乘,再经过低通滤波器去除高频成分,得到包含基带信号的低频 信号,将其送入抽样判决器中进行抽样判决,抽样判决器的输出即为原基带信号。
它的原理框图如图1.3.2所示。
clear all close
all
、仿真方案
图1.3.2差分相干解调原理图
实验先生成12个随机码元,再由12个随机码元由汉明码编码成21个码元
fs=2000000; k=10000; fc=100000; t=0:1/fs:4000/fs; p=10000; s=randint(1,p,2); m=s(ceil(k*t+0.01));
figure(1) subplot(311) plot(t,m);
axis([0 10e-4 -0.2 1.2]); grid on;
title( ' 数字基带信号 b=randint(1,p,2);
for i=1:p if (i==1) if (s(i)==0) b(i)=0; else b(i)=1; end
%设定系统的抽样频率
%设定数字基带信号的频率 %设定正弦载波频率 %仿真时间范围
%设定需要产生的码元个数 %将基带生成时域信号
elseif (s(i)==b(i-1))b(i)=0; else b(i)=1;
end end
n=b(ceil(k*t+0.01)); subplot(312) plot(t,n); axis([0 10e-4 -0.2 1.2]); grid on;
title( ' 差分码 ' ) x=(n-0.5).*2 ; car=sin(2*pi*fc*t); dpsk=x.*car; subplot(313); plot(t,car); axis([0 10e-4 -1.2 1.2]); title( ' 正弦载波 ' ); figure(2) subplot(311); plot(t,dpsk);
axis([0 10e-4 -1.2 1.2]); title( '2DPSK 信号 ' ); grid on; vn=0.05;
noise=vn.*(randn(size(t))); subplot(312); plot(t,noise); grid on;
title( ' 噪音信号 ' ); axis([0 10e-4 -0.2 0.2]);
);
%将生成的基带转换为差分码
%通过模二加实现差分码的转换
%将差分码生成时域信号
%定义载波
%2dpsk 信号的载波调制 %产生噪音
dpskn=(dpsk+noise); %调制后加噪subplot(313);
plot(t,dpskn);
axis([0 10e-4 -1.2 1.2]);
title( ' 加噪后信号' ); grid on;
%带通滤波器fBW=40e3; f=[0:3e3:4e5];
w=2*pi*f/fs;
z=exp(w*j); BW=2*pi*fBW/fs; a=.8547;
p=(j A2*a A2); gai n=.135;
Hz=gai n*(z+1).*(z-1)./(z.A2-(p)); Hz(Hz==0)=10A(8); a=[1 0 0.7305]; b=[0.135 0 -0.135];
dait=filter(b,a,dpskn); dait=dait.*10;
figure(3) subplot(311);
plot(t,dait);
axis([0 10e-4 -1.2 1.2]);
title( ' 通过带通滤波后输出' ); grid on; cm=dpsk.*car;
%2dpsk 相干解调subplot(312); plot(t,cm);
axis([0 10e-4 -1.2 1.2]);
grid on;
title( ' 通过相乘器后输出' ); %低通滤波器
p=0.72; gain1=0.14;
Hz1=gain1*(z+1)./(z-(p));
a1=[1 -0.72]; b1=[0.14 0.14];
dit=filter(b1,a1,cm); dit=dit-mean(dit);
subplot(313);
plot(t,dit);
axis([0 10e-4 -1.2 1.2]);
title( ' 通过低通滤波器后输出' );
grid on;
%抽样判决器
H=1; L=0; Z=0; len=length(dit); for ii=1:len if dit(ii)>= Z
%z 即为阈值Vs(ii)=H; else Vs(ii)=L;
end
end figure(4) subplot(311) plot(t,Vs) title( ' 解调后差分信号' ) axis([0 10e-4 -0.2 1.2]) grid on;
c=randi(1,22,2); %产生解调后的差分码元
for f=0:19
c(f+1)=fix(Vs(f*200+50)+0.2)
end
d=randint(1,21,2);
for l=1:21
if (l==1)
if (s(1)==0)
d(1)=0;
else d(1)=1;
end
elseif (c(l)==c(l-1))d(l)=0;
else d(l)=1;
end
end
y=d(ceil(k*t+0.01));
subplot(313);
plot(t,y);
axis([0 10e-4 -0.2 1.2]); title( ' 码反变换输出' ); subplot(312) plot(t,m);
axis([0 10e-4 -0.2 1.2]); title( ' 原始基带信号' ); %误码率与信噪比关系figure(5) grid on
%定义差分译码后的码元
%得到差分译码后的码元
%基带信号与解调后的信号对比
initial_snr = 0;
final_snr = 9; %snr 信噪比
snr_step = 0.01;
snr_in_dB = initial_snr:snr_step:final_snr;
for i = 1:length(snr_in_dB)
snr = 10A(snr_in_dB(i)/10); %将信噪比单位dB 转化一下
Pe(i) =erfc(sqrt(snr))*(1-1/2*erfc(sqrt(snr))); %2dpSK 相干解调end
semilogy(snr_in_dB,Pe); %信噪比取对数,单位变为dB
title( '2DPSK 误码率曲线' );
hold on
yima=y;
ran=m;
snr_in_dB=8;
snr=10A(snr_in_dB/10); %信噪比取对数,单位变为dB
Err=length(find(yima~=ran)) %计算解调信号中错误码元个数
Pe_fact=Err/10000; %计算实际误码率
semilogy(snr_in_dB,Pe_fact, '*' );
Pe_throry=erfc(sqrt(snr))*(1-1/2*erfc(sqrt(snr)));
%计算理论误码率
通过帯通滤波后•输出
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
X10*3
逋过相乘器后输出
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
X10*3
通过低通滤波器后输出
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x10*3
解调肩签分信号
x10"3
原始基带信号
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
xW3
码反变换输出
I I I I I I I I I
1 - ------------------------------------------------------------------------------ 1 ------------------------------------------------------- ■
0.5・
o I —_____________________ | ___________ \ ■丨I 」■
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
xW3。