1、直接序列扩频通信系统设计和实现 摘要:扩频通信,即扩展频谱通信(Spread Spectrum Communication)是数字通信中一个,它和光纤通信、卫星通信,一同被誉为进入信息时代三大高技术通信传输方法。含有大容量、抗干扰、低截获功率等特点和可实现码分多址(CDMA)等优点。采取扩频通信能够在更恶劣环境下正常工作,能够将信号隐蔽在噪声中。在扩频通信系统中,直接序列扩频通信系统应用最为广泛。Matlab含有其它仿真软件(如Sysetemview和Maple等)所无可比拟矩阵运算能力和系统仿真能力,Matlab仿真工具包Simulink凭借其强大数学功效,能实现正确电路仿真。 关键
2、词:直接序列扩频通信系统、Matlab、误码率 目录 第1章 绪论 1 1.1背景 1 1.2选题目标和意义 1 1.3 本课程设计关键内容 1 第2章 直接序列扩频通信系统 2 2.1 直接序列扩频通信理论基础 2 2.2直接序列系统组成 3 第3章 扩频系统设计和实现 4 3.1直接通信系统仿真 4 3.2直接扩频Matlab仿真组成框图 4 3.3 BPSK调制 5 3.3 m序列 6 3.4 扩频系统解扩 7 3.5扩频系统解调 8 3.6误码
3、率 9 3.7直接序列扩频系统实现 9 第4章 心得和结论 15 附录 16 参考文件 21 第1章 绪论 1.1背景 信息时代到来,使我们对通信依靠越来越大,因为信道开放性,信息在传输过程中会加进多种多样干扰,使得无线通信面临干扰环境更为恶劣。自50年代中期美国军方便开始研究,一直为军事通信所独占,广泛应用于军事通信、电子对抗和导航、测量等各个领域。直到80年代初才被应用于民用通信领域。为了满足日益增加民用通信容量需求和有效地利用频谱资源,各国全部纷纷提出在数字峰窝移动通信、卫星移动通信和未来个人通信中
4、采取扩频技术,扩频技术于蜂窝电话、无绳电话、微波通信、无线数据通信、遥测、监控、报警等系统中。伴随超大规模集成电路技术、微处理器技术飞速发展,和部分新型元器件应用,扩频通信在技术上已迈上了一个新台阶,不仅在军事通信中占相关键地位,而且正快速地渗透到了个人通信和计算机通信等民用领域,成为新世纪最有潜力通信技术之一所以研究扩频通信含有很深远意义。 1.2选题目标和意义 在恶劣环境条件下确保通信有效地、正确地、快速地进行,是当今通信所面临一大课题。扩展频谱通信是现代通信系统中一个新兴通信方法,其较强抗噪声、抗干扰、抗多径衰落、码分多址、信号隐蔽性和保密性等方面含有较传统无线通信方法无可比拟优势,
5、近十几年来,伴随信息技术迅猛发展和日益普及,扩频通信技术已在军用和民用通信领域得到广泛应用,并伴随GPS卫星定位、CDMA或3G手机等产品快速进入大众生活。 扩频通信是将待传送信息数据被伪随机编码(扩频序列:Spread Sequence)调制,实现频谱扩展后再传输,接收端则采取相同编码进行解调及相关处理,恢复原始信息数据。 在扩展频谱系统中,伪随机序列起着很关键作用。在直接扩频系统中,用伪随机序列将传输信息扩展,在接收时又用它将信号压缩,并使干扰信号功率扩散,提升了系统抗干扰能力,伪随机序列性能好坏直接关系到整个系统性能好坏,是一个很关键问题。 本设计为掌握对直接序列扩频系统了解和掌握
6、经过Matlab/Simulink仿真平台,利用所学理论和方法建立了直接序列扩频系统matlab仿真模型,在信道中存在高斯白噪声和干扰情况下,对系统误码率性能进行了仿真及分析。 1.3 本课程设计关键内容 (1) 介绍了直接扩频通信系统基础理论,包含系统框图、仿真模拟通常方法。 (2) 对直扩通信系统关键步骤,包含m序列、调制、解扩、解调、误码率等描述。 第2章 直接序列扩频通信系统 2.1 直接序列扩频通信理论基础 扩频通信可简单表述以下:扩频通信技术是一个信息传输方法,其信号所占有频带宽度远大于所传信息必需最小带宽;频带扩展是经过一个独立码序列来完成,用编码及调制方法来实现,
7、和所传信息数据无关;在接收端则用一样码进行相关同时接收、解扩及恢复所传信息数据。扩频通信是将待传送信息数据被伪随机编码(扩频序列:Spread Sequence)调制,实现频谱扩展后再传输;接收端则采取相同编码进行解调及相关处理,恢复原始信息数据。 扩频通信可行性是从香农公式引申而来,其内容如式(2-2.1)所表示。 (2-1.1) 式中: C --- 信道容量(用传输速率度量) W --- 系统信道带宽 S --- 信号功率 N --- 白噪声功率 令C是
8、期望含有信道容量,即要求信息传输速率,对(2-1.1)进行变换,得 (2-1.2) 对于干扰环境中经典情况,当<<1时,用幂级数展开式(2-1.1),并略去高次项得 (2-1.3) 或 (2-1.4) 由式(2-1.3)和式(2-1
9、4)能够看出,对于任意给定噪声和信号功率之比 ,只要增加用 在信道中当传输系统信号和噪声功率之比下降时,能够用增加系统传输带宽措施来保持信道容量不变,而是系统无差错传输信息速率。这就是说对于任意给定信息传输速率,当信号和噪声功率之比 下降时,能够用增大系统传输带宽措施来取得较低信息传输差错率。 扩频通信就是经过增加带宽来换取较低信噪比,这就是扩频通信基础思想和理论依据。当信噪比无法提升时,能够加大带宽,达成提升信道容量目标。扩频是一个宽带技术,因为扩频占用更宽频带,看起来是浪费有限频率资源,然而所占用频带能够经过多用户共享频带得到赔偿。扩频通信方法有很多个,比如直接序列扩频、跳频扩频、
10、跳时扩频等。本文将对直接序列扩频进行具体分析和仿真。 2.2直接序列系统组成 直接序列调制扩展频谱通信系统,简称直接序列系统或直扩系统,是用信息信号和高传输速率伪噪声(为随机)码波形相乘后,去直接控制载波信号某个参数,来扩展传输信号带宽。用于频谱扩展伪随机系列称为扩频码序列。直接序列系统简化方框参见图2-2。 数据 解调器 中频 滤波器 混频器 发射机 调制器 数据 时钟源 扩频码 发生器
11、调制器 载波 发生器 扩频码 发生器 时钟源 当地 振荡器 (a) 发射系统 (b)接收系统 图2-2 直接序列系统简化方框图 在直接序列系统中,通常对载波进行相移键控(Phase Shift Keying,PSK)调制。因为PSK信号能够等效为抑制载波双边带调频波,所以直接序列系统长采取平衡调制方法。抑制载波平衡调制不仅节省了发射功率,提升了发射机工作效率,而且也有利于提升扩频信号抗截获,抗侦破能力。 在发信机端,待传输数据信号和伪随机码(扩频
12、码)波形相乘,形成复合码对载波进行调制,然后由天线发射出去。在收信端,要产生一个和发信机中伪随机码同时当地参考伪随机码(当地扩频码),对接收信号进行相关处理,即对扩频信号解扩。解扩后信号送到解调器进行信息信号解调,恢复出传送信息。 第3章 扩频系统设计和实现 3.1直接通信系统仿真 发端PN码 产生器 发射机 BOSK调制 扩频 LDPC编码 信源 直扩通信系统仿真包含发送端、信道及接收端三大部分。图3-1给出了直扩通信系统仿真原理框图。 无线信道(噪声和干扰) 失
13、 锁 同时 FFT频域限 波干扰抑制 当地 PN码 产生器 解扩 BPSK解调 PN码捕捉 同 PN码跟踪 信宿 LDPC译码 图3-1 直扩通信系统原理框图 发送端首先对信源出来原始数据信号依次进行LDPC信道编码、直序扩频调制、BPSK调制,然后进入信道,信号在信道中加入高斯白噪声和窄宽单频干扰。 接收端收到信号后,首先将信号送入干扰抑制模块,然后进行同时(包含PN捕捉和PN码跟踪),在同时以后完成解扩,再仅解调得到基带数据,最终经过LDP
14、C译码,恢复出发送原始信息序列。 3.2直接扩频Matlab仿真组成框图 直接序列扩频Matlab仿真组成框图图3-2所表示。 模2运算 模2运算 m序列 m序列 信码 判决电路 信码 高斯信道 干扰 图3-2 直接扩频仿真组成框图 由图3-2能够看出,在发送端,信码为,其码元宽度为,伪随机码为,其码元宽度为,进行模2运算后,得到,码元宽度称为扩频出来增益,表示为式(3-2.1)。 (3-2.1) 因为有,所以信码频谱
15、被展宽了,信号在传输过程中经过AWGN信道,被叠加了高斯白噪声,同时还受到了干扰信号影响,最终得到信号包含“有用信号+高斯白噪声+干扰”。 接收端收到此信号后,经过解扩电路,得,对进行码元判决,即可得到原始输入信号。 3.3 BPSK调制 二位相移控件(BPSK)是扩频系统中最为常见一个调制方法。设扩频码为,载波频率为,调相波可表示为 (3-3.1) 式中,是相位调制指数。若要求在扩频码序列中,当初,;当初,,这种调制称为二相位相移键控。这种二位相移键控信号可表示为
16、 (3-3.2) 在实际利用过程中,扩频码通常采取双极性,即,所以BPSK信号可用下列平衡调制信号表示 (3-3.3) 平衡调制器有二级管平衡调制器和桥式平衡调制器等多个形式。当,二极管、导通,输入为,当初。二极管、导通,输出为。 即有:,完成二相调制。 若考虑信息码为,则直扩系统BPSK调制输出为 (3-3.4) 式中,,。 3.3 m序列 m序列是最长线性移位寄存器序列简称。它是由多级移位寄
17、存器或其它延迟元件经过线性反馈产生最长码序列。因为m序列轻易产生、规律性强、有很多优良性能,在扩频通信中最早取得广泛应用。 图3-3所表示,m序列可由二进制线性反馈移位寄存器产生。它关键由n个串联寄存器、移位脉冲产生器和模2加法器组成。 图中第i级移存器状态表示, 或,i=整数。反馈线连接状态用表示,表示此线接通(参与反馈),表示此线断开。 因为反馈存在,移存器输入端受控地输入信号。不难看出,若初始状态为全“0”,则移位后得到仍为全“0”,所以应避免出现全“0”状态,又因为n级移存器共有种可能不一样状态,除全“0”状态外,剩下种状态可用。每移位一次,就出现一个状态,在移位若干次后,一定能反
18、复出现前某一状态,其后过程便周而复始了。反馈线位置不一样将出现不一样周期不一样序列,我们期望找到线性反馈位置,能使移存器产生序列最长,即达成周期。按图3-3中线路连接关系,能够写为: (3-3.1) 该式称为递推方程。 模2加法器 图3-3 线性反馈移位寄存器 上面曾经指出,取值决定了移位寄存器反馈连接和序列结构。现在将它用下列方程表示: (3-3.2)
19、 这一方程称为特征多项式。式中仅指明其系数值(1或0),x本身取值并无实际意义,也不需要去计算x值。比如,若特征方程为则它仅表示和系数,其它为零。经严格证实:若反馈移位寄存器特征多项式为本原多项式,则移位寄存器能产生m序列。只要找到本原多项式,就可组成m系列发生器。 3.4 扩频系统解扩 输入相关解扩器信号是接收到信号,假设相移键控(BPSK)信号,这个信号在相关解扩器中和发射端扩频码完全相同当地参考扩频码相乘,其效果和发射调频互补,即每当扩频码序列发生0→1或1→0跃变时,将输入载波信号相位取反。假如接收扩频码和当地参考扩频码结构相同
20、且在时间上(相位)已经同时,那么每当接收扩频码和当地参考扩频码结构相同且在时间上(相位)已经同时,那么每当接收信号载波因为扩频码改变而有相移时,接收机中当地参考扩频码就再把它相移一次,这么两个互补相移结合,就相互抵消了扩展频谱调制,达成了对扩频信号解扩目标。被解扩后信号仍然是一已调信号,是一频带很窄被信息信号调制带通信号,中心频率仍在处。该信号送入解调器进行解调,即可恢复出传输信息信号。 直接式相关解扩原理图3-4所表示。 平衡 调制器 载波输入 相移键控 调制信号 调制码 (a)调制器(PSK调制) 带通 滤波器 接收相移键控调制信号 平衡 调制器 解
21、扩信号 参考码 (b)直接式相关器 (和相移键位互补) --信息信号 --载波频率 --扩频码 --当地参考扩频码 图3-4 直接式相关解扩器 直接式相关解扩器优点是结构简单,缺点是对于干扰信号有直通现象。由图3-4-1能够看到,相关解扩器输入信号中心频率(载波频率)是完全一样,即假如输入相关解扩器相移键控已调信号载波频率是,则恢复后(即解扩后)载波频率仍然是,那么一个在载波频率周围窄带干扰信号(比有用信号强得多)就有可能绕过相关解扩器,如经过空间波耦合形式,直接泄露出去
22、当发生泄漏时,相关解扩器抑制能力是很差。干扰信号没有参与相关运算就直接抵达相关解扩器输出端,失去了在解扩过程中系统所能取得处理增益。因为这个原因,直接式相关解扩抗干扰能力较低,它仅能用在部分对抗干扰能力要求不高扩频通信系统中。 3.5扩频系统解调 信号解调按图10完成。接收信号首先乘以在接收机PN码序列发生器产生波形,它是和接收信号中PN码同号。这一运算称为(频谱)解扩,因为在接收端乘以效果就是将在发送端扩频运算解开。据此有 (3-5.1) 上式中因有对全部,。所得信号占有带宽为(近似),它就是载有信息信号带宽。 3.6误码率 在数字
23、通信中,误码率是一项关键性能指标。在实际测量数字通信系统误码率时,通常测量结果和信源送出信号统计特征相关。通常认为二进制信号中0和1是以等概率随机出现,所以测量误码率时最理想信源应是随机信号发生器。 扩频序列经过终端机和信道后,输出仍为扩频序列。在接收端,当地产生一个同时扩频码,和收码序列逐位相乘再求规格化内积,再和发送端信源码进行比较,一旦有错,误码计数器加一。 误码率数学表示式如式(3-6.1)所表示。 (3-6.1) 其中S是信码个数,e是误码个数,E就是误码率。
24、 3.7直接序列扩频系统实现 3.7.1 信息码生成模块 % 随机数据,长度为50 Randm_Data = randsrc(1, Data_L, [0 1]); Randm_Data_L = Data_L * Mseq_L; figure; stairs(Randm_Data); ylim([-0.5 1.5]); title('随机数据'); 图 3-7.1 信息码数据源生成代码 3.7.2 伪随机码生成模块 %产生伪随机信号 M_Seq = idinput(Mseq_L, 'prbs', [0 1], [0 1])
25、 figure; stairs(M_Seq); ylim([-0.5 1.5]); xlim([0 Mseq_L+10]); title('m序列'); 图3-7.2 m序列产生代码 3.7.3 扩频调制模块 % 扩频 Spread_Data = zeros(1, Data_L*Mseq_L); contain = ones(1, Mseq_L); for i = 1:Data_L contain = ones(1, Mseq_L)*Randm_Data(i); Spread_Data(((i-1)*Mseq_L+1):i*
26、Mseq_L) = xor(contain, M_Seq'); end figure; stairs(Spread_Data(1:50)); ylim([-0.5 1.5]); title('扩频数据') 图3-7.3 扩频数据 3.7.4 BPSK调制 %调制 Psk_Data = pskmod(Spread_Data, 2); figure; plot((1:50), Psk_Data(1:50)); ylim([-1.5 1.5]); title('经BPSK调制后数据'); 图3-3.4 调制后数据 3.7.5
27、加噪声 % 附加白噪声 Recv_Data_Nois = awgn(Psk_Data, -20, 'measured', 'dB'); figure; stairs(Recv_Data_Nois(1:50)); title('附加白噪声数据'); 图3-3.5添加噪声后数据 3.7.6 解扩和解调 %解调 Recv_Data = pskdemod(Psk_Data, 2); Recv_Data_L = length(Recv_Data); figure; stairs(Recv_Data(1:50)); ylim([-0.5 1.
28、5]); title('解调无噪声数据'); Recv_Data = [Recv_Data zeros(1, Mseq_L*4)]; 图3-3.6解调后无噪声数据 Recv_Data_Nois = pskdemod(Recv_Data_Nois, 2); Recv_Data_Nois_L = length(Recv_Data_Nois); figure; stairs(Recv_Data_Nois(1:50)); ylim([-0.5 1.5]); title('解调有噪声数据'); 图3-3.7解调后有噪声数据
29、 图3-3.8解调后无噪声数据能量 图3-3.9解调后有噪声数据能量 if sum(xor(M_Seq', Recv_Data_Nois(m:m+Mseq_L-1))) > Mseq_L*Up Despread_Data_Nois(i) = 1; else Despread_Data_Nois(i) = 0; end 图3-3.10解调后有噪声数据能量 图3-3.11解调后有噪声数据能
30、量 第4章 心得和结论 经过这次直接序列扩频系统设计和仿真,我加深了对扩频系统理论知识了解,知道了直接扩频系统原理所在和了解扩频码产生原理,扩频技术应用两个方面。初步了解和掌握现代移动通信系统基础组成、基础原理、组网技术及经典通信系统设计、调试,了解其工作原理。而且经过分析,经过利用MATLABm文件编程及仿真,掌握了一定软件仿真能力。在过程中也碰到了部分问题,不管是查找资料还是Matlab编写,调试程序全部经过努力得以处理,同时也发觉了自己在学习中存在很多问题,比如噪声形成之类,还有就是对Matlab很使用熟悉程度。软件设计和系统步骤图很关键。框图、编程、模块一步一步进行,这么能
31、够排除很多错误。可经过以上分析试验,利用MATLABm文件编程及仿真,能够知道扩频通信系统过程和工作原理,和它关键特点,尤其是它在抑制干扰方面有效性。所以,从编程和模框图试验可知,分析扩频和解扩,PSK调制和解调,在抑制噪声方面作用。经过仿真,说明扩频信号在抑制干扰方面有效性。利用仿真,说明信号传输过程中误码率。直接序列扩频通信系统含有很强抗干扰性能,误码率低,所以其广泛用于保密通信系统中。 附录 clc clear all close all Mseq_L = 255; Data_L = 50;
32、 %产生伪随机信号 M_Seq = idinput(Mseq_L, 'prbs', [0 1], [0 1]); figure; stairs(M_Seq); ylim([-0.5 1.5]); xlim([0 Mseq_L+10]); title('m序列'); % 随机数据,长度为50 Randm_Data = randsrc(1, Data_L, [0 1]); Randm_Data_L = Data_L * Mseq_L; figure; stairs(Randm_Data); ylim([-0.5 1.5]); title('随机数据');
33、 扩频 Spread_Data = zeros(1, Data_L*Mseq_L); contain = ones(1, Mseq_L); for i = 1:Data_L contain = ones(1, Mseq_L)*Randm_Data(i); Spread_Data(((i-1)*Mseq_L+1):i*Mseq_L) = xor(contain, M_Seq'); end figure; stairs(Spread_Data(1:50)); ylim([-0.5 1.5]); title('扩频数据'); %调制 Psk_Data
34、 pskmod(Spread_Data, 2); figure; plot((1:50), Psk_Data(1:50)); ylim([-1.5 1.5]); title('经BPSK调制后数据'); % 附加白噪声 Recv_Data_Nois = awgn(Psk_Data, -20, 'measured', 'dB'); figure; stairs(Recv_Data_Nois(1:50)); title('附加白噪声数据'); %解调 Recv_Data = pskdemod(Psk_Data, 2); Recv_Data_L = lengt
35、h(Recv_Data); figure; stairs(Recv_Data(1:50)); ylim([-0.5 1.5]); title('解调无噪声数据'); Recv_Data = [Recv_Data zeros(1, Mseq_L*4)]; Recv_Data_Nois = pskdemod(Recv_Data_Nois, 2); Recv_Data_Nois_L = length(Recv_Data_Nois); figure; stairs(Recv_Data_Nois(1:50)); ylim([-0.5 1.5]); title('解调有噪
36、声数据'); Recv_Data_Nois = [Recv_Data_Nois zeros(1, Mseq_L*4)]; Despread_Data = zeros(1, Data_L); Despread_Data_Nois = zeros(1, Data_L); Up = 0.527; Dn = 0.485; VCodes = 5; Power = zeros(1, Mseq_L*VCodes); for i=1:Mseq_L*VCodes Power(i) = sum(xor(M_Seq', Recv_Data(i:i+M
37、seq_L-1)))/Mseq_L; end figure; plot(Power); title('无噪声能量对比数据'); Power_Nois = zeros(1, Mseq_L*VCodes); for i=1:Mseq_L*VCodes Power_Nois(i) = sum(xor(M_Seq', Recv_Data_Nois(i:i+Mseq_L-1)))/Mseq_L; end figure; plot(Power_Nois); m = 1; i = 1; while(m <= (Recv_Data_
38、L-Mseq_L+1)) toVerf = Recv_Data(m: m+Mseq_L*VCodes-1); totalVCodes = 0; yesVCodes = 0; noVCodes = 0; while (totalVCodes < VCodes) if (totalVCodes*Mseq_L+m > Recv_Data_L) break; end power = sum(xor(M_Seq', toVerf((total
39、VCodes*Mseq_L+1):(totalVCodes+1)*Mseq_L)))/Mseq_L; if((power >= Up) || (power <= Dn)) yesVCodes = yesVCodes + 1; end totalVCodes = totalVCodes + 1; end if(yesVCodes < totalVCodes*0.7) m = m+1; continue; end if sum(xor(M_
40、Seq', Recv_Data(m:m+Mseq_L-1))) > Mseq_L*Up Despread_Data(i) = 1; else Despread_Data(i) = 0; end m = m + Mseq_L; i = i + 1; end m = 1; i = 1; while(m <= (Recv_Data_Nois_L-Mseq_L+1)) toVerf = Recv_Data_Nois(m: m+Mseq_L*VCodes-1); totalVCodes =
41、 0; yesVCodes = 0; noVCodes = 0; while (totalVCodes < VCodes) if (totalVCodes*Mseq_L+m > Recv_Data_Nois_L) break; end power = sum(xor(M_Seq', toVerf((totalVCodes*Mseq_L+1):(totalVCodes+1)*Mseq_L)))/Mseq_L; if((power >= U
42、p) || (power <= Dn)) yesVCodes = yesVCodes + 1; end totalVCodes = totalVCodes + 1; end if(yesVCodes < totalVCodes*0.7) m = m+1; continue; end if sum(xor(M_Seq', Recv_Data_Nois(m:m+Mseq_L-1))) > Mseq_L*Up Despre
43、ad_Data_Nois(i) = 1; else Despread_Data_Nois(i) = 0; end m = m + Mseq_L; i = i + 1; end correct = 0; for i = 1:Data_L if Despread_Data(i) == Randm_Data(i) correct = correct + 1; end end figure; stairs(Despread_Data); ylim([-0.5 1.5]); tit
44、le('无噪声恢复数据'); out = correct/Data_L; disp('无噪声正确率:'); disp(out); correct_nos = 0; for i = 1:Data_L if Despread_Data_Nois(i) == Randm_Data(i) correct_nos = correct_nos + 1; end end figure; stairs(Despread_Data_Nois); ylim([-0.5 1.5]); title('有噪声恢复数据'); out = correct_nos/Data_L; disp('有噪声正确率:'); disp(out); 参考文件 [1]田日才,扩频通信(第2版).北京:清华大学出版社, [2]赵刚,扩频通信系统实用仿真技术.北京:国防工业出版社, [3]何世彪,扩频技术及其实现.北京:电子工业出版社, [4]樊昌信,通信原理.北京:国防工业出版社. [5]赵新,直序扩频技术.陕西:西北电讯工程学院出版社.1986