0.引言:
笔者在科研过程中主要用的是带通传输系统,很多内容和基带系统是一致的,但是并不是完整的基带传输系统加上调制解调部分就是带通传输系统。笔者在学习的过程中遇到一些疑惑,比如:在通信原理第六章数字基带传输系统(《通信原理-樊昌信》)中,我们学习了一些数字基带信号波形(NRZ、RZ等)和基带传输常用的码型(AMI码、HDB3码等),但是在进行带通传输系统的MATLAB仿真时,并没有看到相关代码,很奇怪这部分为什么不做呢?其实注意到这个问题是因为我需要在目前的带通通信系统中进行位同步,于是学习了相关方法,注意到如果采用自同步中的闭环码元同步方法(滤波法,详见通信原理13.3),需要码元序列中有较多地突跳边沿,改用HDB3码等方法对基带码元的传输码型做变换可以达到这一目的,但是带通系统中怎么改用HDB3码呢?如果在QPSK映射前做码型变换,那么变换后的序列含有-1,这样就没办法进行映射了,QPSK不认识-1。如果在QPSK映射后做码型变换,QPSK映射后的数据存在-1,同样没办法进行HDB3编码。像这样的码型变换应该在基带系统中的哪个部分做呢?基于以上问题,我查阅了很多资料,有了一些答案,个人能力有限,如有理解不到位的地方,还请指正。
1.基带传输系统理论概述
基带传输系统虽然不像带通传输系统那样应用广泛,但是在利用对称电缆构成的近程数据通信中(如计算机局域网)广泛采用基带传输系统,并且基带传输方式现在也可以进行高速传输。
(1)参考**《通信原理-樊昌信》**
把基带传输系统概括为以下部分:基带脉冲(经过码型编码器产生的传输码)输入-信道信号形成器(发送滤波器)-信道-接收滤波器-抽样判决器-基带脉冲输出。
(2)参考**《数字通信:基础与运用,斯克拉》**
把基带传输系统概括为以下部分:信源-格式化-脉冲调制-信道-解调和采样-检测(判决)-格式化-信宿。
在此解释几个核心步骤:
①脉冲调制:
具体关于脉冲调制的不同定义可以看这篇文章:对脉冲调制的不同定义
数字消息从处于二进制1和0的逻辑状态变换到基带(脉冲)波形的过程。脉冲调制波形可以分为PCM波形和M进制脉冲调制,PCM波形包括NRZ、RZ、相位编码、多电平二进制等,M进制脉冲调制包括PAM、PPM、PDM等。PCM波形的具体分类如下所示:
参考下图有助于理解上述编码规则:
②解调和采样:接收波形经过接收滤波器(和均衡滤波器),得到基带脉冲,进行采样。
其实这两种结构是一致的,斯克拉这本书中的脉冲调制过程包括了樊昌信这本书中的基带脉冲输入和信道信号形成器(发送滤波器)两部分,解调和采样过程包括了樊昌信这本书中的接收滤波器和抽样判决中的抽样,检测过程对应抽样判决中的判决。
有一点在此要强调一下:樊昌信这本书中的基带脉冲是指经过码型编码器产生的传输码,是类似1010001这样的序列,那么它可以和根升余弦滤波器做卷积,得到其他适合在信道中传输的波形。而脉冲调制其实也是对先对01序列做码型变化,然后经过成型滤波器产生PCM或者M进制脉冲调制波形。书中直接为我们画出脉冲调制后的波形(以矩形脉冲为例,实际上一般不会用矩形脉冲),实际上的实现过程是先码型变换再基带成型,这一点要理解到位。
2.基带传输系统编程概述
因为我在做的是基带系统的MATLAB仿真,所以从编程的角度考虑,基带传输系统应该包括以下部分:随机二进制序列-码型编码器-上采样-发送滤波器-信道-接收滤波器(均衡)-抽样判决(定时同步)-码型译码器-测BER。
(1)码型编码器
在实际的基带传输系统中,并不是所有的基带波形都适合在信道中传输。例如,含有丰富的直流和低频分量的单极性基带波形就不适宜在低频传输特性差的信道中传输,因为这有可能造成信号严重畸变。又如,当消息代码中包含长串连续的“0”或“1”符号时,非归零波形呈现出连续的固定电平,因而无法获取定时信息。单极性归零码在传送“0”时,也存在同样的问题。因此,对传输用的基带信号主要有以下两个方面的要求。
对代码的选择(传输码型的选择):原始消息代码必须编成适合于传输用的码型;
对所选码型的电波形要求(基带脉冲的选择):电波形应适合于基带系统的传输。
我们先讨论第一个方面的要求:传输码型的选择
常见的传输码型(线路码型):AMI码、HDB3码、双相码(曼彻斯特码)、差分双向码、Miller码、CMI码、块编码等
在基带传输系统中,原始消息代码必须编成适合于传输用的码型(AMI码、HDB3码等),也就是将长串的“0”或者“1”想办法消灭掉,这可以帮助我们提取位定时信息,这是码型变换。**
(2)上采样(内插0)
至于在发送滤波前为什么要进行内插0:
第一种解释:张辉、曹丽娜的《现代通信原理与技术》的第9章现代数字调制解调技术中解释到:为了使产生的已抽样基带信号与后面的采样速率相匹配,在进行调制前必须通过内插处理将基带信号的采样速率提高到与采样速率fs相同。
还有一个更好的解释:
简单来说,是因为码型编码器进行编码后,每一个基带脉冲持续
T
p
T_{p}
Tp秒,进行成型滤波后,我们希望每一个基带脉冲还是持续
T
p
T_{p}
Tp秒,仅仅是基带脉冲的波形变成升余弦或其他你想要的脉冲。
我们希望得到的信号可以写成:
s
(
t
)
=
∑
k
a
k
p
(
t
−
k
T
p
)
,
s(t) = \sum_{k}{a_{k}p(t-kT_{p})},
s(t)=k∑akp(t−kTp),其中,
p
(
t
)
p(t)
p(t)是发送滤波器的冲激响应,
a
k
a_{k}
ak是码元。
上式等价于:
s
(
t
)
=
∑
k
p
(
t
)
∗
a
k
δ
(
t
−
k
T
p
)
,
s(t) = \sum_{k}{p(t)*a_{k}\delta(t-kT_{p})},
s(t)=k∑p(t)∗akδ(t−kTp),所以码元的间隔也是
T
p
T_{p}
Tp秒,这就需要我们插
T
p
T_{p}
Tp个0。
MATLAB仿真验证如下:
①代码
% 验证成型滤波前必须上采样
clc
clear
close all
%% 参数设置
Rs = 1e8;
Ts = 1/Rs; % 抽样时间间隔
dt = Ts;
symbol_num = 2^15;
sps = 2;
sis = 8;
fs = sps * Rs;
tx = (0:symbol_num-1)/Rs;
t0 = (0:symbol_num*sps-1)/fs;
msg = randi([0 1], symbol_num , 1);
%% 根升余弦成型滤波器
alpha = 1; % 滚降系数
rcosFirCof = rcosdesign(alpha,sis,sps,'sqrt'); % 根升余弦成型滤波器,输出为滤波器系数
%% 符号上采样
msgUpsps = upsample(msg,sps);
%% 成型滤波
msgSourceNoSam = conv(msg,rcosFirCof,'same');
msgSourceAfterSam = conv(msgUpsps,rcosFirCof,'same');
%% 绘制结果
subplot(311);
plot(tx, msg);
axis([0,10*dt,-1.5,1.5]);
title("码元序列");
subplot(312);
plot(tx, msgSourceNoSam);
axis([0,10*dt,-inf,inf]);
title("成型滤波(信号未经过上采样)");
subplot(313);
plot(t0, msgSourceAfterSam);
axis([0,10*dt,-inf,inf]);
title("成型滤波(信号经过上采样)");
②实验结果
(3)发送滤波器
现在讨论第二个方面的要求:基带脉冲的选择
常见的基带脉冲:矩形脉冲、三角脉冲、高斯脉冲、升余弦脉冲等
经过码型编码器产生传输码后,相应的基本波形通常是矩形脉冲(书上为了方便都这么画),但矩形脉冲是由无数个频率分量叠加而成的,其频谱很宽,在通过带限信道时肯定会有部分频率不能通过,产生畸变,不利于传输,发送滤波器用于压缩输入信号频带,把传输码变成适宜于信道传输的基带信号波形。一般采用根升余弦滤波器进行成型滤波,有两种方法,一种是将信号和根升余弦滤波器的系数卷积,一种是对信号进行滤波,采用第二种方法会引入延迟,需要补0。
(4)接收滤波器(和均衡滤波器)
接收滤波器用来接收信号,尽可能地消除信道噪声和码间串扰,对信道特性进行均衡,使输出的基带波形有利于抽样判决。
(5)抽样判决(定时同步)
在传输特性不理想、有噪声的情况下,在规定时刻(由位定时脉冲控制)对接收滤波器的输出波形进行抽样判决,以恢复基带信号。
(6)码型译码器
码型编码的逆过程。
3.编程实现及结果分析
(1)编程实现
①系统参数
②码型编码器
③信道信号形成器(发送滤波器)
④信道
⑤接收滤波器
⑥抽样判决器
⑦定时脉冲和同步提取
⑧测BER
(2结果分析)
4.总结
回到最初的问题,已经有了答案。如果是带通系统,不需要进行码型变换,经过调制后进行成型滤波,同步时可以采用其他的方法进行同步。如果是基带系统,需要先进行码型变换产生传输码,再进行成型滤波产生适合在信道中传输的波形,在做码元同步时可以选择适合同步的传输码。在我看来,基带进行码型变化的这一过程,类似于带通系统中调制这一过程。