前言
实习至今,一直在做xDSL模拟链路的MTPR测试,一开始什么也不知道,就是把各个模块接上线,打开电源,按下自动化测试脚本,等几分钟测试结果就出来了。到了这会儿,5个多月的时间了,说起手上的工作具体做的啥,还是云里雾里的感觉。这中间有很多是本科通信原理和无线通信课程里的东西,可惜当初学得不咋的,现在做的也是稀里糊涂。
为什么要进行MTPR测试
MTPR的英文是Multi-Tone Power Ratio,即多音功率比。首先,我们要知道在进行数据通信的时候,收发的数据是搭载在一系列的载波上面进行通信的,而在一个载波上承载多少的信息,是由这个载波的信号质量即信噪比来决定的,如果这个载波的信噪比SNR值高,那这个载波就可以多发几位的数据,对我们而言就是可以有更快的上网速度,如果哪个载波的SNR比较小,那么承载在这个载波上的信息就有更高的误码率,所以为了提高效率,就在这个载波上少承载数据。所以,为了能够自适应地根据信道的变化而调整载波上的数据量,可以更有效率地进行通信,测量MTPR的值就非常重要。
当终端刚接到局端上去之后,终端和局端在进行正常的数据通信之前,要先经过握手和初始化的过程,才能激活,即建立可以正常通信的链路。在初始化的过程中,两端的设备就会对信道的质量进行计算,从而规划好合适的传输速度。
那么在验证板时期,而非产品板时,为什么要进行MTPR测试呢?当然是尽可能地修改电路提升MTPR的值。为什么不同载波的SNR会不同,有好有差呢?因为器件本身的性质,CPE(终端)和CO(局端)设备对不同频段信号的响应不同;物理线路的物理特性,对不同频段的信号有不同程度的衰减,以及不同子载波间的信号干扰,信道的噪声,这一些列的原因都会导致在电路中电信号不再是我们想要的那样。
MTPR的值是怎么定义的呢?如果当前要测量某个子载波的MTPR值,就让信号源产生一个信号,这个信号的正常频段上,待测子载波不发送,其他载波正常发送,这个信号经过测试链路后,由于电路系统的非线性(上述的原因),这个原本没有发送的载波的位置会出现一个不希望出现的信号(比系统的底噪高),假设其他发送的载波信号值都一致,那么该载波的MTPR值就是相邻载波的信号值减去待测载波位置的信号值,该MTPR也可以说是SNR。当发现信号经过测试电路后,某个频段的MTPR值不达标或是异常,就应该想办法修改电路设计和器件,以达到理想的MTPR。
为什么会有这个不该出现的信号呢?很大程度上是电路的非线性导致的谐波,而多个子载波的谐波叠加就出现了较大的噪声。这和调制的方式是有关系的,后面会提到,xDSL中用到了OFDM,这种多载波调制技术的载波都是某个频率(这里是4.3125KHz)的整数倍,所以谐波都叠加在这个频点的整数倍上了,故而没有发的子载波位置会出现不希望的噪声。当然了,其他的调制方式也会出现谐波的问题,但是应该没有这种叠加的效应,所以不太严重(不了解,瞎说的)。
DMT原理
xDSL中,调制技术是DMT,英文是Discrite Multi-Tone Modulation, 即离散多音调制。我在前面已经介绍了一部分OFDM的内容了,离散多音调制可以认为是分两步调制的,先是多载波调制:一串经过一系列处理的二进制码流,根据每个子载波的SNR,确定可以承载信息bit的位数后进行分块分配到子载波上;第二步是QAM,英文是Quadrature Amplitude Modulation,即正交幅度调制,也就是利用相位和幅度联合调制。所谓的正交就是相位相差90度的载波的乘积在一个周期内的积分为0,所以,利用星座图,把二进制块映射到对应的位置,即获取到星座图上的幅值和相位。再把这个幅度和相位搭载到对应的子载波,调制就完成了,而多载波调制的过程就可以通过傅立叶反变化来实现,生成的时域信号就是要发送出去的基带信号了。由于之前经过星座图映射得到的位置数据是复数,并且IDFT处理前后的数据都是并行的,且变换后也还是复数,所以需要先把并行的数据转成一串数据,并把这串数据分成两串,一串是实部,一串是虚部,这两串数据分别和两个正交的载波相乘之后相加,就是要待发送出去的实际信号值了。
当然了,我好想说错了一些,实际上在刚得到星座图映射到的负数后,会把一个符号内的这一串数做一个符号延长,生成一个共轭对称的,是原序列两倍的信号,这样做就可以在IDFT之后只生成实数,不在需要两路正交信号承载了,节省了硬件资源。实际在做数字调制即星座映射生成符号之前,需要经过一系列的编码过程,比如扰码、前向纠错编码、交织编码等一系列降低误码率的操作,这些是物理层之前的操作,与媒体介质无关的,由软件算法实现的(我猜的),所以不是研究的重点,与实际的电路波形相关的就是OFDM和QAM的部分了。
我再把上面说的这些简略地总结一下就是串性的二进制码流根据信道子载波SNR分块,由星座图映射得到复数序列,扩张序列成2倍长度的共轭序列,把序列进行IDFT,获得实数序列,将并行的实数转化成一串实数,这就是要发送的数据,把该数据进行数字化,再通过DAC把实际的波形生成(我猜的)。这应该就是一个完整的时域波形信号生成过程了。
遇到的一些问题
在测试的过程中,经常出现测试结果异常的情况,下面是我遇到的几种情况。
同轴线坏了,有的是出现了几个dB的衰减,影响测试结果,有的是断了(由于是双端口中的一根),导致功率少了一半。
连接线放置的时候,经过其他电路板(上电的),导致信号被干扰。
功率限制的原因:linedriver的输入不能太大,不然信号会被削波;Balun在大的功率下,频率响应变差。
Balun的频率响应范围变成测试的瓶颈。
周围的大功率设备对测试电路产生影响,表现在通过连接期间中的非屏蔽铜线圈,双绞线耦合到信号,使得不同频段的底噪有所抬升。