HDBn编解码原理 n阶高密度双极性码

/*------------------------------------------------------------------

HDB3 编码解码原理        // 转载

------------------------------------------------------------------*/

要了解HDB3码的编码规则,首先要知道AMI码的构成规则,AMI码就是把单极性脉冲序列中相邻的“1”码(即正脉冲)变为极性交替的正、负脉冲。将“0”码保持不变,把“1”码变为+1、-1半占空归零码表示的交替的脉冲。如:

NRZ码: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 -1 +1  0 0 0 0 -1  +1

HDB3码是一种AMI码的改进型,它的编码原理可简述为,在消息的二进制代码序列中:

/*-----------------------------------------------------------------

(1)当连“0”码的个数不大于3时,HDB3编码规律与AMI码相同,即“1”码变为“+1”、“-1”交替脉冲;

(2)当代码序列中出现4个连“0”码或超过4个连“0”码时,把连“0”段按4个“0”分节,即“0000”,并使第4个“0”码变为“1”码,用V脉冲表示。这样可以消除长连“0”现象。为了便于识别V脉冲,使V脉冲极性与前一个“1”脉冲极性相同。这样就破坏了AMI码极性交替的规律,所以V脉冲为破坏脉冲,把V脉冲和前3个连“0”称为破坏节“000V”;

(3)为了使脉冲序列仍不含直流分量,则必须使相邻的破坏点V脉冲极性交替;

(4)为了保证前面两条件成立,必须使相邻的破坏点之间有奇数个“1”码。如果原序列中破坏点之间的“1”码为偶数,则必须补为奇数,即将破坏节中的第一个“0”码变为“1”,用B脉冲表示。这时破坏节变为“B00V”形式。B脉冲极性与前一“1”脉冲极性相反,而B脉冲极性和V脉冲极性相同。

------------------------------------------------------------------*/

如:

NRZ码:  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码的编码规则比较复杂,但译码却比较简单。从上述原理看出:每一个破坏符号V总是与前一非0符号同极性(包括B在内)。这就是说,从收到的符号序列中可以容易地找到破坏点V,于是也断定V符号及其前面的3个符号必是连0符号,从而恢复4个连0码,再将所有-1变成+1后便得到原消息代码。

HDB3如此, HDBn是一样推的. 主要是破坏节的长度不同

// 这里记录一个自己理解的小概念

归零与不归零:

比如都是表示 "1"

--------------                  // 像这种,在整个码元期间电平保持不变的 就是不归零

____|------                   // 像这种在一个码元期间内发生变化的,比如先低后高,或者先高后低的就是归零的

时间: 2024-08-08 16:10:37

HDBn编解码原理 n阶高密度双极性码的相关文章

SSD ECC中的LDPC编解码原理

转自:http://blog.csdn.net/zhuzongpeng/article/details/78899198 目前SSD中ECC纠错代码主要两种BCH和LDPC.不过,随着SSD对ECC纠错技术要求越来越高,BCH纠错码开始有些吃力,所以,LDPC纠错码是发展趋势,也是最新最主流的纠错码. 为何需要LDPC? 我们先回顾一下NAND闪存的基础知识.在这里以MLC NAND为例.在MLC NAND中,有四个Vt level. 如下图, 随着P/E cycles的增加,MLC NAND的

高速理解掌握node.js 字符编码,确码过程 以及base64编解码原理

var buf1 = new Buffer('a','ascii'); // 字符'a' -> ascii编码 -> 61 存在计算机中 console.log(buf1); var b = buf1.toString('base64'); // 61 -> base64解码 -> 得到字符串 'YQ==' console.log(b); var buf2 = new Buffer(b,'base64');// 'YQ==' -> base64编码 -> 61 存储于计

快速理解掌握node.js 字符编码,确码过程 以及base64编解码原理

