AMIAMIAMI,HDB3HDB3HDB3编码译码

文章目录

  • AMIAMIAMI,HDB3HDB3HDB3编码译码
    • AMIAMIAMI编码
    • HDB3HDB3HDB3编译码
      • 编码规则
      • 编码特点
      • 译码规则
      • 应用
    • 实验结果

AMIAMIAMI编码

  • 不含直流分量,低频成分少
  • ·三电平
  • 编译码电路简单,有宏观自检能力
    AMI编码缺点:信码有长连0串时,难以获取定时信息
    AMI编码应用:PCM24PCM24PCM24路基群(北美系列)1.544Mb/s1.544Mb/s1.544Mb/s的线路码型

HDB3HDB3HDB3编译码

三阶高密度双(HDB3HDB3HDB3码)是一种适用于基带传输的编码方式,它是为了克服AMIAMIAMI码的缺点而出现的,具有能量分散,抗破坏性强等特点。

编码规则

  • 连0的个数不超过3时,规则与AMIAMIAMI相同,即0不变,1变为-1、+1交替;

  • 若连0的个数超过3,则将每4个0看作一小节,定义为B00VB00VB00V,BBB可以是-1、0、+1,VVV可以是-1、+1;

  • B和V具体值满足以下条件:VVV和前面相邻非0符号极性相同;不看VVV时极性交替;VVV与VVV之间极性交替;

  • 一般第一个BBB取0,第一个非0符取-1。在VVV与VVV之间如果出现偶数个B时,应在后一个V字节补一个B′B'B′,定义为B′00VB'00VB′00V,B′B'B′与前面相邻的BBB之间符号极性相反,这个字节的VVV和B′B'B′符号极性相同。 由于VVV会破坏极性交替的规律、BBB有3种变化以满足规则,所以VVV称为破坏脉冲、BBB称为调节脉冲,B00VB00VB00V称为取代节、破坏节。

编码特点

  • 由HDB3HDB3HDB3码确定的基带信号无直流分量,且只有很小的低频分量;
  • HDB3HDB3HDB3中连0串的数目至多为3个,易于提取定时信号。
  • 编码规则复杂,但译码较简单。

译码规则

  • 译码的本质即把原来的取代节(4个连零)找到即可,若3连“0”前后非零脉冲同极性,则将最后一个非零元素译为零,如+1000+1 就应该译成“10000”,否则不用改动;若2连 “0”前后非零脉冲极性相同,则两零前后都译为零,如-100-1,就应该译为0000,否则也不用改动.

  • 将所有的-1变换成+1后,就可以得到原消息码。

应用

数字基带信号的传输是数字通信系统的重要组成部分。在数字通信中,有些场合可不经过载波调制和解调过程,而对基带信号进行直接传输。采用AMI码的信号交替反转,有可能出现四连零现象,这不利于接收端的定时信号提取。而HDB3HDB3HDB3码因其无直流成份、低频成份少和连0个数最多不超过三个等特点,而对定时信号的恢复十分有利。

实验结果

% 初始化消息码
N = 22;% N = 100;        % 码元数
num_AMI = 0;        % 初始化计数器
num_HDB3 = 0;
ran_num = [1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1]
% ran_num = randi([0, 1], 1, N); % 随机01串
ran_num_ori = ran_num;
ran_num_AMI = ran_num;
ran_num_HDB3 = ran_num;
num_0 = 0; % 0计数器
num_V = 0; % V计数器% AMI编码
for i = 1:Nif  ran_num_AMI(i) == 1num_AMI = num_AMI+1;ran_num_AMI(i) = (-1)^num_AMI*ran_num_AMI(i);end
end% AMI解码
decode_AMI = ran_num_AMI;
for j = 1:Nif  abs(decode_AMI(j)) == 1decode_AMI(j) = abs(decode_AMI(j));end
end% HDB3编码
for j = 1:Nif  ran_num_HDB3(j) == 1num_HDB3 = num_HDB3+1;ran_num_HDB3(j) = (-1)^num_HDB3*ran_num_HDB3(j);flag = ran_num_HDB3(j); % 上一个非0数作为标志num_0 = 0;        else if ran_num_HDB3(j) == 0            num_0 = num_0+1;if num_0 == 4num_V = num_V+1;num_0 = 0; % 连续四个0,0计数器清零if num_V == 1ran_num_HDB3(j) = 1*flag;flag_V = ran_num_HDB3(j);flag = flag_V;elseran_num_HDB3(j) = -flag_V; % 破坏脉冲flag_V = ran_num_HDB3(j);if ran_num_HDB3(j) ~= flagran_num_HDB3(j-3) = ran_num_HDB3(j); % 调节脉冲endflag = flag_V;end            endendend
end% HDB3解码
decode_HDB3 = ran_num_HDB3;
count = 0;
for j = 1:N  if ran_num_HDB3(j) == 0 count  = count + 1;if  count == 3  %若3连“0”前后非零脉冲同极性,则将最后一个非零元素译为零if decode_HDB3(j + 1) * decode_HDB3(j - 3) == 1decode_HDB3(j + 1) = 0;endendif count == 2 %若2连 “0”前后非零脉冲极性相同,则两零前后都译为零if decode_HDB3(j + 1) * decode_HDB3(j  - 2) == 1decode_HDB3(j  - 2) = 0;decode_HDB3(j + 1) = 0;endendelsecount = 0;   end
end
decode_HDB3 = abs(decode_HDB3);% 绘图区
disp('消息码:'); disp(ran_num_ori);
disp('AMI码:'); disp(ran_num_AMI);
disp('HDB3码:'); disp(ran_num_HDB3);
figure;
subplot(3, 1, 1); stairs(0:(N-1), ran_num_ori); grid on; axis([0 21 -2 2]); title('消息码');
subplot(3, 1, 2); stairs(0:(N-1), ran_num_AMI); grid on; axis([0 21 -2 2]); title('AMI编码');
subplot(3, 1, 3); stairs(0:(N-1), ran_num_HDB3); grid on; axis([0 21 -2 2]); title('HDB3编码');
figure;
subplot(3, 1, 1); stairs(0:(N-1), ran_num_ori); grid on; axis([0 21 -2 2]); title('消息码');
subplot(3, 1, 2); stairs(0:(N-1), decode_AMI); grid on; axis([0 21 -2 2]); title('AMI解码');
subplot(3, 1, 3); stairs(0:(N-1), decode_HDB3); grid on; axis([0 21 -2 2]); title('HDB3解码');

