最近因为通信的作业,老师要求我们去实现信道加密和信源的几种方式,因为其中的HDB3编码耗费了我有一会儿功夫,所以记录一下
由于移动通信存在干扰和衰落,在信号传输过程中将出现差错,故对数字信号必须采用纠、检错技术,即纠、检错编码技术,以增强数据在信道中传输时抵御各种干扰的能力,提高系统的可靠性。对要在信道中传送的数字信号进行的纠、检错编码就是信道编码。
针对信源输出符号序列的统计特性来寻找某种方法,把信源输出符号序列变换为最短的码字序列,使后者的各码元所载荷的平均信息量最大,同时又能保证无失真地恢复原来的符号序列。
模拟信号----(信源编码)---->数字基带信号
将这种信号经过码型编码,不经过调制,直接送到信道传输,成为数字信号的基带传输。
发送端:数字基带信号----(数字调制器调制)---->数字载波信号,再进行传输。
接收端---- (相应的数字解调器进行解调) ---->恢复成数字基带信号。
这种经过调制和解调和数字信号传输方式称为数字信号的频带传输。
信道编码有很多种,针对于不同传输方式也不同,常用的基带传输编码方式有:
(Alternative Mark Inversion)信号交替码,"0"码不变,“1”码交替编码,所以因为其如果碰到长连“0”的情况的话就会导致接受信号的地方如示波器等其波型一直不变,无法判断究竟是死机了还是其他情况,所以被Hdb3所取代。
CMI(Coded Mark Inversion)码是传号反转码的简称,其编码规则是“1”码交替用“11”和“00”两位码表示,“0”码固定地用“01”表示。
(High Density Bipolar of Order 3 code)三阶高密度双极性码。因为Hdb3是我这三个里面花费时间最多写的一个编码,所以这里着重说一下我自己的个人理解:Hdb3是用来取代AMI,就如同之前所说的AMI如果碰到了长连“0”的情况的话就可能导致波型不变,所以Hdb3在长连“0”情况上制定了以下规则:
1.如果数字信号中没有四连“0”(连续出现4个0)的情况的话,其编码和AMI一样
2.如果数字信号中有四连:“0”的情况,那么将第一次出现四连“0”的地方:0000变成000V,q这里的“V"代表”1"电平,也就是我们的的高电平码,而第二次碰到0000的时候我们就要在此考虑:这里有两种情况:
0000变成000V
如果两个“V”,也就是第一次出现四连“0”和第二次出现四连"0"的情况之间有奇数个“1"码,那么此时0000变成000V,其中的"V"代表"1"
0000变成B00V
如果两个“V”之间有偶数个“0”,那么这里的“0000”变成“B00V”,其中"B"和"V"的极性一样,所以这里的极性就主要取决于“B”的极性,那么我们的“B”的极性怎么判断呢?
"B"的极性和它前面相邻的那个“1”的极性相反。
信源编码的意义就是在于将我们的信息(也就是我们所说的信源)通过一定的编码规则,将信息转化成“0”和“1”的序列。
费诺编码的方法在我看来就是二分法,将我们的信号出现的概率大小依次排序,按照将概率等分的原则,分成“0”和“1”码元,如此循环,直到最后。看图理解:
这个可能就是最熟悉的编码了吧,因为在数据结构中有哈夫曼树,其规则想必大多数人都记得,就是将我们的值,从最小的开始,两两结合产生新值,再将这个值做放进去做同样的操作即可,构成了一棵二叉树。
看图理解:
为什么会有两种呢?