var buf1 = new Buffer('a','ascii'); // 字符'a' -> ascii编码 -> 61 存在计算机中 console.log(buf1); var b = buf1.toString('base64'); // 61 -> base64解码 -> 得到字符串 'YQ==' console.log(b); var buf2 = new Buffer(b,'base64');// 'YQ==' -> base64编码 -> 61 存储于计

【视频编解码·学习笔记】4. H.264的码流封装格式 & 提取NAL有效数据

一.码流封装格式简单介绍: H.264的语法元素进行编码后,生成的输出数据都封装为NAL Unit进行传递,多个NAL Unit的数据组合在一起形成总的输出码流.对于不同的应用场景,NAL规定了一种通用的格式适应不同的传输封装类型. 通常NAL Unit的传输格式分两大类:字节流格式和RTP包格式 字节流格式: 大部分编码器的默认输出格式 每个NAL Unit以规定格式的起始码分割 起始码:0x 00 00 00 01 或 0x 00 00 01 RTP数据包格式: NAL Unit按照RTP数

Netty入门系列(3) --使用Netty进行编解码的操作

前言 何为编解码,通俗的来说,我们需要将一串文本信息从A发送到B并且将这段文本进行加工处理,如:A将信息文本信息编码为2进制信息进行传输.B接受到的消息是一串2进制信息,需要将其解码为文本信息才能正常进行处理. 上章我们介绍的Netty如何解决拆包和粘包问题,就是运用了解码的这一功能. java默认的序列化机制 使用Netty大多是java程序猿,我们基于一切都是对象的原则,经常会将对象进行网络传输,那么对于序列化操作肯定大家都是非常熟悉的. 一个对象是不能直接进行网络I/O传输的,jdk默认是

详解音频编解码的原理、演进和应用选型等

本文来自网易云音乐音视频实验室负责人刘华平在LiveVideoStackCon 2017大会上的分享,并由LiveVideoStack根据演讲内容整理而成(本次演讲PPT文稿,请从文末附件下载). 1.引言 大家好,我是刘华平,从毕业到现在我一直在从事音视频领域相关工作,也有一些自己的创业项目,曾为早期Google Android SDK多媒体架构的构建作出贡献. 就音频而言,无论是算法多样性,Codec种类还是音频编解码复杂程度都远远比视频要高.视频的Codec目前还主要是以宏块为处理单元,预

【H.264/AVC视频编解码技术详解】十三、熵编码算法(3):CAVLC原理

<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看! "纸上得来终觉浅,绝知此事要躬行",只有自己按照标准文档以代码的形式操作一遍,才能对视频压缩编码标准的思想和方法有足够深刻的理解和体会! 链接地址:H.264/AVC视频编解码技术详解 GitHub代码地址:点击这里 上下文自适应的变长编码(Context-base

203-基于ARM和双TI DSP TMS320C6678的6UCPCI高清编解码处理平台

基于ARM和双TI DSP TMS320C6678的6UCPCI高清编解码处理平台 1.产品简介 该板卡由我公司自主研发,以TI Cortex-A8.TI 双DSP TMS320C6678为设计核心,集成DDR.视频.音频.千兆以太网.RS232.USB.SD卡.NANDFLASH等多种接口的高清显示及处理功能. 2.板卡性能介绍  根据板卡接口和功能要求,主要分为如下3部分电路,设计出如下整体框图如下.  1 )ARM视频处理模块,主要通过视频输入输出接口,音频输入输出接口接收语音和视频数据,

直播技术总结(四)音视频数据压缩及编解码基础

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/60480109 音视频压缩技术是编解码中难点,常常会涉及很多算法处理问题.数据封装,转封装等,看下Agenda: 音视频为何需要压缩? 压缩编码的分类 常用压缩编码的方法 编码器中的关键技术 预测 量化 变换 熵编码 编解码中的情况 音视频为何需要压缩? 未经压缩的数字视频的数据量巨大 存储困难:一张DVD只能存储几秒钟的未压缩数字