精华内容
下载资源
问答
  • 现有扩频通信系统常用的伪随机序列有m序列、Gold序列、Walsh序列、M序列及卫星通信中常用的C/A(粗/截获)和精码(P)等。在这些序列中,P的性能优秀,码周期最长,在10.23 MHz的时钟速率下,时间周期大约...
  • 针对传统Logistic映射迭代范围小、分布集中,且采用混沌序列作为扩频码进行通信时盲估计算法可以恢复出混沌序列等问题,提出了一种基于新型分段Logistic序列的可变符号周期扩频方法。与传统Logistic序列相比,新型...
  • 在分析了Boost变换器精确离散迭代...同时,在变换器中电路参数不变的情况下,研究了周期扩频技术的频率在不同范围内变化时,其中的分叉与混沌现象。本研究为更好地设计Boost变换器电路提供了一定理论基础和应用价值。
  • 虽然OVSF正交扩频码是完全的正交码,能够实现在扩频的同时,能够实现码分复用。但由于完全OVSF的数量太少,资源有限,这限制了其实际系统中的适用范围。 具有伪随机特性的扰码扰码,同时具备了近似正交的特性,相同...

    1. OVSF正交扩频码+扰码的混合编码方案

    虽然OVSF正交扩频码是完全的正交码,能够实现在扩频的同时,能够实现码分复用。但由于完全OVSF的数量太少,资源有限,这限制了其实际系统中的适用范围。

    具有伪随机特性的扰码扰码,同时具备了近似正交的特性,相同的比特长度的情况下,其码资源的数量远远大于OVSF正交扩频码的数量,这使得扰码在多用户复用与解复用的场合有了一定的应用空间,弥补了OVSF正交扩频码的不足。

    在实际的WCDM系统中,采用了OVSF正交扩频码+扰码的混合编码方案,在复用和解复用的过程用来标识物理小区、物理信道和用户,同时能够实现扩频的功能。

    • 下行复用

    • 上行解复用

     

    2. 物理层信道与地址码

    从上图可以看出:

    (1)OVSF正交扩频码主要用于区分不同物理信道和专有信道

    (2)扰码主要用于区分不同的小区,区分小区时,有分为主扰码与辅助扰码。

     

    3. WCDMA中与地址吗相关的常见概念:

    (1)OVSF正交扩频码:

    OVSF是Orthogonal Variable Spreading Factor的缩写,叫正交可变扩频因子,系统根据扩频因子的大小给用户分配资源,数值越大,提供的带宽越小。

    (2)Walsh函数

    是J.L.Wash于1923年提出的在一个归一化区间(0,1)上产生完备的正交码的函数系统。

    (3)信道码,扩频码,OVSF码三者的关系

    如果将ovsf乘以调制后的信号,就是扩频,OVSF码就是扩频码。

    如果将ovsf用于复用与解复用,OVSF码是信道码,用于区分不同的物理信道。

    (4)伪随机码序列(PN码)

    伪随机码序列具有类似于随机序列的基本特性,是一种貌似随机但实际上是有规律的周期性二进制序列

    (5)m序列码

    在所有的伪随机序列中,m序列是最重要、最基本的一种伪随机序列,它容易产生、规律性强、有很好的自相关性和较好的互相关特性。

    (6)Gold码序列

    是一种基于m序列的码序列,具有较优良的自相关和互相关特性,产生的序列数多。Gold码的自相关性不如m序列,具有三值自相关特性;互相关性比m序列要好,但还没有达到最佳。

     

     

     

     

     

     

    展开全文
  • 行业资料-电子功用-卫星导航接收机长周期伪随机扩频码的快速捕获电路及其捕获方法.zip
  • 本文在研究P原理的基础上,提出了一种周期更长,保密性能好,可用于战时卫星测控通信的伪随机序列产生方法。
  • 行业资料-电子功用-卫星导航接收机长周期伪随机扩频码的快速捕获电路及其捕获方法的介绍分析.rar
  • #资源达人分享计划#
  • 该方法是在已知直扩信号的扩频码周期、码速率等参数的前提下,将接收到的直扩信号以一随机确定值为起点进行周期分段以形成连续多个观察向量,求协方差矩阵并累加平均,实施离散K-L变换以得到信号所含主成分,由...
  • 信号在带限的信道中传输时需要对信号进行带宽限制,从而造成间干扰和频谱泄露的问题,将基带扩频信号通过脉冲成形器处理后对其主要参数的抗截获性能进行了研究,并使用两次功率谱的方法对该类信号的伪码周期进行了...
  • 分多址(CDMA)是第三代移动通信的核心技术,其基本思想是在相同的载波频段上,通过的不同的地址来区分的不同用户、不同基站的数据。 3G CDMA与2G GSM通信相比,主要网络架构与通信流程,大体相似,因此,本文...

    前言导读:

    码分多址(CDMA)是第三代移动通信的核心技术,其基本思想是在相同的载波频段上,通过的不同的地址码来区分的不同用户、不同基站的数据。

    3G CDMA与2G GSM通信相比,主要网络架构与通信流程,大体相似,因此,本文主要拆解3G引入的核心技术:

    (1)正交与码分多址技术CDMA;(2)多进制相位调制:QPSK, 8PSK以及星座图等数字调制技术;  (3)加扰与解扰;(4)功率控制技术;

    并结合基站的具体实现,分析一个二级制比特0或1,是如何通过二进制相位调制技术转换成IQ数据,再经过扩频和加扰,调制成正弦波,最后结合功率控制,最终实现CDMA码分多址的通信。


    目录

    第1章 第3代移动通信系统

    1.1 3G移动通信概述

    1.2 1G、2G移动通信的困境,3G移动通信的出现

    1.3 码分多址(CDMA:Code division multiplexing access)

    1.4 3G通信系统的网络架构演进

    第2章 WCDMA NodeB基站的系统架构

    2.1 传输系统Transport

    2.2 控制系统

    2.3 数字基带系统

    2.4 数字中频系统

    2.5 射频系统

    2.6 天馈系统

    2.7  WCDMA是频分双工FDD

    2. 8 WCMDA的通信模型

    第3章 数字调制的原理与2-PSK

    3.1 数字调制/解调概述:

    3.2 B-PSK调制解调

    第4章 单用户扩频的基本原理:扩频技术

    第5章 多用户复用的基本原理:CDMA码分多址

    5.1 CDMA码分多址概述

    5.2 CDMA的限制条件

    第6章 相关性与正交性

    6.1 什么是变量的相关性与正交性

    6.2 函数的积分与两个函数间的相关性

    6.3 模拟信号的正交性

    6.4 正交信号相乘后积分为0的物理意义与IQ正交双载波调制(“相分”复用)

    6.5 什么是向量的相关性与正交向量

    7 单位向量、二进制比特序列、正交码与CDMA“码分”复用

    7.1 正交码的定义

    7.2 正交码的物理意义与应用

    7.3 正交码在复用与解复用中的应用案例演示

    8. 自相关的随机码:扰码

    8.1 扰码的动机

    8.2 伪随机序列

    8.3 伪随机码

    8.4 扰码的原理

    8.5 扰码的缺点

    第9章 CDMA中地址码的种类与物理层信道

    第10章 CDMA的远近效应与功率控制

    10.1 什么是功率远近效应与功率控制

    10.2  功率控制的一般策略

    10.3  WCDMA系统的功率控制


    第1章 第3代移动通信系统

    1.1 3G移动通信概述

    3G是第三代移动通信技术,是指支持高速数据传输的蜂窝移动通讯技术。3G服务能够同时传送声音及数据信息。3G是将无线通信与国际互联网等多媒体通信结合的一代移动通信系统。

    所谓第三代移动通信技术,即3G网络技术,与第一代移动通信技术(即 1G)与第二代数字手机通信技术(即 2G)相比,3G 手机主要是将无线通信和国际互联网等通信技术全面结合,以此形成一种全新的移动通信系统。

    这种移动技术可以处理图像、音乐等媒体形式,除此之外,也包含了电话会议等一些商务功能。为了支持以上所述功能,无线网络可以对不同数据传输的速度进行充分的支持,即无论是在室内、外,还是在行车的环境下,都可以提供最少为2Mbps、384kbps与144kbps的数据传输速度。

     

    1.2 1G、2G移动通信的困境,3G移动通信的出现

    1.2.1 第一代移动通信技术是:模拟移动通信技术。

    以模拟调频(FM),频分多址(FDMA)为主要特征,第一代移动通信系统仅限于语音传输。

    它以模拟电路单元为基本模块实现话音通信,并采用了蜂窝结构,频带可重复利用,实现了大区域覆盖和移动环境的不间断通信。 

    其代表有美国的AMPS、英国的TACS、北欧的NMT450/900。

    1G 模拟移动通信技术的困境:

    只能进行语音通信,无法提供数据业务。

    其主要的原因是1G采用的是模拟调制技术,高频载波只能调制模拟的基带语音信号,无法调制数据信号。

    于是才有了2G数字移动通信技术,采用数字调制技术,模拟的基带语音信号,通过信源编码,先转换成二进制的语音数据,然后在进行数字调制。

    这样无线电磁波除了可以输送数字编码后的语音数据,还可以传送其他数字编码的数据了。

     

    1.2.2 第二代移动通信系统是:数字移动通信技术。

    以频分多址(FDMA)、时分多址(TDMA)为特征的移动通信系统,除提供话音业务外也提供低速的数据业务。

    目前采用TDMA体制的主要有三种:欧洲的GSM、美国的D一AMPS和日本的PDC

    第二代通信系统的核心网仍然以电路交换为基础。 

    2G 模拟移动通信技术的困境:

    GSM虽然采用了数字调制技术,但传送的数据速率太低,只能勉强传送语音编码的数据速率13.4Kbits。

    GSM采用的频发多址FDMA,把25M带宽的频谱,分成125个200K的载波,每个用户最大使用200KHz载波。

    实际上这200KHz的载波还不全部分给一个用户,GSM通过时分多址TDMA技术,把200KHz分成8个时隙,每个用户只占用一个时隙。

    每个时隙的数据调制采用的二进制调制技术,每个符号只能传送1个比特。

    因此,在全速语音信源编码下,每路时隙只能传递13.4Kbits/s的语音数据。8个时隙即一个200KHz的载波,全部传输速率=13.4*8=107.2K bits/s。这就导致GSM虽然为数字通信,但单个TCH信道的最大数据速率13.4Kbits,因此但只能提供低速的数据业务,实际上,在GSM系统中,数据业务还是通过控制信道来传输的,数据业务的速率比13.4Kbits/s还低。

    因此GSM系统,本质上还是电路交换的数字语音通信系统,并不能真正提供数据业务,为了能够提供真正的数据业务,在GSM的基础之上,对GSM系统进行了扩展:(1) 在核心网,除了电路域的语音交换,还增加了数据域的包交换;(2)在无线侧,把二进制数字调制升级成更高阶的调制方式,每个符号能够传递更多的比特数据,这就是GRPS技术。

     

    1.2.3 GPRS(General Packet Radio Service)可认为是介于第二代和第三代之间的2.5代移动通信系统,

    是在现有的第二代GSM话音通信系统上开发的一项新的承载业务,通过软件升级和增加必要的硬件模块,利用GSM现有的无线话音通信系统的信令通道实现分组数据传输,所以它可以与GSM共存,并能平滑过渡。

    GPRS无线分组数据通信与现有的GSM话音通信最根本的区别是:GSM是电路交换系统,而GPRS的短信业务等采用的是分组交换系统。CDMA-2000-1x是CDMA-2000的第一阶段,也是2.5G,它的网络部分也引入分组交换方式。 

    GPRS的目的是为GSM用户提供分组形式的数据业务。它特别适用于间断的、突发性的、频繁的、少量的数据传输,也适用于偶尔的大数据量传输。GPRS理论带宽可达171.2kb/s,实际应用带宽大约在40~100kb/s。

    这里写图片描述

    但这个171.2K bits/s的数据速率,对于数据通信来讲,还是太低。

    在GRPS的基础之上,进一步升级,采用8PSK的调试,每个符号可以承载3个bits,这就是EGPRS,强化版GRPS.

    这里写图片描述

    单个用户的EGPR最大的数据传输速率=59.2K bps * 8 slot = 473.6K bps。 对于数据通信来讲,这个数据速率还是太低。

    正所谓,成也萧何败萧何,GSM数据速率无法提升的最根本原因是GSM的频分多址FDMA, 每个用户最大的载波带宽为200KHz,根据香农定理,在信噪比一定的情况下,最大的数据传输速率与载波带宽成正比。

    因此GSM的200KHz的频发多址技术极大的限制了GSM提供最大数据速率。这就迫切需要一种新的多址技术来替代GSM的FDMA频发多址技术, 以宽带CDMA码分多址技术为基础的3G移动通信系统应运而生。

     

    1.2.4 第三代移动通信系统是:数字移动通信技术。

    第三代移动通信采用码分多址技术CDMA为特征的移动通信系统,提供全球移动、综合业务、数据传输蜂窝、无绳、寻呼、集群等多种功能的业务。

    在CDMA核心技术的基础之上,3G衍生出三大主流制式,包括有:W-CDMA.CDMA-2000和TD-SCDMA。

    在中国,中国电信3G网络使用CDMA制式,中国联通的3G网络使用WCDMA制式,中国移动的3G网络使用TD-SCDMA制式。

    三种制式,各有优缺点,但其核心技术都是宽带CDMA技术, 如下是这三种制式的比较。

    上上图可以看出, 采用码分多址技术的3G系统,数据传输速率远远大于GPRS和EGPRS.

     

    本文以WCDMA制式为例,拆解CDMA码分多址技术的原理!

     

    1.3 码分多址(CDMA:Code division multiplexing access)

    FDMA频分多址:  发送时,不同用户的二进制数据通过载频频率进行承载与合并,接收时可以通过滤波器进行分离,因此不会出现相互干扰,自然可以区分不同用户的数据。

    TDMA时分多址: 发送时,不同用户的二进制数据,即使通过相同频率的载波承载,但他们在时间上是错开的,使用不同的时隙; 因此,接收时,根据时隙来区分不同的用户数据,自然可以区分不同用户的数据。

    CDMA码分多址: 发送时,不同用户的二进制数据,通过所谓的CDMA扩频码,对数据先进行编码,然后全部叠加在一起,不仅使用相同频率的宽带载波承载,还在时间上重叠在一起的。接收时,各个用户,使用各自的扩频码,对叠加在一起的数据,进行解扩,得到各自的数据。

    这有点像,先把不同颜色先完全混合在一起,接收端,在通过某种方式把他们分离开。

    这是一种很神奇的编码方法,我们将深入的拆解这种编码!(当然,实际上叠加的不是二进制比特本身,而是控制载波信号的参数)

     

    CDMA是在数字通信技术的分支--扩频通信技术基础之上发展起来的一种崭新而成熟的无线通信技术。

    CDMA技术的原理是基于扩频技术,即将需传送的具有一定信号带宽信息数据,用一个带宽远大于信号带宽的高速扩频码进行扩频编码,使原数据信号的带宽被扩展,再经过多进制载波相位调制IQ调制发送出去。

    接收端使用完全相同的扩频码,与接收的带宽信号作相关处理,把宽带信号换成原信息数据的窄带信号即解扩,以实现信息通信。

    CDMA也是一种共享信道的技术,多路信号只占用一条信道,每一个用户可以在同样的时间、使用同样的、频带进行通信,不存在同频干扰,也就是说,所有用户的数据、基站的电磁波信号,在自由空间中混杂、叠加,接收端通过CDMA解码,分离出属于自己的数据,不存在所谓的同频干扰。这种共享信道的技术,极大提高带宽使用率。

     

    在拆解相关的核心技术之前,先看一下1G, 2G, 3G移动通信系统的架构及其演进 (这不是重点、也不是难点,了解即可)。


    1.4 3G通信系统的网络架构演进

    (1)1G与一体式2G基站

    1G通信系统采用3级网络架构,即:BTS-》BSC-》核心网。1G核心网同时包含CS域

    1G通信系统起初主要采用一体式基站架构。一体式基站架构如上图所示,基站的天线位于铁塔上,其余部分位于基站旁边的机房内。天线通过馈线与室内机房连接。

    一体式基站架构需要在每一个铁塔下面建立一个机房,建设成本和周期较长,也不方便网络架构的拓展。

     

    (2)分布式2G基站

     

    2G先期继承了1G的网络架构,采用3级网络架构,即:BTS-》BSC-》核心网,采用一体式基站架构,但 2G核心网同时包含CS域和PS域,PS提供数据业务。

    后来发展成为分布式基站架构。分布式基站架构将BTS分为RRU和BBU。

    RRU主要负责跟射频相关的模块,包括4大模块:中频模块、收发信机模块、功放和滤波模块。

    BBU主要负责基带处理和协议栈处理等。

    RRU位于铁塔上,而BBU位于室内机房,每个BBU可以连接多个(3-4个)RRU。BBU和RRU之间采用光纤连接。

     

    (3)分布式3G基站

    发展3G网络时,为了节约网络建设成本,3G网络架构基本与2G保持一致。

    3G通信系统同样采用3级网络架构,即NodeB –> RNC -> 核心网。3G核心网同时包含CS域和PS域。

    3G时代主要采用分布式基站架构。类似地,分布式基站架构将NodeB分为BBU和RRU两部分。

    2G BTS -> 3G NodeB 

    2G BSC -> 3G RNC

     

    RNC(无线网络控制器,Radio Network Controller)管理和控制它下面的多个基站,RNC的整个功能分为两部分:无线资源管理功能和控制功能,主要负责移动性管理、呼叫处理、链路管理和切换机制等L2调度和L3信令的功能。无线资源管理主要用于保持无线传播的稳定性和无线连接的服务质量;控制功能包含了所有和无线承载建立、保持和释放相关的功能。

    NodeB: 通过标准的Iub接口RNC互连,完成Iub接口协议的处理与数据传输。通过Uu接口与UE进行通信,主要完成Uu接口物理层协议。

    NodeB主要由控制子系统、传输子系统、射频子系统、中频/基带子系统、天馈子系统等部分组成。

     

    (4)3G的系统架构


    第2章 WCDMA NodeB基站的系统架构

    2.1 传输系统Transport

    传输子系统的主要功能是提供与RNC接口,实现传输网络层的相关功能,完成基站与RNC之间的信息交互。早期的传输系统有ATM+以太网, 后期全部演进为以太网+TCP/IP协议栈。

     

    2.2 控制系统

    控制子系统一般完成如下功能:完成NBAP信令处理、资源管理和操作维护功能;产生并提供整个基站的同步时钟,并对整个基站的运行和周边环境状况进行检测和监控。

    也就是常说的SPlane、MPlane、CPlane。

     

    2.3 数字基带系统

    基带子系统完成无线侧物理层的功能,包括信道解扩解调、编译码扩频调制的功能,其工作过程为:

    下行发送处理过程:基带子系统接收到来自传输子系统的FP(Frame Protocol)包,根据3GPP 25.212协议要求完成编码,包括TB块CRC校验和码块分段、信道编码(Convolutional coding、Turbo coding、No coding)、速率匹配、交织、传输信道复用物理信道映射等,根据3GPP 25.213、3GPP 25.211协议要求完成传输信道映射、物理信道生成、组帧、扩频调制,发送分集控制、功控合路等功能,将下行数据发送到中频子系统,

    上行接收器处理过程:基带子系统对上行基带数据进行接入信道搜索解调合专用信道解调,包括相关、信道估计、频率跟踪和RAKE合并等,得到解扩解调的软判决符号。然后经过译码卷积码Turbo码)处理、FP处理传递给传输子系统。

    物理层闭环功率控制处理过程:包括AI信息的闭环处理、上下行物理层闭环功率控制处理、下行的闭环发射分集处理。这些闭环过程都是从上行接收的信息中解调得到相关的控制信息(AI、上行TPC、下行TPC、FBI),然后将这些信息传给下行发送通道,下行发送通道再按要求使用这些信息。

    因此本文主要拆解的核心之一技术扩频与码分多址、闭环功率控制、QPSK, 8PSK编码调制就是在基带系统。

     

    2.4 数字中频系统

    发送过程:

    完成数模转换、模数转换、上下变频;TRX完成数字RRC成形滤波、插值滤波、DUC后完成数模转换,传递到射频子系统。

    接收过程:

    中频子系统接收来自射频子系统的信号,通过模数转换、DDC、抽取滤波、接收RRC匹配滤波、DAGC处理,得到数字基带信号,并传送到基带子系统。

     

    2.5 射频系统

    射频子系统一般由收发信机双工模块、功率放大模块等模块组成,主要功能包括:上行完成接收滤波、低噪声放大、进一步的射频小信号放大滤波和下变频,然后完成模数转换、数字中频处理和RRC滤波等;下行完成RRC滤波、数字中频处理和数模转换,经过射频滤波、放大、上变频处理,经线性功率放大器放大后经过发送滤波至天馈。射频子系统功能图:

    收发信机模块完成上下变频、信号放大、滤波处理、AD转换、DA转换,可以支持功率控制命令、一般收发信机用两套收发通道支持收发分集。

    双工模块包含双工器和LNA(Low Noise Amplify),LNA对信号起前级放大作用。

    功率放大模块的主要作用是放大收发信机输出的下行信号功率。

    为了支持多载波的应用,一般射频子系统还集成小信号合、分路模块。通过分路器,将双工模块放大的上行信号分路,送到不同的收发信机,支持上行多载波;通过合路器,将多个收发信机输出的下行信号合路,送到功率放大模块进行放大,支持下行多载波应用。

    因此本文主要拆解的核心之一IQ调制就是在射频系统。

     

    2.6 天馈系统

    天馈子系统由天线、馈线、天馈避雷器塔顶放大器(可选)等组成。天馈子系统完成Node B空中接口信号的输入和输出。WCDMA系统的核心频段为:上行 1920~1980MHz,下行2110~2170MHz。天馈子系统的示意图:

    塔放的主要作用是将来自天线的接收信号进行放大,补偿由于馈线引入的损耗,提高系统的上行覆盖范围,同时可有效降低手机的发射功率,减小系统内的干扰噪声,提高通话质量。

     

    2.7  WCDMA是频分双工FDD

    WCDMA联通的3G体制,  采用频分双方FDD, 上下行采用不同频段的载波。

    上行频段:1940-1955HZ, 15M

    下行频段:2130-2145HZ,    15M

    小区带宽5M

     

    2. 8 WCMDA的通信模型

    关于信源编码、信道编码、交织、在2G GSM系统中有详细的拆解,3G WCDMA与此类似,本文不再拆解。

    本文的重点在数字调制/解调、扩频/解扩、加扰/解扰、射频调制/与解调这4个过程,最后把这4个过程有机的串接起来!

    从上图可以看出:CDMA扩频编码/解码、加扰和解扰是插在数字调制/解调中间。

    数字调制的映射是CDMA的输入,射频调制的输入是CDMA的输出。

    因此为了更好的理解本文的重点中的重点CDMA之前,有必要先拆解一下3G系统中的二进制相位调制2-PSK、4进制调制Q-PSK、8进制8PSK。


    第3章 数字调制的原理与2-PSK

    3.1 数字调制/解调概述:

    (1)调制的定义

    所谓调制是指利用要传输的原始信号S(t)去控制高频谐波或周期性脉冲信号的某个或几个参量,使高频谐波或周期性脉冲信号中的某个或几个参量随S(t)的变化而变化。

    要传输的原始信号称为调制信号或基带信号,用S(t)表示;

    被调制的高频谐波或周期性的脉冲信号起着运载原始信号的作用,因此称为载波,用C(t)表示;

    调制后的信号所得到的其参量随S(t)线性变化的信号则称为已调信号,用表示。

    调制信号有两种:模拟信号数字信号

    模拟信号控制载波参量的变化,这种调制方式称为模拟调制

    用数字信号控制载波信号的参量变化,这种调制方式称为数字调制

    数字调制技术是一种解决如何通过码元携带二进制比特数据的技术。

    数字信号指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示。比如1,2,3,4,5,6,7,8,9,10...都是数字信号,0.7,0,8, 0.9,1.0,1.25也都是数字信号。

    在计算机中,数字信号的最小组成单元是1和0,数字信号的大小,常用有限位的二进制数表示,二进制可以表示整数,1,2,3,4,5,6,7,8,9,10....。也可以表示实数,如0.7,0,8, 0.9,1.0,1.25。

     

    数字信号是二进制比特调制的关键:由它来衔接逻辑二进制比特与物理射频模拟信号。

    二进制比特要通过高频载波传送,必须先映射成数字信号!然后再由数字信号控制载波信号的参数!

    数字信号是物理电信号,有具体幅度值,具体的数值取决于数字调制方式,比如2-PSK,数字信号值就是1或-1.

     

    数字调制是现代通信的重要方法,它与模拟调制相比有许多优点:具有更好的抗干扰性能,更强的抗信道损耗,以及更好的安全性。

     

    (2)数字调制方式的种类

    主要的数字调制方式有很多中,包括:

    频移键控:频移键控(FSK),高斯最小频移键控GMSK,

    幅移键控:幅移键控(ASK),

    相移键控:二进制相移键控(BPSK)和多进制相移键控(xPSK:4PSK, 8PSK, 16PSK),多电平正交调幅(xQAM: 16QAM, 64QAM, 128QAM),以及正交频分复用调制(OFDM:orthogonalfrequencydivisionmultiplexing)等方法。

     

    在第1代模拟移动通信系统中,信令的数据传输,采用的数字调制技术主要是频移键控(FSK)  。

    在第2代数字移动通信系统GSM中,采用的数字调制技术包括:高斯最小频移键控GMSK、幅移键控(ASK)  。

    GPRS/EGRPS采用的数字调制技术包括:: GMSK, 8PSK。

    3G采用的数字调制技术包括:: BPSK/2PSK, QPSK/4PSK, 8PSK  =》 相位调制。

    在第4G/5G数字移动通信系统中,采用了新的调制技术:正交频分复用调制(OFDM), QAM.

     

    3.2 B-PSK调制解调

    (1)2-PSK/B-PSK星座图

    图中的数字代表的二进制比特值,而不是数字信号。

    比特1:相位0,幅度值=+1.

    比特0:相位π,幅度值=-1

     

    (2)数据信号映射值:+1,-1

    2-PSK:二进制相位调制BPSK,使用载波信号的相位表示二进制比特0和1,如下图所示:

    1对应的载波相位是0,控制载波相位的数字信号值为A=+1.

    0对应的相位相位是π,控制载波相位的数字信号值为A=-1.

    当然,也可以有另一种映射方法:

    1对应的载波相位是0,控制载波相位的数字信号值为A=-1.

    0对应的相位相位是π,控制载波相位的数字信号值为A=+1.

     

    (3)调制过程:乘法器

    乘法器:用映射后的数字信号乘以模拟的载波信号。此时,数字信号相当于模拟载波信号的幅度值!

    二进制比特1的调制:A*coswt = +1 * coswt = coswt =》载波相位为0

    二进制比特0的调制:A*coswt = -1 * coswt = -coswt = cos(wt+π)=》载波的相位是π。

     

    (4)解调过程:二进制相位解调,采用相干解调。

    • 解调过程的时域波形图如下:

    a:调制后的模拟电磁波波形:包含幅度、频率、相位。

    b:正弦或余弦载波:幅度=1、频率=载波频率、相位=0。

    c:通过滤波器之后的波形::包含幅度、频率、相位。

    d:d是关键,它是数字信号,是物理电信号,有具体幅度值,由它来衔接逻辑二进制比特与物理射频模拟信号。在2-PSK中, 这里用+1个电压单位和-1个电压单位。c-》d的过程实际是包络检波。

    e:是逻辑的二进制比特流,没有物理电压大小。

     

    • 解调的理论推导:数学表达

    根据积化和差公式:

    得到

    cosx*cosx    =  1/2(cos2x + 1) =》低通滤波,滤除高频信号cos2x =》 1/2 

    -cosx * cosx = -1/2(cos2x + 1)=》低通滤波,滤除高频信号cos2x =》 -1/2 

    • 恢复的数学信号值: 

    +1:1/2

    -1:  -1/2

     

    • 二进制判决:

    最后通过抽样判决器,还原出调制前的二进制比特数据。

    1/2 => 1   => 二进制比特: 1

    -1/2=》-1 => 二进制比特: 0


    第4章 单用户扩频的基本原理:扩频技术

    CDMA码分多址技术在扩频基础之上发展起来的,而扩频不仅仅用于CDMA通信,还可以用于其他的无线通信技术, 比如LoRa通信,因此有必要先拆解一下扩频技术。

    参见《图解通信原理与案例分析-18:低功耗、远距离物联网无线通信技术LoRa概述与扩频通信的基本原理》

    https://blog.csdn.net/HiWangWenBing/article/details/109550068


    第5章 多用户复用的基本原理:CDMA码分多址

    5.1 CDMA码分多址概述

    有了对扩频技术本质的认识,再拆解码分多址技术就有了技术基础。

    码分多址无非是在单用户数字信号扩频的基础之上,增加了对多用户复用与解复用的支持。

    如下图所示:

    每一路的User X Coding,实质上就是扩频编码,每一路的User X DeCoding就是扩频解码。

    CDMA码分多址:

    发送时,不同用户的二进制数据,先经过各自的数字调制,映射成确定的数字信号,然后各自通过所谓的CDMA扩频码,对各自的数字信号进行扩频编码,最后全部叠加在一起,对载波信号进行射频调制。这导致一个结果,所有用户不仅使用相同频率的宽带载波信号进行传输,在时间上也是重叠在一起的。

    接收时,先进行射频调制,获得叠加后的数字信号,不同的用户再对叠加后的数学信号进行解扩,恢复出各自的数字信号,最后把各自恢复的数字信号判决成各自的0和1的二进制比特。

     

    CDMA码分多址相对于扩频技术,其神奇之处在于:

    码分多址能够把不同用户扩频后的数字信号进行叠加与混合,然后进行统一的射频调制。

    而接收端通过解扩,居然还能够把各个用户的数学信号从混合在一起的数字信号中分离处理。

    如何做到的呢?有什么限制条件吗?

     

    5.2 CDMA的限制条件

    要实现CDMA码分多址的目标,自然是有一些限制条件的,并非什么样的扩频都能够实现码分多址:复用与解复用。

    (1)单用户扩频码的要求

    为了使得扩频后信号分布更加的均匀,建议扩频码是自相关的,除了全1的扩频码,其他扩频码中1和-1的个数必须相等,即所有的1和-1的累计和为0。

    <<图解通信原理与案例分析-18:低功耗、远距离物联网无线通信技术LoRa概述与扩频通信的基本原理>> 拆解的就是单用户扩频,没有复用与解复用。

    https://blog.csdn.net/HiWangWenBing/article/details/109550068

     

    (2)多用户复用与解复用对扩频码的要求

    要实现不同扩频用户数据的复用与解复用,CDMA系统中对扩频码提出了极其严格的要求:

    • 扩频的要求:扩频码中1和-1的个数相等(除了全1的扩频码),能量尽可能分散在整个频谱带宽上。
    • 码分复用的要求:不同码之间必须正交,即两个不同的码之间的内积和为0
    • 不同速率的要求:支持不同长度的扩频码,且不同长度扩频码之间也是正交的。

    正交是扩频码的核心和关键!

    符号上述条件的扩频码,在WCDMA中称为OVSF码。

    OVSF是Orthogonal Variable Spreading Factor的缩写,OVSF翻译过来是正交、可变扩频因子码,是一个实现码分多址(CDMA)信号传输的代码,它由Walsh函数生成,OVSF码互相关为零,相互完全正交。

    OVSF码是用来扩频的,又称为扩频码!

    OVSF码是用来区分物理信道的,又称为信道化码!

     

    扩频因子:扩频后chip速率和扩频前信号速率的比值,直接反映了扩频增益。

    在WCDMA中,扩频因子(SF)表示用多少位码片(chip)来表示一个信息符号(bit),它的取值可以是2的n次方,如sf = 2,4,8...512,常用的扩频码有OVSF码等。

    为了符合扩频与复用的要求,码长必须成倍数的扩展。且N位码长,共有2^N的二进制,在2^N个二进制数中,只有N个二进制数满足条件。

    SF=1时,OVSF码长度为1,即不扩频

    SF=2时,共有2^2=4   个二进制数,但满足条件的OVSF码也只有2个。 OVSF=[1, 1],  [1, -1]

    SF=4时, 共有2^4=16个二进制数,但满足条件的OVSF码也只有4个。 OVSF=[1, 1, 1, 1], [1, 1, -1, -1], [1, -1, 1, -1], [1, -1, -1, 1] 

    SF=8时,共有2^8=64个二进制数,但满足条件的OVSF码也只有8个。 

    OVSF=[+1, +1, +1, +1,  +1, +1,  +1,  +1],  [+1, +1, +1,  +1, -1, -1,  -1,  -1] ; 

                [+1, +1, -1,  -1,  +1,  +1, -1,   -1],   [+1, +1, -1,   -1, -1,  -1, +1, +1] ; 

                [+1, -1, +1, -1,   +1,  -1,  +1, -1],    [+1, -1,  +1,  -1, -1,  +1, -1, +1];

                 [+1, -1, -1, +1 , +1,  -1,   -1, +1],   [+1, -1, -1, +1 , -1,  +1,   +1, -1], 


    3)不同用户的扩频码的长度要求

    不同用户扩频码的长度不一定相等,但必须符合正交的特性。

    扩频码长度越长,扩频后的位数越多,在同等带宽的情况下,承载的用户的比特率就越低。

    扩频码长度越端,扩频后的位数越少,在同等带宽的情况下,承载的用户的比特率就越高。

     

    (4)不同用户的数据要求

    每一路用户的信号幅度不要求一定是1或其他整数,但要求,每一路用户的信号幅度必须相当。

    如果某一路用户信号的幅度远大于其他用户,就会对其他用户的数据造成强力的干扰,导致其他用户的数据无法恢复。

    这就是WCDMA功率控制尤为重要的缘由!


    第6章 相关性与正交性

    6.1 什么是变量的相关性与正交性

    相关性,是指两个变量的关联程度。

    散点图是用来判断两个变量之间的相互关系的工具:

    一般情况下,散点图用两组数据构成多个坐标点,通过观察坐标点的分布,判断变量间是否存在关联关系,以及相关关系的强度。

    相关性的强度在【-1-1】之间,0表示不相关,1表示完全正相关,-1表示完全负相关。

    0:不相关,两个变量之间没有任何满足的函数关系,一个变量的变化,相对于另一个变化完全是独立的,随机的,两个变量之间没有任何关联。

    1:正相关:两个变量的数值变化为同向,一个变量的数值变大,也会导致另一个变量的数值变大,一个变量的数值变小,另一个变量的数值也跟着变小。

    -1:负相关:两个变量的数值变化为反向,一个变量的数值变大,也会导致另一个变量的数值变小,一个变量的数值变小,另一个变量的数值也跟着变大。

    如下是通过散点图表示的相关性的示意图案例:

     

    正交性:不相干的两个变量,即为正交。换句话说,一个变量的无论怎么变化,对另一个变量的变化没有任何影响,两个变量之间没有必然内在的联系关系,它们是相互独立的,则这两个变量是正交的。

     

    散点图时通过把一个变量作为自变量x,量一个变量作为因变量y,来呈现两个变量的关系,每个点,蕴含着相同的时间点。

     

    有时候,并没有两个变量不同点的对应关系, 他们只有各自随时间变化的函数,如x=f(t), y=g(t),那么此时如何判断这x和y之间的相关性呢? 

    这时候有两种方法:

    (1)转换成散点图: (x,y) => (f(t0), g(t0))、 (f(t2), g(t2))、 (f(t3), g(t3))。。。。。。。

    (2)使用函数的相关性分析工具

     

    6.2 函数的积分与两个函数间的相关性

    函数的积分:直观地说,对于一个给定的正实值函数,在一个实数区间上的定积分, 可以理解为在坐标平面上,由曲线、直线以及轴围成的曲边梯形的面积值(一种确定的实数值)。

    两个函数的相关性:是通过两个函数相乘以后的积分值来描述的。

    (1)如果函数与自身相乘,在指定区间上的积分不为0。

    (2)如果连个函数相乘之后,在某个区间的积分值为0,则这两个函数是不相关的,即正交的。

    一组函数的性质可以类比矢量的正交,“两个函数相乘再积分” 这个步骤可以类比无数个矢量(在函数区间的采样值)的内积。

    如果两个不同的矢量正交(垂直),则它们的内积为零.如果它们的模长不为零,则一个矢量与自身内积不为零。

    如果给正交函数系中的每个函数的平方进行归一化,则得到:

     

    这里有几个关键点:

    (1)两个函数的相乘

    (2)对两个函数相乘的结果函数进行积分

    (3)积分的值为0

     

    那么这什么物理意义呢?

    这需要从物理信号的角度来看上述函数运算的物理意义。

     

    6.3 模拟信号的正交性

    (1)连续函数的物理意义:模拟信号

    连续函数f(t),实际上就是模拟信号:自变量是时间t,因变量是信号的幅度。

    模拟信号是指用连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,或在一段连续的时间间隔内,其代表信息的特征量可以在任意瞬间呈现为任意数值的信号。

     

    (2)两个函数相乘的物理意义是:模拟幅度调制!

    用基带信号去调制载波信号,正是基带信号s(t)去乘以载波信号c(t). 

    如下两个函数相乘,即幅度调制的效果:

    (2)函数积分的物理意义:

    对单一函数,在指定的积分区间(如数字信号的周期)积分,其积分值的大小,反应的是其对应的信号在积分区间,平均幅度的大小。

    对两个相乘后的函数,在指定的积分区间(如数字信号的周期)积分,其积分值的大小,反应是调制后的信号在积分区间,平均幅度的大小。

     

    (3)积分为0的物理意义

    某一信号分量,如果在某一个积分区间积分为0,表明某个信号分量,无论在积分区间的波形如何变化,其对最终叠加后的信号的平均幅度影响为0,即没有影响!

    例如:

    y(t) = f1(t) + f2(t)    =》  y(t) 是两个信号f1(t)和f2(t) 的叠加。

    如果f2(t)的积分为0,即ʃf2(x)=0,则ʃy = ʃ (f1(t) + f2(t) =  ʃ f1(t)

    也就是说,虽然最终信号y(t) 瞬间幅度与 f2(t)有关,是f1(t)和f2(t) 的叠加,

    但信号y(t) 在某个积分区间的平均幅度(积分幅度),实际上与 f2(t)无关,只取决与f1(t)!!!, f2(t) 对叠加后信号的平均幅度影响为0.

    这个结论非常中重要!!!这是正交函数调制互不影响的理论基础!

     

    (4)什么样的调制信号,在其周期内,其积分为0?两个正交信号!

    在双载波IQ调制中,sinx与cosx就是两个正交信号。

    如果两个正交的时域信号相乘,得到的信号,无论其时域波形如何变化,其在积分周期内的积分为0。

    IQ双载波调制后的解调过程,正是利用此特性。

     

     

    • ʃsinx = 0   //0~2π   

    => 在积分周期内,信号sinx自身的积分为0 =》 sinx是自相关信号 =》 载波信号sinx自身对基带信号的“平均幅度”没有任何影响!

    • ʃcosx = 0   //0~2π   

    => 在积分周期内,信号cosx自身的积分为0 =》 cosx是自相关信号 =》 载波信号cosx自身对基带信号的“平均幅度”没有任何影响!

    • ʃsinx*cos = 0    //0~2π

    => 在积分周期内,信号cosx*cosx的积分为0 =》sinx与cosx是正交信号 =》 用cosx解调sinx的调制信号 y1=f(x)*sin(x),得到y2= f(x) * sin(x) * cosx,ʃy2在积分周期内为0,cosx去解调sinx的调制信号时,解调出信号的平均幅度为0.

    反之亦然:

    => 在积分周期内,信号cosx*cosx的积分为0 =》sinx与cosx是正交信号 =》 用sinx解调cosx的调制信号 y1=f(x)*cos(x),得到y2 = f(x) * sin(x) * cosx,ʃy2在积分周期内为0,sinx去解调cosx的调制信号时,解调出信号的平均幅度为0.

    • ʃcos(x)  * cos(x) = 1/2 !=0
    • ʃsin(x)  * sin(x) = 1/2 !=0

    (5)正交信号的好处

    • 正交信号的好处主要是因为比较独立,互不相关,所以不相互干扰,即使混合在一起,也很容易再分离出来,便于区分和接收。

     

    6.4 正交信号相乘后积分为0的物理意义与IQ正交双载波调制(“相分”复用)

    (1)积分对模拟信号解调的物理意义

    • 包络检波:

    包络检波本质上就是一个模拟信号积分的过程!低通滤波器滤除高频信号。

    • 相干解调

    调制:y1=f(t) * coswt

    解调:y2=y1 * coswt = f(t)* coswt * coswt = 1/2 * f(t) * (1 + cos2wt) = 1/2 * f(t) + 1/2 * f(t) * cos2wt.

    1/2 * f(t)的积分,就得到基带信号f(t)的面积

    1/2 * f(t) * cos2wt的积分为0 =》 载波信号对数字基带信号的恢复没有影响!

     

    当然,模拟信号的解调,不能直观的体现不出数学积分运算的过程。

     

    (2)积分对数字信号解调的物理意义

    数字调制的解调过程是一个积分过程!

    • 包络检波解调

    • 相干解调

    在实际系统实现时,可以通过低通滤波过滤高频信号,得到基带信号的波形,然后通过判决器,检测基带信号的电平。

    如果是正高电平,则判决为1

    如果是负高电平,则判决为0

    如果电平为0,则判决为“无数据”

     

    • 数字采样法:

    而数字解调时,需要有一个高频的采样器,其本质上是一个积分器,它通过高频采样射频解调后的信号,并进行累计积分,得到数字基带信号是1还是0,

    在实际通信中,判断一个信号是1还是0,并不是一个采样点,而是多个采样的点,并根据采用点的累计和来判断信号电平。

    以上图为例:

    在T1周期内,5个采样点,5个采样点的累计为正数,且累计和大于某个门限,则判断为1,逻辑的二进制比特为1.

    在T2周期内,5个采样点,5个采样点的累计为负数,且累计和小于某个门限,则判断为-1,逻辑的二进制比特为0.

    在T3周期内,10个采样点,10个采样点的累计为-1 + 1 = 0,判断为空,即没有数据。

     

    (3)IQ正交双载波调制

    • IQ调制

    cosx和sinx是正交信号,他们各自调制后,通过加法器,把信号混合在一起,如下图所示:

     

    • 调制后的信号

    调制后信号f(t)= i(t) * cos(ωt) + q(t) * sin(ωt)

    包含了载波cos(ωt)和sin(ωt)各自调制的信号: i(t) * cos(ωt)与q(t) * sin(ωt)

     

    • IQ解调

    解调时,I路和Q路单独对调制后的混合信号进行解调:

    I路解调:  g_i (t)   = f(t)* cos(ωt) =  (i(t) * cos(ωt) + q(t) * sin(ωt)) * cos(ωt)

    Q路解调:g_q(t) = f(t)* sin(ωt) =  (i(t) * cos(ωt) + q(t) * sin(ωt)) *  sin(ωt)

    很显然,调制后的信号中内涵了i和q路的信号,现在的问题时:

    解调时,调制信号中混合的i路的调制信号,对q路的解调有影响吗?

    解调时,调制信号中混合的q路的调制信号,对i路的解调有影响吗?

    我们在这里不进行严格的数学推理和定量分析,我们从函数正交的角度来定性分析一下是否有影响。

     

    先看i路的解调与积分判决:

    ʃg_i (t)  = ʃ  (f(t)* cos(ωt) =  (i(t) * cos(ωt) + q(t) * sin(ωt)) * cos(ωt)) =  ʃ  i(t) * cos(ωt) * cos(ωt)  +  ʃ q(t) * sin(ωt)*  cos(ωt)

    由于sin(ωt)与cos(ωt)是正交的,因此sin(ωt)*  cos(ωt)在其周期内的积分为0,因此q路的调制信号q(t) * sin(ωt),对i路的解调没有影响。

     

    再看q路的解调与积分判决:

    ʃg_i (t)  = ʃ  (f(t)* cos(ωt) =  (i(t) * cos(ωt) + q(t) * sin(ωt)) * sin(ωt)) =  ʃ  i(t) * cos(ωt) * sin(ωt)  +  ʃ q(t) * sin(ωt)*  sin(ωt)

    由于sin(ωt)与cos(ωt)是正交的,因此sin(ωt)*  cos(ωt)在其周期内的积分为0,因此i路的调制信号 i(t) * cos(ωt),对q路的解调没有影响。

     

    6.5 什么是向量的相关性与正交向量

    6.5.1 向量的定义:

    向量:在数学中,向量(也称为欧几里得向量、几何向量、矢量),指既有大小又有方向的量。它可以形象化地表示为带箭头的线段。

    箭头所指:代表向量的方向;线段长度:代表向量的大小。与向量对应的只有大小,没有方向的量叫做数量(物理学中称标量)。

     

    6.5.2 向量的维数

    向量是有维数的。

    一维向量横坐标或纵坐标上的一个点:用(a1)表示。

    二维向量为平面上的一个点,用(a1,a2)表示。a1,a2分别是x轴,y轴上的一个点。

    三维向量为空间上的一个点,用(a1,a2,a3)表示。a1,a2,a3分别是x轴,y轴,z轴上的一个点,

    依次类推理,到N维向量,N为空间。

     

    6.5.3 正交向量

    (1)正交向量的定义

    “正交向量”是一个数学术语,指点积为零的两个或多个向量

    (2)向量内积

    这里有一个数学运算,即内积。

    向量:a = [a1, a2,…, an]

    向量:b = [b1, b2,…, bn]

    a和b的点积定义为:

    a·b=a1b1+a2b2+……+anbn = 0。

    如果向量的点积(内积)为0,称为这两个向量是正交的。

    这是向量的数学定义,为了更好的理解向量,不妨看一下正交向量内积的几何意义和正交向量的几何意义。

     

    6.5.4 向量内积的几何意义

    如果把向量a=【a1,a2, a3。。。。。】,看成是函数a=f(x)的N个采样点a1=f(x1),a2=f(x2)。。。。。。。

    如果把向量b=【b1,a2, a3。。。。。】,看成是函数a=f(x)的N个采样点b1=g(x1),b2=f(x2)。。。。。。。

    因此向量的几何意义之一是:连续函数的离散化!是模拟信号的离散化、数字化,每个值代表一次采样值!

    a,b的内积 = a·b=a1b1+a2b2+……+anbn = 0。

    相当于两个函数先相乘,然后再积分,最后积分值为0。

    也就是说,如果两个向量是正交的,那么两个向量对应位置的数值相乘后,再累计和为0。

    我们知道,两个函数相乘,相当于模拟调制!

    那么这里,两个向量相乘,相当于相当于两个函数在采样点处的函数值相乘!是模拟信号的数字化计算。

    向量相乘无线通信领域应用广泛,如CDMA的扩频,加扰,都是两个归一化后的数字信号相乘。

     

    6.5.5 正交向量的几何意义
    上一节,正交向量的几何意义之一表示两个向量对应的各自的函数相乘的积分为0。

    这里从向量自身的几何图形,理解向量的几何意义:

    (1)1维向量横坐标或纵坐标上的一个点:

    用(a1)表示,如果a1与b1正交,则a1在x轴上,b1在y轴上。如下图所示:

     

    (2)2维向量为平面上的一个点:

    a(a1,a2),b(b1,b2),如果a,b向量正交,则a向量与b向量垂直!

    归一化后:

    正交向量对有:

    • a=(1, 1),   b=(1, -1)
    • b=(-1,1),   c=(-1, -1)
    • c=(-1, -1), d=(1, -1)
    • d=(1, -1), a= (1, 1)

    因此,二维向量,最多有4个向量,但最多有2个两两相互垂直的单位向量

    这就是为什么SF=2时,OVSF正交扩频码最多有两个的原因。

     

    (3)3维向量为空间上的一个点

    用(a1,a2,a3)表示。a1,a2,a3分别是x轴,y轴,z轴上的一个点。

     

    在3维空间中,由8个单位向量,但最多有3个两两相互垂直的单位向量。

     

     

    a = (1,0, 0) =>  (1,-1,-1)

    b =  (0,1,0) =>(-1,1,-1) 

    b =  (0,0,1) =>(-1,-1,1) 

     

    如果內积为零,那么这两个向量一定是垂直的:

     

    依次类推理,到N维向量,N为空间,共有2^N个单位向量,但只有N个两两相互正交的单位向量。

     

    7 单位向量、二进制比特序列、正交码与CDMA“码分”复用

    7.1 正交码的定义

    (1)如果向量的a=【a1,a2, a3。。。。。】,a1,a2的取值是1或0,则向量就成了二进制比特序列。

    相当于函数a = f(t)的自变量为1,2,3,4,5....., 而因变量始终为1或0; 即f(t) = 1 或f(t) = 0;

     

    (2)如果向量的a=【a1,a2, a3。。。。。】,a1,a2的取值是1或-1,则向量就成了普通的扩频码。

    相当于函数a = f(t)的自变量为1,2,3,4,5....., 而因变量始终为1或-1, 即f(t) = 1 或f(t) = -1;

     

    (3)如果向量的a=【a1,a2, a3。。。。。】,a1,a2的取值是1或-1,且每两个向量实例都是两两正交的,即每两个向量的内积都为0, 则向量就成了可用于CDMA码分复用的正交可变扩频因子OVSF(Orthogonal Variable Spreading Factor)。

    正交码符合如下特点:

    • N比特二进制码,即N维的向量空间,共有2^N个不同的二进制序列,但只有N个两两互为正交的二进制序列。
    • 任意两个正交的二进制序列的内积严格为0。

     

    7.2 正交码的物理意义与应用

    正交码内积为0的物理含义与函数相乘后积分为0的物理含义是类似的。

    (1)两个正交的函数相乘后积分为0,应用于两路:正交载波sin(x)与cos(x)的IQ调制、复用、解复用、解调过程。

     

    (2)两个正交码相乘后积分为0,应用于多路(取决于扩频码的个数):CDMA码分多址的扩频、复用、解复用、解扩的调制解调过程。

    • 下行复用

     

    • 上行解复用

    第i路待调制的二进制数据:fi(x) //fi表示第i路数据, x 表示向量的下标索引 0,1,2,3,4....,其长度反应了向量的长度,扩频码的长度。

    第i路调制码:Ai(x)   //Ai表示第i路的调制码, x 表示向量的下标索引 0,1,2,3,4....

    第i路调制过程:fi(x)* A1(x)    //x 表示向量的下标索引 0,1,2,3,4....

    复用过程:f(x)=  \sumfi(x) * Ai(x)  =  f0(x) * A0(x) +  f1(x) * A1(x)  + f2(x) * A2(x)  +  f3(x) * A3(x)  +  f4(x) * A4(x)  .。。。。。

    复用后的信号f(x) : 包含了每一路的信号。

    解调:f(x) * Aj(x)    => 每一路用自身的解调码与复用后的混合信号相乘 =》 \sumfi(x) * Ai(x)  * Aj(x)

    积分解复用:   \oint\sumfi(x) * Ai(x)  * Aj(x), 解复用的过程就是积分/内积的过程。

    这里就体现了正交码的意义了:

    当扩频码与解扩码一致时,得到积分不为0的值:  \ointfi(x) * Ai(x)  * Aj(x)//i = j

    当扩频码与解扩码不一致时,得到积分为0的值:  \ointfi(x) * Ai(x)  * Aj(x) //i != j 时, Ai(x) 与 Aj(x)是正交的,因此其内积为0。

     这样,通过特定的扩频码来解扩,就可以积分恢复出用对应扩频码扩频调制的数据,而解扩用其它正交的扩频码扩频调制的数据时,积分恢复出的数据为0。


    7.3 正交码在复用与解复用中的应用案例演示

    案例3:PSK数字调制 + 单路功率不变,总功率变大 + 多路复用 + 射频幅度调制

    码分多址CDMA---PSK数字调制+单路功率不变,总功率变大+多路复用+射频幅度调制
    用户参数12345678累积和说明
    A传送比特11待传送的比特
    A扩频前码元信号幅度值111:表示比特1
    A序列后码元信号幅度值111111118扩频幅度为8
    A扩频码-1-1-111-1110扩频码自身积分为0
    A扩频后码片信号幅度值-1-1-111-1110 
    B传送比特00待传送的比特
    B扩频前码元信号幅度值-1-1-1:表示比特0
    B序列后码元信号幅度值-1-1-1-1-1-1-1-1-8扩频幅度为8
    B扩频码-1-11-1111-10扩频码自身积分为0
    B扩频后码片信号幅度值11-11-1-1-110 
    C传送比特无数据无数据待传送的比特
    C扩频前码元信号幅度值000:表示无数据
    C序列后码元信号幅度值000000000扩频幅度为-8
    C扩频码-11-1111-1-10扩频码自身积分为0
    C扩频后码片信号幅度值000000000 
                
    AB扩频码正交值11-1-11-11-10扩频码之间内积为0
    AC扩频码正交值1-1111-1-1-10扩频码之间内积为0
    BC扩频码正交值1-1-1-111-110扩频码之间内积为0
    ABC混合后符号幅度值00-220-2020 
                
    A扩频码-1-1-111-1110扩频码自身积分为0
    A解扩后码片信号幅度值002202028解扩后的幅度是扩频的每一路的累计和
    A判决输入幅度值        1扩频后的幅度/扩频幅度
    A判决值        1 
    B扩频码-1-11-1111-10 
    B解扩后码片信号幅度值00-2-20-20-2-8解扩后的幅度是扩频的每一路的累计和
    B判决输入符号幅度值        -1扩频后的幅度/扩频幅度
    B判决值        0 
    C扩频码-11-1111-1-10扩频码自身积分为0
    C解扩后码片信号幅度值000000000解扩后的幅度是扩频的每一路的累计和
    C判决输入符号幅度值        0 
    C判决值        无数据 
                
                

     

    案例4:码分多址CDMA---PSK数字调制+单路功率降低,总功率不变+多路复用+幅度调制

    码分多址CDMA---PSK数字调制+单路功率降低,总功率不变+多路复用+幅度调制
    用户参数12345678累积和说明
    A传送比特11待传送的比特
    A扩频前码元信号幅度值0.1250.125+0.125:表示比特1
    A序列后码元信号幅度值0.1250.1250.1250.1250.1250.1250.1250.1251扩频幅度为1, 每一路的功率降低为原先的1/8
    A扩频码-1-1-111-1110扩频码自身积分为0
    A扩频后码片信号幅度值-0.125-0.125-0.1250.1250.125-0.1250.1250.1250 
    B传送比特00待传送的比特
    B扩频前码元信号幅度值-0.125-0.125-0.125:表示比特0
    B序列后码元信号幅度值-0.125-0.125-0.125-0.125-0.125-0.125-0.125-0.125-1扩频幅度为1, 每一路的功率降低为原先的1/8
    B扩频码-1-11-1111-10扩频码自身积分为0
    B扩频后码片信号幅度值0.1250.125-0.1250.125-0.125-0.125-0.1250.1250 
    C传送比特无数据无数据待传送的比特
    C扩频前码元信号幅度值0.00000:表示无数据
    C序列后码元信号幅度值0.0000.0000.0000.0000.0000.0000.0000.0000无数据,无功率
    C扩频码-11-1111-1-10扩频码自身积分为0
    C扩频后码片信号幅度值000000000 
                
    AB扩频码正交值11-1-11-11-10扩频码之间内积为0
    AC扩频码正交值0.125-0.1250.1250.1250.125-0.125-0.125-0.1250扩频码之间内积为0
    BC扩频码正交值1-1-1-111-110扩频码之间内积为0
    ABC混合后幅度值00-0.250.250-0.2500.250 
                
    A扩频码-1-1-111-1110扩频码自身积分为0
    A解扩后码片信号幅度值000.250.2500.2500.251解扩后的幅度是扩频的每一路的累计和
    A判决输入        1扩频后的幅度/扩频幅度
    A判决值        1 
    B扩频码-1-11-1111-10 
    B解扩后码片信号幅度值00-0.25-0.250-0.250-0.25-1解扩后的幅度是扩频的每一路的累计和
    B判决输入        -1扩频后的幅度/扩频幅度
    B判决值        0 
    C扩频码-11-1111-1-10扩频码自身积分为0
    C解扩后码片信号幅度值000000000解扩后的幅度是扩频的每一路的累计和
    C判决输入        0 
    C判决值        无数据 
                
                

     

    案例5:码分多址CDMA---QPSK数字调制+单路功率降低,总功率不变+多路复用+IQ模拟调制

    码分多址CDMA---QPSK数字调制+单路功率降低,总功率不变+多路复用+IQ模拟调制
    用户参数12345678累积和说明
    A传送比特1 11 1待传送的比特
    A扩频前码元信号幅度值:I路0.1250.1251:表示比特1
    A扩频前码元信号幅度值:Q路0.1250.125 
    A序列后码元信号幅度值:I路0.1250.1250.1250.1250.1250.1250.1250.1251扩频幅度为1, 每一路的功率降低为原先的1/8
    A序列后码元信号幅度值:Q路0.1250.1250.1250.1250.1250.1250.1250.125  
    A扩频码-1-1-111-1110扩频码自身积分为0
    A扩频后码片信号幅度值:I路-0.125-0.125-0.1250.1250.125-0.1250.1250.1250 
    A扩频后码片信号幅度值:Q路-0.125-0.125-0.1250.1250.125-0.1250.1250.1250 
    B传送比特0 00 0待传送的比特
    B扩频前码元信号幅度值:I路-0.125-0.125-1:表示比特0
    B扩频前码元信号幅度值:Q路-0.125  
    B序列后码元信号幅度值:I路-0.125-0.125-0.125-0.125-0.125-0.125-0.125-0.125-1扩频幅度为1, 每一路的功率降低为原先的1/8
    B序列后码元信号幅度值:Q路-0.125-0.125-0.125-0.125-0.125-0.125-0.125-0.125  
    B扩频码-1-11-1111-10扩频码自身积分为0
    B扩频后码片信号幅度值:I路0.1250.125-0.1250.125-0.125-0.125-0.1250.1250 
    B扩频后码片信号幅度值:Q路0.1250.125-0.1250.125-0.125-0.125-0.1250.1250 
    C传送比特无数据 待传送的比特
    C扩频前码元信号幅度值:I路0.00000:表示无数据
    C扩频前码元信号幅度值:Q路0.0000 
    C序列后码元信号幅度值:I路0.0000.0000.0000.0000.0000.0000.0000.0000.000 
    C序列后码元信号幅度值:Q路0.0000.0000.0000.0000.0000.0000.0000.0000.000无数据,无功率
    C扩频码-11-1111-1-10扩频码自身积分为0
    C扩频后码片信号幅度值:I路0.0000.0000.0000.0000.0000.0000.0000.0000.000 
    C扩频后码片信号幅度值:Q路0.0000.0000.0000.0000.0000.0000.0000.0000.000 
                
    AB扩频码正交值11-1-11-11-10扩频码之间内积为0
    AC扩频码正交值0.125-0.1250.1250.1250.125-0.125-0.125-0.1250扩频码之间内积为0
    BC扩频码正交值1-1-1-111-110扩频码之间内积为0
    ABC混合后幅度值00-0.250.250-0.2500.250 
                
    A扩频码-1-1-111-1110扩频码自身积分为0
    A解扩后码片信号幅度值000.250.2500.2500.251解扩后的幅度是扩频的每一路的累计和
    A判决输入        1扩频后的幅度/扩频幅度
    A判决值        1 
    B扩频码-1-11-1111-10 
    B解扩后码片信号幅度值00-0.25-0.250-0.250-0.25-1解扩后的幅度是扩频的每一路的累计和
    B判决输入        -1扩频后的幅度/扩频幅度
    B判决值        0 
    C扩频码-11-1111-1-10扩频码自身积分为0
    C解扩后码片信号幅度值000000000解扩后的幅度是扩频的每一路的累计和
    C判决输入        0 
    C判决值        无数据 
                
                

    8. 自相关的随机码:扰码

    8.1 扰码的动机

    从上面分析可以看出,正交码真正的目的不是编解码,而是为了复用与解复用。

    正交码的最重要的特性是:正交码不是孤立的存在,而是与其他正交码一起存在的,正交码之间的内积为0,正交码与自身的内积不为0,与自身内积不为0。这种内积为0特性。有助于通过正交码编码、复用的复合信号中恢复出使用自身正交码编码的数据,而忽略使用其他正交码编码的数据(正交码相乘后积分值为0)。

    然后,完全的正交码,有一个致命的缺点:就是N个比特的二进制码空间,虽然有2^N个二进制码,但符合两两正交的码字只有N个,比如N=8时,有64个二进制码,但两两正交的只有8个。很显然,正交码的码资源太少。

    这就需要寻求一种新的方法,能够产生大量满足正交特性的或者说满足近似正交特性的码,扰码就应运而生。

    扰码的码字本质上是一种伪随机序列或称为伪随机码,因此先看一下什么是伪随机序列或称为伪随机码。

     

    8.2 伪随机序列

    随机序列(random sequence),也称随机数列,全称随机变量序列,是由随机变量组成的数列。

    这种随机序列具备两种关键的特点:

    其一,序列中的每个变量都是随机的;

    其二,序列本身就是随机的。

     

    8.3 伪随机码

    伪随机是每个变量的数值是二进制的伪随机序列,它是具有类似于随机序列基本特性。由于每个随机变量的取值是二进制,因此具备了一些特有的、新的特征:

    (1)在序列中“0”和“1”出现的相对频率/比例各为1/2。当位数是偶数时,0和1的个数相等,当位数是奇数时,0和1的个数相差为1

    (2)序列中连0或连1称为游程连0或连1的个数称为游程的长度,序列中长度为1的游程数占游程总数的1/2;长度为2的游程数占游程总数的1/4;长度为3的游程数占游程总数的1/8;长度为n的游程数占游程总数的1/2n(对于所有有限的n)。此性质我们简称为随机序列的游程特性。

    (3)如果将给定的随机序列位移任何个元素,则所得序列的和原序列的对应的元素有一半相同,一半不同。

     

    8.4 扰码的原理

    扰码是一种编码方法,最初的作用是通过某种编码,使得目标二进制序列尽可能的随机,然后通过解扰,从随机序列中恢复出原先的二进制码。

    扰码也是一种取值范围是1和-1的二进制伪随机码。由于把0变成了-1,取值为【-1,1】扰码相对于取值为【0,1】的伪随机码,又具备了一些新的特征:

    扰码之间,其实两两并不正交,也就是说扰码间的内积并不严格的为0。但扰码的随机特性,使得扰码的内积值近似为0的,这种特性使得扰码近似“正交”。

    在数字通信中,逻辑信号是电平信号,即使是不为0的电信号,只要其数值足够的小,数值接近于0,也会被判为0,这就使得把扰码近似当成正交码使用提供了可能!

     

    我们不妨通过回答如下的几个问题,进一步的解读扰码为什么具备“近似正交码”的特性。假设扰码的长度为N。

    (1)为什么说随机性的码字之间是不相干的?是近似正交的?

    由于每个扰码是随机码,直观的理解,任意两个随机码是不相关的,也就是说两个随机码,按位相乘后,还是一个随机码。

    (2)为什么说随机性的扰码自身各个比特相加近似为0?

    假设扰码的位数N是偶数,N值越大,扰码的随机性越大,扰码中1和-1各自的占比越接近50%,各自的个数相差越接近0,因此扰码自身各个比特相加后的值越有可能是0。

    假设扰码的位数N是奇数,N值越大,扰码的随机性越大,扰码中1和-1各自的占比越接近50%,各自的个数相差越接近1或-1,因此扰码自身各个比特相加后的值越有可能是1或-1。

     

    (3)为什么说随机性的扰码之间内积也是近似为0呢?

    由于两个不相干的随机码,按位相乘后的二进制码还是随机码,而随机性的扰码自身各个比特相加近似为0。

    因此说随机性的扰码之间内积也是近似为0,因此任意两个扰码“近似正交”!

     

    (4)为什么说随机线性的扰码与自身的内积不为0?

    这其实很容易理解,任意随机数,虽然每个比特位是随机的,但每个比特与自身相乘总是为1,

    比如任意比特的随机值为1,该位与自身相乘为1 * 1 =1.   如果该位随机值为-1, 该位与自身相乘为-1 * -1 还是1.

    因此任意N位的随机码,与自身内积的值为N。

    实际上,任意N位的由【-1,1】组成的二进制序列,其内积肯定是N, 不管这个二进制序列是否是随机!

    如:

        1 -1 1 -1 -1 1 1 -1 1 -1 。。。。。。

    x

        1 -1 1 -1 -1 1 1 -1 1 -1 。。。。。。

    = 1  1  1  1  1 1 1  1 1  1

    =>累加后等于N.

     

    8.5 扰码的缺点

    因为扰码间不是真正正交的,因此扰码会引入噪声,噪声的大小,与扰码的位数相关,比特越短的扰码,扰码内积和就越大,引入的噪声越大,扰码越长,扰码的内积和越小,引入噪声越小。

    因此扰码的位数不能太短。

     


    第9章 CDMA中地址码的种类与物理层信道

    9.1 OVSF正交扩频码+扰码的混合编码方案

    虽然OVSF正交扩频码是完全的正交码,能够实现在扩频的同时,能够实现码分复用。但由于完全OVSF的数量太少,资源有限,这限制了其实际系统中的适用范围。

    具有伪随机特性的扰码扰码,同时具备了近似正交的特性,相同的比特长度的情况下,其码资源的数量远远大于OVSF正交扩频码的数量,这使得扰码在多用户复用与解复用的场合有了一定的应用空间,弥补了OVSF正交扩频码的不足。

    在实际的WCDM系统中,采用了OVSF正交扩频码+扰码的混合编码方案,在复用和解复用的过程用来标识物理小区、物理信道和用户,同时能够实现扩频的功能。

    • 下行复用

    • 上行解复用

     

    9.2 物理层信道与地址码

    从上图可以看出:

    (1)OVSF正交扩频码主要用于区分不同物理信道和专有信道

    (2)扰码主要用于区分不同的小区,区分小区时,有分为主扰码与辅助扰码。

     

    9.3 WCDMA中与地址吗相关的常见概念

    (1)OVSF正交扩频码:

    OVSF是Orthogonal Variable Spreading Factor的缩写,叫正交可变扩频因子,系统根据扩频因子的大小给用户分配资源,数值越大,提供的带宽越小。

    (2)Walsh函数

    是J.L.Wash于1923年提出的在一个归一化区间(0,1)上产生完备的正交码的函数系统。

    (3)信道码,扩频码,OVSF码三者的关系

    如果将ovsf乘以调制后的信号,就是扩频,OVSF码就是扩频码。

    如果将ovsf用于复用与解复用,OVSF码是信道码,用于区分不同的物理信道。

    (4)伪随机码序列(PN码)

    伪随机码序列具有类似于随机序列的基本特性,是一种貌似随机但实际上是有规律的周期性二进制序列

    (5)m序列码

    在所有的伪随机序列中,m序列是最重要、最基本的一种伪随机序列,它容易产生、规律性强、有很好的自相关性和较好的互相关特性。

    (6)Gold码序列

    是一种基于m序列的码序列,具有较优良的自相关和互相关特性,产生的序列数多。Gold码的自相关性不如m序列,具有三值自相关特性;互相关性比m序列要好,但还没有达到最佳。

     

    9.4 地址码的产生方法 

    ...待续

     


    第10章 CDMA的远近效应与功率控制

    CDMA码分多址能够

    10.1 什么是功率远近效应与功率控制

    移动通信是在运动过程中进行的,移动台之间会出现近处移动台干扰远处移动台的现象,称为远近效应。

    对于频分多址与时分多址的系统,远近效应并不是那么明显,

    然而码分多址,同一小区内的所有的用户,他们的载频的频率是相同的,频谱带宽相同,数据的收发时间是并行的,因此他们的数据通过扩频码叠加在一起。远近不同的用户,其叠加在一起的信号的功率是不相同的,因此功率大的用户的数据,很容易对功率小的用户的数据形成干扰,因此CDMA系统中,远近效应非常明显。这就需要一种技术,确保不同的移动台的用户数据叠加在一起是,各个用户台的功率处于同一个等级,尽可能信号的幅度相等。

    这就是功率控制:一般要求移动台的发射功率具有自动调整的能力,同时移动台的接收机需要具有自动增益控制的能力,当通信距离迅速改变时能自动进行信号调整。确保远离基站的移动台,发送的信号的功率较大,离基站距离近的移动台,发送信号的功率较小。

    功率控制前:基站收到的不同移动台的信号的功率不相等,离基站远的移动台,其信号到达基站后,功率极小,离基站近的移动台,其信号到达基站后,器功率较大,不同基站的信号混叠在一起后,功率低的用户的数据容易就功率高的数据淹没。

    功率控制后:所有移动台,到达基站的信号的功率近似相等,基站对覆盖范围内的所有移动台,动态的控制他们的功率,确保远近距离不同的移动台的到达自己是的信号的功率近似相同,距离远的发送功率较大,距离近的发送功率较小。

     

    10.2  功率控制的一般策略

    由于手机用户在一个小区内是随机分布的,而且是经常变化的,同一手机用户可能有时处在小区的边缘,有时靠近基站。

    如果手机的发射功率按照最大通信距离设计,则当手机靠近基站时,功率必定有过剩,而且形成有害的电磁辐射。解决这个问题的方法是根据通信距离的不同,实时地调整手机的发射功率,即功率控制。

    采用功率控制后,使每个终端到达基站的功率基本相当(如下图所示),这样,每个终端的信号到达基站后,都能被正确地解调出来。

    功率控制的原则是,当信道的传播条件突然变好时,功率控制单元应在几微秒内快速响应,以防止信号突然增强而对其他用户产生附加干扰;

    相反当传播条件突然变坏时,功率调整的速度可以相对慢一些。

    也就是说,宁愿单个用户的信号质量短时间恶化,也要防止对其他众多用户都产生较大的背景干扰。

    解决远近效应问题的传统方法是采用严格的功率控制技术. 功率控制技术目的在于使所有发射台到达接收机时具有相同的功率电平,并力求使该功率电平不随时间变化. 可见这种方法在双向通信模式才可使用,如第三代移动通信中就使用这种技术来解决远近效应.

    而一般陆基导航接收机接收是被动方式,只能接收信号而不能发射信号,故这种方式不能在导航系统中使用. 一种在被动接收方式下解决远近效应的技术称之为多用户检测技术. 多用户检测就是对每个单个用户都利用多个用户的信息去实现检测接收,即通过挖掘有关干扰用户的信息(信号到达时间、使用的扩频序列、信号幅度等)来估计多址干扰,然后从接收信号中减去相应的多址干扰. 最佳多用户接收机在限定条件下具有理想的抗远近效应能力,但由于其结构过于复杂,难以实用化。这种技术不是本文讨论的话题。

    10.3  WCDMA系统的功率控制

    CDMA采用功率控制技术解决远近效应,分为开环功率控制与闭环功率控制。

    闭环功率控制又分为内环与外环。

     

    (1)开环功率控制:开环功率控制就是不需要接收方对接收情况进行反馈,发射端自己判断发射功率的方式。

    开环发射功率 = 上行路径损耗(导频发射功率−接收到的导频功率)+ 干扰水平 + 常量(相当于接收所需的信号强度)

    开环功控的作用是提供初始发射功率的粗略估计,主要用来克服路径损耗。对于WCDMA系统来说,由于上下行频段间隔较大,上下行的衰落情况是不完全相关的,所以开环功率控制有其局限性。而在TD-SCDMA系统中,上下行频率一致,这个问题不是很突出。采用开环功率控制的信道主要是PRACH和DPCCH

    (2)闭环功率控制:就是基站需要更加移动台的接收情况的反馈,控制移动台发射功率的方式。

    闭环功率控制的基本模型:

     

    上小学的时候,老师让同学们起来回答问题。有的同学声音比较小,老师就告诉他:“声音大点。”当老师讲课的时候,经常会听到坐在后排的同学喊:“老师,听不着,声音大点。”

    这种由接听方告诉说话者声音大小的控制方式叫闭环控制。

    如果是说话者自己决定说话声音大小,没有接听方的指示,就是开环控制。“闭环”相比“开环”来说更关注受众的感受,更能及时了解动作实施的效果,从而更能够满足最终用户的需求。比如说一个企业设计了一个产品推向市场,市场上对它的价位、包装、功能等有很多看法,这个企业根据市场的反映进一步优化了该产品,这也是一个闭环管理过程。

    闭环控制的原理普遍应用在日常生活、企业管理和高科技领域。任何闭环控制过程都可由图6-5来表示,根据收集的输入信息和效果反馈情况进行判断,判断的结果付诸实施或者执行,效果再反馈回去做出下一轮的判断。

    闭环功率控制就是发射端的功率大小根据接收端接收效果来动态调节的控制方式,如图6-6所示;而不是像开环控制那样,发射端自己主观地决定发射功率的大小。

    接收端觉得效果不好,可以要求发射端提高功率;接收端觉得效果太好了,可以要求发射端降低功率。闭环功率控制由发射端和接收端共同完成。如果发射端是一个讲课的老师,接收端是一个听课的同学的话,那么闭环功率控制相当于老师讲课的音量大小由同学判断控制。闭环功率控制过程一定存在一个反馈控制环路,接收端对收到的信号质量和期望的信号质量进行比较判断,给出发射端需要提高或降低功率的命令(TPC命令:Transmission Power Control命令),发射端执行这个命令,按照这个规律循环往复。

    根据接收端判断的位置和依据不同,闭环功率控制可以分为内环功率控制和外环功率控制。

    内环功率控制: 内环功率控制在基站侧根据接收信号的信噪比(SIR)与期望值(即SIR target)进行比较,给出手机提高还是降低发射功率(TPC)的命令,最终使基站接收到的上行信噪比收敛于目标信噪比。

    外环功率控制: 外环功率控制是在RNC侧基于业务传送质量(BER/BLER)的功率控制方法。

    功率控制

    功率控制

    上 行

    下 行

    测量

    (裁判员)

    判决

    (裁判员)

    执行

    (运动员)

    测量

    (裁判员)

    判决

    (裁判员)

    执行

    (运动员)

    开环

    UE接收单元

    UE

    UE

    Node B接收单元

    Node B

    Node B

    闭环

    内环

    Node B接收单元

    Node B

    UE

    UE接收单元

    UE物理层

    Node B

    外环

    Node B接收单元

    RNC

    UE

    UE接收单元

    UE层3

    Node B


    参考:

    https://wenku.baidu.com/view/047171f714791711cd791741.html

     

     

    展开全文
  • 直接扩频序列调制是用速率很高的伪噪声序列与信息序列模二相加(波形相乘)后得到复合序列,用复合序列去控制载波相位,从而获得直接扩频序列信号的。直接扩频通信具有低截获概率、抗干扰能力强以及易于实现...

    前言

    直接扩频序列调制是用速率很高的伪噪声码序列与信息码序列模二相加(波形相乘)后得到复合码序列,用复合码序列去控制载波相位,从而获得直接扩频序列信号的。直接扩频通信具有低截获概率、抗干扰能力强以及易于实现码分多址等优点,在抗干扰通信及民用移动通信中都得到了广泛的应用。

    文章迭代更新

    文章进行了大改
    发现了为什么振幅是0.2和0.4时,系统无法正常工作的原因。因为bitMultiple函数把运算结果格式转换成了int8,导致精度大量失真!当时转换格式是为内存空间与运行速度做打算,结果今天发现做了负优化!修改后,发现载波振幅对于系统的误码率曲线几乎无影响。
    另外,解调函数也做了修改,会根据输入自动计算判决阈值,解决了之前人为设定阈值
    的局限,阈值采用正态分布解算法,详见demodulate函数内注释。
    新版修改了以下函数:
    1. bitMultiple
    2. demodulate
    3. 新增arrayGroupSum函数

    仿真流程图

    用户1
    扩频
    加扰
    调制
    高斯信道
    walsh码
    扩频
    M序列
    加扰
    载波
    调制
    高斯白噪声
    高斯信道
    用户2
    相加
    解调
    去扰
    用户1解扩
    用户2解扩
    还原信号1
    还原信号2

    关键技术细节

    1. 仿真中,用户码元使用双极性(1和-1)码。
    2. 代码的最后通过还原信号与码元做对比,计算误码率,来评价通信质量的好坏。
    3. 为了研究信噪比对误码率的影响,代码中用了多线程,针对不同的信噪比进行解调去扰解扩,计算不同信噪比下的误码率。
    4. 为了研究载波振幅对信噪比——误码率曲线的影响,增加了振幅的迭代。

    扩频解扰解扩部分

    1. 采用64阶的walsh码矩阵,由walsh函数产生。
    2. 两个用户使用同一扩频矩阵的不同相位(实际上是不同一行)进行扩频。
    3. 扩频时,首先对用户码元按照扩频增益,进行周期延拓,然后点乘扩频码,实现扩频。
    4. 解扩时,首先对输入的去扰后的码按扩频时一样的相位对应点乘扩频码,然后进行判决。

    加扰去扰部分

    1. 加扰采用的是5阶的M序列,反馈系数为67(八进制)。
    2. 加扰同样采用点乘,输入码元1:1地点乘加扰码。
    3. 因为加扰码具有很高的自相关性,所以去扰时只需执行加扰时一样的操作即可。

    加扰原理图

    加扰原理图

    调制解调部分

    1. 调制采用BPSK(二进制移相键控)调制。
    2. 调制所使用的载波为正弦波,通过对其等间隔采样形成离散样值。
    3. 调制时,一个加扰后的码元对应相乘一串正弦波的周期采样值,把相乘结果汇总后就是调制后的结果
    4. 解调时,把一个码元所对应的一串正弦波的周期采样值与载波采样值进行点乘,根据点乘结果中,正数、负数还是零多,判决这是什么码元。

    调制原理图

    调制原理图

    解调原理图

    解调原理图

    高斯信道部分

    1. 使用matlab自带的函数awgn(input,snr(dB),inputPower)
    2. 只要传入需要加高斯噪声的信号,信噪比还有输入信号的功率,即可返回添加了高斯白噪声的信号。

    实验结果

    扩频增益为10时,walsh矩阵为64阶时,不同振幅下信噪比误码率曲线

    扩频增益为10时,walsh矩阵为64阶时,不同振幅下信噪比误码率曲线

    扩频增益为20时,walsh矩阵为64阶时,不同振幅下信噪比误码率曲线

    扩频增益为20时,walsh矩阵为64阶时,不同振幅下信噪比误码率曲线
    以上两次实验结果显示,载波振幅对于系统性能无明显影响,这是文章改版前的一个很大的错误!在此笔者向各位读者道歉。

    误码率随信噪比的变化曲线

    误码率随信噪比的变化曲线
    观察以上曲线可以发现,随着信噪比的上升,误码率以近似于抛物线的形式在不断下降,并最终等于0,这足以证明本次直接序列扩频系统仿真符合预期结果。

    源代码

    可以修改的参数

    1. 轮回次数。通过修改轮回次数,获得更好的曲线,或者更快的代码运行速度,代码运行参考速度:i7-4790:实测速率9.8秒/轮回 @1280*2&1280码元20&10扩频增益。
    2. 用户1的码元数量与扩频增益、用户2的码元数量与扩频增益。修改时注意两用户的码元必须是walsh码阶数的增数倍,同时要保证:用户1的码元数量 * 用户1的扩频增益=用户2的码元数量 * 用户2的扩频增益。
    3. walsh码的阶数。但walsh码阶数必须大于扩频增益。
    4. 用户1扩频相位、用户2扩频相位。注意相位必须1到64之间取值,两个用户的取值不能一样。
    5. M序列阶数与返回系数。反馈系数取值有相关要求,详见百度,作为参数传入时要以八进制表示。
    6. 半个载波周期的采样点数。
    7. 最小最大信噪比,以及其尝试步进。
    8. 最小最大载波振幅,以及其尝试步进。

    !下载链接!

    链接:https://pan.baidu.com/s/14KNoWlD7UyC9WAEza63W5A
    提取码:qg1y

    核心代码

    主函数

    main.m

    %{
        本函数是整个仿真的主函数,用于研究在移动通信时,信噪比对误码率的影响
    首先生成随机双极性码,然后经过扩频,加扰,BPSK调制,加高斯白噪声,混合
    然后模拟接收端的解调,去扰,解扩,判决。
        通过比较接收端判决输出与原来的码元,计算出误码率,首先通信系统的仿真
    以及误码率-信噪比的变化曲线的绘制.
    2019/11/22(以上)
        在当前版本中,添加了对信噪比&误码率曲线随BPSK调制载波振幅变化而变化
    的相关研究功能。因为实际发现,之前的代码中曲线会在-20dB到0dB处出现平缓现象,
    实际排查发现是载波的振幅导致的。振幅研究结果发现:振幅小于0.4时,系统无法正常
    工作!其误码率曲线在后期随着信噪比的增加呈现反常膨胀!
    ^-^想要得到抛物线,只有在载波振幅为1的时候。^-^,不然随着振幅的增加,曲线曲线趋于平缓的信噪比范围会越大;
    同时发现大于0.6的曲线会近似相交于某一点,交点前同等信噪比下振幅高的误码率低,但在交点后
    ***同等的信噪比下振幅小的误码率反而低!!!***
        在本版本中,walsh矩阵的所有码元都被用于扩频,没有使用前一版的矩阵截取方法,
    规避了鬼魅版的非严格正交问题,但前面的截取版本恰恰说明非严格正交对本系统影响曲线
    的影响并不是很大,但却可以使得系统能在更低的误码率下工作。
        至此,代码已经经历10次版本迭代。
    2019/12/1(以上)
        第二次答辩,仍出现部分平滑问题,并且老师说系统性能太好了,与实际系统不符,并且
    曲线不应该受振幅的影响,基于此再对代码做修改,计算了输入信号的平均功率,作为第3
    个参数传给awgn,否则awgn会把输入信号的功率视为0dBW!现在曲线基本重合。但0.20.4
    的问题仍未解决!
        至此,程序第11次版本迭代
    2019/12/2(以上)
        第十二次迭代。
        发现了为什么振幅是0.20.4时,系统无法正常工作的原因,是因为
    bitMultiple函数把运算结果格式转换成了int8,导致精度大量失真!当时转换格式是为
    内存空间与运行速度做打算,结果今天发现做了负优化!修改后,发现载波振幅对于系统
    的误码率曲线几乎无影响。
        另外,解调函数也做了修改,会根据输入自动计算判决阈值,解决了之前人为设定阈值
    的局限,阈值采用正态分布解算法,详见demodulate函数内注释。
    2020/7/1(以上)
        i7-4790:实测速率9.8/轮回 @1280*2&1280码元20&10扩频增益
    %}
    clear variable;
    close all;
    
    mulTimes = 5;  %轮回次数
    
    walshOrder = 64;    %walsh码的阶数,必须大于扩频增益
    
    N1 = 1280*2;   %用户1码元数量
    N2 = 1280;   %用户2码元数量
    
    user1SPgain = 10;  %用户1的扩频增益
    user2SPgain = 20;  %用户2的扩频增益
    
    %记录两个用户的walsh相位,注意相位必须在164之间取值
    %两个用户的取值不能一样
    user1Phase = 2; %用户1的相位
    user2Phase = 16; %用户2的相位
    
    %加扰使用的m序列的参数
    mOrder = 5; %级数5级
    feedBack = 67;%反馈系数67
    
    %调整时,半个周期的采样点数
    samplePiont = 4;
    
    %生成需要使用的walsh码
    walshCode = walsh(walshOrder);
    
    %针对低性能电脑做优化,采取以时间换取空间的思路
    maxSnr = 20;    %尝试的最大信噪比
    minSnr = -20;   %尝试的最小信噪比
    div = 1;      %信噪比的尝试步进
    maxTime = (maxSnr-minSnr)/div;  %尝试次数
    timesUser1Acc = zeros(mulTimes,maxTime);
    timesUser2Acc = zeros(mulTimes,maxTime);
    
    %生成双极性码片
    user1 = genBipolar(N1);
    user2 = genBipolar(N2);   
    
    %扩频
    spread1 = spreadSpectrum(user1,walshCode,user1SPgain,user1Phase);
    spread2 = spreadSpectrum(user2,walshCode,user2SPgain,user2Phase);
    
    %加扰
    Mseq1 = MseqGen(mOrder,feedBack); %用户1加扰用的m序列
    Mseq2 = MseqGen(mOrder,feedBack); %用户2加扰用的m序列
    user1scarm = scarmbling(spread1,Mseq1);
    user2scarm = scarmbling(spread2,Mseq2);
    
    maxAmp = 1.2;    %尝试的最大载波振幅
    minAmp = 0.2;   %尝试的最小载波振幅
    divAmp = 0.2;      %载波振幅的尝试步进
    maxTimesAmp = floor((maxAmp-minAmp)/divAmp);  %振幅尝试次数
    
    ampRecords1 = zeros(maxTimesAmp,maxTime);
    ampRecords2 = zeros(maxTimesAmp,maxTime);
    
    for amp = 1:maxTimesAmp %测试不同的载波振幅下的曲线
        
        fprintf('目前正在第%d个振幅\n',amp);
    
        %调制BPSK
        %生成载波,两用户使用同一个载波
        carrier = (minAmp + divAmp*(amp-1))*sin(0:(pi/samplePiont):(2*pi-2*pi/samplePiont));
        user1modulate = modulate(user1scarm,carrier);
        user2modulate = modulate(user2scarm,carrier);
        
        %计算载波功率
        power = powerCnt(carrier);
        
        for times = 1:mulTimes
    
            fprintf('目前正在第%d个轮回\n',times);
    
            user1Acc = zeros(1,maxTime);
            user2Acc = zeros(1,maxTime);
    
            parfor index = 1:maxTime 
                snr = minSnr + (index-1)*div; %加在发送信号上的高斯噪声的信噪比(dBW)
                            
                %通过高斯信道,添加高斯噪声
                user1send = awgn(user1modulate,snr,power);
                user2send = awgn(user2modulate,snr,power);
    
                %接收方
                receive = user1send + user2send; %收到混合起来的信号
    
                %解调
                demodulateRes = demodulate(receive,carrier);
    
                %去扰
                user1Descarm = deScarmbling(demodulateRes,Mseq1);
                user2Descarm = deScarmbling(demodulateRes,Mseq2);
    
                %解扩
                user1deDS = deSpreadSpectrum(user1Descarm,walshCode,user1SPgain,user1Phase);
                user2deDS = deSpreadSpectrum(user2Descarm,walshCode,user2SPgain,user2Phase);
    
                %计算误码率
                [~,user1Accuracy] = compare(user1,user1deDS);
                [~,user2Accuracy] = compare(user2,user2deDS);
                user1Acc(index) = 1-user1Accuracy;
                user2Acc(index) = 1-user2Accuracy;
            end
            timesUser1Acc(times,:) = user1Acc;
            timesUser2Acc(times,:) = user2Acc;
        end
        %总结统计多次实验的结果
        for i = 1:maxTime
            user1Acc(i) = mean(timesUser1Acc(:,i));
            user2Acc(i) = mean(timesUser2Acc(:,i));
        end
        ampRecords1(amp,:) = user1Acc;
        ampRecords2(amp,:) = user2Acc;
    end
    
    %误码率随信噪比的变化曲线
    figure(1);
    X1 = (minSnr:div:maxSnr-div);
    semilogy(X1,ampRecords1(5,:),'b');
    xlabel('信噪比(dB)');
    ylabel('误码率');
    title('误码率随信噪比的变化曲线');
    hold on;
    semilogy(X1,ampRecords2(5,:),'g');
    legend('用户1(扩频增益10)','用户2(扩频增益20)');
    
    %用户1振幅不同的误码率随信噪比的变化曲线
    figure(2);
    for i = 1:maxTimesAmp
        semilogy(X1,ampRecords1(i,:));
        hold on;
    end
    xlabel('信噪比(dB)');
    ylabel('误码率');
    title('用户1振幅不同的误码率随信噪比的变化曲线');
    legend('0.2','0.4','0.6','0.8','1.0');
    
    %用户2振幅不同的误码率随信噪比的变化曲线
    figure(3);
    for i = 1:maxTimesAmp
        semilogy(X1,ampRecords2(i,:));
        hold on;
    end
    xlabel('信噪比(dB)');
    ylabel('误码率');
    title('用户2振幅不同的误码率随信噪比的变化曲线');
    legend('0.2','0.4','0.6','0.8','1.0');
    

    walsh码生成

    walsh.m

    % 产生 Walsh函数通用函数
    % 参数N表示Walsh函数阶数,N不是2的幂时,通过向无穷大取整使得所得Walsh阶数为2的幂
    function [walsh]=walsh(N)
        M = ceil(log2(N));
        wn = 0;
        for i = 1:M
            w2n = [wn,wn;wn,~wn];
            wn = w2n;
        end
        wn(wn == 0) = -1;
        walsh = int8(wn);
    end
    

    M序列生成

    MseqGen.m

    %M序列发生器
    %order:阶数
    %setBakc:反馈系数
    function res = MseqGen(order,feedBack)
        res = zeros(2^order-1,order);
        feedBack = Oct2Bin(feedBack);
        feedBack = feedBack(2:6);
        temp = rand(1,order);
        temp(temp < 0.5) = 0;
        temp(temp >= 0.5) = 1;
        res(1,:) = temp;
        for i = 2:2^order-1
            newBit = sum(res(i-1,feedBack == 1));
            newBit = mod(newBit,2);
            for j = 1:order-1
                res(i,j+1) = res(i-1,j);
            end
            res(i,1) = newBit;
        end
        res(res == 0) = -1;
    end
    

    扩频模块

    spreadSpectrum.m

    %扩频函数
    %userCode:需要扩频的用户码元
    %PNseq:用于扩频的随机码
    %gain:扩频增益
    %phase:用户扩频码相位
    function res = spreadSpectrum(userCode,PNseq,gain,phase)
        %首先对码元进行周期延拓
        [~,userCode2] = selfCopy(userCode,gain);
        %计算扩频码的行数
        [lineSize,~] = size(PNseq);
        %对扩频码进行重排行序,使初相位位于第一行
        PN = PNseq(phase:lineSize,:);
        PN = [PN;PNseq(1:phase-1,:)];
        res = bitMultiple(userCode2,PN(:)');
    end
    

    解扩模块

    deSpreadSpectrum.m

    %本函数用于解扩
    %userCode:需要解扩的用户码元
    %PNseq:用于扩频的随机码
    %gain:扩频增益
    %phase:用户扩频码相位
    function res = deSpreadSpectrum(userCode,PNseq,gain,phase)
        [lineSize,~] = size(PNseq);
        PN = PNseq(phase:lineSize,:);
        PN = [PN;PNseq(1:phase-1,:)];
        temps = bitMultiple(userCode,PN(:)');
        %这里是matlab的一个小bug,重排序以列作为索引,我的要求是以行
        %作为索引,所以要行列反写再取转置矩阵
        temps = reshape(temps,gain,length(temps)/gain);
        temps = temps';
        %解扩第二步,码元判决
        res = ones(1,length(temps(:))/gain);
        for i = 1:length(temps(:))/gain
            if sum(temps(i,:)) < 0
                res(i) = -1;
            end
        end
    end
    

    加扰模块

    scarmbling.m

    %加扰函数
    %source:被加扰的信号
    %PNCode:用于加扰的扰码
    %1:1的数据加扰
    function res = scarmbling(source,PNCode)
        res = bitMultiple(source,PNCode);
    end
    

    去扰模块

    deScarmbling.m

    %本函数用于对信号做去扰处理,实际操作与加扰完全一致
    %input:需要去扰的信号
    %PNseq:用于去扰的随机序列
    function res = deScarmbling(input,PNseq)
        res = bitMultiple(input,PNseq);
    end
    

    调制模块

    modulate.m

    function res = modulate(source,carrier)
    %调制函数
    %source:被调制信号
    %carrier:载波信号
        sizeSource = length(source);
        sizeCarrier = length(carrier);
        res = zeros(sizeSource,sizeCarrier);
        for i = 1:sizeSource
            res(i,:) = double(source(i))*carrier;
        end
        %把res按行拼接成一行
        res = res';
        res = res(:);
    end
    

    解调模块

    demodulate.m

    function res = demodulate(input,carrier)
    %本函数实现对接收信号的解调
    %原理:极性比较
    %input:被解调的信号
    %carrier:载波信号
    
    %按位循环相乘
    res_bitMultiple = bitMultiple(input,carrier);
    %分组相加
    res_arrayGroupSum = arrayGroupSum(res_bitMultiple,length(carrier));
    %{
        以上处理后,结果正负侧近似于泊松分布,为了处理方便,根据大数定理,
        近似地视为正态分布,从而计算阈值。按照正态分布,-1,1,0平分概率,每一个分得1/3的概率。
    %}
    %计算标准差
    res_std = std(res_arrayGroupSum);
    %计算平均数
    res_mean = mean(res_arrayGroupSum);
    %解算阈值
    syms temp;
    %以下计算时会有一个"Unable to solve symbolically. Returning a numeric solution using
    %vpasolve"的警告,让系统不显示
    warning off;
    threshhold_negative = double(solve(normcdf(temp,res_mean,res_std)==1/3));
    %计算概率为2/3时的阈值,也就是判决为1的阈值
    threshhold_postive = double(solve(normcdf(temp,res_mean,res_std)==2/3));
    res = zeros(1,length(res_arrayGroupSum));
    for i = 1:length(res_arrayGroupSum)
        if res_arrayGroupSum(i) > threshhold_postive
            res(i) = 1;
        elseif res_arrayGroupSum(i) < threshhold_negative
            res(i) = -1;
        end
    end
    end
    

    模块测试代码

    本部分的代码用于单独测试三大模块是否正常工作

    扩频解扩模块测试

    testSpreadSpectrum.m

    %本代码用于测试扩频,解扩模块是否正常工作
    %注意扩频与解扩针对的是双极性码
    function testSpreadSpectrum()
        raw = genBipolar(64);
        walshCode = walsh(64);
        afterDSSS = spreadSpectrum(raw,walshCode,4,2);
        res= deSpreadSpectrum(afterDSSS,walshCode,4,2);
        [trueNum,accuracy] = compare(raw,res);
        fprintf("正确码元数量:%d\n正确率:%f\n",trueNum,accuracy); 
    end
    

    加扰去扰模块测试

    testScarmbling.m

    %本代码用于测试加扰,去扰模块能否正常工作
    function testScarmbling()
        %M序列发生器可以自定义阶数和反馈系数
        Mseq = MseqGen(5,67); %产生加扰用的m序列
        raw = tripleGen(1e6);
        afterScarmb = scarmbling(raw,Mseq);
        res = deScarmbling(afterScarmb,Mseq);
        [trueNum,accuracy] = compare(raw,res);
        fprintf("正确码元数量:%d\n正确率:%f\n",trueNum,accuracy);    
    end
    

    调制解调模块测试

    testModulate.m

    %本代码用于测试BPSK调制与解调模块能否正常工作
    function testModulate()
        carrier = 10*sin(0:pi/32:2*pi-pi/32);
        raw = tripleGen(1e6);
        afterModu = modulate(raw,carrier);
        res = demodulate(afterModu,carrier);
        [trueNum,accuracy] = compare(raw,res);
        fprintf("正确码元数量:%d\n正确率:%f\n",trueNum,accuracy);   
    end
    

    非核心代码

    八进制转二进制模块

    Oct2Bin.m

    %八进制转二进制,返回一个二进制数组
    function res = Oct2Bin(value)
        [bitNum,bit] = getPalces(value);
        res = int8(zeros(1,bitNum*3));
        for i = 1:bitNum*3
            bitMain = bit(floor((i-1)/3)+1);
            switch mod(i-1,3)
                case 0
                    if bitMain >= 4
                        res(i) = 1;
                    end
                case 1
                    if bitMain == 2 || bitMain == 3 || bitMain == 6 || bitMain == 7
                       res(i) = 1;
                    end
                case 2
                    if mod(bitMain,2) ~= 0
                        res(i) = 1;
                    end
            end
        end
    end
    

    点乘模块

    bitMultiple.m

    %按bit循环相乘函数,如果信号长度不一致,则较短的信号被循环使用
    %signal1:相乘信号1
    %signal2:相乘信号2
    %res:相乘结果
    function res = bitMultiple(signal_1,signal_2)
        sizeSource = length(signal_1);
        sizePNCode = length(signal_2);
        %如果长度不满足条件时,调换顺序递归调用
        if sizeSource < sizePNCode
            res = bitMultiple(signal_2,signal_1);
            return;
        end
        res = zeros(1,sizeSource);
        for i = 1:sizeSource
            res(i) = signal_1(i) * signal_2(mod(i-1,sizePNCode)+1);
        end
        res = int8(res);
    end
    

    码元比较模块

    compare.m

    %比较两个数组
    %input1:数组1
    %input2:数组2
    %res:正确码元数量
    %accuracy:正确率
    function [res,accuracy] = compare(input1,input2)
        temp = (input1 == input2);
        res = length(find(temp == 1));
        sizeInput = max(length(input1),length(input2));
        accuracy = res/double(sizeInput);
    end
    

    双极性码生成模块

    genBipolar.m

    %产生双极性码
    %num:双极性码的规模
    %res:满载双极性码的数组
    function res = genBipolar(num)
        res = rand(1,num);
        res = value2Bipolar(res);
    end
    

    数字位数获取模块

    getPlaces.m

    %统计一个数字的位数,并返回每位的数字
    function [Places,item] = getPalces(value)
        Places = 0;
        temp = abs(value);
        while temp ~= 0
            temp = floor(temp/10);
            Places = Places + 1;
        end
        item = uint8(zeros(1,Places));
        temp = value;
        for i = Places:-1:1
            item(i) = mod(temp,10);
            temp = floor(temp/10);
        end
    end
    

    功率计算模块

    powerCnt.m

    %计算输入信号的平均功率(dBW)
    function res = powerCnt(input)
        res = 10*log10(sum(input.*input));
    end
    

    周期延拓模块

    selfCopy.m

    %本函数实现数组的周期延拓
    %input:需要延拓的数组
    %times-1:延拓的次数
    %比如selfCopy([1,2,3],2) = [1,2,3,1,2,3,1,2,3]
    function [res,res2] = selfCopy(input,times)
        if times <= 1
            res = input;
        else
            res = zeros(length(input),times);
            for i = 1:times
                res(:,i) = input;
            end
            res2 = res';
            res2 = res2(:)';
            res = res(:)';
        end
    end
    

    三极码生成模块

    tripleGen.m

    %本函数用于生成指定数量的随机三极性码,主要用于做模块测试
    %num:数量
    %res:满载结果的数组
    function res = tripleGen(num)
        raw = rand(1,num);
        for i = 1:num
            if raw(i) >= 0.75
                raw(i) = 1;
            elseif raw(i) <= 0.25
                raw(i) = -1;
            else
                raw(i) = 0;
            end
        end
        res = int8(raw);
    end
    

    0~1转双极性模块

    value2Bipolar.m

    % 本函数用户把随机生成的0~1之间的double数转换成双极性码
    function res = value2Bipolar(input)
        res = zeros(1,length(input));
        for index = 1:length(input)
            if(input(index) < 0.5)
                res(index) = -1;
            else
                res(index) = 1;
            end
        end
        res = int8(res);
    end
    

    分组相加模块

    arrayGroupSum.m

    function res = arrayGroupSum(input,group_num)
    %arrayGroupSum 数组分组求和,如果数组长度除去group_num无法整除,则截短input数组
    %input 目标数组
    %group_num 分组数
    len = floor(length(input)/group_num);
    res = zeros(1,len);
    for i = 1:len
        res(i) = sum(input((i-1)*group_num+1:i*group_num));
    end
    end
    
    展开全文
  • 研究了 m 序列三阶相关函数特性,证明了不同周期 m 序列三阶...加性高斯白噪声下的仿真结果表明,本方法仅需1/4倍长码周期长度信号和4 dB信噪比,估计非周期长码直扩信号的扩频码和长扰码的正确概率就可达到99%以上。
  • 目录:1 扩频的基本原理1.1 扩频的概念1.2 直扩系统工作原理2 直扩调制信号的matlab仿真分析3 伪码同步的一般原理3.1 滑动相关捕获3.2 延迟锁相环跟踪原理4 同步算法及matlab仿真分析4.1 算法设计4.2 伪码同步环4.3 ...

    1 扩频的基本原理

    1.1 扩频的概念

    • 扩频的简单理解

      前面讲过一些调制方法,都是利用调制信号乘以基带信号得到已调信号。2ASK的调制信号就是二进制序列,MSK调制信号可以是一种正交载波。调制无非就是频谱搬移,将基带信号调制到期望的频带内以便传输。这里扩频也属于一种调制方式,所谓扩频,就是扩展频谱的范围,比如原信号的频谱在200 ~ 400KHz,通过扩频,信息可能就分散在20 ~ 30MHz内。通过拓宽频谱,可以极大增强通信的抗干扰性。在扩频系统中,发送方以特定的调制方式将原始信号的频谱加以扩展,得到扩频信号。接收端再对扩频信号加以处理,把它恢复为原始信号。这就是扩频和解扩。

    • 为什么要扩频

      一般的,如语音信号,带宽比大约几到十几,属于窄带通信,扩频信号的带宽比高达1000,属于宽带通信。用这么大的带宽来传输信息,是浪费资源吗?显然,可以利用信道复用,在宽带范围内完成若干窄带通信,即在同一频带同时建立多个信号进行通信,各信道可以通过扩频码进行区分,这就是码分多址(CDMA)。

    • 如何扩展频谱?

      既然是调制,就是频谱搬移,搬移到高频,就需要比基带信号频率高的信号。我们知道,时域有限,频域无限。一个窄脉冲的频谱非常宽,如果持续时间很窄的脉冲序列被所传输的信息调制时,就可以产生带宽很大的信号。这种持续时间很窄的脉冲码序列,码元速率很高,称之为伪码序列。伪码序列不影响传输的信息,仅仅起扩展频谱的作用,接收方可通过相关解调获取信息码。


    1.2 直扩系统工作原理

      直扩系统的组成框图如图所示,a(t)是信源输出,码元持续时间为Ta,c(t)是伪码,码元宽度是Tc,以模二加实现二者相乘,产生速率与伪码速率相同的扩频序列。

    在这里插入图片描述

      所以直扩系统的关键就是产生伪码。理论上来说,使用随机码扩展频谱是最理想的,但接收方也需要同样的随机序列副本,理想的随机序列是不可复制的。因此在工程中多用PN码,即伪随机序列解决这一问题,本文使用的是m序列。

      m序列是一种线性反馈序列,可根据本原多项式产生,其模型可用线性反馈移位寄存器来表征,移位寄存器的位数和抽头个数由m序列的阶数查表可得,这里不赘述。


    2 直扩调制信号的matlab仿真分析

      如前所述,直扩系统调制信号可分为三个过程:产生伪码序列、原始信号通过伪码序列进行扩频、载波调制。m序列由本原多项式产生抽头系数,伪码产生函数及扩频主函数代码如下:

    function p=PnCode(polynomial,reg)
    
    grade=length(polynomial)-1;
    PN_Length=(2^grade-1);     
    
    pn=zeros(1,PN_Length);    
    
    
    %找出本原多项式中除最低位外为1的位,并依次存放在寄存器c中
    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   
        p(i)=reg(1);
        m=reg(grade+1-c(1));
        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
    
    

      可以看出,m序列产生过程主要分为:设置初始状态、寄存器模二和运算、移位、次态的初值为模二和的结果,循环了数值为伪码长度的次数后,产生的便是一个周期的伪码。

    %仿真直扩信号的调制过程
    
    Rb=200*10^3;  
    Lpn=31;       
    Rc=Rb*Lpn;     
    Fs=8*Rc;      
    fc=8*10^6;    
    a=0.8;       
    N=5000;       
    L=N*Lpn*Fs/Rc; 
    
    t=0:(L-1);    
    t=t/Fs;
    
    polynomial=[1 0 0 1 0 1];       %产生PN码的本原多项式
    reg=[1 0 0 0 0];               
    PN=PnCode(polynomial,reg) 
    %PN=zeros(1,length(PN));
    
    bitstream=randint(1,N,2);     
    source=rectpulse(bitstream,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=rcos_Ads.*f0;      
    
    
    

    运行程序后,可以在命令行中显示一个周期的伪码序列`

    [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 0]
    

      仿真结果如图所示。扩频就是伪码与信息做异或处理,对于二进制而言,信息码无非是"0"或者"1",异或遇0不变,遇1取反,一个信息码元对应一个周期的伪码。因此,伪码速率是信息码元的31倍(31是伪码长度),当产生了一个信息码元,就要产生31位的伪码与之对应运算,生成的也是31位的码长,这个码可能与PN码一样,也可能是其反码,这取决于信息码元是"0"还是"1",所以扩频码的码率=伪码码率=31*信息码元的码率。

    在这里插入图片描述

    在这里插入图片描述
    `


    3 伪码同步的一般原理

      解扩的关键就在于收发双方伪码是否一致,即需要完成伪码同步。同步又分为捕获和跟踪,捕获是利用滑动相关原理,跟踪可利用延迟锁相环。

    3.1 滑动相关捕获

      滑动相关原理框图如下:

    在这里插入图片描述

      如图所示,接收信号与本地伪码序列相乘后再进行积分,即求出它们的互相关值,然后在门限检测器中与某一门限比较,以判断是否已捕获到有用信号。这里利用PN码的相关性,当两个相同的伪码序列在相位上一致时,其相关值有最大输出,即达到相关峰。一旦确认捕获完成,则捕获指示信号的同步脉冲控制搜索控制时钟,调整本地伪码产生器产生伪码频率和相位,使之与接收信号保持同步。


    3.2 延迟锁相环跟踪原理

      当捕获到有用信号,即收发双方伪码相差在一个伪码码元以内,同步系统转入同步阶段,即精同步,也成为跟踪阶段。
      对于延迟锁相环,需要得到本地伪码与接收信号的相差,它是以扩频序列自相关函数的偶对称性来实现跟踪功能。下左图为扩频序列的自相关函数曲线,右图为延迟锁相环的鉴相曲线。可见相关峰出现对称轴上,且相关信号的延迟和滞后曲线相减可以得到扩频序列的跟踪曲线。


    在这里插入图片描述

      由鉴相曲线可知,在相差位于一定范围内,鉴相器输出一个与 τ τ τ成线性关系的极性信号,那么可以由这个小范围得到鉴相误差,从而经过环路滤波送到VCO,控制本地伪码序列向减小跟踪偏差的方向调整。所以在此过程研究鉴相是为了寻找一个小范围的线性曲线来作为VCO的控制信号,在后文会提出一种全数字伪码同步环,将前文所述的捕获过程和这里的跟踪过程合并,要知道跟踪就是利用小范围相差得到的线性相关信号,控制VCO,使得相位可以被调控,从而达到精准跟踪。


    4 同步算法及matlab仿真分析

    4.1 算法设计

      由前所述,传统的滑动相关器通过控制本地伪码产生器的驱动时钟频率来达到滑动的目的。在数字电路中,通过控制本地伪码产生器,使其按固定步长左移或者右移来达到相对滑动的目的,此法也成为固定步长串行搜索法。原理图如图所示:


    在这里插入图片描述

      由图可以看出当PN码与接受的时钟发生相干解扩(相乘后积分),通过门限检测得到信息序列,如果不是原始数据,即按固定长度步进。如何知道解出的数据和原始数据匹配呢,利用相乘和积分运算获得相关值,通过门限检测来比较是否捕获到了有用信号,即门限检测是用于检测相关值,从而知道是否具有相差,来达到本地伪码与接收信号中的伪码相对滑动的目的。

      由于每次滑动步长为一个码元周期,即对于扩频序列,一个周期一个周期的处理,第一次对第一个周期的扩频码进行调整,步进了一个固长,如果没有同步成功,下一次对第二个周期的扩频码接着调整,则步进两个步长。每次调整都需要完成一个伪码周期(采样后的),比如伪码长度是31,经过八倍采样,那么原来的一个伪码码元被扩展到了8个,则伪码周期就是8位码元,那么最多要调整31次,即最长捕获时间为Ta=LpnTb


    4.2 伪码同步环

      由前文可知,捕获和跟踪都需要环路,如果能用同一个环路实现或者尽可能多地对两种环路中的部分部件(积分器)加以重用,则可大大减少所需的硬件资源。因为捕获和跟踪在时间轴上不重复,这就为环路部件的重用提供可能,这就是全数字伪码同步环的由来。原理图如图所示。

    在这里插入图片描述

      全数字伪码同步环与传统同步环的差别主要是捕获方式的改变,即采用延迟锁相环中的超前支路和滞后支路的相关累加器的平方和作为判断是否捕获到有用信号的依据,而不单只使用一条支路的相关累加器的输出作为门限检测值。跟踪部分不变,还是利用固定步长调整相位。在步进中可以减少本地伪码的固定步长,这样尽可能避免由于积累的相差过多,再加上频偏的影响导致滑动无法同步,4.3仿真采用的是步进1/2伪码码元长度(4个采样点,一个周期采8个点)。理论上,超前和滞后的两条支路的相关累加器的相关函数如图所示。

    在这里插入图片描述


    4.3 捕获及跟踪门限仿真

    clc
    Rb=200*10^3;   
    Lpn=31;        
    Rc=Rb*Lpn;   
    Fs=8*Rc;       
    a=0.8;        
    N=2;        
    
    t=0:(N*Lpn*Fs/Rc-1);       
    t=t/Fs;
    
    ploynomial=[1 0 0 1 0 1];      
    reg=[1 0 0 0 0];       %设置PN码的初始相位
    PN=E9_1_PnCode(ploynomial,reg); %调用函数产生PN码
    
    bitstream=zeros(1,N);       %产生N点原始二进制数据
    source=rectpulse(bitstream,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
    
    Ads=upsample(data,Fs/Rc);
    
    %设计升余弦滤波器
    n_T=[-2 2];
    rate=Fs/Rc;
    T=1;
    Shape_b = rcosfir(a,n_T,rate,T);
    %对采样后的数据进行升余弦滤波;
    rcos_Ads=filter(Shape_b,1,Ads);
    
    pn_ad=Ads(1:Fs/Rb);
    dat=rcos_Ads(Fs/Rb/2: Fs/Rb/2+Fs/Rb-1);
    Len=length(dat);
    
    %产生滞后1/2个伪码码元周期的支路数据
    data_aft=[dat(Len-Fs/Rc/2+1:Len),dat(1:Len-Fs/Rc/2)];
    %产生超前1/2个伪码码元周期的支路数据 
    data_pre=[dat(Fs/Rc/2+1:Len),dat(1:Fs/Rc/2)];
    
    %捕获时的相关峰和差曲线
    step=2;
    PN_oc=pn_ad;
    sum_aft=zeros(1,Lpn*step);
    sum_pre=zeros(1,Lpn*step);
    for i=1:Lpn*step
      if i>1
        PN_oc=[pn_ad((i-1)*Fs/Rc/step+1:Len),pn_ad(1:(i-1)*Fs/Rc/step)];
      end
      for j=1:Fs/Rb
            if PN_oc(j)==1
                sum_aft(i)=sum_aft(i)+data_aft(j);
                sum_pre(i)=sum_pre(i)+data_pre(j);
            else
                sum_aft(i)=sum_aft(i)-data_aft(j);
                sum_pre(i)=sum_pre(i)-data_pre(j);
            end
      end
    end
    square_aft=sum_aft.*sum_aft;
    square_pre=sum_pre.*sum_pre;
    square_sum=square_aft+square_pre;
    square_sub=square_aft-square_pre;
    
    %跟踪时的相关峰和差曲线
    step=8;
    PN_oc=pn_ad;
    sum_aft=zeros(1,Lpn*step);
    sum_pre=zeros(1,Lpn*step);
    for i=1:Lpn*step
      if i>1
        PN_oc=[pn_ad((i-1)*Fs/Rc/step+1:Len),pn_ad(1:(i-1)*Fs/Rc/step)];
      end
      for j=1:Fs/Rb
            if PN_oc(j)==1
                sum_aft(i)=sum_aft(i)+data_aft(j);
                sum_pre(i)=sum_pre(i)+data_pre(j);
            else
                sum_aft(i)=sum_aft(i)-data_aft(j);
                sum_pre(i)=sum_pre(i)-data_pre(j);
            end
      end
    end
    square_aft=sum_aft.*sum_aft;
    square_pre=sum_pre.*sum_pre;
    square_sum=square_aft+square_pre;
    square_sub=square_aft-square_pre;
    
    

      下图分别为步进4个采样点和1个采样点时捕获状态的相关峰曲线。其中相关峰之差中间的线性部分就是鉴相部分,相关峰之和中间凹下去而没有出现平坦的原因是因为采样频率不够高。解决办法要么增加采样频率,要么将捕获和跟踪两个环路分开设计。


    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 扰码就是就是用一个伪随机码序列对扩频码进行相乘,对信号进行加密。上行链路物理信道加扰的作用是区分用户,下行链路加扰可以区分小区和信道。 UMTS中,码字一共有二种类型的应用,第一种称为信道化码...
  • OFDM完整仿真过程及解释(MATLAB)

    万次阅读 多人点赞 2019-04-19 17:03:45
    % 扩频码的生成 code = code * 2 - 1; %将1、0变换为1、-1 modu_data=reshape(modu_data,N_sc,length(modu_data)/N_sc); spread_data = spread(modu_data,code); % 扩频 spread_data=reshape(spread_data,[],1); %%...
  • 扩频通信概述

    千次阅读 2019-08-29 19:36:35
    本文还介绍了扩频技术在CDMA和TDMA中的应用,给出了序发生器的结构以及直序扩频(DSSS)和跳频扩频(FHSS)方式的频谱图。 引言 随着扩频技术的推广,许多该领域之外的电子工程师也希望了解这项技术。许多书籍和网站对...
  • 在直接序列扩频(DS/SS)通信系统中,提出了一种简单的长码周期检测方法。将输入的DS/SS信号进行延迟相乘处理,消除信息数据对PN码周期的影响,应用自相关处理,提取长码周期。理论分析和仿真表明,在信噪比大于-...
  • 扩频信号产生

    2020-01-03 17:23:09
    MATLAB2016a中扩频信号产生函数 function [seq] = gen_mseq(coef) % 此函数用来生成m序列 % coef为反馈系数向量 m=length(coef); len=2^m-1; % 得到最终生成的m序列的长度 seq=zeros(1,len); % 给生成的m序列预...
  • 【整理】扩频及CDMA知识点

    千次阅读 2019-01-06 16:55:58
    直扩(DSSS,直接序列扩频)通常用一段伪随机序列(也称伪码)表示一个信息元,对载波进行调制。伪码的一个单元称为码片。 跳扩(Frequency Hopping ,FH)使发射机的载频在一个信息码元的时间内,按照预定的规律...
  • 通信中的扰扩频

    千次阅读 2012-06-27 15:01:28
    扰码就是就是用一个伪随机码序列对扩频码进行相乘,对信号进行加密。上行链路物理信道加扰的作用是区分用户,下行链路加扰可以区分小区和信道。 UMTS中,码字一共有二种类型的应用,第一种称为信道化码...
  • 扩展频谱--直接序列扩频

    千次阅读 2019-10-30 15:45:44
    扩展频谱--直接序列扩频1.频谱扩展2.直接序列扩频2.1原理2.2解调 1.频谱扩展 虽然带宽资源很宝贵,但是有时可以增加发射信号的带宽提高系统的性能。...码片周期TcT_cTc​是码元周期TbT_bTb​的1N...
  • 扩频调制解调技术

    千次阅读 2021-05-08 16:29:42
    扩频通信的基本原理1.1 扩频通信的概念1.2 扩频通信的种类1.3 直扩系统工作原理2. 直扩调制信号的MATLAB仿真2.1 伪码序列产生原理2.2 MATLAB仿真直扩调制信号 扩频通信系统时指待传输的频谱用某个特定的扩频函数...
  • 在仿真设计中,我们使用了触发器产生PN周期伪随即序列作为扩频码,使用2PSK调制信号与扩频码相乘实现扩频调制。最后,我们结合香农公式以及信号在扩频通信传输过程中的频谱变化,证明通过扩频通信,能在噪声增加的...
  • 周期直扩信号PN盲估计,张晓晨,张晓林,直接序列扩频(Direct Sequence Spread Spectrum ,DSSS;简称直扩)通信由于其抗干扰性强、截获率低、信号隐蔽性好等特点,被广泛应用于军事对抗
  • 该仿真包括一般序列如m序列。Gold序列的周期相关和非周期相关仿真,还包括LS周期相关和非周期相关
  • 该matlab程序产生速率为10K的基带信号 用周期为127的m序列对其扩频 分析了原基带信号的频谱 m序列的频谱 以及扩频之后的频谱 并画出图形
  • 扩频技术详解

    万次阅读 多人点赞 2014-04-11 13:27:32
     在发端输入的信息先经信息调制形成数字信号,然后由扩频码发生器产生的扩频码序列去调制数字信号以展宽信号的频谱。展宽后的信号再调制到射频发送出去。在接收端收到的宽带射频信号,变频至中频,然后由本地产生的...
  • 无线传感器网络复习大纲

    千次阅读 多人点赞 2019-04-30 10:31:40
     模拟调制、数字调制、扩频通信、UWB通信技术  B-ary数字调制(二进制数字调制):  应用于启动时间较短、能量消耗大的的系统  M-ary数字调制(多进制数字调制)  应用于WSN,启动能量消耗低的系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,326
精华内容 530
关键字:

周期扩频码