AMI、HDB3、密勒码编码实现
——matlab仿真模拟
【任务描述】
A. 产生一个长为1000的二进制随机序列,“0”的概率为0.8,”1”的概率为0.2;
B. 对上述数据进行归零AMI编码,脉冲宽度为符号宽度的50%,波形采样率为符号
率的8倍,画出前20个符号对应的波形(同时给出前20位信源序列); C. 改用HDB3码,画出前20个符号对应的波形; D. 改用密勒码,画出前20个符号对应的波形;
E. 分别对上述1000个符号的波形进行功率谱估计,画出功率谱; F. 改变信源“0”的概率,观察AMI码的功率谱变化情况;
【基本思路】
采用调用子函数的方法,在掌握了各种码的编码规律之后实现编码功能。具体实现了AMI码、HDB3码以及密勒码的编码。而且调用了功率谱函数spectrum对各种码的功率谱以及不同信源概率下的功率谱进行了比较。下面就详细介绍各种码形的变换思路: 1. AMI码
AMI码中信息码“0”对应着三元码序列中的“0”,信息码“1”则交替地变换为“+1”和“-1”的归零码。 2. HDB3码
在AMI码的基础上,当出现多于3个零的情况,利用其检错能力,使用异常代替长连零,以平衡码中的极性使得直流分量为0。 3. 密勒码
密勒码中使用码元周期中点的跳变来代表“1”,当出现连续的“0”时出现电平跳变,否则码元周期内不出现跳变。
【程序清单】
Code.m:完成产生随机0、1序列并且将其用波形表示的功能。 AMI_Code.m:将随机序列转换为AMI码 HDB3_Code.m:将随机序列转换为HDB3码 Miller_Code.m:将随机序列转换为密勒码
Plot_spectrum.m: 使用库函数绘制功率谱曲线
【仿真分析】
第 1 页 共 9 页
1. 前20个符号所对应的各种码形
在一次的仿真中随机产生的前20个符号为:
0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0
显然,NRZ(L)码的波形即为原始的序列信息码
对应的AMI码为:
0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 -1 0
对应的HDB3码为:
1 0 0 1 -1 0 0 -1 0 0 1 -1 0 0 1 0 0 0 -1 0
对应的密勒码为:
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0
可以看出:编码结果完全正确!
2. 四种码形的功率谱
第 2 页 共 9 页
3. 不同概率‘0’下AMI码形功率谱变化
第 3 页 共 9 页
第 4 页 共 9 页
第 5 页 共 9 页