扩频通信是一种利用比原始信号(信源产生的信号)本身频带宽得多的射频信号的通信方式,其全称是扩展频谱通信(Spread Spectrum Communication)。在扩频通信系统中,发信端用一种特定的调制方法将原始信号的带宽加以扩展,得到扩频信号。收信端再对接收到的扩频信号加以处理,把它恢复为原来带宽的信号。
频带的扩展是通过一个独立的码序列(一般是伪随机码)来完成的,用编码及调制的方法来实现的,与所传信息数据无关。在接收端则用同样的码序列进行相关同步接收。解扩及恢复所传信息数据。扩展频谱通信与光纤通信。卫星通信一同被誉为进入信息时代的三大高技术通信传输方式。
1、信号的频谱被展宽了
传输信息都需要一定的带宽,称为信息带宽。例如,人类语言的信息带宽为300~3400Hz,电视图像信息带宽为及MHz。为了充分利用频率资源,通常都是尽量用大体相当的信号来传输信息。在无线电通信中射频信号的带宽与所传信息的带宽是可相比拟的。例如,用调幅信号来传输语音信息,其带宽为语音信息带宽的两倍;电视广播射频信号带宽为其视频信号带宽的一倍多。通常把这些通信带宽与信息带宽可相比拟的通信称为窄带通信。
一般的调频信号,或脉冲编码调制信号,他们的带宽与信息之比也只有几到十几。扩展频谱通信信号带宽与信息带宽之比则高达100~1000,属于宽带通信。与窄带通信不同,扩频通信中同一频带之内可以同时建立多个信道进行通信,个信道之间通过扩频码进行区别,这就是码分多址通信技术。
2、采用扩频码序列调制的方式来展宽信号频谱
在时间上有限的信号,其频谱是无线的。例如,很窄的脉冲信号,其频谱很宽。信号的频带宽度与其持续时间近似成反比,如1us的脉冲,带宽约为1MHz,因此,如果很窄的脉冲序列被所传信息调制,则可产生很宽频带的信号。直接序列扩频系统就是采用这种方法获得扩频信号的。这种很窄的脉冲码序列,其码速率是很高的,称为扩频码序列。扩频码序列与所传信息数据是无关的,也就是说,它与一般的正弦载波信号一样,丝毫不影响信息传输的透明性,扩频码序列仅仅起扩展信号频谱的作用。
3、在接收端用相关解调来解扩
已调信号在接收端都要进行解调来恢复所传的信息,在扩频通信中接收端则用与发送端相同的扩频码序列与接收到的扩频信号进行相关解调,恢复所传的信息。换句话说,这种相关解调起到解扩的作用,即把扩展以后的信号又恢复成原来所传的信息。这种在发端把窄带信息扩展为宽带信号,而在收端又将其解扩成窄带信息的处理过程,会带来一系列好处。例如,对于通信带内的窄带干扰来讲,在发射端,高速率的伪码序列对原始信号进行了调制,从而使信号频谱带宽增加,将信号的能量分散到整个频谱带宽内;在接收端,同步后的伪码序列对其进行解扩时,由于伪码的自相关特性,对有用的原始信号能量重新集中,而伪码与窄带干扰信号不相关,因此解扩的过程相当于对窄带干扰的一次扩频调制,分散了干扰信号的能量,经滤波处理后,有用信号带宽内的信噪比显著提高。
1、直接序列扩展频谱系统
直接序列扩展频谱系统(Direct Sequence Spread Spectrum Communication System,DS-SS),通常简称为直接序列系统或直扩系统,用待传输的信息信号与高速率的伪随机码波形相乘后,去直接控制射频信号的某个参量,来扩展传输信号的带宽。用于频谱扩展的伪随机序列称为扩频码序列。
在直接序列扩频通信系统中,通常对载波进行相移键控(Phase Shift Keying,PSK)调制。为了节约发射功率和提高发射机的工作效率,扩频通信系统常采用平衡调制器。抑制载波的平衡调制对提高扩频信号的抗侦破能力也很有利。
在发信端,待传输的数据信号与伪随机码(扩频码)波形相乘(或与伪随机码序列模2相加),形成的复合码对载波进行调制,然后由天线发射出去。在收信端,要产生一个和发信机中的伪随机码同步的本地参考伪随机码,对接收信号进行相关处理,这一相关处理过程通常称为解扩。解扩后的信号送到解调器解调,恢复出传送的信息。
2、跳频扩频通信系统
跳频扩频通信系统是频率跳变扩展频谱通信系统(Frequency Hopping Spread Spectrum Communicaiton System,FH-SS)的简称,或更直接地称为调频通信系统,确切地说,应叫做“多频、选码和频移键控通信系统”,它用二进制伪随机码序列去离散地控制射频载波振荡器的输出频率,使发射信号的频率随伪随机码的变化而跳变。调频系统可供随机选取的频率数通常是几千个以上的离散频率,在如此多的离散频率中,每次输出哪一个是由伪随机码决定的。
频率跳变扩频通信系统与常规通信系统相比较,最大的差别在于发射机的载波发生器和接收机中的本地振荡器。在常规通信系统中这二者输出信号的频率是固定不变的,然而在跳频通信系统中这二者输出信号的频率是跳变的。在跳频通信系统中发射机的载波发生器接收机中的本地振荡器主要由伪随机码发生器和频率合成器两部分组成。快速响应的频率合成器是跳频通信系统的关键部件。
跳频通信系统发信机的发射频率,在一个预定的频率集内由伪随机码序列控制频率合成器伪随机地由一个跳变到另一个。收信机中的频率合成器也按照相同的顺序跳变,产生一个和接收信号频率只差一个中频频率的参考本振信号,经混频后得到一个频率固定的中频信号,这一过程称为对调频信号的解跳。解跳后的中频信号经放大后送到解调器解调,恢复出传输的信息。
在跳频通信系统中,控制频率跳变的指令码(伪随机码)的速率,没有直接扩频通信系统中的伪随机码速率高,一般为几十bps~几kbps。由于调频系统中输出频率的改变速率就是扩频伪随机码的速率,所以扩频伪随机码的速率也称为跳频速率。根据跳频速率的不同,可以将跳频系统分为频率慢跳变系统和频率快跳变系统两种。
3、跳时扩频通信系统
时间跳变也是一种扩展频谱技术,跳时扩频通信系统(Time Hopping Spread Spectrum Communication System,TH-SS)是时间跳变扩展频谱通信系统的简称,主要用于时分多址(TDMA)通信中。与跳频系统相似,跳时是使发射信号在时间轴上离散地跳变。我们先把时间轴分成许多时隙,这些时隙在跳时扩频通信中通常称为时片,若干时片组成跳时时间帧。在一帧伪随机序列进行选择的多时隙的时移键控。由于采用了宅很多的时隙去发送信号,相对来说,信号的频谱就展宽了。
在发送端输入的数据线存储起来,由扩频码发生器产生的扩频序列去控制通-断开关,经二相或四相调制后再经射频调制后发射。在接收端,当接收机的伪码发生器与发端同步时,所需信号就能每次按时通过开关进入解调器。解调后的数据也经过一缓冲存储器,以便恢复原来的传输速率,不间断地传输数据,提供给用户均匀的数据流。只要收发两端在时间上严格同步进行,就能正确地恢复原始数据。
跳时扩频系统也可以看成一种时分系统,所不同的地方在于它不是在一帧中固定分配一定位置的时隙,而是由扩频码序列控制的按一定规律跳变位置的时隙。跳时系统能用时间的合理分配来避开附近发射机的强干扰,是一种理想的多址技术。但当同一信道中有许多跳时信号工作时,某一时隙内可能有几个信号相互重叠,因此,跳时系统也和调频系统一样,必须采用纠错编码,或采用协调方式构成时分多址。由于简单的跳时扩频系统抗干扰性不强,很少单独使用。跳时扩频系统通常与其他方式的扩频系统结合使用,组成各种混合方式。
从抑制干扰的角度来看,跳时系统得益甚少,其优点在于减少了工作时间的占空比。一个干扰发射机为取得干扰效果就必须连续地发射,因为干扰机不易侦破跳时系统所使用的伪码参数。跳时系统的主要缺点是对定时要求太严。
4、线性脉冲调频系统
线性脉冲调频系统(Chirp)是指系统载频在一给定的脉冲时间间隔内线性地扫过一个宽带范围,形成一带宽较宽的扫频信号,或者说载频在一给定的时间间隔内线性增大或减小,使得发射信号的频谱占据一个宽的范围。在语音频段,线性调频听起来类似于鸟的“啾啾”叫声,所以线性脉冲调频也称为鸟声调制。
线性脉冲调频是一种不需要用伪随机码序列调制的扩频调制技术,由于线性脉冲调频信号占用的频带宽度远远大于信息带宽,从而也可获得较好的抗干扰性能。
线性脉冲调频是作为雷达测距的一种工作方式使用的,线性脉冲调频信号的产生,可由一个锯齿波信号调制压控振荡器(VCO)来实现。发射波是一个具有一定频偏的宽带调频波,通常是线性调频。线性调频信号的特点是,发射脉冲信号的瞬时频率在信息脉冲持续周期内随时间进行线性变化,在脉冲起始和终止时刻存在一定的频差。线性脉冲调频信号的接收解调可用匹配滤波器来实现。
5、混合扩展频谱通信系统
以上几种基本的扩展频谱通信系统各有优缺点,单独使用其中一种系统有时难以满足要求,将以上几种扩频方法结合起来就构成了混合扩频通信系统。常见的有频率跳变-直接序列混合系统(FH/DS)、直接序列-时间跳变混合系统(DS/TH)、频率跳变-时间跳变混合系统(HF/TH)等。它们比单一的直接序列、跳频、跳时体制有更优良的性能。
直扩序列扩频系统的组成框图如下图所示,由信源输出的信号 a ( t ) a(t) a(t)是码元持续时间为 T a T_{a} Ta的信息流,伪随机码(PN)产生器产生的伪随机码 c ( t ) c(t) c(t),每一伪随机码元宽度或切谱(Chip)宽度为 T c T_{c} Tc。将信码 a ( t ) a(t) a(t)与伪随机码 c ( t ) c(t) c(t)进行模2加,产生一速率与伪随机码速率相同的扩频序列,然后用扩频序列去调制载波,这样就得到扩频调制的射频信号。由于伪随机码的速率远大于信码速率,故扩频后的数据速率为伪随机码速率。这样扩频序列调制后的信号带宽由伪随机码速率及调制方式决定,对于常用的BPSK调制方式来说,其视频宽度为伪随机码速率的2倍。
在接收端,收到的扩频信号经高放和混频后,用与发端同步的伪随机序列对中频的扩频调制信号进行相关解扩,将信号的频带恢复为信号序列 a ( t ) a(t) a(t)的频带,即中频调制信号,然后进行解调,恢复出所传输的信息 a ( t ) a(t) a(t),从而完成信息的传输。相关处理是将两个信号相乘,然后求其数学期望(均值),或求两个信号瞬时值相乘的积分。当两个信号完全相同时(或相关性很好时),得到最大的相关峰值。对于干扰信号和噪声而言,由于与伪随机序列不相关,在相关解扩器的作用下,相当于进行了一次扩频。干扰信号和噪声频谱被扩展后,其谱密度降低,这就大大降低了进入信号通带内的干扰功率,使解调器的输入信噪比提高,从而提高系统的抗干扰能力。扩频接收机解扩前后的频谱如下图所示。
通常在衡量扩频系统抗干扰能力优劣时,我们引入处理增益 G p G_{p} Gp的概念来描述,其定义为接收机解扩器输出信噪功率比与接收机的输入信噪功率之比,即
G p = 输 出 信 噪 功 率 比 / 输 入 信 噪 功 率 比 G_{p}=输出信噪功率比/输入信噪功率比 Gp=输出信噪功率比/输入信噪功率比
它表示经扩频接收系统处理后,使信号增强的同事一直输入接收机的干扰信号能力的大小。 G p G_{p} Gp越大,则抗干扰性能力越强。对于以BPSK调制方式的直扩系统来说,处理增益为
G p = 射 频 带 宽 / 数 据 带 宽 = 位 码 速 率 / 数 据 速 率 G_{p}=射频带宽/数据带宽=位码速率/数据速率 Gp=射频带宽/数据带宽=位码速率/数据速率
直扩信号的调制原理与BPSK十分相似,仅仅是在进行载波调制之前,对原始数据进行了伪随机扩频而已。而原始数据与伪随机的扩频处理,实际上也只是简单的模2加(相当于异或)而已,因此,对于直扩信号调制技术来讲,关键的问题是产生符合要求的伪随机码。
伪随机序列需要有以下3种性质。
(1)平衡性:在每个码序列中,1码元的数目最多比0码元数目少一个,也就是说,0和1的个数接近相等。
(2)游程特性:在每个码元序列内,长度为1的游程约占游程总数的1/2,长度为2的游程总数约占游程总数的1/4,长度为3的游程总数约占游程总数的1/8,以此类推,在同长度的游程中,0游程和1游程数大致相等。
(3)相关性:若将某个码序列与它的任何循环移位码字在一个周期内逐位相比,则在它们对应的码元中,相同的数目与不同的数目之差最多为1.
m序列是一种线性序列,可根据特征多项式来产生,且其特征多项式必须是本原多项式。然而,并非所有的可不约多项式都是本原多项式,或者说,并非所有的不可约多项式都能产生m序列,而仅其中的一部分能产生m序列。在确定本原多项式后,产生m序列的方法十分简单,只需根据本原多项式构造一个线性移位寄存器即可。例如,已知本原多项式 f ( x ) = x 5 + x 2 + 1 f(x)=x^{5}+x^{2}+1 f(x)=x5+x2+1,显然这是一个5级多项式,产生的m序列周期为31,其线性移位寄存器结构如下图所示。
根据上图产生m序列时,每个延时寄存器中的初始值不同,则产生的m序列的相位不同,但m序列的周期及码序列是唯一的。对于5级m序列而言,上图警示针对某个特定的本原多项式产生的m序列。在MATLAB仿真以及后续Verilog HDL设计实现时,可以通过设置寄存器的初始值,以及抽头位置参数,实现产生不同相位及不同本原多项式所对应的m序列功能。
条件:
代码:
伪随机码产生函数:
function p=PnCode_Gen(polynomial,reg)
% PN码产生器函数
% polynomial的长度=reg的长度+1,polynomial的值不能为全0
% polynomial为本原多项式,从左到右依次为高位到低位,且最高位与最低位必须为1;低位表示延时一个周期,高位依次顺延
% reg为置寄存器初始值,也相当于PN码的初始相位,左边为高位,如[10010]表示延时5个周期的寄器和2个周期的寄存器初值为1
% 如产生5级31位的PN码,则多项式形式为[1 * * * * 1]
% 例:从西安电子科技大学.查光明.著的《扩频通信]》中查出5级PN码45E,参数为[1 0 0 1 0 1],左边为高位
% PN:0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0
grade=length(polynomial)-1;%根据多项式计算延时级数
PN_Length=(2^grade-1); %计算PN码一个周期的长度
pn=zeros(1,PN_Length); %设置PN码寄存器初值
%找出本原多项式中除最低位外为1的位,并依次存放在寄存器c中
%例如对于ploynomial=[1 0 0 1 0 1],则c(1)=2,c(2)=5
n=0;
c=zeros(1,grade);
for i=grade:-1:1
if polynomial(i)==1
n=n+1;
c(n)=grade+1-i;
end
end
%产生一个周期的PN码
q=0;
for i=1:PN_Length
%从最高延时的寄存器中输出PN码
p(i)=reg(1);
%定位第一个抽头寄存器位置,并取值
m=reg(grade+1-c(1));
%完成各抽头寄存器取值的模2加
for q=2:grade
if (c(q)>0) & (reg(grade+1-c(q))==1)
m=~m;
end
end
%寄存器的值依次移位
for q=1:(grade-1)
reg(q)=reg(q+1);
end
reg(5)=m;
end
DSSS调制信号主程序:
Rb=200*10^3; %码速率为200KHz
Lpn=31; %伪码序列长度
Rc=Rb*Lpn; %伪码速率
Fs=8*Rc; %采样速率为49.6MHz
fc=8*10^6; %载波频率为8MHz
a=0.8; %成形滤波器系数为0.5
N=5000; %原始数据长度
L=N*Lpn*Fs/Rc; %仿真数据长度
t=0:(L-1); %产生长度为L,频率为Fs的时间序列
t=t/Fs;
polynomial=[1 0 0 1 0 1]; %产生PN码的本原多项式
reg=[1 0 0 0 0]; %设置PN码的初始相位
PN=PnCode_Gen(polynomial,reg) %调用函数产生PN码
%PN=zeros(1,length(PN));
bitstream=randint(1,N,2); %产生N点原始二进制数据
source=rectpulse(bitstream,Lpn);%对N点原始数据进行Lpn倍重采样
%用伪随机码对原始数据扩频调制
data=zeros(1,N*Lpn);
for i=1:N
if bitstream(i)==0
data((i-1)*Lpn+1:i*Lpn)=PN;
else
data((i-1)*Lpn+1:i*Lpn)=~PN;
end
end
%将扩频数据转换成双极性码,以便进行平衡调制
for i=1:N*Lpn
if data(i)==0
data(i)=-1;
end
end
%对扩频后的数据以Fs频率采样
Ads=upsample(data,Fs/Rc);
%设计升余弦滤波器
n_T=[-2 2];
rate=Fs/Rc;
T=1;
Shape_b = rcosfir(a,n_T,rate,T);%figure(4);freqz(Shape_b)
%对采样后的数据进行升余弦滤波;
rcos_Ads=filter(Shape_b,1,Ads);
%产生载频信号
f0=sin(2*pi*fc*t);
%产生DSS已调信号
dss=rcos_Ads.*f0;
figure(1)
%绘制成形滤波后信号频谱、DSS信号频谱、DSS信号时域波形
m_rcos_Ads=20*log10(abs(fft(rcos_Ads,1024)));m_rcos_Ads=m_rcos_Ads-max(m_rcos_Ads);
m_dss=20*log10(abs(fft(dss,1024)));m_dss=m_dss-max(m_dss);
%设置幅频响应的横坐标单位为MHz
x_f=[0:(Fs/length(m_dss)):Fs/2];x_f=x_f/10^6;
%只显示正频率部分的幅频响应
mrcos_Ads=m_rcos_Ads(1:length(x_f));
mdss=m_dss(1:length(x_f));
%设置时域波表的横坐标单位为us
Len=300;%设置时域波形显示的点数
x_t=1:Len;%产生长度为Len的时间序列
x_t=x_t/Fs*10^6;
%显示所需的频谱及时域波形
subplot(311); plot(x_f,mrcos_Ads);
legend('成形滤波后信号频谱');
xlabel('频率(MHz)');ylabel('幅度(dB)');grid on;
subplot(312); plot(x_f,mdss);
legend('dss已调信号频谱');
xlabel('频率(MHz)');ylabel('幅度(dB)');grid on;
subplot(313); plot(x_t,dss(101:Len+100));grid on;
legend('dss时域信号波形');
xlabel('时间(us)');ylabel('幅度(V)');grid on;
figure(2)
%对原始数据source、PN码、扩频数据data转换成相同采样频率信号
Ads_source=rectpulse(source,Fs/Rc);
Ads_PN=rectpulse(PN,Fs/Rc);
Ads_data=rectpulse(data,Fs/Rc);
%绘制4个PN码周期
% subplot(311);plot(Ads_source(1:4*Lpn*Fs/Rc));axis([1 4*Lpn*Fs/Rc -0.5 1.5]);
% subplot(312);plot([Ads_PN Ads_PN Ads_PN Ads_PN]);axis([1 4*Lpn*Fs/Rc -0.5 1.5]);
% subplot(313);plot(Ads_data(1:4*Lpn*Fs/Rc));axis([1 4*Lpn*Fs/Rc -1.5 1.5]);
%为便于观察比较,将三种波形绘制在一张图表上
L=6*Lpn*Fs/Rc;
x=1:L;x=x/Fs*1000000;
Ads_PN4=[Ads_PN Ads_PN Ads_PN Ads_PN Ads_PN Ads_PN];
plot(x,Ads_source(1:L)+1.2,'-',x,Ads_PN4,'-',x,Ads_data(1:L)-1.2,'-');axis([1 L/Fs*1000000 -2.5 2.5]);
% legend('s','pn','s_pn');
xlabel('时间(us)');ylabel('幅度(V)');grid on;
原始数据与伪随机码扩频调制的时序波形如下图所示,从图中可以看出,原始数据的码率远低于伪随机码的速率,扩频后的数据速率与伪随机码的速率完全相同,扩频的过程仅是简单的模2加(异或)处理而已。
直扩调制信号时域波形及调制信号频谱如下图所示,从图中可以看出,直扩调制信号的时域波形和频谱与PSK信号没有什么区别,这是因为DSSS信号本身就是采用的PSK调制信号形式。