没有合适的资源?快使用搜索试试~ 我知道了~
(完整word版)matlab-HDB3编码译码数字信号调制解调.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 47 浏览量
2022-10-30
13:31:19
上传
评论 1
收藏 529KB DOCX 举报
温馨提示
试读
13页
(完整word版)matlab_HDB3编码译码数字信号调制解调.docx(完整word版)matlab_HDB3编码译码数字信号调制解调.docx
资源推荐
资源详情
资源评论
一、HDB3 码的编码和译码
1、实验要求:掌握 HDB3 码的编码规则,利用 MATLAB 设计并实现 HDB3 码的编码和译码。
2、原理简述:
编码规则:
1) 先将消息代码变换成 AMI 码,若 AMI 码中连 0 的个数小于 4,此时的 AMI 码就是
HDB3 码;
2) 若 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 的交替特性使输出无直流特性,又要不出现四个以上的
连 0,因此可以先满足后者。
1)把"0000"换为取代节。
规则:先将"0000"分离开来,第一个"0000"直接变为"000V",然后数相邻两个"0000"
之间"1"的个数,奇数则变为"000V",偶数则变为" B00V"。
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 -10 0 0 -V +1 -1 +B 0 0 + V -1 +1 -B 0 0 -V +B 0 0 +V -1 +1 -10
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;% 输出 yn 初始化
num=0;% 计数器初始化
for k=1:length(xn)
if xn(k)==1
num=num+1;
% "1"计数器
if num/2 == fix(num/2) % 奇数个 1 时输出-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 脉冲位置记录
V(k)=yh(k);
if yh(k)==sign
% 如果当前 V 符号与前一个 V 符号的极性相同
yh(k)=-1*yh(k); % 则让当前 V 符号极性反转,以满足 V 符号间相互极性反转要求
yh(k-3)=yh(k); % 添加 B 符号,与 V 符号同极性
B(k-3)=yh(k); % B 脉冲位置记录
V(k)=yh(k);
yh(k+1:length(yn))=-1*yh(k+1:length(yn));
% 并让后面的非零符号从 V 符号开始再交替变化
% V 脉冲位置记录
end
sign=yh(k);
end
% 记录前一个 V 符号的极性
else
num=0;
% 当前输入为“1”则连“0”计数器清零
end
end
% 编码完成
% 结果输出: xn AMI HDB3 V&B 符号
% HDB3 解码
re=[xn',yn',yh',V',B'];
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);stairs([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、实验要求:利用 MATLAB 程序设计语言实现数字带通系统的调制解调。
2、原理简述:
数字调制:用数字基带信号控制载波,把数字基带信号变换为数字带通信号(已调信号)
的过程成为数字调制。
数字调制与模拟调制的基本原理相同,但数字信号有离散取值的特点。因此数字调制技
术有两种方法:①利用模拟调制的方法实现数字调制,即把数字调制看成是模拟调制的特例
把数字基带信号当成是模拟信号的特殊情况处理;②利用数字信号的离散取值特点通过开关
剩余12页未读,继续阅读
资源评论
春哥111
- 粉丝: 1w+
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功