wly19880910 发表于 2009-9-28 12:34:43

顶!大家帮我个忙,关于用C语言实现源码和HDB3码的转换问题

我遇到这样一个题目,要用C语言实现HDB3码到解码的双向转换,意思就是当我在编译的DOS选框里输入解码时会输出HDB3码,当我输入HDB3码时会输出解码,下面是它的转换原理:一、编码规则:
  1 先将消息代码变换成AMI码,若AMI码中连0的个数小于4,此时的AMI码就是HDB3码;
  2 若AMI码中连0的个数大于4,则将每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码的特点:
  1 由HDB3码确定的基带信号无直流分量,且只有很小的低频分量;
  2 HDB3中连0串的数目至多为3个,易于提取定时信号。
  3 编码规则复杂,但译码较简单。
  三、解码规则
  1从收到的符号序列中找到破坏极性_交替的点,可以断定符号及其前面的3个符号必是连0符号,从而恢复4个连码;
  2再将所有的-1变换成+1后,就可以得到原消息代码
[编辑本段]【HDB3码的特点】
  1. 由HDB3码确定的基带信号无直流分量,且只有很小的低频分量;
  2. HDB3中连0串的数目至多为3个,易于提取定时信号。
  3. 编码规则复杂,但译码较简单。
[编辑本段]【HDB3码的解码规则】
  1虽然编码很复杂,但解码规则很简单,若3连“0”前后非零脉冲同极性,如+1000+1 就应该译成“10000”,及后面的三个零后面的还要再添一个零;若2连 “0”前后非零脉冲极性相同,则两零前后都译为一,如-100-1,就应该译为0000.
  2.再将所有的-1变换成+1后,就可以得到原消息代码。
以上就是它的原理,我所使用的语言环境是VC6.0,麻烦大家帮我编写一段程序(麻烦大家注释到行,写明每行的意思和实现的功能),小弟感激不尽!请把程序用留言的形式贴在上面,谢谢,辛苦大家,小弟跪谢!

snoopyzz 发表于 2009-9-28 14:25:55

LZ这样求不到的,好心提醒一下,这里最看不惯LZ这种求法了...

wly19880910 发表于 2009-9-28 14:27:57

可是我也没办法啊,这个是作业,我也是希望大家出了解决的方法,然后我可以学习到方法啊,不是抄袭

lanjisu 发表于 2010-11-11 19:24:59

话说我们现在也有这个作业了……
可是我还是能自己做出来一些的……%……%
页: [1]
查看完整版本: 顶!大家帮我个忙,关于用C语言实现源码和HDB3码的转换问题