没有合适的资源?快使用搜索试试~ 我知道了~
(完整word版)matlab_HDB3编码译码数字信号调制解调.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 187 浏览量
2023-02-26
20:25:56
上传
评论
收藏 433KB DOCX 举报
温馨提示
试读
20页
。
资源推荐
资源详情
资源评论
(完整 word 版)matlab_HDB3 编码译码数字信号调制解调
一、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
(完整 word 版)matlab_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
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、程序源代码
(完整 word 版)matlab_HDB3 编码译码数字信号调制解调
% 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”个数计数
(完整 word 版)matlab_HDB3 编码译码数字信号调制解调
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 符号同极性
B(k-3)=yh(k); % B 脉冲位置记录
V(k)=yh(k);
% V 脉冲位置记录
yh(k+1:length(yn))=-1*yh(k+1:length(yn));
% 并让后面的非零符号从 V 符号开始再交替变化
end
sign=yh(k);
% 记录前一个 V 符号的极性
end
else
num=0;
% 当前输入为“1”则连“0”计数器清零
end
end
% 编码完成
re=[xn',yn',yh',V’,B’];
% 结果输出: xn AMI HDB3 V&B 符号
% HDB3 解码
input=yh;
% HDB3 码输入
decode=input;
sign=0;
% 输出初始化
% 极性标志初始化
剩余19页未读,继续阅读
资源评论
G11176593
- 粉丝: 6664
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功