摘 要
CDMA技术是当前无线电通信,尤其是移动通信的主要技术,不论是在中国已经建立的IS-95规范的中国联通CDMA网、各大移动通信运营商正准备实验及建立第三代(3G)系统还是大设备研发商已经在开发的三代以后(也称为4G)更宽带宽的移动通信系统,CDMA都是主要的选择。CDMA概念可以简单地解释为基于扩频通信的调制和多址接入方案。其反向链路有接入信道和反向业务信道组成。接入信道用于短信令消息交换、能提供呼叫来源、寻呼响应、指令和注册。
本设计选取CDMA通信系统中的接入信道部分进行仿真与分析。首先,通过学习相应的理论知识,熟悉接入信道实现的过程,对每一步的原理有了较深的理解,同时,也对MATALB软件进行熟悉和了解,对MATLAB软件中的SIMULINK部分及其内部的CDMA模块用法和参数设置进行熟悉,然后运用MATLAB软件对接入信道部分进行设计,并逐步地对各个模块进行分析、仿真与验证。目的是通过毕业设计工作熟悉现代无线通信系统的基本构成与基本工作原理,重点掌握卷积编码、块交织和码扩展等相关编码技术,并能将这些技术应用实际系统设计,提高自己对CDMA通信系统知识的认识。
关键字:CRC;卷积编码;块重复;交织;长码;沃尔什;PN序列
Abstract
CDMA is the major technology used in the wireless communication , especially in the mobile communication. Following the IS-95 standard set up in China ,CDMA is the mostly choice whether in China Uninet net ,in the third system (3G) that all kinds of mobile businessmen are to build or in the wider system than the third one(named 4G)that the large equipments researching businessmen have been researching.The concept of CDMA may be interpreted as the simulation that base on frequency spreading and the multiply address access project.Its reverse channel is composed of access channel and traffic channel.The access channel is used for brief information exchanging 、providing the source about the calling、the call responding 、the instruction and the enrollment.
This design choose the part of connect channel to simulate and analyse. First,we can familiar with the process of connect channel ,understand the principleof every step of the procedure about thre channel,after studying the relating knowledge .At the same time ,we an also have some acquaintance with the software about MATLAB and the part of SIMULINK and how to set the parameter of every klock in the soft.Then we can use the MATLAB software to design the part of the connect channel, to analyse , to simulate and to validate the design of every block gradually. This purpose is to be familiar with the basic structure and basic principle of the morden wireless communication system, to mastery the technology about the Convolutional Encoder,Interleaver ,Coder spread and so forth, then use those technology to design system in practice,so that to improve our knowledge about the CDMA communication system.
Key words:CRC;Convolutional Enconder;Block Repeat;Interleaver;Long code;Walsh;
PN sequence
目 录
中文摘要 关键字 …………………………………………………….……1
英文摘要 关键字 ………………………………………………….………2
目 录 ……………………………………………………………….……...3
前 言 ………………………………………………………………..……..4
1 设计总体框架 ……………………………………………………..……5
2 设计各个部分原理知识介绍 ………………………………………..…6
2.1 卷积编码……………………..………………………………………..…..7
2.2 交织技术介绍………………………..………….…………………………9
2.3 沃尔什函数说明………………………………..….………………………11
2.3.1 沃尔什函数特性说明………………………….…………………...……11
2.3.2 沃尔什函数的产生方法介绍……………………………………………..13
2.4 长码的实现……………………………………………………………….15
2.6 PSK和OQPSK调制…………………………………………………………18
2.7 短码的实现……………………………………………………….……….20
3 MTALAB软件中的SIMULINK的简介…………………………….………20
4 设计仿真、分析与验证……………..………………………….……….22
4.1 设计总体模块构造…………………………..…………………….……….22
4.2 对各个模块进行分析与验证 ………………………………….……………23
4.2.1 源中部分(subsystem1)设置、说明与分析……………………………...24
4.2.2 对卷积编码器和重复模块的设置、说明与分析 …………………………27
4.2.3 对子系统Subsystem2(块交织器)模块的设置、说明与分析 ……………30
4.2.4 沃尔什调制器输出与长码输出及其异或验证…..………………….………40
4.2.5 I路和Q路的输出验证与分析……………………………………………46
5.经验总结…………………………………………………………………..49
谢 辞………………………………………………………………………..50
参考文献……………………………………………………………………..51
引言
众所周知,自从20世纪70年代出现蜂窝网通信以来,世界各地移动通信行业得到了迅猛的发展,而蜂窝网的技术本身也得到了长足的进步。就多址接入方式而言,20世纪80年代出现了时分多址(TDMA)数字蜂窝网,以GSM为代表的数字蜂窝移动通信系统在国内外已获得了广泛应用。20世纪90年代又出现了码分多址(CDMA)蜂窝网移动通信系统。由于它通信容量大、质量好,因此立即引起了人们广泛的关注,其优势已被人们所共认,其发展前景十分良好。不少专家预言,21世纪将是CDMA通信广泛应用的时代。
CDMA蜂窝网移动通信是在频分多址(FDMA)模拟蜂窝网和时分多址(TDMA)数字蜂窝网基础上发展起来的,既有共同点,也有很多独特的地方:从技术角度来看.CDMA蜂窝网技术是最先进的,同时又是最复杂的。可以说,在一定范围内,它反映了现代通信的技术水平。
本次课题选择的是反向链路的接入信道部分进行软件的仿真,所运用的软件是MATLAB。运用MATALAB软件中的模块进行接入信道的构建,并对信道的原理进行分析和验证。本论文是按照从理论到仿真分析与验证的步骤顺序来的,最后进行全面的总结。
- 对毕业设计总体实现框架进行初要说明
图1.1设计总体框图
接入信道数据以每20毫秒88比特的速率产生,因为 卷积编码器在每帧后复位,所以每帧的数据都加上8比特的尾。故数据进入编码器的速率是(88+8)/0.02=4800bit/s,如图所示。这些数据进行码率1/3,约束长度为9的卷积编码。编码器中出来的数据率是3×4.8=14.4ksps。
为了使接入信道和反向业务信道有相同的块交织方案,接入信道的符号进行了重复,使进入交织器的为2×14.4=3×9.6=28.8ksps,和反向业务信道达最高数据率9600bit/s的数据进入交织器时的速率一样。交织方案是读入一帧的数据(28.8×20=576符号),按列写入18列×32行的矩阵,然后以某种顺序按行读出,以使数据符号在时间上分开。
交织后的符号送到一个(64,6)的沃尔什编码器。沃尔什编码是用每组6个编码符号(c0、……c5)来选择2^6=64阶沃尔什序列Hi中的一个。选择时要按下列准则来计算序号i:
这里的i是64×64哈达码矩阵的行号,而{cj}是经过编码的二进制(0,1)符号.因此符号速率的增长比率为64/6,从28800sps增加到307200cps,单位是”沃尔什编码”每秒.这个步骤可以看作是一个(n=64,k=6)的纠错编码.它也可以解释为一种用二进制信道符号进行64进制正交调制的形式.
接入信道符号进一步用一个特定的相位偏置是靠移位积存器的输出与一个随用户不同而不同的42比特模板序列进行内积来产生的.对于接入信道,模板是用伪随机产生的接入信道和相应的寻呼信道编号以及基站辩识参数构成的.
在脉冲成型与发送之前,长PN码扩谱后的基带数据流分别与I路Q路正交短PN码相乘,Q路相乘后延时了半个码片,形成OQPSK调制和正交分集。注意:这个操作中,符号没有被扩谱,因为短PN码的速率也是102288Mcps.还要注意到,图4021表明所有小区中的所有移动台都采用零偏置的短PN码,不同用户的信号只用它们唯一的长PN码相位加以区别.下表总结了接入信道的调制参数。
接入信道调制参数
参数 数值 单位
数据速率 4800 bit/s
PN码片速率 1.2288 Mcps
代码速率 1/3 Bit/码符号
码符号重复 2 符号/码符号
发端占空比 100 %
码符号速率 28800 sps
调制 6 码符号/模符号
调制速率 4800 sps
沃尔什码片速率 307.2 kcps
模符号间隔 208.33 µs
PN码片/码符号 42.67
PN码片/模符号 256
PN码片/沃尔什码片 4
特定移动台的接入信道传送只能在指定的接入信道时隙中进行,接入信道时隙事实20毫秒帧长的睁倍数.接入信道时隙的每一次传送开始都有一随机短延时,以分散不同的移动台的起始传送时间,这些移动台可能在同一时隙内在不同的信道中传送.接入信道有96个数据零作报头,以帮助基站捕获信号.移动台第一次使用接入信道时,只能发送按某种程序形成的试探”消息”,直到决定了该移动台的适当功率水平为止.
- 对各个模块所对应的原理进行详细的说明
CDMA(码分多址)是一种利用惟一码序列进行扩频多址接人数字通信的技术。CDMA信道包括基站和移动台之间的前向CDMA信道和反向CDMA信道。前者是从基站到移动台的信道,后者是从移动台到基站的信道。
反向CDMA信道被移动台用来和基站通信,同时在发送之前通过直接序列扩频共享相同的CDMA频率分配。反向CDMA信道是从移动台到基站的反向链路。在反向CDMA信道发送的数据被封装成20ms帧。反向CDMA信道包括接人信道和反向业务信道。接人信道用于短信令消息交换,提供呼叫发起、寻呼响应、指令和注册。反向业务信道用于从单个移动台向单个或多个基站传输用户数据和信令业务。
前向CDMA信道包含导信倍道、同步信道、寻呼信道和前向业务信道。这些信道每路都经过适当的Wash函数正文扩展,然后以1.2288Mc/s固定速率由正交相位导频PN序列扩展。
反向CDMA信道由接人信道和反向业务信道组成。反向信道上发送的所有数据都经过卷积编码、块交织、64阶正交调制和长码直接序列扩展再发送。
下文介绍CDMA信道操作的几个最基本的组成部分。
2.1 卷积编码
现代数字通信系统常常设计成以非常高的速率传输。卷积码已应用于很多个同系统,例如,不仅在CDMA移动通信系统种应用卷积编码/译码,而且在空间和卫星也应用。为了防止系统出错,经常会使用卷积码。信息数据序列划分成许多长度为k的小块,每段小块被编码长度为n的码字符号。卷积码(n,k,m)由k个输入、具有m阶存储的n个输出线性时序电路实现。通常,n和k是较小的整数,且k<n,但m相当大。特别地,当k=1时,信息序列不再分成小块,以便可以连续处理,因此,卷积码的发展产生了很多有线和无线通信信道数字传输的实际应用。
卷积码(n,k,m)指定的码率为:R=k/n,编码器级数为m=K—1,其中K是码的约束长度。编码器存储阶数等于数据序列时延。m级n维生成序列集通常可以按如下方式描述:
其中j=1,2,…,k表示输入端数,j=1,2,…,n表示模2加法器数(输出端)。方程(2.1)也可以以多项式形式表达为:
其中D是时延操作符,每一项D的幂对应于该项的单位时延数。
每个生成序列直接由从编码器级到各自模2加法器的连接序列确定,1表示连接,0表示断开。每个生成序列包含m+1位二进制数。如果每次信息序列输入
编码器1比特,那么编码器输出序列
可以通过合并
离散卷积得到,即:
其中
基站对前向CDMA信道如同步、寻呼和业务信道上发送的数据进行卷积编码。前向CDMA信道使用码率R=1/2、约束长度为9的(2,1,8)卷积码。
该卷积码的生成序列为:
由于码率为1/2,所以每次编码器输入一位数据,编码器输出就产生两位编码符号。
初始化后第一个输出符号
是由生成序列
编码的符号,第二个输出符号
是由生成序列
编码的符号,如图2.1所示,卷积编码包含连续时延数据序列选定抽头的模2加。
图2.1.1 24位输入的(2,1,8)卷积编码器
例如,以1.2kb/s速率传输的前向业务信道帧结构包含24比特(20ms)。这24比持由16位信息比特和8位编码器尾比特组成,如图2.2所示。最后8位编码尾比特全部设成0。如果信息序列表示成d=(1010100100000101),相应的多项式为
。由于16位信息比特后面有8位编码器比特,则前向业务信道帧表示为M=(101010010000010100000000)或者写成多项式形式:
图2.1.2 发送速率为1200b/s的前向业务信道帧
图2.1显示了用于该信道的(2,1,8)卷积码。由于m=8,n=2,因此该编码器包含一个具有2个模2加法器的8级移位寄存器和用于编码器连续输出的转向器。对图2.1的卷积编码器,两个生成序列分别为:
和
利用方程(2.4),对于i=1和j=1,2,有:
利用生成序列
编码器每个模2加法器的输出分别为:
输出符号(
)连接成单个序列,即发送到块交织器的编码符号序列:
=
对于前向和反向的CDMA信道,每当信息速率小于9600b/s时,每个卷积编码的符号重复k次后再发送到块交织器。k的大小随着信息速率的不同而不同。
2.2 交织技术介绍
直接扩频CDMA支持同时在数量很大的用户群体而不光是单个用户之间的数字通信服务。这将反映在如何利用额外的维数和冗余来提高性能。使用了两种处理技术:用于提高额外冗余的交织技术和用于前向纠错的编码技术。
交织是排列符号序列的过程。这种为获得时间分集的重排过程称为交织,可以以两种方法考虑:块交织和卷积交织。
交织常重复或编码相结合,是一种防止突发错误的时间分集形式.符号在进入突发信道传送之前被改变顺序或进行交织.如果传送时发生突法错误,恢复原来顺序就可以在时间上分散错误.如果交织器设计良好,那么错误将会随机地分布,用编码技术几容易纠正.
最常见的交织技术的两种中,最常见的类型是块交织.这种方式常在数据分块分帧的情况下使用,入IS-95系统.另一方面,卷积交织对连续少数据流来说是比较实用的类型.块交织很容易实现,尔卷积交织有很好的性能.连续操作使得卷积交织的初始开销变得不重要.IS-95用了以类似块交织技术为基础的交织形式,将在下面进一步讨论.
有几个描叙交织器性能的参数.重要的参数之一是最小间隔S,指突发连续错误分布的最小距离.一般来说这个参数依赖于突发长度,突发长度增加则S变小.极端情况下,突变长度与序列长度一样,则最小间隔是,因为不论如何排列,错误之间总是相互挨着的.交织时,读取一部分符号同时需要存储另一些符号,因此就带来了延时.一般来说,这种延时也出现在解交织时.延时D表示交织和解交织时带来的额外读/写操作量.而刚提到,处理过程需要一些存储单元,用M来表示.为了达到较好的交织器性能,最小间隔越大越好,延时和存储容量越小越好.所以性能通常可用最小间隔与延时的比S/D以及最小间隔和存储容量的比S/M来描述.
一个(I,J)的块交织器可以看成是一个J行I列的存储矩阵.数据按列写入,按行读出.如图(2.1)所示。符号从矩阵的左上角开始写入,从右下角开始读出.连续的数据处理要求有两个矩阵;一个用于数据写入,另一个用于数据的读出/解交织过程也要求有两个矩阵,用于反转交织过程.
图 2.2.1
块交织器特性很容易通过观察矩阵得到.假使突发错误的长度为B.两个错误之间的最小间隔可以由下式给出:
交织延时在发端是IJ,在接收端是IJ,因此总延时是
D=2IJ
为了连续的操作,需要两个矩阵,存储的要求就是
M=2IJ
交织器的最小间隔可以通过改变读出的行顺序来改变,延时和存储要求在这个操作种不变.B≤I情况下,最大的最小间隔由上面所说的读出方法得到.然而,这种方法使得B>I时S=1.其他的方法可以减小B≤I时的最小间隔而增加B>I时的最小间隔.IS-95就用了这样的技术.除非仔细观察考虑读出的方法,否则一般最小间隔 都是减少的.
IS-95系统交织一帧之内的数据,除了同步信道之外,其他信道都是20毫秒,同步信道的一帧周期上26.66毫秒.因此,所有的IS-95的交织器在块数据上操作.严格地说,并没有用块交织,但是交织的类型设计要依赖于信道和原始数据率.例如,反向链路通过矩阵之中以非传统的方法读出各行数据以改变最小间隔特性.
2.3 沃尔什函数说明
沃尔什函数是正交的、归一化的和完备的。“正交”是指两个不同的函数相乘,并在给定区间上积分,其结果为0。“归一化”的意思是如果两个函数相同,那么它们乘积的积分为1。最后,“完备”大致可理解为:在给定的区间内,可使用这个正交函数集中函数的线性组合来逼近任意给定的函数,在正交函数的个数趋于无限的条件下,均方误差在“均值意义上”趋近于0。
2.3.1 沃尔什函数特性说明
我们将N阶的沃尔豕函数定义为N段函数的集合,记为{Wj(t);t∈(0,T),j=0,1,…,N-1},定义如下:
- 除了在一些跳变点上取值0外,Wj(t)仅在集合{+1,-1}中取值。
- 对于所有的j,有Wj(0)=1.
- 在区间(0,T)内,Wj(t)精确地有j次符号变化(穿越零点)。
4.
5.关于区域的中点,每一个函数Wj(t)不是奇函数就是偶函数。
一个沃尔什函数集由N个函数构成,并按照穿越零点(符号改变)的次数来定义它们的阶数。用函数集表示如下:
第一个函数W0(t)在整个(0,1)区间上没有过零点,而W1(t)在整个定义区域上有一个过零点。考虑图3.1所示的定义在(0,T),将沃尔什函数的幅值
图2.3.1
转化为二值逻辑{0,1}表示,即+l “0”,-1 “1”, 并将图5.1中的所有8阶沃尔什函数的整个下标集j=0,1,…,7用二进制表示出来,于是我们可以写出8个沃尔什序列,如图3.2所示。
当考虑一个 阶的沃尔什函数集(序列)时,可以注意到序列关于K轴上的点K=T/2,,…,具有对称性,其中T是沃尔什函数的周期。沃尔什函数关于这些点要么奇对称,要么偶对称。这些点位j=K,K—1,…,1,亦即。考虑任意一个N=16阶的沃尔什函数,如:
W13=O 1 0 1 1 0 1 0 1 0 1 O 0 1 0 1
图 2.3.2
序列关于
处奇对称:
关于T/8处奇对称:
关于T/4处偶对称:
关于T/2处奇对称:
将沃尔什函数的下标j用k位二进制数表示出来,即j=(j1,j2,..jk)。如果jk=0,则函数关于
轴处偶对称,k=1,2,…,k;如果jk=l,那么函数关于这个轴处奇对称。在沃尔什序列中,与沃尔什函数中的定义相同,第一个值总是0,即研Wj(0)=1,而Wj0=0。
对沃尔什序列w13,可以分析如下:在W13中,(j1,j2,j3,j4)=(1,l,0,1),因此可以判断:
j1/2=1,表示序列关于T/16处奇对称
j2=1,表示序列关于T/8处奇对称
j3=O,表示序列关于T/4处偶对称
j4=1,表示序列关于T/2处奇对称
于是,以0打头按照对称的要求,可以写出如下序列:
W13=0 1 0 1 1 0 1 0 1 0 1 0 O 1 0 1
这个序列与前面一开始给出的一样。
同样,根据观察,可以得出沃尔什函数关于对称轴(中点)的位置的特性如下:
·沃尔什函数关于(0,T)的中点,也即在T/2处的对称轴ax上奇对称或偶对称。
·沃尔什函数关于子区间(O,T/2)和(T/2,T)的中点T/4,3T/4处具有同样的对称性将这些中点对称轴定义为ak-1。
·同样的处理过程重复k次,直到子区间的中点为T/N,3T/N,…,(N—1)/N,这里
。这些中点对称轴称为a1,这些轴具有同样的对称性。
2.3.2 沃尔什函数的产生方法介绍
沃尔什函数的产生方法有多种,可以使用莱德马契函数,也可以使用哈达玛短阵,还可以利用沃尔什函数自身的对称特性。下面仅以用哈达玛矩阵产生方式来介绍。
哈达码矩阵是一个方阵,方阵的每一个元素为+1或-1,列与列之间是正交的。如果一个矩阵的第列的元素都是1,那么我们说这个矩阵是规范。可以使用0代替+1,而使用1代替-1,即使用逻辑值{0,1}来表示哈达码矩阵,那么2×2的2阶哈达码矩阵可以表示为:
如果HN是一个N×N的哈达码矩阵,于是有:
这里IN 是一个N×N的单位。如果规定N≥1为哈达码矩阵的阶数,那么N可取值为1,2,或4t(t为整数).设
和
分别为 a阶和b阶的哈达码矩阵,那么
×
=
的阶数为ab,运算规则如下:如果
矩阵中一个元素为+1(或逻辑值
0),那么用
来代入,如果该元素为-1(或为逻辑值1),则用-Hb(或Hb的补)代入。如果N为2的幂,并规定H1=[+1]=[0],于是
可以由下式求得:
这里规定
为
取负(为其补值)。
的哈达码矩阵可以由N=2阶的哈达码矩阵的规范形式连乘得到。
如果
,则所有的哈达玛矩阵的行序列和列序列都是沃尔什序列。然而,用沃尔什函数表示和哈达玛函数表示之间存在一些差别,即哈达玛函数的行序号和列序号都与符号改变(过零点)的次数没有关系,而沃尔什函数却具有这种关系。显然,由哈达玛函数生成的沃尔什函数不是按照符号改变的次数排序的,因而需要一种方法对这两种排序进行相互转换。
2.4 直接序列扩展
反向CDMA信道中,反向业务信道相接人信道将由长码直接序列扩展,以提供有限的保密性。对反向业务信道,直接序列(DS)扩展操作包含对数据脉冲随机发生器输出数据和长码模2加。数据脉冲随机发生器产生掩码符号0和1,随机地掩蔽由于码重复产生的冗余数据。掩码符号由帧数据率和长码的最后14比特位确定。对于接人信道,DS扩展操作包含64阶正交调制器输出和长码的模2加。
设d(t)为Walsh码片调制的数据序列,Tb为数据比特时间间隔。Walsh调制的数据序列被长码c(t)的扩展则码片模2加。每个c(t)脉冲称为码片,Tc表示码片时间间隔,Tb=4Tc。扩展PN码片序列速率固定在1.2288Mc/s。由于6个编码符号由64个时间正交Walsh函数之一调制,调制符号发送速率固定在28.8/6=4.8ks/s。因此,每个Walsh码片由4个PN码片扩展,即
。由1.2288Mc/s长码PN码片相乘的直接序列d(t)如图4.1所示。
图 2.4.1
2.5 QPSK和OQPSK调制
为了使频带效率最大,高频谱效率的CDMA信道调制技术要求在相位正交的两个载波同时发送。正交调制在扩频中极为重要,它对某些类型的干扰不敏感。
令
为原始数据流,为双极性脉冲,-1代表二进制l,+l代表二进制0.如图2.5.1所示。该脉冲数据流分成同相流
(偶数比特)和正交相位流
(奇数比特),如图2.5.2和图2.5.3所示。注意,
和
分别具有d(t)的一半速率。
2.5.1原始数据d(t)
2.5.2同相流dI(t)
2.5.3正交流的dQ(t)
将每个
和
幅度调制到载波的余弦和正弦函数上,可以得到QPSK波形,如图2.5.4所示。
图2.5.4 QPSK扩频调制器
其中,
同相流
以+1(二进制0)或-l(二进制1)对余弦函数进行幅度调制,产生一个BPSK波形。同样地,正交相位流
对余弦函数进行调制,产生另—个与前面余弦函数产生波形正交的BPSK波形。这样,载波的这两个正交分量就产生QRK波形。
图 2.5.5 QPSK的信号空间
持续时间为Ts的原始数据流
可以通过串/并转换器将持续时间2Tb划分为同相流
和正交相位流
(参见图2.5.4)。QP5K调制时,同相和正交相位数据流都以1/2Tb/s速率发送并同步对齐,以便发送时间一致.非偏移QRK调制时。两种脉冲流
和
发送时间一致,如图2.5.6所示。由于
和
一致对齐,所以载波相位每2Tb秒变化一次相位,导致了图2.7所示的四种相位之—。
图2.5.6
和
一致对齐的QPSK波形S(t)
s(t)的方程也用于偏移QPSK(OQPSK)信令。OQR5K和标准的非偏移QPSK在两个基带波形对齐方面不同。两种脉冲流
和
相互交错,因此个是同时地改变状态。这两种调制方案的不同在于脉冲流
和
定时移位了,以至于两种数据流差Tb对齐,如图2.5.7和2.5.8所示。载波相位每Tb秒可能的变化限制在 和 。然而在作偏移QPSK下,两种脉冲流
和
时间一致,载波相位每2Tb秒变化一次,如图2.5.7和2.5.8所示。对应于QPSK数据流的典型OPSK波形如图所示。
2.5.7 分开的数据流
2.5.8 偏移的QPSK波形
2.6 长码的产生
长码提供了限的保密性。长码是
的PN序列,用于前向CDMA信道的扰码和反向CDMA信道的扩领。长码在前向业务信道和反问业务俏道惟一标识移动台。长码的特点是使用长码掩码来形成公用长码或私有长码。长码还用在相同CDMA信道上区分多重接人信道。
当在当在接入信道上传输时,先进行长码直接序列扩展,然后发送。扩展操作包括64阶正交调制器输出序列和长码的模2加,如图2.6.1所示。
CAN:接入信道编号
PCN:寻呼信道编号
BASE-ID:基站标识
PLLOT-PN:前向CDMA信道PN偏移
1100011:长码掩码头
图 2.6.1
长码周期为
个码片,由码发生器的LFSR抽头多项式P(x)指定:
对所有42位掩码和LFSR42级输出的“与”结果进行“异或”操作可以得到长码的每个PN码片,如图6.2所示。
图2.6.2 长码发生器
长码掩码包括42位二进制序列,它是长码的惟一标识。长码掩码根据移动台传输的信道类型而不问。图2.6.2显示了长码发生器产生的PN码片(1.2288kc/s),它由长码掩码激活。
2.7 短码的产生
直接序列扩展之后,反向业务伯道和接人信道进行正交相位扩展。
另外,前向CDMA信道正交扩展之后,每个码道(导频、同步、寻呼或前向业务信道)进行正交相位扩展。
扩展序列是长度为 或32768个PN码片的正交相位序列。该正交相位序列称为导频PN序列.分别基于下列抽头多项式;
对于相同I序列:
对于正交相位Q序列:
3 MTALAB软件中的SIMULINK的简介
MATLAB通信工具箱(communication Toolbox)中提供了许多MATLAB函数和SIMULINK仿真模块,可以用来对通信系统进行仿真和分析。这些函数和模块涉及通信系统的各个部分,用户可以根据自己的需要进行选择,从而构筑自己的通信系统模型。
SIMULINK仿真工具包是MATLAB的工具包之一,是实现动态系统建摸、仿真和分析的一个集成环境。它可以仿真线形或非线形系统、连续时间系统、离散时间系统或两者混合系统,也可以仿真多速率系统。
SIMULINK提供了一个用于建摸的图形用户界面,主要实用于构造比较复杂的动态系统模型。它的主要特点在于使用户可以通过简单的鼠标操作和拷贝等命令建立起直观的系统框图模型,并进行交互性的动态仿真。所谓交互性,指的是用户可以在仿真的同时修改系统参数,仿真输出结果随着参数的改变而改变。SIMULINK的特性使它同以往的仿真工具有了较大的改进,用户可以脱离复杂的基于微分方程的计算方法,转而使用简单直观的框图式构造方法。
SIMULINK有一个重要特征,它是构造于MATLAB的之上的。因此SIMULINK用户可以直接使用基于MATLAB的工具对模型进行构造、优化和仿真。这里所说的基于MATLAB的工具,指的是MATLAB应用于工具箱和专门用于某些领域的特定M文件的集合。通信工具箱就是MATLAB应用工具箱的一种。由于应用工具箱均由MATLAB的原代码编写而成,用户可以在SIMULINK的工作平台上方便地调用工具箱中的各种工具,从而实现了各类工具箱之间的无缝连接。
SIMULINK的应用包括建摸和仿真两部分。所谓建摸,指的是从SIMULINK的七个标准模块子库或MATLAB其他工具包模块库中选择所需的模块,并拷贝到用户的模型窗口中,经过连线和设置模块参数等构筑起用户自己的仿真模型的过程。SIMULINK完全采用“抓取”来构造动态系统,系统的创建过程就是绘制框图的过程。而通信模块的创建和仿真,一般是在SIMULINK工作窗口内利用COMMLIB库中通信模块构筑用户设计的通信模型,然后再利用SIMULINK工作窗口中特有的菜单选项进行仿真。
在打开SIMULINK之前,首先要运行MATLAB。打开SIMULINK主工作界面的方式有两种:
- 在MATLAB的工作窗口中键入“simulink”指令。
- 在MATLAB窗口的状态栏中点击SIMULINK图标。
需要注意的是,SIMULINK对模块或模型文件的操作一般都有两种方式:
- 菜单操作方式——在被操作模型的SIMULINK窗口下进行。
- 命令操作方式——在MTALAB的工作窗口中通过一些固定调用格式的指令对模块或模型文件进行调用、仿真等操作。
按照上述的方式打开的SIMULINK工作窗口就是SIMULINK的标准模块库的窗口,同时被打开的还有一个新的模型文件窗口(标记为untitled).
SIMULINK窗口见下:
SIMULINK模型具有层级结构,非常有利于建造和管理一个大型系统。为便于实现分层设计,在SIMULINK模块库的费线形子库(Nonlinear)中含有一种专用模块——子系统(Subsystem)模块,同时,SIMULINK还为子系统提供了封装(MASK)功能。
- 子系统模块(Subsystem Block)
当一个动态模型包含许多环节时,往往把系统功能分块,每一块建立一个子系统。在设计中使用子系统,可以降低模型的复杂度,减少窗口的数目,并易于对模型进行扩充和修改。设计一个SIMULINK框图,可以采用“自顶向下”的设计方式,下构造处总体模型,再分别建立各个子系统;也可以采用“自顶向下”的设计方式,先完成每个部分底层设计,封装为子系统后,再用其搭建一个总体框图。
下面简要给出采用“自顶向下”模式设计子系统的主要步骤:
(1)在MATLAB工作窗口中键入sinmulink指令,打开SIMULINK标准模块库。从它的[File]菜单中选取[New]命令,创建新的方框图窗口。
(2)用鼠标双击SIMULINK模块库中Connections图表,打开下一级子模块库,将其中的子系统模块(Subsystem)用鼠标拖至用户新建的文件窗口中。
(3)双击子系统模块,打开一个空白的子系统窗口,按照功能要求添加模块,并用输入端口代表送入子系统的信号,输出端口代表输出信号。
- 封装功能
具有封装功能是SIMULINK模块一个非常有用的特点。通过封装可以为子系统建立用户自定义的对话筐和图标;可以在当前图形窗口中隐藏子系统的设计内容,用简单的图标来代替子系统。另一方面,由于子系统中每个模块都有一个对话筐,进行仿真的时候,必须打开每个对话筐分别定义参数值,应用起来比较麻烦。而封装功能可以将子系统中的多个对话筐合并为一个单独的对话筐——封装对话筐,封装对话筐中的参数在仿真时被直接送入子系统的各个模块中,从而简化了用户定义仿真参数过程。同时,通过在封装对话筐中自定义的模块参数域、模块描述信息和模块帮助信息等,可以使仿真模型有一个更友好的用户界面。
4 设计仿真、分析与验证
根据前面所述的原理与总体框图,在此,我们对接入信道进行完全的仿真、分析与验证如下:
4.1 设计总体模块构造
图 4.1.1仿真总体构图
4.1.2subsystem1内部结构
图4.1.3subsystem2内部结构
4.2 对各个模块进行分析与验证
4.2.1源中部分(subsystem1)设置、说明与分析:
在源这部分里面,我们用贝努力二进制产生器产生所需的二进制代码,所产生的码序列是服从贝努力概率分布的。为了满足设计的需要,我们同时将贝努力产生器的输出值设为[80×1]且基于帧格式的输出方式,也即:基于帧格式输出的80行和1列的矩阵。再利用CRC产生8位循环冗余检验(CRC)码,在数据尾部加入CRC码的作用有两点:第一,可以在接收时确定帧(包)是否发生了错误,第二,可以辅助确定接收的帧的数据速率,最终对数据速率的确定则是卷积译码器。另外,利用 Zero Pad(零填充模块)模块,在数据帧末端加入8个比特的0,其作用在于,在每帧卷积编码结束后,对卷积编码其中的移位积存器复位。由于MATLAB中的卷积编码器具有自动复位功能,因此这个零填充模块并不是必须的。但在此,我们仍然将此模块设置为插入8个尾比特零,可以使数据的速率达到我们最终的要求。模块的参数设置见下面的各图形。
模块设置如下:
4.2.1.1 Bernoulli模块设置
Bernoulli模块参数设置说明:
(1)Probability of a zero :0.5表示的是以概率0.5取值为1,以0.5的概率取值为-1;
(2)Sample time:20/1000表示的是20毫秒,设置为20ms的原因在于,4800bit/s的速率的帧长为20ms ;80是指每帧中含有80个比特数据,对于4800bit/s的速率而言,应该每帧的比特数为96个,之所以在这里设置为80,是因为在后面的CRC产生器和Zero Pad分别产生了8个冗余循环码和8个尾比特0码。因此,在这里每个比特的抽样时间为20/1000/80s.
(3)将输出数据设置为基于帧结构的方式,也即:选择Frame-based outputs的选项,原因在于,CRC码产生模块的输入必须基于帧数据结构的。
(4)每帧的数据为80比特,所以,将每帧的抽样次数设置为80,也即:Samples per frame设置为80。
4.2.1.2 CRC模块设置
CRC模块参数设置说明:
对于反向信道的Half Rate(半速率,也即为4800bit/s)而言,Generatal CRC Generator的生成多项式为:
所以对应的Generator polynomial的设置就应为:[1 1 0 1 1 0 0 1 1]
图4.2.1.3 Zero Pad模块的的设置
Zero Pad模块参数设置说明:
- 在这里将Pad signal at设置为End是因为,我们期望在数据末尾插入8个0尾比特。
- 由于我们在CRC的输出为[88×1]的比特数据,也即一列的数据,所以,为了在同一的数据后面添加8个0数据,我们在这里就将Pad along设置为:Columns.
- 在该模块的输出端,我们要求帧数据的比特数为96,也即为了在帧数据后面加入8个0,因而将Specified number of output rows设置为96。
综合上面所述,我们将上三个模块构建为一个“源(source)”子系统,简单的封装后的图形为:
图4.2.1.4源子系统模块
对该源内各个模块间的数据变化情况验证如下图中的波形所示:
4.2.1.5 源内部各模块的输出波形
其中,依上至下的波形分别是Bernoulli模块、CRC模块、Zero Pad模块的输出波形。
从图中,我们可以清晰的看见,第二各波形相对于第一个波形而言,增加的比特数分别为:0 0 0 1 1 0 1 0,也即刚好8个比特数,与理论中的在帧数据后面插入8个CRC冗余循环码完全的;在第三个波形中,我们同样可以看出,它相对于第二个波形而言,在末尾刚好加入了8个0比特,即:0 0 0 0 0 0 0 0。
4.2.2 对卷积编码器和重复模块的设置、说明与分析:
仿真连接方法见下面图形:
图4.2.2.1仿真连接图1
其中,使用Buffer 的原因在于:由于Subsystem1模块、卷积编码器模块、重复模块输出的数据都是基于帧的数据,而Scope示波不能观察基于帧的数据,所以,我们需要将基于帧的数据转换为适合示波器的数据来观测。通过转换,我们可以将Subsystem1模块、卷积编码器模块、重复模块的原来每次每帧同时输出分别为[96×1]、[288×1]、[576×1]的数据都改变为输出均为每次1个的数据。这样,我们就可以用示波器来观察,并验证我们的设置。
卷积编码器参数设置说明:
图4.2.2.2卷积编码器模块参数设置
Trellis structure的设置说明:该项指的示卷积编码器的生成多项式。其中,9是指卷积编码器的约束长度,也即在卷积编码器中使用了8个移位寄存器;[557 663 711]是指卷积编码器的生成多项式,该多项式可以说明:这个卷积编码器有一个输入端,有三个输出端,也即,在卷积编码器利有三个模2判决电路。三个模2判决器与9个(其中第一个往往被省略,所以往往只说8个)移位寄存器的关系分别位:101101111,110110011,111001001,“1”表示与移位相应的寄存器相关,“0”表示不相关。
4.2.2.3重复模块参数的设置
重复模块的参数设置说明:
(1) Repeatition count是指重复次数,为了使后面块交织器的输入端输入的数据每帧大小是576个符号,而重复模块前的数据已经是每帧288个符号,所以,我们在这个地方将重复设置为2次。
(2) 为了使重复模块输出的数据达到要求,我们在这个模块将Frame-based mode设置为Maitain input frame rate.
对两个模块验证如图4.2.2.4所示:
图4.2.2.4卷积编码器和重复模块输出数据
源模块输出的数据序列为: 111 000 000 101 111 010 11
卷积编码器输出的数据序列为:111 100 001 000 001 001 01
重复模块输出数据序列为: 111 111 110 000 000 011 00
现在对图4.2.2.4的数据进行理论计算分析。
由卷积编码器的生成多项式可以得出下列式子:
对应于557,也即:101101111的多项式为:
对应于663,也即:110110011的多项式为:
对应于711,也即:111001001的生成多项式为:
我们设输入的数据多项式为:
,(i和n均为非负整数)
由源模块的输出,我们取前三个数据来验证,也即:111,它对应的u(x)为:
卷积编码器输出的多项式v(x)为:
由v(x)的表达式可以得出卷积编码器的理论输出码序列为:
111 100 001 000 001 001 011 111 101 001 111
由于display只能显示前20位比特,对照观察,我们可以得出,前20位数据理论输出与仿真完全吻合。
4.2.3对子系统Subsystem2(块交织器)模块的设置、说明与分析:
子系统Subsystem2的构成如下图:
图4.2.3.1 块交织器的子系统
图4.2.3.2子系统Subsystem2参数设置框图
参数设置说明:
(1)在该子系统内,我们运用的是一个[32×18]的矩阵,所以将设置框图中的行和列分别设置为32、18。
(2)由于子系统内部的Bit to IntegerConverter模块和Integer to BitConverter模块分别将每行的18个比特符号转换为一个整数、将一个整数转换为18比特,因而,将Number of bits per integer设置为18。
(3)Elments是指子系统内部的通用块交织器符号的输出顺序,也即:[1 3 2 4 5 7 6 8 9 11 10 12 13 15 14 16 17 19 18 20 21 23 22 24 25 27 26 28 29 31 30 32]',其中的数字均指行号。
子系统的内部结构为:
图4.2.3.3块交织器的子系统
图4.2.3.4 Matrix模块的设置
图4.2.3.5 Bit to Integer Converter模块设置
图4.2.3.6 General Block Interleaver模块设置
图4.2.3.7 Integer to Bit Converter模块设置
子系统内部各个模块的说明、分析与验证:
(1)对于矩阵交织器,其作用是把输入的信号按照某种顺序写入一个矩阵中,待完成整个矩阵的填充后,按照另外一种顺序从矩阵中读出数据。它的数据操作顺序是:先把输入信号按行写入矩阵,然后按照列从在、矩阵中读出来。
(2)对于Bit to Integer Converter模块和Integer to Bit Converter模块,其作用不言而喻,分别是将每行的比特数据转化为一个十进制的整数、将一个十进制的整数转化为一行比特序列。
(3)对于General Block Interleaver模块,其作用是:把输入信号按照自己的设定顺序进行置换,产生交织信号的过程。通用块交织保证每个输入的数据能够在输出信号中,且每个输出信号只能出现一次,也即说明,通用块交织器可以将帧数据序列中的重复的比特符号给除去。
下面是各个模块的仿真输出数据理论与仿真的验证。读数据的方式是采用To workspace模块来读出并显示数据的。仿真连接图见下:
图
4.2.3.8仿真连接图
图4.2.3.9 To Workspace模块设置
(此图仅是显示Repeat模块数据输出的设置,其他模块输出
的To Workspace模块设置仅仅是Variable name改变而已)
Repeat模块的输出数据如下:
111111001111001100
001100110000000011
110000000000111100
001111000000001111
001111001111110011
111111000011001100
111100111100000011
111100111111001111
111111110011110000
110011001100111100
111111001100111100
000011001100111100
000011000000111111
111100000000110011
001100111111110000
110011110000111100
111111001100110000
000000110011000011
111111001100110000
111111111100110000
000011111111110011
001100111111111100
000011110000110000
001100001111110011
000000001100001100
000000110011111100
111100000011000011
110000000011110011
000011001100001100
000000001100111111
000000110000001111
111100111111000000
图4.2.3.10 Repeat模块数据输出
数据说明:本来重复模块的输出数据是[576×1]的基于帧结构的数据形式,但是,为了与后面的交织器的输出数据相比较,我们将[576×1]的数据转化为[32×18]的数据形式,576个数据比特是按照行的顺序写入矩阵的。从这个矩阵数据中我们可以看出,由于重复2次的原因,相临的数据比特数都至少是2的倍数,也即说明每个比特符号至少重复了一次,从而也再次验证了重复模块设置与仿真的正确性。
Matrix交织器输出的也是[576×1]的基于帧的数据形式,为了明显地更容易的比较与验证,我们将该数据转化为[18×32]的矩阵形式,它的数据形式应该是上面Repeat模块输出数据[32×18]的转置形式,也即数据应该完全成转置形式对应。因为,它是重复模块输出后576个数据按照行的顺序写入,再按照列的顺序读出的。这里我们将[18×32]表示成下面它的转置矩阵形式,也即:
的形式,因此读出的顺序按行。
Matrix交织器输出数据
(576位)
10100111111001011011000000110001
10100111111001011011000000110001
11011111101001101011010100100001
11011111101001101011010100100001
10011100111110011011101000001000
10011100111110011011101000001000
01000011100000110101111001000011
01000011100000110101111001000011
10001011011100101011110110001101
10001011011100101011110110001101
10001101100000100100110101110001
10001101100000100100110101110001
00101000111111111011111101010100
00101000111111111011111101010100
10110101011110010000010011001110
10110101011110010000010011001110
01011011000011000100100100110110
01011011000011000100100100110110
图4.2.3.11 Matrix交织器输出数据
对照上叙两组数据,我们根据理论分析知,如果将repeat模块的输出数据连成576个比特符号,同时也将Matrix模块的输出数据,按列的形式读出(也即上叙数据按照行顺序读出),并连成576个比特符号,那么,我们得到的数据应该均是576个比特符号,而且,他们的排列顺序也应该完全一致。基于此分析,我们再对上面的两组数据进行比较,我们可以得出,上叙两组数据完全符合,而且两矩阵数据完全成转置形式对应。因此,我们的验证也成功。
Bit to Integer Converter模块的作用是将Matrix交织器输出的576个比特符号写入[32×18]的矩阵,并将矩阵的每一行转化为一个十进制的数据输出。
下面将Matrix交织器的输出数据按照行的顺序写入[32×18]的矩阵中去,表示如下:
101001111110010110
110000001100011010
011111100101101100
000011000111011111
101001101011010100
100001110111111010
011010110101001000
011001110011111001
101110100000100010
011100111110011011
101000001000010000
111000001101011110
010000110100001110
000011010111100100
001110001011011100
101011110110001101
100010110111001010
111101100011011000
110110000010010011
010111000110001101
100000100100110101
110001001010001111
111110111111010101
000010100011111111
101111110101010010
110101011110010000
010011001110101101
010111100100000100
110011100101101100
001100010010010011
011001011011000011
000100100100110110
图4.2.3.12
对于第一行数据101001111110010110,我们将其转换为十进制的数据,计算方法如下:
=171926
其中
表示第一行转化为10进制的数据符号。
同样可以计算出
、
……的十进制数据分别为:197402、129388……。下面是Bit to Integer Converter模块仿真输出的十进制数据。对比我们可以发现,数据是完全吻合的。
Bit to Integer Converter模块仿真输出 General Block Interleaver模块仿真输出
图4.2.3.13 图4.2.3.14
通用块交织器的输出数据见图4.2.3.14。它是Bit to Integer Converter模块仿真输出按照[1 3 2 4 5 7 6 8 9 11 10 12 13 15 14 16 17 19 18 20 21 23 22 24 25 27 26 28 29 31 30 32]'的行顺序输出,对比于图4.2.3.13Bit to Integer Converter模块的数据,我们可以验证我们的仿真过程正确。
Integer to Bit Converter模块的数据输出(576个比特符号)
101001111110010110
011111100101101100
110000001100011010
000011000111011111
101001101011010100
011010110101001000
100001110111111010
011001110011111001
101110100000100010
101000001000010000
011100111110011011
111000001101011110
010000110100001110
001110001011011100
000011010111100100
101011110110001101
100010110111001010
110110000010010011
111101100011011000
010111000110001101
100000100100110101
111110111111010101
110001001010001111
000010100011111111
101111110101010010
010011001110101101
110101011110010000
010111100100000100
110011100101101100
011001011011000011
001100010010010011
000100100100110110
图4.2.3.15
Integer to Bit Converter模块输出数据每一行的二进制比特数据即是将General Block Interleaver模块每个十进制数变换为二进制数而已。其计算方法从略。
利用scope模块来观察的各个模块的输出波形见下图:
波形的输出顺序为,从上至下:Repeat模块输出数据、Matrix交织器输出数据、Bit to Integer Converter模块输出数据、General Block Interleaver模块输出数据、Integer to Bit Converter模块输出数据
图
图4.2.3.16
4.2.4 沃尔什调制器输出与长码输出及其异或验证
模块参数设置及参数设置说明如下:
图4.2.4.1 Walsh正交编码调制器设置
Walsh order:是指沃尔什调制器的输入,用每6个比特的二进制数据来选取Walsh正交符号集中的某一行符号,且任何一行的数据符号的个数均为64个。其简单计算公式为
,具体原理见沃尔什函数部分。
Input vector length:是指输入的数据长度。从块交织器输出的数据长度为576个二进制比特,所以这里的设置为32×18=576。
4.2.4.2双极性向单极性转换模块设置
M-ary number:是指数据序列的进制数,由于,在本仿真的过程中,我们所用的数据均为二进制数据序列,故将此设置为2。
Polarity:由于Walsh调制器输出的数据是双极性的二进制序列,而长码产生的码序列是单极性的,为了两者匹配,我们就用极性变换来使达到目的。在极性变换中,“1”=>“-1”,”0”=>”1”,所以,将这里的参数设置为Negative.
图4.2.4.3 Buffer模块设置
Output buffer size(per channel):为了使异或模块前Walsh调制器的输出码序列大小和长码产生器输出码序列大小相同,我们同时将两出的模块输出码序列大小设置为4。
图4.2.4.4长码产生器设置
Output frame size:同4.2.3.3设置说明。
Sample time:为了保持帧在整个仿真中的大小不变和满足设计的需要,我们这里也继承前面的模块设置,将抽样时间设置为20/1000/80。
图4.2.4.5异或模块参数设置
仿真数据验证:
参考前面的块交织器输出的前6位比特数据,可以知道,前6位比特数据为:101001。运用公式
计算可得i=37,也即,Walsh调制器输出的码序列为Walsh正交符号集中的第37行数据码序列。查表知该行码序列为:0101 1010 0101 1010 0101 1010 0101 1010 1010 0101 1010 0101 1010 0101 1010 0101。对照仿真输出数据,见图4.2.3.6和图 4.2.3.7所示。图4.2.3.6所示的是Walsh调制器输出的双极性码,图 4.2.3.7所示的是双极性码变换后的单极性码。由两图可以知道,我们的仿真与理论完全吻合。当然,这里只是验证了,块交织器输出的前6位码序列,其他码序列的验证方法同这里一样,这里不再重复。
Walsh调制器输出数据 Bipolar toUnipolarConverter的输出数据
图4.2.4.6 图 4.2.4.7
长码异或处验证:
图4.2.4.8
Buffer模块的输出(双极性) Bipolar toUnipolarConverter的输出数据
图4.2.4.9 图4.2.4.10
长码产生器输出 异或输出
图4.2.4.11 图4.2.4.12
由于,buffer 模块输出的数据是双极性的,经过映射后,我们得到单极性的数据,映射方法是:“1”=>“-1”,“0”=>“1”,由于buffer模块输出的数据为全“1”,所以,经过极性变换后的数据应该为全“0”。对图4.2.3.9和图4.2.3.10的读值可以知道,数据符合理论。Bipolar toUnipolarConverter的输出数据和长码产生器输出经过异或输出,即得异或模块输出数据,分析知道,数据正确。
通过对上面的每个模块的输出数据进行对比分析可以知道,我们的设置与仿真是正确的。
4.2.5 I路和Q路的输出验证与分析
仿真连接图:
图4.2.5.1仿真连接
其中,Subsystem模块是由前面所有的模块构成的。
模块的设置:
图4.2.5.2 I路短码产生模块设置 图4.2.5.3 Q路短码产生模块设置
I路短码产生模块设置说明:根据2.7部分的I路短码生成多项式
,我们可以得到I路的 Generator polynomial的值为:1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1。为了保持帧的大小和每帧的抽样数相同,我们将Sample time 和Samples per frame 的值设置与前面的一样,即:分别为20/1000/80s 和4。
Q路短码产生模块设置模块说明:同样根据2.7部分的Q路生成多项式
,我们可以得到Q路的Generator polynomial的值为1 0 1 1 1 0 0 0 1 1 1 1 0 0 1。其他设置说明同I路模块。
图4.2.5.4 1/2延时模块的设置
设置说明:该模块的目的是将Q路的信号延时1/2个码片,形成OQPSK调制和正交分集。1/2码片大小计算方式为:由于Q路的数据速率为1.2288Mcps,所以整个码片的时长为
,1/2码片长为
,也409.6ns。
仿真数据验证:
Subsystem的输出数据 I路短码产生器输出 I路异或输出
图4.2.5.5 Subsystem读值 图4.2.5.6 iPN读值 图4.2.5.7 iXOR读值
Q路短码产生器输出 Q路异或输出 延时模块输出
图4.2.5.8 qPN读值 图4.2.5.9 qXOR读值 图4.2.5.10 delay读值
I路Double输出 Q路Double输出
图4.2.5.11 iDouble读值 图4.2.5.12 qDouble读值
I路输出 Q路输出
图4.2.5.13 iOUT 图4.2.5.14 qOUT读值
分析说明:
由于,我们设置的数据均是每4个二进制数据输出,所以,这里观察到的数据均是4个二进制形式的。
I路异或输出的值是Subsystem的输出数据和I路短码产生器输出的异或,对图4.2.4.5 Subsystem读值、图4.2.4.6 iPN读值和图4.2.4.7 iXOR读值的数据分析,我们可以发现,数据符合。同理可以验证Q路异或输出数据是正确的。Q路延时模块输出的数据是Q路异或输出数据经过延时半个短码片而得到的,所以,数据变换为半个码片后的数据。使用Double模块的目的是为了使Unipolar to Bipolar Converter模块的输入数据按照该模块的要求达到匹配,即:数据类型为“unit8”,而Double模块的作用正是使输入信号转换为符合要求的数据类型。最后,为了使输出数据映射为双极性类型的数据,我们将这里的数据,经过极性变换而得到。
5 经验总结
在这个学期里,通过对CDMA通信系统相关知识和MATLAB中的SIMULINK部分的学习,使我在通信知识方面和MATLAB的软件应用方面有了很大的提高,对处理事情的方法也有所提高。
由于本次的设计是选择CDMA通信的反向接入信道作为课题的,该信道涉及到新的知识点很多,都需要自己去学习。刚开始的时候感觉是无从下手,原因在于:自己对基本理论和MATLAB软件的不熟悉,所思考的处理方式方向根本就不对,导致白白地浪费了很长的一段时间,什么结果也没有出来。不过在老师和同学的帮助下,我还是及时地确定了正确的学习方向。所以,我认为,在做自己不是很了解的方向的课题时,最好还是,先花一定的时间来确定处理事件的方法和方向还是必要的。
这次课题是用软件来对接入信道进行仿真,方法在该软件里有三种,我选择的是是用里面的模块库中的模块来构建、分析和仿真的。软件的仿真,尤其是使用里面的模块来构建,我们首先应该对该模块很熟悉,这样才能很好的对模块予以运用,但对我们刚刚接触该知识的人来说,这一点我们是缺乏的。因此,我们就需要充分利用软件本身的帮助优势来解决问题。同时,我们在遇到问题时,我们应该从该问题的入口处切入,“顺藤摸瓜”的形式来使问题的来源更清晰,从而更容易解决问题。例如:在这次仿真中,一开始,我们就不懂得运用Buffer模块,也不懂得从问题处切入,导致在长码和Walsh码异或时,出现数据宽度不匹配的问题,使用了很多的模块也解决不了,最后,在偶尔的机会时才用这个模块解决了问题。在后面,I路和Q路的数据输出前极性转换处也出现了问题,不过,我们利用前面的经验,很快就解决了问题。
因此,这次的毕业设计课题不仅使我学到了更多的知识,也使我学会更好地处理遇到的问题。
参考文献:
[1] Vijay K.Garg(美). 第三代移动通信系统原理与工程设计(于鹏等译)[M]. 北京:电子工业出版社,2001:1~102.
[2] Man Young Rhee(韩). CDMA蜂窝移动通信系统与网络安全 (袁超伟等译) [M]. 北京:电子工业出版社,2002:1~122.
[3] Theodore S.Rappaport(美). 无线通信原理与应用(蔡涛等译) [M].北京:电子工业出版社,1999:1~388.
[4] 王兴亮. 数字通信原理与技术[M]. 西安:西安电子科技大学出版社,2001:13~148
[5] Lee.J.S、Miller.L.E(美). CDMA系统工程手册(许希彬)[M]. 北京:电子工业出版社,2001:206~243.
[6] 邬国扬. CDMA数字蜂窝网[M]. 西安:西安电子科技大学出版社,2000:45~52.
[7] 王立宁,乐光新,詹菲. MATLAB与通信仿真[M]. 北京:人民邮电出版社,2000:243~264.
[8] 张森,张正亮. MATLAB仿真技术与实例应用教程[M]. 北京:机械工业出版社,2004:120~163.
[9] 韩利竹,王华. MATLAB电子仿真与应用[M]. 北京:国防工业出版社,2003:123~166.
[10] 邱晓琳,李天柁,弟宇鸣. 基于MATLAB的动态仿真模型与系统仿真工具——Simulink 3.0/4.x[M]. 西安:西安交通大学出版社,2003:1~130.