线路代码是用于表示通信线路上数据的信令方案。有几种可能的映射方案可用于此目的。让我们了解并演示Matlab和Python中的线路代码和PSD(功率谱密度)。
线路代码–要求
当长距离传输二进制数据时,使用行码对二进制数据进行编码应满足以下要求。
- 可以传输所有可能的二进制序列。
- 线路编码信号必须占用较小的传输带宽,以便单位带宽可以传输更多的信息。
- 编码信号的错误概率应尽可能小
- 由于长距离通信信道无法传输低频内容(例如:信号的直流分量,此类线路码在编码时应消除直流)。编码信号的功率谱密度也应适用于传输介质。
- 接收器应该能够从发送的信号中提取定时信息。
- 保证二进制数据中长时间运行1s和0s的定时恢复位的转换。
- 支持通信系统的错误检测和纠正功能。
单极非归零(NRZ)电平和归零(RZ)电平代码
单极NRZ(L)是所有行代码中最简单的,其中正电压表示二进制位1,零伏表示位0。它也称为开关键控。
在单极归零(RZ)电平线路码中,信号值在每个脉冲之间归零。
对于单极NRZ和RZ线编码信号,信号的平均值不为零,因此它们具有显著的直流分量(注意功率谱密度(PSD)图中零频率处的脉冲)。
PSD中的直流脉冲不携带任何信息,还会导致传输线发热。这是通信资源的浪费。
单极性编码信号不包括定时信息,因此长时间运行0和1可能会导致同步在接收器上。
双极非归零(NRZ)电平代码
在双极NRZ(L)编码中,二进制位1映射到正电压,位0映射到负电压。因为有两个相反的电压(正电压和负电压),所以它是一种双极信号方案。
从功率谱密度可以看出,双极NRZ信号在零频率下没有明显的脉冲(直流分量非常接近零)。此外,它比单极线码具有更大的功率(注意:双极NRZ的PSD曲线略高于单极NRZ的PSD曲线)。因此,双极NRZ信号在接收器处提供更好的信噪比(SNR)。
双极NRZ信号缺少嵌入的时钟信息,当二进制信息长时间运行0和1时,接收机会出现同步问题。
交替标记反转(AMI)
AMI是一种双极信号方法,将二进制0编码为0伏,二进制1编码为+ve和-ve电压(在连续的1s之间交替)。
AMI消除了直流分量。从下面的PSD图中可以看出,与单极和双极NRZ线路码相比,AMI降低了带宽(更窄的隆起)并加快了滚动速度。
它具有内置的错误检测机制:位错误会导致违反双极信号。即使长时间运行1和0,它也能保证定时转换。
曼彻斯特编码
在曼彻斯特编码中,每个二进制位的信号都包含一个转换。例如,位0表示为从负电压到正电压的转换,位1表示为从一个正电压到负电压的转换。因此,它被认为是自时钟,并且没有直流分量。
数字曼彻斯特编码可以通过对二进制数据和时钟进行异或运算,然后将输出映射到适当的电压水平来实现。
从PSD图中,我们可以得出曼彻斯特编码信号占用双极NRZ(L)编码信号带宽的两倍。
Matlab脚本
在这个脚本中,使用以下命令模拟线路代码并绘制其功率谱密度(PSD)pwelch命令.
%模拟线路代码并绘制功率谱密度(PSD)%作者:Mathuranathan Viswanathanclearvars;clc;L=32;%每个数据位的数字采样数Fs=8*L;%采样频率电压等级=5;%峰值电压水平(伏特)数据=兰特(10000,1)>0.5;%数据的随机1和0clk=mod(0:2*numel(数据)-1,2).';%时钟采样ami=1*数据;previousOne=0;%AMI编码ii=1:numel(数据)如果(ami(ii)==1)&&(previousOne==0)ami(ii)=电压水平;previousOne=1;结束if(ami(ii)==1)&&(previousOne==1ami(ii)=-电压水平;previousOne=0;结束结束%将位转换为序列并映射到电压电平clk_sequence=重塑(repmat(clk,1,L).',1,长度(clk)*L);data_sequence=重塑(repmat(data,1,2*L).',1、长度(数据)*2*L);unipolar_nrz_l=电压等级*数据顺序;nrz_encoded=电压等级*(2*data_sequence-1);unipolar_rz=电压等级*和(data_sequence,而不是(clk_sequece));ami_sequence=重塑(repmat(ami,1,2*L).',1,长度(ami)*2*L);manchester_encoded=电压等级*(2*xor(data_sequence,clk_sequence)-1);数字;%在时域中绘制信号子区(7,1,1);地块(clk序列(1:800));标题(“时钟”);子区(7,1,2);绘图(数据序列(1:800));标题(“数据”)子区(7,1,3);图(unipolar_nrz_l(1:800));标题(“单极非归零电平”)子区(7,1,4);绘图(nrz编码(1:800));title(“双极不归零电平”)子区(7,1,5);绘图(单极_rz(1:800));标题(“单极归零”)子区(7,1,6);地块(ami_sequence(1:800));title(“交替标记反转(AMI)”)子区(7,1,7);绘图(曼彻斯特编码(1:800));标题(“曼彻斯特编码-IEEE 802.3”)数字;%绘制功率谱密度ns=最大值(大小(单极_nrz_l));na=16;%平均因子绘制平均welch谱w=汉宁(楼层(ns/na));%汉宁窗%使用Hanning窗口绘制Welch功率谱[Pxx1,F1]=pwelch(单极_nrz_l,w,[],[]、1,‘nesided’);[Pxx2,F2]=pwelch(nrz_encoded,w,[],[],1,‘nesided’);[Pxx3,F3]=pwelch(单极_rz,w,[],[],1,‘nesided’);[Pxx4,F4]=pwelch(ami_sequence,w,[],[]、1,‘nesided’);%[Pxx5,F5]=pwelch(曼彻斯特编码,w,[],[],1,‘nesided’);符号学(F1,Pxx1,‘DisplayName’,‘Unipolar-NRZ-L’);坚持;符号学(F2,Pxx2,'DisplayName','Bipolar NRZ(L)');符号学(F3,Pxx3,‘DisplayName’,‘Unipolar-RZ’);符号学(F4,Pxx4,'DisplayName','AMI');符号学(F5,Pxx5,‘DisplayName’,‘Manchester’);传奇();
Python代码
查看我的Google Colab中的python代码
评价此文章: (19平均票数:3.89(共5个)
作者的书籍