matlab_HDB3编码译码数字信号调制解调
-
一、
HDB3
码的编码和译码
< br>
1
、实验要求:掌握
HDB3
码的编码规则,利用
MATLAB
设计
并实现
HDB3
码的编码和译码。
2
、原理简述:
编码规则
:
1
)
p>
先将消息代码变换成
AMI
码,若
AMI
码中连
0
的个数
小于
4,
此时的
AMI
码就是
HDB3
码
;
2
)
若
p>
AMI
码中连
0
的
个数大于
3,
则将每
4
个连
0
小段的第
4
个
0
变换成与前一个非
0
符号
(+1
或
-1)
同极性的符号
,
用表示
(+1+,-1-);
3
)
为了不
破坏极性交替反转,当相邻符号之间有偶数个非
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
简易编码方法:
原理:
HDB3
码既要包含
AMI
的交替特性使输出无直流特性,又要不出现四个以上的
连
< br>0
,因此可以先满足后者。
1
)把
p>
换为取代节。
规则:先将
分离开来,第一个
直接变为
,然后数相邻
两个
之间
的个
数,奇数则变为
,偶数则变为
。
2
)更新符号。
根据教材有:
B
总是与其前面的
1
或
V
符号相反,
V
总是与前
面的
1
或
B
相
符号相同,
1
总是与前面的
V
或
B
符号相反,就可以编符号了。
例如
:
消息代码:
1 0 0 0 0 1
0 0 0 0
1 1 0 0 0 0 1 1
0 0 0 0
0 0 0 0 1 1 1
0 0 0 0
1
中间码:
1 0 0 0 V 1
0 0 0
V
1 1 B 0 0 V 1 1
B 0 0 V
B 0 0 V 1 1 1
0 0 0
V
1
HDB3
码:
+1 0 0 0 +V
-1
0 0 0 -V
+1 -1 +B 0 0 + V
-1 +1 -
B 0 0 -V
+B 0 0 +V -1
+1 -1
0
0 0 -V
+1
解码规则:
1
)虽然编码很复杂,但解码规则很简单,若
3
连
“0”
前后非零脉冲同极性,则将最后一个
非零元素译为零,如
+1000+1
就应该
译成
“10000”
;若
2
连
“0”
前后非零脉冲
极性相同,则
两零前后都译为零,如
-100-1
,就应该译为
0000.
2
)再将所有的
-1
变换成
+1
后,就可以得到原消息代码。
3
、程序运行结果
运行程序
可自定义二进制序列,第一个窗口
显示所输入的二进制码元,第二个窗口为
HDB3
编码
后的结果,最后一个窗口为解码后的窗口。
4
、程序源代码
% ch7example6prog1.m
%
AMI
码的编码
xn=[1 0 1
1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0];%
输入单极性码
yn=xn;%
p>
输出
yn
初始化
num=0;%
计数器初始化
for k=1:length(xn)
if xn(k)==1
num=num+1;
%
计数器
if
num/2 == fix(num/2) %
奇数个
1
p>
时输出
-1,
进行极性交替
yn(k)=1;
else
yn(k)=-1;
end
end
end
%
HDB3
编码
num=0;
%
连零计数器初始化
yh=yn;
%
输出初始化
sign=0; %
极性标志初始化为
0
V=zeros(1,length(yn));%
V
脉冲位置记录变量
B=zeros(1,length(yn));%
B
脉冲位置记录变量
for
k=1:length(yn)
if yn(k)==0
num=num+1;
%
连“
0
”
个数计数
if num==4
%
如果
4
连“
0
”
num=0;
%
计数器清零
yh(k)=1*yh(k-4);
%
让
0000
的最后一个
0
改变为与前一个非零符号相同极性的符号
V(k)=yh(k);
%
V
脉冲位置记录
if yh(k)==sign
%
如果
当前
V
符号与前一个
V
符号的极性相同
yh(k)=-1*yh(k);
%
则让当前
V
符号极性反转
,
以满足
V
符号间相互
极性反转要求
yh(k-3)=yh(k);
%
添加
B
符号
,
与
V<
/p>
符号同极性
B(k-3)=yh(k);
%
B
脉冲位置记录
V(k)=yh(k);
%
V
脉冲位置记录
yh(
k+1:length(yn))=-1*yh(k+1:length(yn));
% <
/p>
并让后面的非零符号从
V
符号开始再交替
变化
end
sign=yh(k);
%
记录前一个
V
符号的极性
end
else
num=0;
%
当前输入为“
< br>1
”则连“
0
”计数器清零
p>
end
end
%
编码完成
re=[xn',yn',yh',V',B'];
%
结果输出
: xn AMI HDB3
V&B
符号
%
HDB3
解码
input=yh;
%
HDB3
码输入
decode=input;
%
输出初始化
sign=0;
%
极性标志初始化
for
k=1:length(yh)
if input(k) ~= 0
if
sign==yh(k)
%
如果当前码与前一个非零码的极性相同
decode(k-3:k)=[0 0 0 0];%
则该
码判为
V
码并将
*00V
清零
end
sign=input(k);
%
极性标志
end
end
decode=abs(decode);
%
整流
error=sum([xn'-decode']);
%
解码的正确性检验
,
作图
subplot(
3,1,1);stairs([0:length(xn)-1],xn);axis([0
length(xn) -2 2]);
subplot(3,1,2);stair
s([0:length(xn)-1],yh);axis([0 length(xn) -2 2]);
subplot(3,1,3);stairs([0:length(xn)-1],
decode);axis([0 length(xn) -2 2]);
二、数字带通系统的调制解调
1
p>
、实验要求:
利用
MATLAB
程序设计语言实现
数字带通系统的调制解调。
2
、原理简述:
数字调制:
用数字基带信号控制载波,
把数字基带信号变换
为数字带通信号
(已调信号)
的过程成为数字调制。
数字调制与模拟调制的基本原理相同,但数字信号有离散取值的特点。因
此数字调制技
术有两种方法:
①利用模拟调制的方法实现数字调
制,
即把数字调制看成是模拟调制的特例
把数字基带信号当成是
模拟信号的特殊情况处理;
②利用数字信号的离散取值特点通过开关
键控制载波,从而实现数字调制。这种方法称为键控法,
比如对载波的振幅,频率和
相位进
行键控,便可得到振幅键控
ASK
,频移键控
FSK
和相移键控
PSK
三种基本的数字调制方式。
振幅键控
ASK
振幅键控利用载波的
幅度变化来传递数字信息,
而其频率和初始相位保持不变。
在<
/p>
2ASK
中,载波的幅度只有两种变化状态,分别为对应二进制信
息“
0
”或“
1
”
。常用的二进制振
幅键控方式称为通断键控,
2ASK
信号的一般表达式为
其中
2A
SK
有两种基本的解调方法:非相干解调和相干解调,解调方式如下:
< br>
非相干解调方式:
带通滤波
器——全波整流器——低通滤波器——抽样判决器——输出
想干解调方式:
带通滤波器——相乘器——低通滤波器——抽样判决器——输出
频移键控
FSK
频移键控是利用载波
的频率变化来传递数字信息。在
2FSK
中,载波的频率随二进
制基
带信号在
f1
和
< br>f2
两个频率点检变化。
一个
2
FSK
信号可以看成是两个不同载频的
2ASK
信号
的叠加。
其产生方式有两种:
①采用模拟调频来实现②也可采用键控法实现,
即在二进制基
带矩形序列的控制下通过开关电路对两个不同的独立频率源进行选通。
但相邻码元之间
的相
位不一定连续。
2FSK
信号的常用解调方法也采用相干解调和非相干解调两种方式。其解调原理是将
< br>2FSK
信号分解为上下两路
2ASK
< br>信号分别进行解调,然后进行判决。
相移键控
PSK
二进制相移键控
2PSK
相移键控是利用载波的相位变化来传递数字信息,
而振幅和频率保持不变。
在
2PSK
中,
通常用初始相位
0
和π分别表示二进制“
1
”和“
0
”
。与
2ASK
信号的产生方式相比,只是对
s(t)
的要求不同,在
2ASK
中是单极性的,而在
2PSK
中是双极性的基带信号。
p>
2PSK
信号的解调通常采用相干解调法
。
二进制差分相移键控
2DPSK
2PSK
相干解调时,
由于载波恢复中
相位有
0
、
π模糊性,
导致解调过程出现
“反向工作”
现象,恢复出的数字信
号“
1
”
“
0
”倒置,使得
2PSK
难以实际应用。
而
2DPSK
是利用前后相
邻码元的载
波相对相位变化传递数字信息,
对于相同的基带数字信息序列,
由于初始相位不
同,
2DPSK
的相位
可以不同。也就是说,
2DPSK
信号的相位并不直接代表基带
信号,而前后
码元相对相位的差才唯一决定信号符号。
2DPSK
信号的解调方法为相干解调(极性比较法)加码反变换法。
其原理为:
带通滤波器——相乘器——低通滤波器——抽样判决器——码反变换——输出
3
、程序运行结果
2ASK
调制后的信号以及
2ASK
解调后的信号
2PSK
基带信号,
2PSK
调制后的信号以及
2PSK
< br>解调后的信号
2FSK
p>
调制后的信号以及使用
2FSK
解调后的信
号
随机产生得二进制原始信号以及
2DPSK
调制之后得信号
使用
2DPSK
解调之后的信号
4
、程序源代码
2ASK
clear all;
clear;
N=10;
%
调制序列的长度
fc=20;
%
载波频率
datat=0.01;
%
时域采样间隔
data=1/datat;
df=0.01
;
%
频率分辨率
t=0:datat:N;
%
设每个码元长度为
1ms
时间矢量:
0
:
N
m=randint(1,N);
%
产生调制序列
fs=1/datat;
c=cos(2*pi*fc*t);
for i=1:length(m)
if(m(i)==1)