AMI,HDB3编码译码相关推荐

  1. Verilog实现HDB3编码译码

    Verilog实现HDB3编码译码 前言 一.使用的软件 二.具体实现 1.模块介绍 2.模块的.V文件 三.仿真结果 四.总结 1.关于编程的结构 2.收获 五.附testbench文件 前言 本次 ...

  2. 【编码译码】基于matlab HDB3编译码仿真【含Matlab源码 1961期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[编码译码]基于matlab HDB3编译码仿真[含Matlab源码 1961期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  3. HDB3 的译码 ③(Verilog 语言实现)2021-9-12

    文章目录 前言 一.HDB3译码 1.实现代码以及仿真结果 1.代码实现 2.仿真结果 总结 前言 在之前的几篇文章中提到了HDB3编码和译码的课题,首先是使用MATLAB来实现了HDB3的编码和译码 ...

  4. 【FPGA教程案例88】编译码1——基于FPGA的HDB3编译码verilog实现

    FPGA教程目录 MATLAB教程目录 目录 1.软件版本 2.HDB3编译码理论概述 2.1 HDB3编码 2.2 HDB3译码 3.verilog实现过程

  5. 基于FPGA的HDB3编译码verilog实现,包括testbench

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.verilog核心程序 4.完整算法代码文件 1.算法仿真效果 vivado2019.2仿真结果如下: 2.算法涉及理论知识概要 数字基带信号的传 ...

  6. 哈夫曼编码 译码java_基于Java的哈夫曼编码译码系统_报告毕业论文

    基于Java的哈夫曼编码译码系统_报告毕业论文 1课 程 设 计Java 与面向对象程序设计课程设计基于 Java 的哈夫曼编码译码系统1.问题描述和分工情况1.1 问题描述使用 Java 语言实现哈 ...

  7. 二叉树的基本操作及哈夫曼编码/译码系统的实现

    二叉树的基本操作及哈夫曼编码/译码系统的实现 实验目的和要求 掌握二叉树的二叉链表存储表示及遍历操作实现方法. 实现二叉树遍历运算的应用:求二叉树中叶结点个数.结点总数.二叉树的高度,交换二叉树的左右 ...

  8. 哈夫曼算法证明+哈夫曼编码译码程序实现

    哈夫曼算法证明 哈夫曼算法是一种贪心算法,我们考虑证明其最优子结构和贪心选择性质: 最优子结构:假设一个树是哈夫曼树,则以其任意节点为根节点的最大子树也是哈夫曼树. 证明:子树的根节点的值是其所有叶子 ...

  9. (7,4)汉明码编码译码及计算最小码距——基于MATLAB编程

    (7,4)汉明码编码译码及计算最小码距--基于MATLAB编程 编码 A=[1 1 1 0; 0 1 1 1; 1 1 0 1] %A 可随便写四个不为0的列向量,是为了生成一致校验矩阵 H=[A e ...

  10. 【编码译码】基于matlab QC-LDPC码编码和译码【含Matlab译码 2194期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[编码译码]基于matlab QC-LDPC码编码和译码[含Matlab译码 2194期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...

最新文章

  1. 给创新工场求职者的一封信
  2. eclipse android开发环境搭建_聊聊Spring boot2.X开发环境搭建和基本开发
  3. IPropertySet接口
  4. 工作335:uni-ele-el-date-picker限制选择时间
  5. _一文让你透彻理解Linux的SOCKET编程(含实例解析)
  6. 强健程序员体魄————减脂原理
  7. go语言 echo框架_如何在Go Echo Web框架中设置嵌套HTML模板
  8. 3-2Tensor的基本定义
  9. MySql安装错误代码1045的解决方案
  10. AfxGetMainWnd 函数
  11. 上位机、下位机、单片机的关系
  12. VS studio源代码管理辅助工具sourceoffsite使用过程中的错误解决方法
  13. Hadoop分布式系统架构详解
  14. 对车辆路试数据集mtcars进一步分析_【案例】图解电磁阀及其故障诊断分析
  15. 移动端web开发click touch tap区别
  16. 微信小程序全屏背景图
  17. The Things Network LoRaWAN Stack V3 学习笔记
  18. Hexo添加Live2D看板娘最新教程
  19. SQL 数字和字符串互转
  20. 迅捷在线压缩有什么办法可以压缩视频

热门文章

  1. iCode代码托管的一些基本指令
  2. 使用 FFmpeg 工具合并本地多个.ts文件为单个.MP4
  3. python 判定n阶方矩是否为上三角矩阵
  4. 字符自编车牌号c语言,自编车牌号码大全 2018年自编车牌号技巧
  5. 操作系统——内存映射文件
  6. RTthread IO设备的创建
  7. 报文学习四(LLDP协议)
  8. oracle EM导出AWR报告,AWR报告导出
  9. oracle生成awr报告命令,oracle数据库生成awr报告
  10. java基本数据类型转类对象