胥帆

不善言辞,胆小认生

  • 主页
  • 随笔
所有文章 友链 关于我
青青陵上e\7PE

胥帆

不善言辞,胆小认生

  • 主页
  • 随笔

AMI/HDB3编译码设计与实现


阅读数: 224次    Aug 23 2019

AMI/HDB3编译码设计与实现

一、课程设计主要内容

熟悉AMI/HDB3码的编译码规则,了解AMI/HDB3码编译码的实现方法,运用MATLAB实现AMI/HDB3码编译码的仿真并分析。

二、设计原理

AMI码的全称是传号交替反转码。这是一种将消息代码0(空号)和1(传号)按如下规则进行编码的码:代码的0仍变换为传输码的0,而把代码中的1交替地变换为传输码的+1、-1、+1、-1…
由于AMI码的信号交替反转,故由它决定的基带信号将出现正负脉冲交替,而0电位保持不变的规律。由此看出,这种基带信号无直流成分,且只有很小的低频成分,因而它特别适宜在不允许这些成分通过的信道中传输。
从AMI码的编码规则看出,它已从一个二进制符号序列变成了一个三进制符号序列,而且也是一个二进制符号变换成一个三进制符号。把一个二进制符号变换成一个三进制符号所构成的码称为1B/1T码型。
AMI码除有上述特点外,还有编译码电路简单及便于观察误码情况等优点,它是一种基本的线路码,并得到广泛采用。但是,AMI码有一个重要缺点,即当它用来获取定时信息时,由于它可能出现长的连0串,因而会造成提取定时信号的困难。
为了保持AMI码的优点而克服其缺点,人们提出了许多改进的方法,HDB3码就是其中有代表性的一种。
HDB3码是三阶高密度码的简称。HDB3码保留了AMI码所有的优点(如前所述),还可将连“0”码限制在3个以内,克服了AMI码出现长连“0”过多,对提取定时钟不利的缺点。HDB3码的功率谱基本上与AMI码类似。由于HDB3码诸多优点,所以CCITT建议把HDB3码作为PCM传输系统的线路码型。
如何由二进制码转换成HDB3码呢?
HDB3码编码规则如下 :
1.二进制序列中的“0”码在HDB3码中仍编为“0”码,但当出现四个连“0”码时,用取代节000V或B00V代替四个连“0”码。取代节中的V码、B码均代表“1”码,它们可正可负(即V+=+1,V-=-1,B+=+1,B-=-1)。
2.取代节的安排顺序是:先用000V,当它不能用时,再用B00V。000V取代节的安排要满足以下两个要求:
(1)各取代节之间的V码要极性交替出现(为了保证传号码极性交替出现,不引入直流成份)。
(2)V码要与前一个传号码的极性相同(为了在接收端能识别出哪个是原始传号码,哪个是V码?以恢复成原二进制码序列)。
当上述两个要求能同时满足时,用000V代替原二进制码序列中的4个连“0”(用000V+或000V-);而当上述两个要求不能同时满足时,则改用B00V(B+00V+或B-00V-,实质上是将取代节000V中第一个“0”码改成B码)。
3.HDB3码序列中的传号码(包括“1”码、V码和B码)除V码外要满足极性交替出现的原则。

三、设计思路及程序代码

1、随机生成一组数列。
2、使其中的1交替变为1和-1实现AMI码的编码。
3、将AMI码中4个0的情况按照HDB3码的编码规则实现HDB3码的编码。
4、将AMI码中的所以的-1变为1实现AMI码的译码。
5、判断HDB3码中两个0和三个0的情况并做比较实现HDB3码的译码。

程序 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
clc;clear;
N = 20;
yuanma = round(rand(1,N));
len_yuan = length(yuanma);
yuanma_4 = yuanma(4);
%% AMI 编码
AMI = zeros(1,len_yuan);
v = 1;
for i = 1:len_yuan
if yuanma(i) == 1
AMI(i) = v;
v = v*(-1);
end
end
disp('原码:');
disp(yuanma);
disp('AMI码:')
disp(AMI);

%% HDB3 编码
HDB3 = AMI;
v = 1;
for i = 4:len_yuan
if HDB3(i) == 0 && HDB3(i-1) == 0 && HDB3(i-2) == 0 && HDB3(i-3) == 0
HDB3(i) = v;
flag = 1;
for j = i+1:len_yuan
if abs(HDB3(j)) == 1
if flag && HDB3(j)*HDB3(i) < 0
break;
else
flag = 0;
HDB3(j) = HDB3(j)*(-1);
end
end
end

if i-4 > 0
if HDB3(i-4)*HDB3(i) < 0
% HDB3(i-3) = HDB3(i)*3/2;
HDB3(i-3) = HDB3(i);
end
end
v = v*(-1);
end
end
disp('HDB3码:')
disp(HDB3);

%% AMI解码
jie_AMI = abs(AMI);
disp('AMI解码:');
disp(jie_AMI);

%% HDB3解码
jie_HDB3 = HDB3;

