【STM32】基带HDB3编解码系统设计
一、设计背景及说明
二、设计目标与任务
2.1 设计目标
信 在信道的传输过程中,如何才能保证信 失真最小且编码与译码的准确性是本次电子设计研究的目标。一个完整的通讯系统,当信 经过一定距离的传送后,总会受到干扰、移相和衰减,因而需要对数字信 进行再生。从信源输出的信 一般是0 1两种状态的单极性NRZ码,在进行数字信 传输时,考虑到传输信道的特点,将信息比特变换为适合于在信道中传输的数字信 ,即进行线路编码。
传统的基带信 含有丰富的直流和低频分量,这些信 不适宜在信道中传输。为了使得终端机编码输出的由0和1组成的单极性数码流适应于传输信道的特性,还必须经过码型变换,即对信 进行编码。选择编码码型时一般应考虑几方面的因素,比如从线路码流中容易提取时钟,码型中不宜含有直流分量,高、低频成分应尽量减少,设备应简单,易于实现码型变换和码型反变换的调试等。
2.2 设计任务
1)CPU采用FPGA或STM32或其它。
2)在观测点2能够看到AD采样之后的原始数据流,可以用CPU IO口进行输出。
3)在观测点3与观测点2进行对比,验证编码的正确性。
4)完成相关数据的本地显示。
三、设计原理
3.1 HDB3 码的介绍
DB3码即三阶高密度双极性码(High Density Bipolar of Order3,简称:HDB3码)是一种适用于基带传输的编码方式,“三阶” 通俗讲就是最多3个连0码元,“ 高密度双极性”就是没有直流分量,不会连续出现+1或-1,它是为了克服AMI码的缺点而出现的,具有能量分散,抗破坏性强等特点。
阶高密度双极性码用于所有层次的欧洲E-carrier系统,HDB3码将4个连续的”0″位元取代成”000V”或”B0OV”。这个做法可以确保连续的相隔单数的一般B记 。
3.2 HDB3 的编码转换规则
HDB3码的编码规则主要分为3步:
.先将消息代码变换成AMI码,若AMI码中连0的个数小于4,此时的AMI码就是HDB3码;
.若AMI码中连0的个数大于等于4,则将每4个连0小段的第4个0变换成与前一个非0符 (+1或-1)同极性的符 ,用表示(+V,-V);
.为了不破坏极性交替反转,当相邻V符 之间有偶数个非0符 时,再将该小段的连0码元段的第1个0变换成+B或-B,B的符 与前一非零符 的相反,并让后面的非零符 从符 开始再交替变化。
如:
息代码: 10000100001 100001 1
MI码: +10000-10000+1-10000+1-1
DB3码:+1 000+V-1000-V+1-1 +B00+V-1 +1
DB3码: +1000+1-1000-1 +1-1 +100+1-1 +1
3.3 HDB3 码的解码转换规则
然编码很复杂,但解码规则很简单,就是把原来的取代节(4个连零)找到即可,若3连”0″前后非零脉冲同极性,则将最后一个非零元素译为零,如+1000+1就应该译成10000″, 否则不用改动;若2连”0″前后非零脉冲极性相同,则两零前后都译为零,如-100-1, 就应该译为0000,否则也不用改动。再将所有的-1变换成+1后,就可以得到原消息代码。
如:
DB3: 0+1 00-1000-1 +1000+1-1 +1-1 00-1 +1 00-1
码: 01 001 00001000011000000100 1
四、设计过程
4.1 HDB3码的系统结构与方案设计
4.2 HDB3码硬件电路设计与搭建
硬件电路中,我们使用了STM32作为CPU,实验室信 发生器作为信 源(使用模拟电压信 ),使用STM32上的LED屏作为显示模块,形成一个简单的硬件电路完成HDB3码的编码与解码。
4.3 HDB3码的软件设计过程
4.3.1 HDB3码编码译码功能设计
DB3编码主要分为3个部分消息码转换为AMI码,由于AMI码存在一定缺点,再进行HDB3编码,HDB3码编码判断当出现4个连0时,第4个0变为V,加V后根据规则判断第1个0是否需要变为B(V和B本质上均为1)。
MI码部分:对定义长度数组进行循环判断,当源码为0时,AMI码一定为0,当源码为1时,进行判断,第奇数个1 时AMI码为+1,第偶数个1 时AMI码为+1,此时完成源码到AMI码转换。
DB3码编码部分:对定义长度数组进行循环判断,当源码为0时,判断连0个数是否大于4,当连0个数大于4时,此时第4位为V码,根据初始定义V码极性为正,对后续V码进行正负交替变换,并更新最后一个V码状态,确定V码正负状态后,需要对每一个V码及它对应的前一个信码的符 进行判断,若极性不同,则需要增加同极性补码B。如果第一位源码为1,则对应HDB3码的信码极性为+1,此后正负交替即可,将编码结果保存在相应数组中。
DB3码译码部分:对HDB3码进行译码,对定义长度数组进行循环判断,当HDB3码为0时,译码结果一定为0,当HDB3码为1或-1时,如果当前HDB3码极性与前一个信码极性相同且连续0的个数大于等于2个,则当前HDB3码是V码,译码结果为0;如果连续0的个数等于2个,则前一个信码是补信码,译码结果为0;如果当前HDB3码是信码(含B及B’),则译码结果是1,完成HDB3译码,将译码结果保存在相应数组中。
4.3.2 AD转换模块
AD转换模块中,将模拟信 经ADC通道1读入,存入buff数组中,经过精度转换计算出电压值(有效值),由于STM32自身运算速率及LCD屏扫描频率的限制,我们对输入的瞬时信 的最大幅度进行检测,仅取最大幅度的有效值为最终电压值,由于LCD显示函数对小数点的显示的不支持,为简化操作,我们将有效值电压以mV为单位(X1000倍)显示在波形区域的左侧。同时我们在LCD屏上以0.3V/格的单位精度画出buff数组中存储的输入信 的波形图(幅值为有效值)。
五、结论
5.1 调试的过程与结果展示
证二:通过上图可以观察到,通过红绿两路信 进行作差,得到紫色波形,即HDB3编码波形,结果验证正确。

证三:通过上图可以观察到,通过红绿两路信 进行作差,得到紫色波形,即HDB3编码波形,结果验证正确。
六、附录
(一)做的过程中编的一些函数
1、AMI码 HDB3码 .c
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!