基于matlab的simulink的cdma系统多用户仿真要点
基于MATLAB的CDMA系统仿真分析
基于MATLAB的CDMA系统仿真分析【摘要】本设计基于MATLAB仿真软件,完整地实现了CDMA通信系统的建模、仿真和分析过程错误!未找到引用源。
;仿真系统包括了CDMA编码技术、扩频技术、调制技术、信道传输以及解调恢复技术等各个功能模块。
全面的介绍了整个CDMA通信系统的工作原理和工作方式,并介绍了各个模块的参数设置;文章内容包括CDMA的发展现状以及发展趋势、CDMA通信系统的技术优势和应用领域,从而说明CDMA通信系统在的研究价值和潜力。
同时,本文也通过举例简单介绍了MATLAB软件,对用于实现系统模块功能的MATLAB仿真语句有了进一步的了解。
MATLAB软件功能齐全,操作简单,应用广泛。
通过本次设计得出,CDMA系统的抗干扰能力强,单用户的情况下,即使在各种人为和物理噪声的干扰下,依旧可以准确接收到数据。
【关键词】CDMA,MATLAB,仿真,通信系统Analysis of CDMA System Simulation Based on MATLAB【Abstract】Thi s thesis is based on the simulation function of the MATLAB software, using MATLAB language to carry out the modeling, simulation, and analysis of the CDMA communication system. At the same time, the important parts of communication system are introduced in detail, including coding, spread spectrum, decoding, modulation and channel transmission, etc. This thesis also refers to the condition, advantages and development of CDMA system to show its potential and value for research. What’s more, the thesis also using an example to give a brief introduction of the simulation platform of MATLAB software, it is such a powerful, easy operating software that is widely used in many fields. This simulation platform displays the superiority of CDMA effectively, and the result shows that CDMA can receive the accurately data even in a big noise.【Key words】Code Division Multiple Access, communication system, MATLAB, simulation目录第一章绪论 (1)1.1 CDMA的研究背景 (1)1.2 CDMA的发展趋势 (1)1.2.1 CDMA的发展现状 (1)1.2.2 CDMA的发展趋势 (2)1.3 CDMA的研究目的 (3)1.3.1 研究目的 (3)1.3.2 研究思路 (4)第二章 CDMA技术原理 (6)2.1 CDMA 基本模型 (6)2.1.1 卷积编码 (6)2.1.2 交织编码 (7)2.1.3 伪随机码 (7)2.1.4 扩频序列 (8)2.1.5 信号调制 (10)2.1.6 信号解调 (11)2.1.7 维特比译码 (12)2.2 CDMA的技术特点 (12)2.3 CDMA的主要应用优势 (13)第三章 CDMA系统仿真分析 (14)3.1 MATLAB的简介 (14)3.2 调试结果 (15)3.2.1 原始序列 (16)3.2.2 维特比编码序列 (17)3.2.3 交织编码序列 (18)3.2.4 加扰码序列 (19)3.2.5 扩频调制序列 (20)3.2.6 加噪信号 (22)3.2.7 解扩频得到的信号 (24)3.2.8 解扰解交织得到的信号 (24)3.2.9 恢复序列 (25)3.2.10 误码率 (26)3.3仿真结果 (27)总结 (30)参考文献 (31)致谢........................................................ 错误!未定义书签。
基于Simulink的CDMA通信系统原理仿真
作者简介:张志德,助教,工作单位为南方医科大学生物医学工程学院电子 技术系,主要研究方向为通信技术,已发表论文数篇。
[责任编辑:张慧]
图 5 信号源与解调信号波形图
●
(上接第 523 页)3.4 加强政策引导, 创造良好的旅游商品发展环 境
改变大多旅游商品发展的落后观念,就要创造良好的旅游商品生 产研发、销售服务环境。 利用各级政府和旅游行政管理部门的调控职 能,制订发展旅游商品的战略与方针,提供旅游商品市场的公共情报 信息,建立政策、资金、人才等方面的扶持体系。
0.引 言 随着社会的进步、经济和科技的发展,当今世界已进入信息时代。 人们对通信的要求越来越高,这促进了移动通信的发展。 目前使用的 第二代移动通信系统的缺陷逐步明显,如全球漫游、容量问题、频谱问
题、支持宽带业务问题等。 用户迫切希望通信界能够在短时间内提供 一种真正意义上的全球覆盖、提供更宽的带宽、更灵活的业务,并且使 终端能够在不同的网络间无缝漫游的系统,以取代第一代和第二代移 动通信系统。 作为第三代移动通信系统核心的 CDMA 系统,成为了当 前研究工作领域的热点[1]。 Matlab 语言中的 Simulink 动态仿真软件已 逐渐成为各种通信系统分析、设计、仿真和实验的综合平台。 本文借助 Simulink 仿真软件对 CDMA 通信系统原理进行了仿真[2]。
【 关 键 词 】CDMA ;Simulink ; 仿 真 ; 通 信 系 统 Performance Analysis of Digital Modulation System By Simulink ZHANG Zhi-de FENG Chun-miao LIN Lin
(College of Biomedical Engineering,Southern Medical University,Guangdong,Guangzhou,510515,China) 【Abstract】Simulink simulation software for the use of CDMA communication system simulation, the base-band signal sources and the adoption of CDMA communication system to receive the time signal waveform diagram. Simulation results show that in the absence of background noise, at the receiving end be able to restore the integrity of the various signal, in order to achieve multiplexing CDMA communication system. CDMA communication system proves the correctness of simulation model. 【Key words】CDMA;Simulink;Simulation;Communication system
MATLABSimulink模型建立与仿真指南
MATLABSimulink模型建立与仿真指南第一章:MATLAB与Simulink简介MATLAB是一种高级的数值计算和科学分析的编程语言,由MathWorks开发。
它提供了强大的数学函数库和绘图工具,使得用户可以进行复杂的数值计算和数据可视化。
Simulink是MATLAB的扩展,是一种用于建立和仿真动态系统的图形化环境。
在MATLAB中,用户可以通过命令行或脚本文件进行计算。
而在Simulink中,用户可以利用图形化界面来搭建系统模型,并进行仿真。
Simulink提供了丰富的预置模块库,用户只需将这些模块连接起来,即可构建复杂的系统模型。
第二章:Simulink模型的基本组成Simulink模型由多个部分组成,包括输入信号、输出信号和系统组件。
输入信号可以是手动输入的常数,也可以是来自其他模型的信号。
输出信号是用户对系统模型感兴趣的结果。
系统组件即模型中的各个模块,这些模块可以完成各种功能,如乘法、滤波、逻辑运算等。
第三章:模型建立与仿真流程1. 确定系统模型的目标和需求:在建立模型之前,需要明确系统模型的目标和需求。
这些可能包括系统的输入输出关系、稳定性要求、性能要求等。
2. 模型建立:根据系统的目标和需求,选择合适的系统组件,并将其连接起来,构建系统模型。
可根据需要进行参数设置,以适应不同的场景。
3. 仿真设置:在进行仿真之前,需要设置仿真参数。
这些包括仿真时间、仿真步长等。
仿真时间指定了仿真的时间范围,仿真步长指定了仿真的时间间隔。
4. 仿真运行:设置好仿真参数后,可以运行仿真。
Simulink将逐步模拟系统的行为,并输出仿真结果。
第四章:Simulink模型调试与优化在进行仿真时,可能会发现模型存在问题,如输出不符合预期、系统不稳定等。
这时需要对模型进行调试和优化。
1. 系统调试:可以通过数据观察、信号域分析等方法,定位系统问题。
更换输入信号、输出信号,或调整模型参数,可以帮助发现问题。
第10章 CDMA系统仿真 [详解MATLAB_Simulink通信系统建模与仿真]
本章内容
10.1 扩频通信基本原理
• 10.1.1 理论基础 • 10.1.2 扩频通信系统的分类 • 10.1.3 扩频通信的重要参数
10.2 扩频码序列
• 10.2.1 m序列 • 10.2.2 Gold序列
10.3 直接序列扩频通信系统仿真 10.4 cdma 2000通信系统的仿真
10.4.2 cdma2000系统的物理层相关 技术
编码技术:前向链路采用卷积码或Turbo码来 作为前向差错控制
交织技术
扩频码:PN码、Walsh码和准正交函数
前向链路复扩频
复扩频
I
Walsh码
Q
PNI PNQ
+
-
+
-
基带 滤波器
基带 滤波器
I
+ cos 2 fct
在cdma 2000系统中,前向信道和反向信道可以采用多种 传输速率和帧长,这些传输速率和帧长可以划分成不同的 无线配置。cdma 2000前向信道共有9种无线配置(RC) 方式。其中前向链路RC1和RC2是分别对应于IS-95中的两 种传输速率。RC3~RC5对应cdma 2000 1x,RC6~RC9 则对应cdma 2000 3x。
数据输出
+
Q
sin 2 fct
10.4.3 前向基本信道简介
前向基本信道属于前向业务信道,用于给一个指定的基站传 输用户和信令的信息,每一个前向业务信道占用一个前向基 本信道。除配置为RC1和RC2时F-FCH的帧长应为20ms外, 其余7种配置下F-FCH的帧长都有5ms和20ms2种选择。数 据速率和帧长的变化范围都必须以帧为单位,即后一帧和前 一帧的数据速率和帧长可以不一样,但在一帧之内必须是保 持不变的。尽管各帧之间的数据速率可以变化,但调制符号 速率(交织器输入端)必须保持为一个常数,这一点是通过 对不大于7.2kbps的数据速率进行码重复而实现的。前向基 本信道工作在RC1时,传输信息的可变速率有9600,4800, 2400和1200bps,当工作在RC3、RC4、RC6和RC7时,可 变数据速率有9600,4800,2700和1500bps。
详解MATLAB/SIMULINK 通信系统建模与仿真资料
本章内容
1.1 MATLAB简介 1.2 MATLAB程序设计 1.3 通信系统仿真
1.1 MATLAB简介
● 数值计算和符号计算功能 ● 具有很好的图形功能 ● 可以直接处理声言和图像文件 ● 具有功能强大的工具箱 ● 使用方便,具有很好的扩展功能 ● Simulink
1.2.2 MATLAB的帮助系统
● 查看命令或函数帮助 ● 联机帮助系统 ● PDF文件帮助系统 ● MATLAB网络资源
1.2.3 MATLAB的基本操作
数据类型
• (1)变量与赋值 • (2)变量的删除与修改 • (3)局部变量和全局变量
矩阵
• (1) 一般矩阵的生成 • (2)特殊矩阵的生成
1.2.5.5 用户参数交互输入
input函数用于向计算机输入一个参数 pause函数暂停程序的执行 disp函数是向命令窗口输出提示信息
1.2.6 文件操作
文件的打开与关闭
• fopen函数 、fclose函数
文件的读写操作
• fread 、fwrite 、fscanf 、fprintf
矩阵运算
1.2.4 MATLAB图形处理和数据可视化
plot函数
subplot函数 多图形窗口 hold命令 对数坐标图形
1.2.5 M文件编程
M脚本文件 函数文件 函数调用和参数传递 matlab的程序结构 用户参数交互输入
1.2.5.1 M脚本文件
1.2.5.4 matlab的程序结构
顺序结构 — 依次顺序执行程序的各条语句 循环结构 — 被重复执行的一组语句,循环是 计算机解决问题的主要手段。 分支结构 — 根据一定条件来执行的各条语句。
基于matlab的simulink的cdma系统多用户仿真要点
基于 Matlab 的 Simulink 的 CDMA 系统多用户仿真要点简介CDMA(Code Division Multiple Access)是一种数字无线通信技术,其中多个用户在同一频带上传输数据,每个用户使用唯一的编码序列来区分其他用户的信息。
在CDMA系统中,使用扩频技术将数据编码成宽带信号,然后使用独立的编码序列将它们混合在一起,并在接收端进行解码以恢复原始数据,因此CDMA技术可以提供更高的信道容量。
通过使用基于 Matlab 的 Simulink,可以方便地进行CDMA系统的仿真,并对多个用户进行仿真,以评估系统性能。
要点1. CDMA系统的建模在CDMA系统的仿真过程中,需要首先建立系统模型。
我们可以使用 Simulink 中的 Signal Processing Blockset 来实现CDMA系统模型的建模。
Signal Processing Blockset 中包含了各种信号处理模块,包括滤波器、混合器和解扰器等等,这些模块可以用来构建CDMA系统的传输通道。
2. 多用户仿真在CDMA系统中,多个用户可以同时传输数据,因此我们需要对多个用户进行仿真,并分别评估其性能。
为了实现这个目标,我们可以使用 Signal Processing Blockset 中的 Multiport Switch 模块,将多个用户的数据流合并成一个流,然后通过解码器对其进行解码。
在这个过程中,我们可以使用不同的编码序列对每个用户进行编码,以确保数据的安全性。
3. 性能评估在CDMA系统中,我们可以通过 BER(Bit Error Rate)来评估系统的性能。
在仿真过程中,我们可以通过向系统中注入固定数量的错误比特,并计算接收端出现错误的比特数量来计算BER。
通过多次仿真,可以评估不同编码序列、码元速率、信噪比等因素对系统性能的影响。
在本篇文档中,我们介绍了基于 Matlab 的 Simulink 的 CDMA 系统多用户仿真的要点。
学习使用MATLABSimulink进行系统仿真
学习使用MATLABSimulink进行系统仿真【第一章:引言】在如今数字化时代,仿真已成为系统设计与优化的重要工具。
系统仿真能够帮助工程师在产品开发的早期阶段快速验证设计,预测产品性能,并提供有关系统行为的深入洞察。
由于其易用性和广泛应用领域,MATLABSimulink成为了工程界最受欢迎的仿真工具之一。
本文将介绍如何学习使用MATLABSimulink进行系统仿真,并强调其专业性。
【第二章:MATLABSimulink概览】MATLABSimulink是一个具有图形化界面的仿真环境,可用于建模、仿真和分析各种复杂动态系统。
它使用块状图形表示系统的组成部分,并通过连接输入和输出端口模拟系统的行为。
用户可以通过简单拖拽和连接块状元件来构建仿真模型,并通过调整参数和设置仿真参数来进行模拟分析。
【第三章:基本建模技巧】在使用MATLABSimulink进行系统仿真之前,掌握基本的建模技巧至关重要。
首先,需要熟悉各种块状元件的功能和用途,例如传感器、执行器、逻辑运算器等。
其次,理解信号流和数据流的概念,以及如何在模型中正确地引导信号传递和数据流动。
最后,学习使用条件语句、循环语句等控制结构来实现特定的仿真逻辑。
【第四章:系统模型的构建】在使用MATLABSimulink进行系统仿真时,首先需要根据实际系统的需求和特点进行系统模型的构建。
这包括确定系统的输入和输出,以及分析系统的功能和性能要求。
然后,使用块状元件将系统的各个组成部分建模,并建立各个组件之间的联系和依赖关系。
在构建模型的过程中,要注意选择恰当的块状元件和参数设置,以确保模型的合理性和可靠性。
【第五章:仿真参数设置与分析】为了获得准确且可靠的仿真结果,需要合理设置仿真参数。
常见的仿真参数包括仿真时间、步长和求解器类型等。
仿真时间应根据系统的实际运行时间确定,步长要足够小以保证仿真的精度,而求解器类型则根据系统的特点选择。
完成仿真后,还需要对仿真结果进行分析,以评估系统的性能和进行优化调整。
-基于MATLAB的多用户CDMA通信系统设计与仿真
设计题目:基于MATLAB的多用户CDMA通信系统设计与仿真摘要随着科技的不断发展以及人们生活水平的不断提高,人们对于移动通信的需求不断增长,本文设计了目前流行的CDMA系统,可实现数字信号的扩频解扩与调制解制。
本文设计的系统分为单用户通信和多用户通信,二者所用的调制方式不完全相同。
以单用户为例,在系统的信源处产生一个数字信号序列,然后对其进行WALSH 码扩频,再对扩频码进行调制,然后在信道中加入噪声,最后实现解扩和解调。
在本文的最后还对整个CDMA系统进行了优化,设计了其外观界面,将调制方式和原理框图联系到一起,很好的实现了整个CDMA系统的仿真。
关键词:CDMA;扩频;PSK;QPSK;仿真;ABSTRACTWith the continuous development of science and technology and people's standard of living continues to improve, the demamd of mobile communication for people grows continuously, This paper describes the design of the current epidemic of CDMA systems, digital signal spread spectrum modulation and dispreading system solutions. This paper describes the design of the system which is divided into single-user and multi-user communication communication. Two kinds of modulation used in the different ways. A single-user example, the source of the system creats a Department of digital signal sequence, and the system achieve its spread spectrum with WALSH code,then modulates the code of spread spectrum, then joined the channel noise,in the end, peforms the solution to expand and demodulation. At last,in this paper the entire CDMA system optimized design of the interface appearance,makes Modulation and block diagram linked together, achieves good of the whole CDMA System Simulation.Keywords:CDMA; Spread spectrum; PSK;QPSK ; Simulation目录1 绪论 (11.1CDMA发展史 (11.2CDMA的优点及应用前景 (21.3论文结构及课题研究内容 (52 CDMA系统的总体设计思路 (7 2.1系统总体设计结构 (72.2系统的实现原理 (73 系统的相关原理及设计过程 (10 3.1MATLAB简介及仿真方法 (10 3.1.1 MATLAB介绍 (103.1.2 仿真方法论 (133.2扩频技术及其仿真实现 (15 3.2.1扩频技术简介 (163.2.2 扩频的仿真实现 (183.3PSK调制解调与仿真实现 (21 3.3.1 PSK调制解调原理 (213.3.2 PSK的仿真实现 (223.4QPSK调制解调及仿真实现 (24 3.4.1 QPSK调制解调原理 (253.4.2 QPSK的仿真实现 (263.5多用户CDMA通信 (303.5.1 DPSK调制解调原理 (303.5.1 多用户DPSK仿真实现 (314 外观界面设计 (344.1GUI (344.1.1 GUI和GUIDE (344.1.2 使用GUIDE创建GUI界面 (364.2主题界面设计流程 (384.2.1 仿真原理图的设计 (384.2.2 系统界面设计流程 (394.3回调函数 (404.3.1 回调函数原型 (404.3.2 回调函数编程实现各界面互联 (415 总结与展望 (435.1系统不足与改进 (435.2系统升级及展望 (43致谢.............................................. 错误!未定义书签。
Matlab-Simulink仿真教程说课讲解
第九章 Simulink动态仿真
a) 启动Simulink ① 用鼠标右键点击Simulink菜单项,则弹出一菜单条,点击该菜单 条即弹出该子库的标准模块窗口.如单击左图中的【Sinks】,出现 “Open the ‘Sinks’Library”菜单条,单击该菜单条,则弹出右图所 示的该子库的标准模块窗口。
2. Sinks 库
该库包含了显示和写模块输出的 模块。双击 即弹出该库的模 块图:
①
:数字表,显示指定模
块的输出数值。
②
:X-Y绘图仪用同一图形窗
口,显示X-Y坐标的图形(需先在
参数对话框中设置每个坐标的变
化范围),当X、Y分别为正、余
弦信号时,其显示图形如下:
第九章 Simulink动态仿真
仿真技术
➢ 本章主要介绍Simulink的基本功能和基本操作方法,并 通过举例介绍如何利用Simulink进行系统建模和仿真。
仿真技术
第九章 Simulink动态仿真
第九章 Simulink动态仿真
9.1 Simulink 基本操作 利用Simulink进行系统仿真的步骤是: ① 启动Simulink,打开Simulink模块库 ② 打开空白模型窗口; ③ 建立Smulink仿真模型; ④ 设置仿真参数,进行仿真; ⑤ 输出仿真结果。
第九章 Simulink动态仿真
仿真技术
仿真技术
第九章 Simulink动态仿真
9.1.2 建立Simulink仿真模型
f) 模块的连接
模块之间的连接是用连接线将一个模块的输出端与另一模块 的输入端连接起来;也可用分支线把一个模块的输出端与几 个模块的输入端连接起来。
连接线生成是将鼠标置于某模块的输出端口(显一个十字光 标) ,按下鼠标左键拖动鼠标置另一模块的输入端口即可。 分支线则是将鼠标置于分支点,按下鼠标右键,其余同上。
基于matlab simulink的系统仿真技术与应用
基于matlab simulink的系统仿真技术与应用
Matlab Simulink是一种用于仿真和分析各种复杂系统的建模仿真工具,它采用对象模型方法和图形化界面,极大地方便了工程师的仿真设计分析过程。
其电子工程仿真应用特别广泛,既可以模拟模型上的电路,还可以处理控制系统、数字系统、仿真信号、信号处理、通信系统及某些特定的设备系统,甚至可以构建一个模拟环境来建立系统对象、以模型象征性描述,进行逼真的仿真及调试。
Simulink仿真技术结合Matlab编程语言可用于系统建模实现,用于分析和仿真不同层次的复杂系统,有助于更好的理解的系统的构成和行为,为系统优化和综合设计提供帮助,并可以更好的准确地预测系统行为。
Simulink技术主要用于汽车控制、航空航天、船舶航行、航天实验、发动机控制、电力传输、机械系统、自动化控制、机器人控制等多个领域。
MATLABSimulink仿真(最精简)
Format--Foreground Color改模块前景 颜色;
Format--Background Color改模块背景 颜色;
Format-- Screen Color改模型窗口的颜 色。
19
8.3.3 simulink功能模块的处理
8.参数设定:双击模块, 从而对模块进行参 数设定。 9.属性设定:选中模块,Edit--Block Properties
1.将仿真结果信号输入到输出模块
(1)“Scope”示波器
(2)“XY Graph”二维X-Y图形显示器
(3)“Display”数字显示器中,直接查看。
34
6.5 观察Simulink的仿真结果
2.将仿真结果信号输入到“To Workspace”模
块中,再用绘图命令在MATLAB命令窗口里
绘制出图形。
8
8.3.1 SIMULINK的模块库
1. 常用元件模块
9
8.3.1 SIMULINK的模块库
2. 连续模块
10
8.3.1 SIMULINK的模块库
3. 离散模块
11
8.3.1 SIMULINK的模块库
4. 数学模块
12
8.3.1 SIMULINK的模块库
5.输入源模块
13
8.3.2 simulink模型的建立
本章目标
了解Simulink基本模块的性质
掌握系统仿真的方法
1
主要内容
8.1 Simulink与系统仿真
8.2 Simulink的使用 8.3 Simulink的基本模块 8.4 功能模块的处理 8.5 设置仿真参数
8.6 观察Simulink的仿真结果
【matlab算法仿真编程】基于MATLAB的码分多址复用技术的仿真
第二章 CDMA基本原理CDMA技术的基础是扩频通信。
扩频:用来传输信息的信号带宽远远大于信息本身带宽的一种传输方式,频带的扩展由独立于信息的扩频码来实现,与所传信息数据无关,在接收端用同步接收实现解扩和数据恢复。
如图2-1,我们可以知道CDMA 系统的基本原理和TDMA、FDMA的区别。
图2-1 CDMA、TDMA、FDMA比较扩频通信的理论基础就是著名的香农定理: (1)这个公式表明,在高斯信道中当传输系统的信号噪声功率比S/N下降时,可用增加系统传输带宽W的办法来保持信道容量C不变。
对于任意给定的信号噪声功率比,可以用增大传输带宽来获得较低的信息差错率。
正因为这个原因,扩频通信具有比较强的抗噪声干扰的能力。
CDMA技术是以扩频通信为基础的载波调制和多址接入技术,所以如何实现扩频部分对于整个CDMA系统的实现有着重要的影响。
2.1 CDMA系统的关键技术扩频技术是CDMA系统的基础,在扩频系统中,常使用伪随机码来扩展频谱,伪随机码的特性,如编码类型、长度、速度等在很大程度上决定了扩频系统的性能,如抗干扰能力、多址能力、码捕获时间。
因此要实现扩频部分,关键就是如何选择一个比较好的方法来实现PN码产生器。
而实现PN码产生器的难点就是实现其同步,即在接收端进行解扩所用的PN码和接收到的信号在发送时所用的PN码是同步的,这是扩频技术中的难点。
CDMA系统要求接收机的本地伪随机码与接收到的PN码在结构、频率和相位上完全一致,否则就不能正常接收所发送的信息,接收到的只是一片噪声。
若实现了收发同步但不能保持同步,也无法准确可靠地获取所发送的信息数据。
因此,PN码序列的同步是CDMA通信扩频模块的关键技术。
但是要真正成为一种商业应用的通信系统,还有很多技术问题需要解决,本文暂不做考虑。
所有CDMA类型都使用扩频过程增益来允许接受者部分衰减非期望信号。
具有期望扩频码的信号和定时被接受,如果信号有不同的扩频码(或者相同扩频码但是不同的时间偏移)将被过程增益认为随机噪声衰减掉。
基于MATLAB的CDMA系统仿真
基于MATLAB的CDMA系统仿真姓名:班级:学号:指导老师:日期:作业要求1.分析附录的源程序,逐行给出中文注释,并分析仿真结果。
2.按照下列框图设计一个CDMA系统,并进行仿真。
1.分析附录的源程序,逐行给出中文注释,并分析仿真结果。
%main_IS95_forward.m%此函数用于IS-95前向链路系统的仿真,包括扩%频调制,匹配滤波,RAKE接收等相关通信模块。
%仿真环境: 加性高斯白噪声信道.%数据速率= 9600 KBps%clear allclose allclcdisp('--------------start-------------------');global Zi Zq Zs show R Gi Gqclear j;show = 0; %控制程序运行中的显示SD = 0; % 选择软/硬判决接收%-------------------主要的仿真参数设置------------------BitRate = 9600; %比特率ChipRate = 1228800; %码片速率N = 184; %源数据数MFType = 1; % 匹配滤波器类型--升余弦R = 5;%+++++++++++++++++++Viterbi生成多项式++++++++++++++++++G_Vit = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];%Viterbi生成多项式矩阵K = size(G_Vit, 2); %列数L = size(G_Vit, 1); %行数%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++++++Walsh矩阵++++++++++++++++++++++++ WLen = 64; %walsh码的长度Walsh = reshape([1;0]*ones(1, WLen/2), WLen , 1); %32个1 0行%Walsh = zeros(WLen ,1);%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++扩频调制PN码的生成多项式++++++++++++++%Gi = [ 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1]';%Gq = [ 1 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1]';Gi_ind = [15, 13, 9, 8, 7, 5, 0]'; %i路PN码生成多项式参数Gq_ind = [15, 12, 11, 10, 6, 5, 4, 3, 0]'; %q路PN码生成多项式参数Gi = zeros(16, 1); %16×1的0矩阵Gi(16-Gi_ind) = ones(size(Gi_ind));%根据Gi_ind配置i路PN码生成多项式Zi = [zeros(length(Gi)-1, 1); 1];% I路信道PN码生成器的初始状态Gq = zeros(16, 1); %16×1的0矩阵Gq(16-Gq_ind) = ones(size(Gq_ind)); %根据Gq_ind配置q路PN码生成多项式Zq = [zeros(length(Gq)-1, 1); 1];% Q路信道PN码生成器的初始状态%++++++++++++++++++++++++++++++++++++++++++++++++++++++%+++++++++++++++++++扰码生成多项式++++++++++++++++++++++Gs_ind = [42, 35, 33, 31, 27, 26, 25, 22, 21, 19, 18, 17, 16, 10, 7, 6, 5, 3, 2, 1, 0]'; Gs = zeros(43, 1); %43×1的0矩阵Gs(43-Gs_ind) = ones(size(Gs_ind)); %根据Gs_ind配置扰码生成多项式Zs = [zeros(length(Gs)-1, 1); 1];% 长序列生成器的初始状态%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++++++AWGN信道++++++++++++++++++++++++ EbEc = 10*log10(ChipRate/BitRate);%处理增益EbEcVit = 10*log10(L);EbNo = [-2 : 0.5 : 6.5]; %仿真信噪比范围(dB)%EbNo = [-2 : 0.5 : -1.5];%++++++++++++++++++++++++++++++++++++++++++++++++++++++%------------------------------------------------------%-------------------------主程序-------------------------ErrorsB = []; ErrorsC = []; NN = [];if (SD == 1) % 判断软/硬判决接收fprintf('\n SOFT Decision Viterbi Decoder\n\n');elsefprintf('\n HARD Decision Viterbi Decoder\n\n');endfor i=1:length(EbNo) %根据EbNo多次运行fprintf('\nProcessing %1.1f (dB)', EbNo(i));%输出当前EbNo值iter = 0; ErrB = 0; ErrC = 0;while (ErrB <300) & (iter <150)drawnow;%++++++++++++++++++++++发射机+++++++++++++++++++++++TxData = (randn(N, 1)>0);%生成源数据% 速率为19.2Kcps[TxChips, Scrambler] = PacketBuilder(TxData, G_Vit, Gs); %产生IS-95前向链路系统的发送数据包% 速率为1.2288Mcps[x PN MF] = Modulator(TxChips, MFType, Walsh);%实现IS-95前向链路系统的数据调制%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++++++++信道+++++++++++++++++++++++++++noise = 1/sqrt(2)*sqrt(R/2)*( randn(size(x)) + j*randn(size(x)))*10^(-(EbNo(i) - EbEc)/20);%生成噪声序列r = x+noise;%加入噪声%++++++++++++++++++++++++++++++++++++++++++++++++++++++%+++++++++++++++++++++++++接收机++++++++++++++++++++++++RxSD = Demodulator(r, PN, MF, Walsh); %软判决,速率为19.2 KcpsRxHD = (RxSD>0); % 定义接收码片的硬判决if (SD)[RxData Metric]= ReceiverSD(RxSD, G_Vit, Scrambler); %软判决else[RxData Metric]= ReceiverHD(RxHD, G_Vit, Scrambler); %硬判决end%++++++++++++++++++++++++++++++++++++++++++++++++++++++if(show)subplot(311); plot(RxSD, '-o'); title('Soft Decisions'); %软判决结果图subplot(312); plot(xor(TxChips, RxHD), '-o'); title('Chip Errors');%RAKE接收机输入符号与发送码相比出错的码subplot(313); plot(xor(TxData, RxData), '-o'); %硬判决接收机与发送数据相比的出错码title(['Data Bit Errors. Metric = ', num2str(Metric)]);pause;endif(mod(iter, 50)==0) %每50次保存一次fprintf('.');save TempResults ErrB ErrC N iter %保存结果endErrB = ErrB + sum(xor(RxData, TxData));%求出错比特数ErrC = ErrC + sum(xor(RxHD, TxChips)); %求出错码数iter = iter+ 1;%迭代次数endErrorsB = [ErrorsB; ErrB]; %存储各EbNo值下的出错比特数ErrorsC = [ErrorsC; ErrC]; %存储各EbNo值下的出错码数NN = [NN; N*iter]; %存储各EbNo值下的总数据码数目save SimData * %保存当前迭代的数据end%+++++++++++++++++++++++++误码率计算++++++++++++++++++++++++PerrB = ErrorsB./NN; %出错比特比例%PerrB1 = ErrorsB1./NN1;PerrC = ErrorsC./NN; %出错码比例Pbpsk= 1/2*erfc(sqrt(10.^(EbNo/10))); %EbNo的余误差PcVit= 1/2*erfc(sqrt(10.^((EbNo-EbEcVit)/10)));%EbNo-EbEcVit的余误差Pc = 1/2*erfc(sqrt(10.^((EbNo-EbEc)/10)));%EbNo-EbEc的余误差%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%+++++++++++++++++++++++++性能仿真显示++++++++++++++++++++++ figure;semilogy(EbNo(1:length(PerrB)), PerrB, 'b-*'); hold on;%信噪比误码率图% %semilogy(EbNo(1:length(PerrB1)), PerrB1, 'k-o'); hold on;% semilogy(EbNo(1:length(PerrC)), PerrC, 'b-o'); grid on;% semilogy(EbNo, Pbpsk, 'b-.^');% %semilogy(EbNo, PcVit, 'k-.x'); ylabel('BER');% semilogy(EbNo, Pc, 'b-.x');xlabel('信噪比/dB');ylabel('误码率');grid on;% legend('Pb of System (HD)', 'Pb of System (SD)', 'Pc before Viterbi of System',% ... 'Pb of BPSK with no Viterbi (theory)', 'Pc on Receiver (theory)');%% legend('Pb of System', 'Pc before Viterbi of System', ...%'Pb of BPSK with no Viterbi (theory)',%'Pc before Viterbi (theory)', 'Pc on Receiver (theory)');%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++disp('--------------end-------------------');%------------------------------------------------------% ************************beginning of file*****************************%PacketBuilder.mfunction [ChipsOut, Scrambler] = PacketBuilder(DataBits, G, Gs);%此函数用于产生IS-95前向链路系统的发送数据包%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% DataBits 发送数据(二进制形式)% G Viterbi编码生成多项式% Gs 长序列生成多项式(扰码生成多项式)% ChipsOut 输入到调制器的码序列(二进制形式)% Scrambler 扰码%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ global Zs %扰码状态K = size(G, 2); %维特比多项式的长度L = size(G, 1); %每个数据比特的码片数N = 64*L*(length(DataBits)+K-1);% 码片数(9.6 Kbps -> 1.288 Mbps)chips = VitEnc(G, [DataBits; zeros(K-1,1)]); % Viterbi编码% 交织编码INTERL = reshape(chips, 24, 16); % IN:列, OUT:行chips = reshape(INTERL', length(chips), 1); %速率=19.2 KBps% 产生扰码[LongSeq Zs] = PNGen(Gs, Zs, N);%根据生成多项式和输入状态产生长度为N的PN序列Scrambler = LongSeq(1:64:end);%扰码ChipsOut = xor(chips, Scrambler); %加扰%************************end of file***********************************% ************************beginning of file*****************************%VitEnc.mfunction y = VitEnc(G, x);% 此函数根据生成多项式进行Viterbi编码%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式的矩阵% x 输入数据(二进制形式)% y Viterbi编码输出序列%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++K = size(G, 1); %每个数据比特的码片数L = length(x); %输入数据的长度yy = conv2(G, x'); %二维卷积yy = yy(:, 1:L); %根据L重新设定yy长度y = reshape(yy,K*L, 1);%矩阵变形y = mod(y, 2); %模二运算% ************************end of file*********************************** % ************************beginning of file***************************** %PNGen.mfunction [y, Z] = PNGen(G, Zin, N);%% 此函数是根据生成多项式和输入状态产生长度为N的伪随机序列%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式% Zin 移位寄存器初始化% N PN序列长度% y 生成的PN码序列% Z 移位寄存器的输出状态%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ L = length(G);%扰码生成多项式长度Z = Zin; % 移位寄存器的初始化y = zeros(N, 1);%N*1的0矩阵for i=1:Ny(i) = Z(L); %获取当前状态输出值(移位寄存器的最后一位输出)Z = xor(G*Z(L), Z); %生成移位寄存器次态Z = [Z(L); Z(1:L-1)]; %移位寄存器后移1位end%yy = filter(1, flipud(G), [1; zeros(N-1, 1)]);%yy = mod(yy, 2);%************************end of file*********************************** % ************************beginning of file***************************** %Modulator.mfunction [TxOut, PN, MF] = Modulator(chips, MFType, Walsh);%此函数用于实现IS-95前向链路系统的数据调制%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% chips 发送的初始数据% MFType 成型滤波器的类型选择% Walsh walsh码% TxOut 调制输出信号序列% PN 用于扩频调制的PN码序列% MF 匹配滤波器参数%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ global Zi Zq show R Gi GqN = length(chips)*length(Walsh); %输出数据的数目% 输入速率= 19.2 KBps, 输出速率= 1.2288 Mcpstmp = sign(Walsh-1/2)*sign(chips'-1/2); %求扩频调制码数目的中间变量chips = reshape(tmp, prod(size(tmp)), 1);%矩阵变形[PNi Zi] = PNGen(Gi, Zi, N);%i路PN序列生成[PNq Zq] = PNGen(Gq, Zq, N);%q路PN序列生成PN = sign(PNi-1/2) + j*sign(PNq-1/2); %i、q路以复数形式合并chips_out = chips.*PN;%得到复数形式的码序列chips = [chips_out, zeros(N, R-1)];%码序列0插值chips = reshape(chips.' , N*R, 1);%矩阵变形%成型滤波器switch (MFType) %根据MFType选择滤波器类型case 1%升余弦滤波器L = 25;L_2 = floor(L/2);n = [-L_2:L_2]; %升余弦滤波器点数B = 0.7; %B越大拖尾越小MF = sinc(n/R).*(cos(pi*B*n/R)./(1-(2*B*n/R).^2)); %升余弦滤波器形状MF = MF/sqrt(sum(MF.^2)); %升余弦滤波器特性曲线case 2%矩形滤波器L = R;L_2 = floor(L/2);MF = ones(L, 1); %1->0,锐截止MF = MF/sqrt(sum(MF.^2)); %矩形滤波器特性曲线case 3%汉明滤波器L = R;L_2 = floor(L/2);MF = hamming(L);%生成汉明滤波器MF = MF/sqrt(sum(MF.^2));%汉明滤波器特性曲线endMF = MF(:); %转置TxOut = sqrt(R)*conv(MF, chips)/sqrt(2);%通过成型滤波器TxOut = TxOut(L_2+1: end - L_2); %限定序列区间if (show)figure;subplot(211); plot(MF, '-o'); title('Matched Filter'); grid on;%成型滤波器特性曲线图subplot(212); psd(TxOut, 1024, 1e3, 113); title('Spectrum'); %功率谱密度估计end% ************************end of file***********************************% ************************beginning of file*****************************%Demodulator.mfunction [SD] = Demodulator(RxIn, PN, MF, Walsh);% 此函数是实现基于RAKE接收机的IS-95前向信链路系统的数据包的解调%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% RxIn 输入信号% PN PN码序列(用于解扩)% MF 匹配滤波器参数% Walsh 用于解调的walsh码% SD RAKE接收机的软判决输出%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% DEMODULATOR This function performs demodulation of the forward% Channel packet, based on RAKE Receiver% Block Diagram% Input Signal -> [Matched Filter] -> [Sampler] -> [RAKE Receiver] -> [Walsh] -> [DeSpreading]% Inputs: RxIn - input signal (I/Q) analoge% PN - PN sequence (used for De-spreading)% MF - matched filter taps% Walsh - Used row of Walsh matrix for recovering %% Outputs: SD - Soft Decisions of RAKE receiver%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++global RN = length(RxIn)/R; %有用码的个数L = length(MF);L_2 = floor(L/2);rr = conv(flipud(conj(MF)), RxIn); %通过匹配接收滤波器rr = rr(L_2+1: end - L_2); %限定接收符号序列长度Rx = sign(real(rr(1:R:end))) + j*sign(imag(rr(1:R:end)));%接收符号采样Rx = reshape(Rx, 64, N/64); %列导向Walsh = ones(N/64, 1)*sign(Walsh'-1/2);%行导向walsh码PN = reshape(PN, 64, N/64)';%矩阵变形PN = PN.*Walsh;%walsh正交% 输入速率= 1.2288 Mpbs, 输出速率= 19.2 KBpsSD= PN*Rx;%解扩SD= real(diag(SD));%确定软判决输出% ***********************end of file***********************************% ************************beginning of file*****************************%ReceiverSD.mfunction [DataOut, Metric] = ReceiverSD(SDchips, G, Scrambler);% 此函数用于实现基于Viterbi译码的发送数据的恢复%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% SDchips 软判决RAKE接收机输入符号% G Viterbi编码生成多项式矩阵% Scrambler 扰码序列% DataOut 接收数据(二进制形式)% Metric Viterbi译码最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++if (nargin == 1)%判断只有SDchips传入时在此生成Viterbi编码生成多项式矩阵G = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];end% 速率=19.2 KBpsSDchips = SDchips.*sign(1/2-Scrambler);%解扰INTERL = reshape(SDchips, 16, 24);%解交织SDchips = reshape(INTERL', length(SDchips), 1); % 速率=19.2 KBps[DataOut Metric] = SoftVitDec(G, SDchips, 1);%实现软判决输入的Viterbi译码% ************************end of file**********************************% ************************beginning of file*****************************%SoftVitDec.mfunction [xx, BestMetric] = SoftVitDec(G, y, ZeroTail);%% 此函数是实现软判决输入的Viterbi译码%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式的矩阵% y 输入的待译码序列% ZeroTail 判断是否包含‘0’尾% xx Viterbi译码输出序列% BestMetric 最后的最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++L = size(G, 1); % 输出码片数K= size(G, 2); % 生成多项式的长度N = 2^(K-1); % 状态数T = length(y)/L; % 最大栅格深度OutMtrx = zeros(N, 2*L); %输出矩阵的定义for s = 1:Nin0 = ones(L, 1)*[0, (dec2bin((s-1), (K-1))-'0')];in1 = ones(L, 1)*[1, (dec2bin((s-1), (K-1))-'0')];out0 = mod(sum((G.*in0)'), 2);out1 = mod(sum((G.*in1)'), 2);OutMtrx(s, :) = [out0, out1]; %生成输出矩阵endOutMtrx = sign(OutMtrx-1/2);PathMet = [100; zeros((N-1), 1)]; % 初始状态= 100PathMetTemp = PathMet(:,1); %副本Trellis = zeros(N, T); %栅格的矩阵Trellis(:,1) = [0 : (N-1)]';%给第一列赋值y = reshape(y, L, length(y)/L);%矩阵按输出码片数变形for t = 1:T %主栅格计算循环yy = y(:, t); %取出y的第t列for s = 0:N/2-1[B0 ind0] = max( PathMet(1+[2*s, 2*s+1]) + [OutMtrx(1+2*s, 0+[1:L]) * yy; OutMtrx(1+(2*s+1), 0+[1:L])*yy] );[B1 ind1] = max( PathMet(1+[2*s, 2*s+1]) + [OutMtrx(1+2*s, L+[1:L]) * yy; OutMtrx(1+(2*s+1), L+[1:L]) * yy] );PathMetTemp(1+[s, s+N/2]) = [B0; B1]; %改变状态Trellis(1+[s, s+N/2], t+1) = [2*s+(ind0-1); 2*s + (ind1-1)];%生成栅格矩阵endPathMet = PathMetTemp;%赋状态值endxx = zeros(T, 1);%生成单列0矩阵,输出变量if (ZeroTail) %确定最佳度量BestInd = 1;else[Mycop, BestInd] = max(PathMet); %非‘0’尾,取最大值所在位置endBestMetric = PathMet(BestInd); %得到最后的最佳度量xx(T) = floor((BestInd-1)/(N/2)); %赋值xx最后一个数NextState = Trellis(BestInd, (T+1)); %从栅格矩阵获得初态for t=T:-1:2xx(t-1) = floor(NextState/(N/2));%倒序生成xxNextState = Trellis( (NextState+1), t); %从栅格矩阵获得次态endif (ZeroTail)xx = xx(1:end-K+1);%限定译码输出序列长度end% ************************end of file***********************************% ************************beginning of file*****************************%ReceiverHD.mfunction [DataOut, Metric] = ReceiverHD(HDchips, G, Scrambler);% 此函数用于实现基于Viterbi译码的硬判决接收机%+++++++++++++++++++++++variables++++++++++++++++++++++++++++%HDchips 硬判决RAKE接收机输入符号% G Viterbi编码生成多项式矩阵% Scrambler 扰码序列% DataOut 接收数据(二进制形式)% Metric Viterbi译码最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++if (nargin == 1) %判断只有HDchips传入时在此生成Viterbi编码生成多项式矩阵G = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];end% 速率=19.2 KBpsHDchips = xor(HDchips, Scrambler);%解扰INTERL = reshape(HDchips, 16, 24);%解交织HDchips = reshape(INTERL', length(HDchips), 1);%速率=19.2 KBps[DataOut Metric] = VitDec(G, HDchips, 1);%维特比解码%************************end of file***********************************% ************************beginning of file*****************************%VitDec.mfunction [xx, BestMetric] = VitDec(G, y, ZeroTail);%% 此函数是实现硬判决输入的Viterbi译码%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式的矩阵% y 输入的待译码序列% ZeroTail 判断是否包含‘0’尾% xx Viterbi译码输出序列% BestMetric 最后的最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++L = size(G, 1); % 输出码片数K= size(G, 2); % 生成多项式长度N = 2^(K-1); % 状态数T = length(y)/L; % 最大栅格深度OutMtrx = zeros(N, 2*L);%输出矩阵的定义for s = 1:Nin0 = ones(L, 1)*[0, (dec2bin((s-1), (K-1))-'0')];in1 = ones(L, 1)*[1, (dec2bin((s-1), (K-1))-'0')];out0 = mod(sum((G.*in0)'), 2);out1 = mod(sum((G.*in1)'), 2);OutMtrx(s, :) = [out0, out1];%生成输出矩阵endPathMet = [0; 100*ones((N-1), 1)];%初始状态为0PathMetTemp = PathMet(:,1);%副本Trellis = zeros(N, T);%栅格的矩阵Trellis(:,1) = [0 : (N-1)]';%给第一列赋值y = reshape(y, L, length(y)/L);%矩阵按输出码片数变形for t = 1:T %主栅格计算循环yy = y(:, t)';%取出y的第t列for s = 0:N/2-1[B0 ind0] = min( PathMet(1+[2*s, 2*s+1]) + [sum(abs(OutMtrx(1+2*s, 0+[1:L]) - yy).^2); sum(abs(OutMtrx(1+(2*s+1), 0+[1:L]) - yy).^2)] );[B1 ind1] = min( PathMet(1+[2*s, 2*s+1]) + [sum(abs(OutMtrx(1+2*s, L+[1:L]) - yy).^2); sum(abs(OutMtrx(1+(2*s+1), L+[1:L]) - yy).^2)] );PathMetTemp(1+[s, s+N/2]) = [B0; B1];%改变状态Trellis(1+[s, s+N/2], t+1) = [2*s+(ind0-1); 2*s + (ind1-1)];%生成栅格矩阵endPathMet = PathMetTemp;%赋状态值endxx = zeros(T, 1);%生成单列0矩阵,输出变量if (ZeroTail) %确定最佳度量BestInd = 1;else[Mycop, BestInd] = min(PathMet);%非‘0’尾,取最小值所在位置endBestMetric = PathMet(BestInd);%得到最后的最佳度量xx(T) = floor((BestInd-1)/(N/2));%赋值xx最后一个数NextState = Trellis(BestInd, (T+1));%从栅格矩阵获得初态for t=T:-1:2xx(t-1) = floor(NextState/(N/2)); %倒序生成xxNextState = Trellis( (NextState+1), t);%从栅格矩阵获得次态endif (ZeroTail)xx = xx(1:end-K+1); %限定译码输出序列长度end% ************************end of file***********************************运行结果:图1 升余弦滤波器时的结果图2 矩形滤波器时代结果图3 矩形滤波器时代结果2.按照下列框图设计一个CDMA系统,并进行仿真。
基于Matlab的CDMA多用户通信系统的仿真分析
CDMA通信系统的仿真分析〔燕山大学信息科学与工程学院〕摘要:码分多址〔CDMA〕以扩频信号为根底,利用不同的码型实现同一载波上的不同用户的信息传输,是第三代数字蜂窝移动通信系统采用的多址技术。
本次工程设计使用Simulink仿真工具对4用户的CDMA无线通信系统进展建模、仿真和分析,观察用户和扩频码波形,利用8psk实现调制,分析了信噪比、m序列抽样时间、多址干扰对系统误码率的影响。
关键词:码分多址、Simulink仿真、扩频、误码率分析1前言CDMA通信,是利用相互正交〔或准正交〕的编码分配给不同的用户调制信号,实现多用户同时使用一个频率接入网络进展通信。
如果从频域和时域来观察,多个CDMA信号是相互重叠的,或者说它们均占有一样的频段和时间,接收机用相关器在多个CDMA信号中选出其中使用预定码型的信号。
由于利用相互正交〔或准正交〕的编码去调制信号,会将原信号的频谱扩展,因此又称为扩频通信。
CDMA具有伪随机编码调制和信号相关处理两大特点,因此CDMA具有许多优点:抗干扰、抗噪声、抗多径衰落、能在低功率下工作、性强,可多址复用和任意选址等。
CDMA技术在第三代移动通信中得到广泛应用。
本次工程设计使用Simulink仿真工具对4用户的CDMA无线通信系统进展建模、仿真和分析,观察用户和扩频码波形,利用8psk实现调制,分析了信噪比、m序列抽样时间、多址干扰对系统误码率的影响。
2仿真系统整体设计2.1扩频调制原理扩频通信的一般原理如图1所示。
在发送端的信息经信息调制形成数字信号,然后由扩频码发生器产生扩频码序列去调制数字信号以展宽信号的频谱。
展宽以后的信号在对载频进展调制,经过射频功率放大器发射到天线上发射出去。
在收端,从承受天线上收到的宽带射频信号,经过输入电路、高频放大器后送入变频器,下变频至中频,然后由本地产生的与发端完全一样的扩频码序列去解扩,最后经信息解调,恢复成原始信息输出。
图1扩频系统原理框图按照扩展频谱的方式的不同,目前的扩频通信可以分为:直接序列〔DS〕扩频,跳频〔FH〕,调时〔TH〕,以及上述几种方式的组合。
基于MATLAB的CDMA通信系统的仿真
基于MATLAB勺CDM軀信系统的仿真摘要:利用MATLA呼台的Simulink可视化仿真功能,结合CDMA勺实际通信情况,对CDMA!信系统的实现完整以及发送到接收的端到端的CDMA无通信系统的建模、仿真和分析。
本次介绍了CDMA勺主要环节,包括扩频技术、信道等参数设置。
关键字:码分多址;扩频;MATLA;B Simulink1 CDMA 技术基础1.1 扩频定义:扩频技术就是将信息的频谱展宽后进行传输的技术。
理论基础:在白噪声干扰的条件下,信道容量—信道带宽S —信号平均功率 N —噪声平均功率论:在信道容量C 不变的情况下,信道带宽B 与信噪比S/N 完全可以互即可以通过增大传输系统的带宽可以在较低信噪比的条件下获得比 较满意的传输质量。
-fSB ----------k佶号JfO扩频后i 的佶号麵图1扩频过程扩频通信系统的主要特点:(1)隐蔽性和保密性;(2 )抗干扰和抗多径衰落能力强;(3)实现多址技术、增加容量、提高频率复用率;( 4)占用频带较宽,系统复杂性增加。
1.2 CDMA 仿真系统模型建立信源高昕a嗓声图2本次仿真CDM 系统组成框图C = B Iog2 (1 + S / N ) 香农公式相交换,2 Matlab 的CDMA 通信系统的仿真2.1直接扩频的码分多址通信系统的仿真模型CHKBFtt 蛇I?曲寮 FtUrmEeriJIi& n 町直接扩频的码分多址通信系统的仿真模型2.2 仿真系统的各部分分析宽度为6X 10 - 6 s 。
(1)第一路伯努利二进制随机信号发生器iT —l"g<j| lii Sin OffB«rioLjlli B -in-ary---图4二进制伯努利序列产生器 图5第一路发生器产生的仿真波形h_n_n_rir r-r-1 EUJR . jii _k - ni~ tna-KDspley|~u n rj strMli Ernar/Berculli 帥町 Ge-teiEbflMl€ei[z3.31C21zg£淞1S 叭训 i Sinijy3finGfEO2削LcncEGenermxIrteucDsli ^*?**tM[;DE3i :i F It^lQajsa.q Sse2.2.1 伯努利二进制随机信号发生器三个 Bernoulli Random Binary Generator(伯努利二进制随机信号发生器)表示三个不同的通信用户发射各自的通信信息 (基带信号),码元u 呦C 就Ber J Hi Bi n 17*T JC Enn 社t許离亡E IdIstizinPLTII } EiwRstiCal ulatUT 也) f 匚卄1"K E™ mat表2第一路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 12345 Samp le time 3*2e-7 Frame-base out putsUncheckedIn terl pret vector p arameter as 1-DUnchecked(2)第二路伯努利二进制随机信号发生器□crnobll i曰 i narv曰crnmu Hi Bi n ary图6二进制伯努利序列产生器表3第二路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 54321 Samp le time 3*2e-7 Frame-base out putsUnchecked Interlpret vector parameter as 1-DUnchecked(3)第三路伯努利二进制随机信号发生器图9第三路发生器产生的仿真波形D …1 — III n ■ 1 1 …1 1 [・ py.—…IT11 1 1 ■ 1= ---- ■- ------ ! - ----- 1 - — 1 ■ ■■ 1 ■ 1 1 1 - - 1 ■ I---- ■ : 7 --- ■ 1 h- ■----1 ■L ■* ~-12H01 0.01R —iCigjIli binaryBcjma-Lklli ainnjy图8二进制伯努利序列产生器图7第二路发生器产生的仿真波形表4第二路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 13542 Samp le time 3*2e-7 Frame-base out putsUnchecked In terl pret vector p arameter as 1-DUnchecked222 直接扩频图10 PN 伪随机序列产生器表 5 PN Seque neeGen erator 参数设置(rf-iltrHlcVf 戸&丁也卸“讥"卜成寧项式JCl 1 0 0 J]to 1 0 0]Sc^itTfnr 匱羽荐曲) 0SiHupk t inK <釆样 时阪P裁一T本系统中的m 序列周期是15,码元宽度为2X 10 — 7 s ,基带信号码元宽度是m 序列码元宽度的30倍, 正好是两个m 序列的周期。
基于Simulink的CDMA通信系统原理仿真
科技信息OIT论坛OSCIENCE&TECHNOLOGYINIⅪRMATION2009年第11期与高频正弦载波相乘实现2PSK调制,在接收端复合的扩频信号与高频正弦载波信号(与本地载波同频同相)进行相干解凋(相乘),再利用不同的Cold序列与解调信号相乘(解扩),最后将解扩信号通过带通滤波器从而恢复出原来的基带信号。
3.结论本文采用simulink对CDMA通信系统建立了仿真模型,在给定的仿真条件下,验证了所建仿真模型的正确性。
在正确的仿真模型下对系统的时间波形,频谱以及误码率进行了仿真.仿真结果表明,采用圈4CDMA通信系统原理仿真模型2.2仿真结果仿真参数设置:仿真时间设置为10s,求解器输出为可变步长离散型模式。
图5所示为基带信号源以及信号源通过CDMA传输系统后在接收端所接收到的解调信号的时域坡形图。
从图中可以看出,通过CDMA通信传输系统后的解调信号与信号源的时域波形除了在幅度上有所增大以外,其余各参数都相同。
可得出,Simulink构造的CDMA仿真模型符合CDMA传输系统。
从频谱巾可以看出,频谱图完全相同,同时通过计算误码率町得。
误码率为0.00000001。
这是因为在仿真模型中,并没有引入信道噪声。
随着信道噪声的引人,将会产生洪码,使其误码率增大。
图5信号源与解调信号波形图CDMA通信系统进行多路信号的复用,在噪声为O的情况下.接收端能够准确无误的恢复出各路信号。
在噪声的背景下的CDMA系统的模型分析。
将在下篇文章中阐述。
I【参考文献】【1]欧鑫,黄小蔚等.基于Matlab的exima2(g)0发射系统基带仿真[gN川大学学报(自然科学版).2003.40(6).[2J邛华.Matlab通信仿真及实例详解.1版.人民邮电出版社.2003.[31樊吕信,通信原理教程【M】1版.电子工业出版社,2004.[4]蒋肯,于秀兰等.通信原.曰/IMl.2版.人民邮电出版社,2008.[5]李额。
CDMA多用户检测的Simulink仿真研究
第四章仿真环境介绍及模型的建立4.1MATLAB &Simulink简介MATLAB软件系列产品是一套高效强大的工程技术数值运算和系统仿真软件,广泛应用于当今的航空航天、汽车制造、半导体制造、电子通信、医学研究、财经研究和高等教育等领域,被誉为“巨人肩膀上的工具”。
研发人员借助MATLAB软件能迅速测试设计构想,综合评测系统性能,快速设计更好方案来确保更高技术要求。
同时,MATLAB 也是国家教委重点提倡的一种计算工具。
综合起来,MATLAB有编程效率高、使用方便、扩充能力强、语句简单,内涵丰富、高效方便的矩阵和数组运算、方便的绘图功能等特点。
动态系统是输出信号随时间变化的系统。
要描述这种系统的特性,传统的建模方法是先对系统的输入信号和输出信号进行分析,得到它们的系统方程,然后编写程序进行仿真。
这种仿真方法有两个缺点。
首先是不够直观,缺乏足够的人机交互。
由于所有的输入信号和输出信号都被抽象成数值之间的关系,仿真表现为一种计算过程,因此难以对仿真的过程进行控制,也难以对仿真的输出数据进行直观的描述和分析。
另外,这种方法缺乏系统性,尤其是在对复杂系统的处理过程中,难以采用模块化方法,从而降低了仿真程序的可读性和可扩展性。
Simulink是MATLAB 提供的用于对动态系统进行建模、仿真和分析的工具包。
Simulink提供了专门用于显示输出信号的模块,可以在仿真过程中随时观察仿真结果。
同时,通过Simulink 的存储模块,仿真数据可以方便地以各种形式保存到工作区或文件中,供用户在仿真结束之后对数据进行分析和处理。
另外,S imulink把具有特定功能的代码组织成模块的方式,并且这些模块可以组织成具有等级结构的子系统,因此具有内在的模块化设计要求。
基于上述优点,Simulink称为一种通用的仿真建模工具,广泛应用于通信仿真、数字信号处理、ﻫ模糊逻辑、神经网络、机械控制和虚拟现实等领域。
根据输出信号与输入信号的关系,Simulink 提供 3 种类型的模块:连续模块、离散模块和混合模块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信系统原理综设实验报告基于Matlab的CDMA系统的仿真设计教师评语:关键字:cdma,matlab,simulink,多用户检测,滤波器,抽样判决器希望你们都能理解这个系统,并且完善它,免费提供给下届师弟师妹。
老师真心坑爹。
Matlab2011,百度网盘mdl文件下载地址:一、引言CDMA是指在各发送端使用不相同、相互(准)正交的地址码调制所传送的信息,而在接收端在利用码型的(准)正交性,通过相关检测,从混合信号中选出相应的信号的一种技术。
实现CDMA的理论基础是扩频通信,即在发送端将待发送的数据用伪随机码进行调制,实现频谱扩展,然后进行传输,而在接收端则采用同样的编码进行解扩及相关处理,恢复原始的数据信息。
该实验系统通过对多用户下的DS-CDMA系统进行仿真设计,说明DS-CDMA通信系统的基本实现方式,实现PSK调制与解调,加入信道噪声,并实现多用户检测。
在增加用户的情况下,分别检测系统的误码率。
二、系统框图及分析图1DS-CDMA利用不同的地址码(PN序列)区分用户,地址码与用户数据(信码)相乘后得到扩频信号,经信道传输后,在接受端与本地地址码进行相关检测后,从中将地址码与本地地址码一致的用户数据选出,把不一致的用户除掉。
从而实现了利用正交地址码序列区分用户,体现了码分多址的通信方式。
三、系统具体实现及分析1、扩频设计1.1 基本原理扩频通信技术是一种信息传输方式,其信号所占有的频带宽度远大于所传信息必需的最小带宽;频带的扩展是通过一个独立的码序列来完成,用编码及调制的方法来实现的,与所传信息数据无关;在接收端则用同样的码进行相关同步接收、解扩及恢复所传信息数据。
(1)扩频通信的理论基础①香农公式②公式分析A、在给定的传输速率C不变的条件下,频带宽度W和信噪比S/N是可以互换的。
即可通过增加频带宽度的方法,在较低的信噪比情况下,传输信息。
B、扩展频谱换取信噪比要求的降低,正是扩频通信的重要特点,并由此为扩频通信的应用奠定了基础。
(2)工作原理在发端输入的信息先经信息调制形成数字信号,然后由扩频码发生器产生的扩频码序列去调制数字信号以展宽信号的频谱。
展宽后的信号再调制到射频发送出去。
在接收端收到的宽带射频信号,变频至中频,然后由本地产生的与发端相同的扩频码序列去相关解扩。
再经信息解调、恢复成原始信息输出。
(3)实现方法扩频的基本方法有直接序列(DS)、跳频(FH)、跳时(TH)和线性调频(Chirp)等4种。
本设计采用直接序列扩频工作方式,简称直扩(DS)方式。
直序扩频技术的原理是使用快速变化的二进制比特流调制射频载波信号,这种二进制比特流看上去是随机的,实际上是按照特定的算法由数字电路产生的,称为伪随机码(PN序列)。
在伪随机码的调制下,信息通过发射机发射。
相应的接收机内能够产生相同的伪随机码,按照发射的逆过程解调,解析出有效信息信号。
1.2具体设计(1)信源设计信源采用二进制贝努利序列产生器(Bernoulli Binary Generator)产生二进制序列。
采样时间设置为6e-4 s,且不同用户的随机种子不同。
(2)伪随机序列设计伪随机码是一种结构可以预先确定,可重复产生和复制,具有某种随机序列随机特性的序列码。
伪随机码序列一般可以利用移位寄存器网络产生。
在DS-CDMA系统中,所有用户工作在相同的中心频率上,输入数据序列与伪随机序列相乘后得到宽带信息。
不同用户使用不同的PN序列,这些PN序列相互正交。
在实际的通信系统中可以利用不同的伪随机序列作为不同用户的地址码,从而实现码分多址通信。
常用的PN序列有m序列、Walsh序列及GOLD 序列。
Walsh 码序列比较复杂,正交性较好,主要用于CDMA IS-95 系统中。
而Gold 序列可以比m 序列产生更多的地址码,更适合于大型的通信系统。
m序列是最长线性移位寄存器序列的简称。
它是由多级移位寄存器或其他延迟元件通过线性反馈产生的最长的码序列。
由于m序列容易产生、规律性强、有许多优良的性能,在扩频通信中最早获得广泛的应用。
如图2所示,m序列可由二进制线性反馈移位寄存器产生。
它主要由n个串联的寄存器、移位脉冲产生器和模2加法器组成。
图中第i级移存器的状态ai表示,ai=0 或ai=1,i=整数。
反馈线的连接状态用ci表示,ci=1表示此线接通(参加反馈),ci=0表示此线断开。
由于反馈的存在,移存器的输入端受控地输入信号。
不难看出,若初始状态为全“0”,则移位后得到的仍为全“0”,因此应避免出现全“0”状态,又因为n 级移存器共有2n-1种可能的不同状态,除全“0”状态外,剩下2n-1种状态可用。
每移位一次,就出现一种状态,在移位若干次后,一定能重复出现前某一状态,其后的过程便周而复始了。
反馈线位置不同将出现不同周期的不同序列,我们希望找到线性反馈的位置,能使移存器产生的序列最长,即达到周期P =2n-1。
按图2中线路连接关系,可以写为:∑=----=⊕⊕⊕⊕=ni i n i n n n n n a c a c a c a c a c a 10112211... (模2)该式称为递推方程。
图2 线性反馈移位寄存器上面曾经指出,ci 的取值决定了移位寄存器的反馈连接和序列的结构。
现在将它用下列方程表示:∑==++++=ni i i nn x c x c x c x c c x f 02210...)(这一方程称为特征多项式。
式中x i仅指明其系数c i 的值(1或0),x 本身的取值并无实际意义,也不需要去计算x 的值。
例如,若特征方程为f (x )=1+x +x 4则它仅表示x 0,x 1和x 4的系数c 0=c 1=c 4=1,其余为零。
经严格证明:若反馈移位寄存器的特征多项式为本原多项式,则移位寄存器能产生m 序列。
只要找到本原多项式,就可构成m 系列发生器。
表1 部分本原多项式m 序列的基本性质如下:①周期性:m 序列的周期p 取决于它的移位寄存器的级数, p =2n-1②平衡特性:m 序列中0和1的个数接近相等;m 序列中一个周期内“1”的数目比“0”的数目多1个。
③游程特性:m 序列中长度为1的游程约占游程总数的1/2,长度为2的游程约占游程总数的1/22 ,长度为3的游程约占游程总数的1/23…④线性叠加性:m 序列和其移位后的序列逐位模2相加,所得的序列还是m 序列,只是相移不同而已。
例如与向右移3位后的序列逐位模2相加后的序列为,相当于原序列向右移1位后的序列,仍是m 序列。
用公式表示为:)()()(i u i u i u q p =⊕其中: u(i)、u p (i)、u q (i )分别为原序列、平移p 个元素后的序列及平移相加后得到的序列中的第i 个元素。
⑤二值自相关特性:码位数越长越接近于随机噪声的自相关特性。
m 序列的自相关函数计算式为[]⎪⎩⎪⎨⎧-=+=m t m t m E R m /11)()()(ττ00≠=ττ其中:12-=nM ,为码序列的最大长度,亦即m 序列的周期;;1...,3,2,1,-==M k kT c τT c 为m 序列码的码元宽度。
可见,相关函数是个周期函数。
⑥m 序列发生器中,并不是任何抽头组合都能产生m 序列。
理论分析指出,产生的m 序列数由下式决定:n n /)12(-φ其中Φ(x )为欧拉数(即包括1在内的小于x 并与它互质的正整数的个数)。
例如5级移位寄存器产生的31位m 序列只有6个。
该设计采用PN 序列生成器(PN Sequence Generator ),生成扩频序列不同的用户。
PN 序列生成器,使用相同的特征多项式[1 0 0 0 0 1 1],但是初始状态不同。
采样一般设置为信源速率的整数倍,该系统采样时间设置为2e-5 s 。
1.3极性转换与乘法器用乘法器(Product )对将已进行极性转换的信源和扩频序列相乘,完成扩频。
(1)基本原理:二进制数用0,1表示,在常用的正逻辑数字电路里面的形式是低电平(L )、高电平(H )。
两个二进制序列A 、B 由异或门及模拟乘法器进行处理的电路及输出如图3所示。
图3中,假定A=010011…,B是长串的连0或连1。
模拟乘法器输入、输出端有自己的正常静态偏置电平,故与前后电路必须通过隔直流电容相联。
输入二进制序列0、1…经过隔直后,以模拟乘法器输入偏置电平为参考,成为负电平、正电平…,归一化后为-1、+1…,即0变成-1,1变成+1。
由图3可见,除了倒相之外,两电路的输出完全相同。
而倒相的差别,很容易通过加一级倒相器来消除,可以不予考虑。
将A、B互换或改为其它数椐重画波形,可得到相同结果。
由以上分析可得到以下结论:①(0,1)域上的二进制序列作乘法运算,必须首先转换到(-1,+1)域上(0→-1,1→+1)然后再相乘。
②二进制序列在(0,1)域上模二加(异或)运算与其在(-1,+1)域上的乘法运算等效。
进一步分析容易得出,对于两路输入信号为多个数字序列波形线性叠加的情况,只要输入幅度没超过模拟乘法器线性工作范围,上述结论(1)仍适用;而异或门是非线性器件,上述结论(2)就不能推广了。
(2)扩频过程如图4所示:图4:扩频过程演示2、调制与解调设计调制采用M-PSK调制模块(M-PSK Modulator Baseband),设置为8进制相移键控。
8进制相移键控即是将输入二进制数字序列中每3比特分成一组,共有8种组合,即000,001,010,011,100,101,110,111。
用8种相位之一去代表每种排列。
解调采用M-PSK解调模块(M-PSK Modulator Baseband),同样设置为8进制。
8PSK信号相位如图5所示:贝努力序列PN序列扩频信号图5:8PSK 信号相位图3、信道设计采用加性高斯白噪声信道(AWGN Channel 模块)进行分析。
由于AWGN 信号易于分析、近似,因此在信号处理领域,对信号处理系统(如滤波器、低噪音高频放大器、无线信号传输等)的噪声性能的简单分析(如:信噪比分析)中,一般可假设系统所产生的噪音或受到的噪音信号干扰在某频段或限制条件之下是高斯白噪声。
4、相关检测设计4.1基本原理DS-CDMA 系统的载波调制方式可采用调频或调相,以调相方式应用最广。
以2PSK 调制为例,发端用户1发射的信号为t t c t d t S c ωcos ).().()(111= (式1)上式中,d 1(t).c 1(t)是(-1,+1)域二元数据,则S 1(t)是0/π调相的2PSK 信号。
故载波调制器就是模拟乘法器。
式1可写成如下形式t t c t d t S c ωcos ).().()(111= (式2)t t c t d c ωcos )]()([11⋅=或t t c t d t S c ωcos ).().()(111= (式3))(]cos )([11t c t t d c ⋅⋅=ω上式表明,发端的DS-CDMA 射频信号,可通过先扩频调制再载波调制(式2)或先载波调制再扩频调制(式3)得到,二者是等效的。