for i = 3:len_yuan-1
if jie_HDB3(i) == 0 && jie_HDB3(i+1) ~= 0 && jie_HDB3(i-1) == 0
if (i-3 <=0)
jie_HDB3(i+1) = yuanma_4;
elseif (jie_HDB3(i-2) == 0 && jie_HDB3(i-3)*jie_HDB3(i+1) > 0)
jie_HDB3(i+1) = 0;
elseif jie_HDB3(i-2) ~= 0 && jie_HDB3(i-2) * jie_HDB3(i+1) > 0
jie_HDB3(i-2) = 0;
jie_HDB3(i+1) = 0;
end
end
end
jie_HDB3 = abs(jie_HDB3);
disp('HDB3解码:');
disp(jie_HDB3);

四、设计结果

实验结果

五、结果分析

当原码随机成上述序列时,AMI码符合编码规则使其中的1交替变成1和-1,,故AMI码编码正确,
HDB3码中出现第一次四个零时将最后的一个零变为+v与前面第一个非零的1极性相同,故不
需要加B,当第二次出现四个0时,将最后一个0变为-v,此时的极性与前面一个非零的-1相同,
故不需要加B,所以HDB3码的编码正确。AMI码的译码中将其中所有的-1变为1得到的译码与原码
一致,故AMI码的译码正确。HDB3码的译码中出现三个0时第四个数的极性与前一个非0的数极
性一致,故将第四个非0的数置0,当出现第二次三个0时,第四个非0的数与前一个数的极性
一致,故将第四个非0的数置0,所以HDB3码的译码与原码一致。

  • 通信原理

扫一扫,分享到微信

微信分享二维码
DSB-SC通信系统的设计与实现
2PSK通信系统的设计与实现
  1. 1. AMI/HDB3编译码设计与实现
    1. 1.1. 一、课程设计主要内容
    2. 1.2. 二、设计原理
    3. 1.3. 三、设计思路及程序代码
    4. 1.4. 四、设计结果
    5. 1.5. 五、结果分析

0 评论
Powered By Valine
v1.5.2
© 2022 胥帆
本站已安全运行 2496 天 16 小时 18 分 35 秒 字数统计:189.7k
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

  • 通信原理
  • 简历
  • git
  • java
  • dp
  • 数论
  • 剑指offer
  • 数字图像处理
  • 日记
  • linux
  • 数学建模
  • 递推
  • 二分
  • 图像处理
  • 剑指Offer
  • Python
  • 考研
  • 链表
  • 数据结构
  • 算法
  • LeetCode
  • PAT

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • LeetCode_Hot100题

    2022-08-09

    #Python#LeetCode

  • 算法刷题总结

    2022-08-09

    #Python#算法

  • 杂题集锦

    2022-07-05

    #Python

  • 数据结构Python版(MOOC)笔记

    2022-07-05

    #Python#数据结构

  • python学习笔记

    2022-07-05

    #Python

  • newCode剑指Offer

    2022-06-09

    #剑指Offer#Python

  • 2021-04-09

    2021-04-09

    #日记

  • LeetCode剑指Offer

    2021-02-25

    #Python#LeetCode

  • U盘安装linux、远程桌面、显卡驱动及conda安装

    2021-01-30

    #linux

  • 构建乘积数组

    2020-12-23

    #java#剑指offer

  • 把字符串转换成整数

    2020-12-22

    #java#剑指offer

  • 扑克牌顺子

    2020-12-20

    #java#剑指offer

  • 翻转单词顺序列

    2020-12-18

    #java#剑指offer

  • PAT(Basic Level)Practice(中文)

    2020-12-10

    #PAT

  • 和为S的两个数字

    2020-12-07

    #java#剑指offer

  • 数字在升序数组中出现的次数

    2020-12-05

    #java#剑指offer

  • 第一个只出现一次的字符

    2020-12-03

    #java#剑指offer

  • 把数组排成最小的数

    2020-11-26

    #java#剑指offer

  • 连续子数组的最大和

    2020-11-12

    #dp#剑指offer

  • 数组中出现次数超过一半的数字

    2020-11-09

    #剑指offer

  • 字符串的排列

    2020-11-03

    #java#剑指offer

  • 顺时针打印矩阵

    2020-11-01

    #java#剑指offer

  • 回文数(java)

    2020-10-10

    #java

  • 链表操作(java)

    2020-09-29

    #java#链表

  • 旋转数组的最小数字

    2020-09-24

    #剑指offer#二分

  • xxx.github.io 拒绝访问

    2020-09-24

    #git

  • 考研这一路上

    2019-12-24

    #考研

  • 阈值分割

    2019-08-23

    #图像处理

  • 母牛的故事

    2019-08-23

    #递推

  • 数学建模国赛

    2019-08-23

    #数学建模

  • 数字图像处理

    2019-08-23

    #数字图像处理

  • 我的简历

    2019-08-23

    #简历

  • 快速幂取模

    2019-08-23

    #数论

  • 买不到的数目

    2019-08-23

    #dp#数论

  • DSB-SC通信系统的设计与实现

    2019-08-23

    #通信原理

  • AMI/HDB3编译码设计与实现

    2019-08-23

    #通信原理

  • 2PSK通信系统的设计与实现

    2019-08-23

    #通信原理

  • 百度
  • 乔神
  • 琦
  • 陈想
  • 松
  • 晗
胥帆

硕士在读

不善言辞,胆小认生。