Matlab实现ds-cdma基带系统

合集下载

第10章 CDMA系统仿真 [详解MATLAB_Simulink通信系统建模与仿真]

第10章 CDMA系统仿真 [详解MATLAB_Simulink通信系统建模与仿真]
第10章 CDMA系统仿真
本章内容
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。

DS-CDMA通信系统仿真

DS-CDMA通信系统仿真

DS-CDMA通信系统仿真1.DS-CDMA 通信系统原理图DS-CDMA通信系统原理图在实验中,我们采用;两种扩频码进行仿真。

M序列和正交Gold序列,扩频后的数据通过脉冲成型滤波器后通过信道同时到达接收端,在接收端分别对不同用户信息数据进行解扩,恢复各个用户的原始信息。

2.仿真流程设计与介绍2.1仿真设计步骤1、m序列的DS-CDMA在AWGN下的性能的仿真。

2、正交Gold序列的DS-CDMA在AWGN下的性能的仿真。

3、对比两个扩频码在AWGN信道下的性能曲线,分析哪种扩频码更适合在AWGN 信道中传输,传输衰减最小,对比m序列和正交Gold序列的抗干扰能力。

4、为了证明这一结论,把两种PN码再经过Rayleigh衰落信道下的性能进行验证。

(代码见附录)2.2程序编程设计最外层循环的时候是信噪比,根据每种信噪比下,首先产生各个用户的发射数据,根据用户数,每一行是每个用户的发射数据,然后进行Gray编码、4-QAM 调制,调制完后,对信号进行扩频,扩频部分是通过spread函数完成的,是完成扩频的功能。

扩频时,看输入参数是否满足要求,满足要求后,用扩频码与每一个数据符号相乘,对原始符号进行扩展,完成扩频。

扩频完成后,再通过脉冲成形滤波器计算每个用户信号功率。

当用户数大于1时,所有用户数据相加。

相加完成后,如果需要通过瑞利衰落信道,再让信道系数与发射数据相乘。

接收端加入高斯白噪声,首先根据信噪比计算高斯白噪声标准差,根据标准差加入白噪声。

如果通过瑞利衰落信道后,我们还需要进行一个信道补偿。

最后通过脉冲成形滤波器进行降采样,之后进行数据解扩,解扩部分是通过despread函数完成的,解扩完成后,对信号进行4-QAM解调、Gray编码逆映射,分别对用户原始数据和解扩后数据进行比较,最后统计误比特率。

以上就是完成扩频的主程序。

M序列和正交Gold序列脚本程序的介绍:用户数统一定义的是1、4、7,扩频码分别选择的是M序列和正交Gold序列,然后在每种用户数下仿真扩频系统的性能,最后画出仿真得到的误比特率。

CDMA通信系统仿真(附带完整程序)

CDMA通信系统仿真(附带完整程序)

扩频通信仿真1.设计思想为了研究CDMA 通信系统的多址干扰,实验利用Matlab 提供的m语言编写了m文件来建立CDMA 通信系统仿真模型,详细讲述各模块的设计及参数设置,并对仿真结果进行分析。

结果表明,多址干扰是CDMA 系统的固有干扰,当同时通信的用户数增多时,多址干扰电平增大,导致系统的误码率也增大。

因此,多址干扰是CDMA 通信系统本身存在的自我干扰,它限制了蜂窝系统的通信容量。

实验讨论的CDMA通信系统的仿真,采用的是直扩方式,信息没有经过调制,伪随机码采用的是63位GOLD序列,仿真框图如图1所示。

本课程的目的是熟悉CDMA通信系统的构架,了解m序列和gold码的软件实现, 以及用gold序列实现扩频和解扩,最后了解整个系统的误比特率与哪些因素有关。

2.程序设计流程图Gold码程序流程图M码程序流程图主程序流程图3.仿真环境本文讨论的CDMA通信系统的仿真是用MATLAB7.0模拟实现的,即数据流仿真模式,用MATLAB编程来实现对CDMA系统的模拟。

仿真实验中选择了一组长度为63的gold码序列作为扩频序列,并假设在理想功率控制下,即接收到的所有用户的信号能量相等。

整个仿真系统实现过程如下:1) 信源采用randint函数产生的+1、-1来代替实际的数字信号。

实际的数字信号应该是模拟信号(如语音信号) 经量化和压缩编码得到的二进制信号,其特点是二值性和随机性。

信源速率设置为10b/s。

2) 扩频与解扩利用自编的m函数和gold函数,产生gold码伪随机序列来达到扩频和多址接入效果。

扩频的运算是信息流与gold码相乘或模二加的过程。

解扩的过程与扩频过程完全相同,即将接收的信号用gold 码进行第二次扩频处理。

要求使用的gold 码与发送端扩频用gold 码不仅码字相同,而且相位相同。

否则会使有用信号自身相互抵消。

解扩处理将信号压缩到信号频带内,由宽带信号恢复为窄带信号。

同时将干扰信号扩展,降低干扰信号的谱密度,使之进入到信息频带内的功率下降,从而使系统获得处理增益,提高系统的抗干扰能力。

毕业设计(论文)基于matlab的数字基带通信系统仿真

毕业设计(论文)基于matlab的数字基带通信系统仿真

基于matlab的数字基带通信系统仿真1.课程设计的目的(1)增加对仿真软件的认识,学会对各种软件的操作和使用方法(2)加深理解数字基带通信系统的概念(3)初步掌握系统的设计方法,培养独立工作能力2.设计方案论证2.1数字基带传输系统在数字传输系统中,其传输的对象通常是二进制数字信号,它可能是来自计算机、电传打字机或其它数字设备的各种数字脉冲,也可能是来自数字终端的脉冲编码调制(PCM)信号。

这些二进制数字信号的频带范围通常从直流和低频开始,直到某一频率m f ,我们称这种信号为数字基带信号。

在某些有线信道中,特别是在传输距离不太远的情况下,数字基带信号可以不经过调制和解调过程在信道中直接传送,这种不使用调制和解调设备而直接传输基带信号的通信系统,我们称它为基带传输系统。

而在另外一些信道,特别是无线信道和光信道中,数字基带信号则必须经过调制过程,将信号频谱搬移到高频处才能在信道中传输,相应地,在接收端必须经过解调过程,才能恢复数字基带信号。

我们把这种包括了调制和解调过程的传输系统称为数字载波传输系统。

数字基带传输系统的模型如图 1所示,它主要包括码型变换器、发送滤波器、信道、接收滤波器、均衡器和取样判决器等部分。

图1 数字基带传输系统模型1.2 数字基带信号1.2.1数字基带信号波形对不同的数字基带传输系统,应根据不同的信道特性及系统指标要求,选择不同的数字脉冲波形。

原则上可选择任意形状的脉冲作为基带信号波形,如矩形脉冲、三角波、高斯脉冲及升余弦脉冲等。

但实际系统常用的数字波形是矩形脉冲,这是由于矩形脉冲纤数字传输系统中的线路传输码型。

此外,CMI 码和曼彻斯特码一样都是将一位二进制码用一组两位二进制码表示,因此称其为1B2B 码。

(5)4B/3T 码4B/3T 码是1B/1T 码的改进型它把4 个二进制码元变换为3个三进制码元。

显然,在相同信息速率的条件下,4B/3T 码的码元传输速率要比1B/1T 码的低,因而提高了系统的传输效率。

实验五-CDMA原理的matlab仿真

实验五-CDMA原理的matlab仿真

实验二 CDMA 原理的程序仿真实验目的:了解3G 移动通信网中关键技术CDMA 的实现原理 掌握matlab 编程,实现CDMA 原理仿真实验要求:掌握CDMA 原理掌握matlab 语言对于码分复用技术仿真的功能实验场景: 现有8个用户,通过信令两两建立连接通道,分别为发送方A 、B 、C 、D ,对应的接收方为A ’、B ’、C ’、D ’,A 和A ’的通信内容为-1,B 和B ’的通信内容为-1,C 和C ’的通信内容为1,D 和D ’的通信内容为1。

系统内具备以下条件:A 和A ’通信的正交码为H1: 1 1 1 1B 和B ’通信的正交码为H2: 1 -1 1 -1C 和C ’通信的正交码为H3: 1 1 -1 -1D 和D ’通信的正交码为H4: 1 -1 -1 1H1~H4具有正交性,比如[1 1 1 1]和[1 -1 1 -1]向量乘一下,为0,每两个不同的向量都这样,只有本身相乘是有值的。

发送过程信道ABC D-1-111相乘-1,-1,-1,-1, 1, 1, 1 1 1 1 1码 数据 1 -1 1 -1 1 1 -1 -11 -1 -1 1-1,-1,-1,--1,-1,-1,-1,-1, 1, -1,1, -1, 11, 1, 1, 1 1,1, 1,1,-1,-11, 1, 1, 1 1,-1,1,-1,-1,10,0,-4,0扩展相加每一个人对接收到的数据用自己的码进行译码,得到不同的结果,和发送的数据相同。

也就是说拥有不同的码,即使在同频率下相互干扰,信号叠加在一起,也能正确的得到各自想要的信息,这样很多人的都可以使用相同的频率,大大增加了通信容量实验参考知识: (1) 哈达马正交矩阵 方法为:hadamard(n)例如:运行hadamard(4),得到4*4矩阵:[ 1 1 1 1; 1 -1 1 -1; 1 -1 -1; 1 -1 -1 1](2) 整体代码 %发送部分d_o = round(rand(1,4))';d = 2*d_o - 1; %发送数据a->a': -1, b->b': -1 ...%正交码阵H =[ 1 1 1 1; 1 -1 1 -1; 1 1 -1 -1; 1 -1 -1 1 ] H = hadamard(4);d_t = repmat(d,1,4); %扩展数据 c_t = H.*d_t; %对应相乘 c = sum(c_t); %形成码字 %接收部分c_r = repmat(c,4,1).*H; %码字 e = mean(c_r,2); %接受数据figure(1) %显示发送和接受数据,比较是否相同 subplot(2,1,1); stem(d); subplot(2,1,2); stem(e);任务: (1) 修改发送数据,运行程序,观察发送数据和接受数据是否相同;给出过程。

基于MATLAB的CDMA系统RAKE接收机仿真分析

基于MATLAB的CDMA系统RAKE接收机仿真分析

基于MATLAB的CDMA系统RAKE接收机仿真分析CDMA(Code Division Multiple Access)是一种广泛应用于移动通信系统中的多址技术,其中RAKE接收机是一种常用于CDMA系统中的接收机。

在这篇文章中,我们将讨论基于MATLAB的CDMA系统中RAKE接收机的仿真分析。

首先,我们要理解什么是CDMA系统和RAKE接收机。

CDMA系统是一种用于无线通信的多址技术,它允许多个用户同时在相同频带上进行通信,通过使用不同的扩频码将用户之间的通信进行区分。

CDMA系统具有很好的抗干扰性能和较高的频谱利用率,因此被广泛使用于移动通信领域。

RAKE接收机是一种用于CDMA系统中信号接收的技术,它通过采用多个接收分支来接收和合并从不同路径到达的信号,以提高接收信号的质量。

RAKE接收机通常使用一个或多个强旗手路径来提取信号的多径分支,然后将这些分支合并以获得更好的信号质量。

现在,我们将讨论如何使用MATLAB进行CDMA系统中RAKE接收机的仿真分析。

首先,我们需要定义CDMA系统的参数。

这些参数包括扩频码、码片持续时间、符号持续时间、发射功率等。

我们可以使用MATLAB中的变量来定义这些参数。

接下来,我们需要生成CDMA系统中的发送信号。

我们可以使用MATLAB中的随机函数生成多个用户的发送信号,并使用对应的扩频码将其展开。

然后,我们可以将这些发送信号叠加在一起,并将它们传输到信道中。

然后,我们需要建立CDMA系统的信道模型。

在仿真中,我们可以使用MATLAB中的函数来模拟信道的特性,如多径传播和噪声。

我们可以使用瑞利衰落信道模型来模拟多径传播,并将高斯白噪声添加到接收信号中。

接着,我们可以实现RAKE接收机。

在MATLAB中,我们可以使用函数或自定义算法来实现RAKE接收机的功能。

首先,我们需要将接收信号传输到RAKE接收机中的各个分支。

然后,我们可以使用相关器来检测这些分支中的信号,并选择最强的分支作为接收信号的输出。

基于matlab的跳频通信系统的仿真

基于matlab的跳频通信系统的仿真

1
1.2.2 跳频技术的应用背景和发展趋势 跳频通信主要用于战术无线电通信和民用移动通信,其工作方式一般以语音为主,也可传输数据。跳 频通信具有良好的组网能力、低截获概率及抗干扰性 , 跳频技术提高了军事装备的抗截获和抗干扰能力 , 在军事领域得到了极大的发展,向通信对抗提出了严峻的挑战。开展跳频通信抗干扰技术的研究,寻求干扰 跳频通信的方法,己成了当前通信对抗领域十分紧迫而困难的任务之一 。 随着跳 频技术 的不断 发展 ,其应 用也 越来越 广泛。在战 术中,电台采 用跳 频技术 可以提 高通信 抗干扰 能力。早 在 70 年代,跳频 系统 的研究 就开始 了,现 已开发 的跳 频的 波段应 用为:在 VHF 波 段 (30 — 300MHz )的低端 30 — 88MHz 、 UHF 波段 (300MHz 以上)以及 HF 波段 (1.5 — 30MHz) 。跳频速 率和数 据数率 ,随着 研究 的不断 深入 ,也越 来越高 ,现 在美国 Sanders 公司的 CHESS 高速短波跳 频电台 已经实 现了 5000 跳 / 秒的跳频 速率 ,最高 数据 数率可 达到 19200bps。此外 ,CHESS 跳频电台 以 DSP 为基础,采用了 差动 跳频( DFH) 技术,与一般 的跳 频电台 有所 不同 。CHESS 跳频电台,通过 现代数 字处理 技术, 较好 地解决 了多 径衰落 、短波 系统 带宽有 限、 信号间 相互干 扰等问 题。同 时, 它的瞬 时信号 对其信 号的 影响很 小, 因为其 带宽 很窄。 跳频 电台可 以实现 更 高跳速 、 更高 数据 速率 , 正是跳 频通信 系统的 未来 发展方 向 ,新型 的跳 频电台 也已逐 渐应 用软件 无 线电 这 个概念 。当前的 军 事通信 中, 短波 自适应 跳频电 台已 经占有 了很 重要的 一部分 。 短波信 道有 许 多固有 特点 , 与 VHF/UHF 频段不 同,例 如,受天 气变化 、多 径时延 、幅 度衰落 等因 素的影 响,信道 条件变 化 不可 捉摸 。但是 短波通 信的可 靠性 ,随 着各种 新技术 的出 现,得到了 技术 上的保 证,这些 新技术 中 包括 自适应 跳频 技术。它通 过自动 搜索 无干扰 或未被 占用 的跳频 信道 进行跳 频,分析波 段 上的频 率占用 率,不仅 降 低了短 波频谱 大量占 用的 影响 ,也避 免了 自然干 扰。它会 根据需 要有效 的 适应恶 劣环境 ,自 动地 改 变跳频 序列。 它在海 湾战 争中体 现出 了优越 性,因 此引 起了各 国的 高度重 视。 远近 效应 ,在 现有 的 DS/CDMA 系统中是 一 个很 大的 问题 。由 于远 近效 应 只发 生在 大功 率信 号 的某个 频率上, 当载波 频率 跳变到 另一 个频率 时则不 受影 响 , 因此 远近效 应 在跳频 系统中 并不明 显 , 这使得 移动通 信中易 于应 用和发 展远 近效应 。在数字 蜂窝移 动通 信系统 中 ,如 果链路 间采 用低互 相 关的跳 频图案 异步跳 频 ,或者 采用 相互正 交的 跳频图 案同步 跳频 ,可 以完 全消除 或基本 消除链 路间 的干扰 ,对 提高系 统的容 量具 有重要 意义 。此 外,跳频 的 频率分 配具 有很 大的灵 活性 ,是瞬 时窄带 系统, 在现有 频率资 源比 较缺乏 的条 件下, 这一特 性具 有重要 意义 。 在组 网技 术中 ,跳 频的 多址 性能 具 有很 重要 的意 义。 加拿 大 Laval 大学,提 出了 将快 跳频 技 术应用 到光 纤网 络中 。该 系统 将传 统跳 频系 统中的 频率 合成 器用 Bragg 光栅替 代, 跳速 达到 10G 数量级。系统在 比特 误码率 为 10 , 30 个用户的条件下 ,数据 速率为 500Mb/s 。在具有相同数 量的 用户使 用时 ,FFH/CDMA 系统的比特误 码率明 显优于 DS/CDMA 系统,与采 用 非相干 DS/CDMA 技术的 光纤网 络相比 。 此外,跳 频技 术在 GSM 、室内无 线通信 、无线 局域网 、水下 通信、 卫星 通 信、微波 、雷达 等多 个领域 也得到 了十分 广泛 的应用

CDMA通信系统综合仿真实验报告

CDMA通信系统综合仿真实验报告

《信息处理综合实验》实验报告(十六)班级:x’x姓名:x’x学号:x’x日期:x’x实验十六 CDMA通信系统综合仿真一、实验目的1. 了解多址技术,扩频技术及CDMA相关通信原理知识。

2. 理解和掌握CDMA通信系统工作理论。

3. 完成CDMA通信系统的设计,并利用Matlab开展仿真分析。

4. 熟悉Matlab及simulink的使用。

2、实验内容1. 根据CDMA通信系统工作的原理(即扩频通信原理)如下图1,理解和掌握CDMA通信系统整个通信过程。

2. 根据CDMA通信系统工作的原理编写matlab程序,并简要讲述程序流程,用图片记录(显示)整个通信过程。

3. 根据CDMA通信系统工作的原理及程序流程用simulink进行仿真,记录仿真结果。

图1 扩频通信的工作原理三、实验结果1. 程序流程2. 仿真过程记录图2 初始用户传递信息图3 用户信息扩频后图4 基带信号图5 解扩后信号误码率:由于在设计中只考虑到加性高斯信道所带来的干扰,最终三个信息的误码率几乎均为0,这里不再作展示。

3. Simulink仿真过程记录。

图 6 simulink仿真图图7 初始信号1和初始信号2图8 扩频后的信号1和信号2图9 基带信号图10 解扩后的信号1和信号2四、实验结论对于本次实验以及仿真而言,基本完成了实验目的和内容的要求,通过用MATLAB对DS-CDMA系统的仿真调试、结果分析,让我熟悉了DS-CDMA的工作原理,加深了对扩频通信的认识。

通过仿真结果中波形的直观方式,让我更清晰的认识到CDMA通信系统的工作方式。

但是在设计中只考虑到加性高斯白噪声所带来的干扰,所以误码率计算的结果为0然而在实际通信信道及干扰是复杂多变的,存在着各种各样的情况,仿真实验中最后的信号是在很简单的干扰下(基本没有干扰)得出。

要想应用于实际中,必须加入各种噪声来考虑,以实现真实系统的设计。

即使如此,在本次设计的整个过程中,以上的结果已经令我受益匪浅。

基于MATLAB的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系统,并进行仿真。

CDMA通信系统的MATLAB仿真

CDMA通信系统的MATLAB仿真

CDMA通信系统的MATLAB仿真一、概述CDMA(Code Division Multiple Access)是在扩频通信的基础上发展起来的。

所谓扩频,是将原信号频谱扩展到宽带中进行传输的一种技术。

它主要利用相互正交(或尽可能正交)的不同随机码区分用户,实现多用户同时使用同一频率接入系统和网络。

经过几种网络的实现和发展,CDMA已经逐渐成熟起来。

我国的CDMA发展十分迅速,网络构架已具规模,在整个通信业起到举足轻重的作用。

在研究DS-CDMA系统理论的基础上,利用SIMULINK对其进行仿真,根据系统功能和指标要求,对信道、扩频/解扩、QPSK(Quadrature Reference Phase Shift Keying,四相相移键控)调制/解调等模块进行了设计,并设置了相对应的参数。

二、仿真图 3-1 整个DS-CDMA系统仿真框图1.DS-CDMA系统各模块设计1.1信源设计中,信源采用二进制贝努利序列产生器(Bernoulli Binary Generator)产生二进制序列。

模块如图3-2所示,参数设置如表3-1所示。

图3-2 二进制贝努利序列产生器表3-1 二进制贝努利序列产生器参数设置1.2扩频PN序列生成器的模块如图3-3。

I、Q两路的参数设置分别如图3-4、3-5所示。

图3-3 PN序列生成器图3-4 I路PN序列参数图 3-5 Q路PN序列参数扩频模块的部分截图如图3-6所示。

分别用示波器和频谱示波器观察结果。

图3-6 扩频模块1.3 QPSK调制扩频模块产生I、Q两路扩频信号,作为QPSK调制的输入信号。

采用库中的QPSK 基带调制模块,如图3-7所示,参数设置如图3-8所示。

图3-7 QPSK基带调制模块图3-8 QPSK基带调制模块参数设置1.4信道本设计采用加性高斯白噪声信道进行分析。

加性高斯白噪声信道是最简单的一中噪声,它表现为信号围绕平均值的一种随机波动过程。

加性高斯白噪声信道的均值为0,方差表现为噪声功率的大小。

CDMA系统仿真(matlab)

CDMA系统仿真(matlab)

CDMA系统仿真1.设计要求说明用matlab进行CDMA系统仿真,CDMA系统框图如图所示。

图 1 CDMA系统框图2、设计思路通过对IS-95窄带CDMA反向业务信道原理的了解,采用模块化思想,分为信源编码,信道交织编码,AWGN信道传播,信道解码以及信源解码等部分。

3、核心原理3.1 Viterbit(卷积)编码卷积码是分组的,但它的监督元不仅与本组的信息元有关,还与前若干组的信息由关。

着种码纠错能力强,不仅可以纠正随机差错,还能纠正突发差错。

本系统采用(2,1,8)卷积编码,编码器如图 2所示:图 2 卷积编码3.2 Walsh 码扩频Walsh 码是一组由0和1元素构成的正交方阵,即其任意两行(或两列)相互正交。

IS-95系统利用Walsh 码作为地址码,与信息数据相乘(或模2加)进行地址么调制,增强系统的抗干扰能力。

3.3 数据扰码利用伪随机序列对数据进行扰码,增强系统的抗干扰能力。

伪随机序列具有类似于随机序列的确定序列,序列中不同位置的元素取值相互独立,取0和1的概率相等。

本系统采用生成矩阵为[1000000101010001110011011110000010011101111]的m 序列发生器,对数据进行扰码。

3.4 QPSK 信号 3.4.1 QPSK 调制MPSK 调制中最常用的就是4PSK ,又称QPSK 。

因为它有四种相位状态,所以称为四相键控;又因为他是两个相互相交的BPSK 之和,所以又称作为正交移相键控,记作QPSK 。

对于矩形包络的多进制移相键控(MPSK ),其已调信号的表达式为:)(sin )()(cos )()(t t Q t t I t S c c MPSK ωω-=式中∑-=nb n nT t rect a t I )()( 同相分量∑-=n bnnTt rectbtQ)()(正交分量当M=4时,即位QPSK,它是由两个互相正交的BPSK之和构成的。

基于Matlab的CDMA通信系统分析及仿真毕业设计(论文)

基于Matlab的CDMA通信系统分析及仿真毕业设计(论文)

摘要利用MATLAB平台的SIMULINK可视化仿真功能,结合CDMA的实际通信情况,利用MATLAB组建出完整的CDMA通信系统,完成整体设计方案,实现完整的发送到接收的端到端的CDMA无线通信系统的建模、仿真和分析,介绍了CDMA的主要环节(包括扩频技术、差错控制技术、调制技术、信道等)的参数设置。

单用户在不同信道环境下,信道的噪声对结果影响很大,噪声功率越大,系统的误码率越大。

多用户在相同信道环境下的仿真时,由于是采用了噪声功率为0.01W的信道传输环境,所以在单用户情况下误码率为0,而增加了用户数之后,误码率也随之增加。

可见,信号在传输过程中,除了受到信道噪声的影响外,还存在多址接入干扰、单频干扰、窄带干扰、跟踪式干扰等,主要是多址接入干扰。

关键词:CDMA;通信系统;可视化仿真;MATLAB;SIMULINKAbstractMATLAB platform using SIMULINK simulation visualization features, combined with the actual CDMA communications, the use of MATLAB to form a complete CDMA communication system, the completion of the overall design, to achieve a complete end-to-end is sent to the receiver of the CDMA wireless communication system modeling , simulation and analysis ; Describes the key features of CDMA (including spread spectrum technology, error control techniques, modulation techniques, channel, etc.) parameters. Single-user channel in different environments, channel noise impact on the results, the greater the noise power, the greater the system bit error rate. Multi-user channel in the same simulation environment, as is the noise power of 0.01W transmission channel environment, so in the case of single-user bit error rate is 0, while the increase in the number of users, the error rate also increase. Can be seen that the signal during transmission, in addition to being the impact of channel noise, but also the existence of multiple access interference, and single-frequency interference, narrowband interference, jamming, such as tracking, mainly multiple access interference.Key words: Code Division Multiple Access;communication;system;visualizing simulation;MATLAB;SIMULINK目录摘要 (I)Abstract (II)目录 (III)绪论 (1)1. MATLAB的形成和发展 (2)1.1 MATLAB的主要特点 (2)1.2 MATLAB的发展现状 (4)1.3 CDMA码分多址通信技术简介 (4)2. Matlab的CDMA通信系统分析及仿真 (8)2.1 整体仿真框图 (8)2.2 信源 (8)2.3 伪随机序列生成器 (8)2.4 扩频 (9)2.5 编码和调制 (9)2.6 接收端 (13)3. 仿真系统 (15)3.1信源 (15)3.2编码 (15)3.3扩频 (16)3.4调制与解调 (16)3.5误码判断 (16)4. 实验结果 (17)4.1 单用户在不同信道环境下的仿真 (17)4.2 多用户在相同信道环境下的仿真 (17)结束语 (18)参考文献 (19)致谢 (20)绪论20世纪60年代以来,随着民用通信事业的发展,频带拥挤问题日益突出。

如何使用Matlab进行无线通信系统设计

如何使用Matlab进行无线通信系统设计

如何使用Matlab进行无线通信系统设计引言在现代社会中,无线通信系统已经成为我们日常生活中不可或缺的部分。

从智能手机到移动网络,无线通信系统的应用已渗透到各个领域。

而为了保证这些系统的高效运行,无线通信系统设计显得尤为重要。

在本文中,我将介绍如何使用Matlab进行无线通信系统的设计。

一、理解无线通信系统的基本原理在开始使用Matlab进行无线通信系统设计之前,我们首先需要理解无线通信系统的基本原理。

一个典型的无线通信系统由以下组成部分组成:发送端(Transmitter)、信道(Channel)和接收端(Receiver)。

发送端将原始信号进行编码、调制和功率控制,然后将信号通过信道传输。

在接收端,接收机将接收到的信号进行解码、解调和误码校正等处理。

因此,无线通信系统设计的关键问题是如何优化发送端和接收端的算法以及信道的特性。

二、简化通信系统建模在使用Matlab进行无线通信系统设计之前,我们需要对通信系统进行建模。

由于通信系统的复杂性,我们可以通过简化模型来降低设计的难度。

常见的一种简化模型是基带模型。

基带模型只考虑最基本的调制和解调过程,忽略了射频信号和实际的信道模型。

尽管如此,基带模型仍然可以提供关键的设计指导。

在Matlab 中,我们可以使用通信工具箱和信号处理工具箱来实现基带模型。

三、信道建模和仿真在无线通信系统设计中,信道同样起着重要的作用。

信道决定了信号在无线传输中的衰减、多径效应和噪声等特性。

为了更好地理解和优化无线通信系统,我们需要对信道进行建模和仿真。

在Matlab中,我们可以使用通信工具箱中的信道建模函数来生成各种类型的信道,并进行仿真实验。

通过仿真,我们可以评估不同信道条件下系统的性能,并优化算法和参数。

四、算法设计和优化无线通信系统中的算法设计是提高系统性能的关键。

在使用Matlab进行无线通信系统设计时,我们可以使用内置的函数和算法来实现常见的调制、解调、编码和解码等操作。

基于MATLAB的跳频通信系统的实现一

基于MATLAB的跳频通信系统的实现一

基于MATLAB的跳频通信系统的实现摘要跳频通信系统的安全性、稳定性和抗干扰能力是现代通信系统所必需的,跳频通信信息传输系统,有利于提高系统的抗干扰性能,改善信噪比,是扩频通信中的重点技术,研究实现跳频通信系统具有重要意义。

本文从跳频系统的组成,数学模型等方面概述跳频通信基本原理。

整个设计包括了信源产生部分、发送部分、跳频调制部分、信道部分、接收部分和结果分析部分共六个模块,利用该MATLAB软件SIMULINK库建立了跳频通信系统的仿真模型,分析了跳频通信系统中的多径干扰,噪声等因素影响,并进行了测试性能和评估,根据仿真结果,对跳频通信系统的性能进行了分析和总结。

关键词:跳频通信,扩频通信,MATLAB Simulink第一章绪论1.1研究背景及意义近年来,随着无线通信技术的快速发展,跳频通信系统在军事、航空、卫星通信等领域中得到了广泛应用。

在跳频通信系统中,频率是在发射端和接收端之间频繁地跳变,以防止信号被敌方干扰和窃听。

跳频通信系统的安全性、稳定性和抗干扰能力是现代通信系统所必需的,因此研究跳频通信系统的相关技术具有重要的理论和应用价值。

MATLAB是一种广泛应用于科学计算、数据分析、算法开发和可视化的强大工具。

它为工程师和科学家提供了一种高效的方式来处理数据和进行算法设计。

在跳频通信系统中,MATLAB可以用来建立系统模型、仿真、分析和优化跳频通信系统。

因此,研究基于MATLAB的跳频通信系统具有实际意义和研究价值。

本文旨在探究基于MATLAB的跳频通信系统,研究其信号处理、频谱分析和抗干扰等相关技术,为跳频通信系统的进一步发展提供理论和实践基础。

现代军事化进程快速发展,未来战争会是以电子战,信息战的对抗为主,跳频通信技术的研究也成为了世界各国关注的焦点。

此外,跳频通信还具有很强的抗干扰性,当某一频率点受到干扰时,其它频率点仍然可以正常传输。

随着现代信息对抗的加剧,跳频通信技术得到了快速的发展。

基于matlab设计的数字基带传输系统

基于matlab设计的数字基带传输系统

代码能仿真出基础的数字基带信号传输过程,采用双极性不归零编码,其中奈奎斯特滤波器是通过加载由fda工具生成的mat文件。

在仿真过程中,加入的高斯白噪声越大,误码率越高。

滤波器的滚降系数越小,误码率越高。

clc;clear all;N=100;%生成的比特个数n=16; %每个比特的抽样点数signal=rand(1,N)>0.5; %生成低密度的个数为N的01比特流Rb=16;Ts=1/(Rb*n);%抽样间隔%画原信号t1=0:1/Rb:(N-1)/Rb;figure(1)subplot(6,1,1)plot(t1,signal,'b.')axis([0,20/Rb,-1.2,1.2])grid ontitle('原始信号')%双极性编码code_signal=ones(1,1600);for j=1:100if signal(j)==0for i=0:15code_signal(16*j-i)=-1;endendend%扩展了原信号的抽样点数,并生成双极性编码%画双极性编码信号t2=0:Ts:(N*n-1)*Ts;%T=N*Rb为生成的信号的长度subplot(6,1,2)plot(t2,code_signal,'b.')axis([0,20/Rb,-1.2,1.2])grid ontitle('双极性编码')transmissionsignal=awgn(code_signal,10); %加入高斯白噪声%画出高斯白噪声后的信号subplot(6,1,3)plot(t2,transmissionsignal)axis([0,20/Rb,-1.2,1.2])grid ontitle('加入高斯白噪声后的信号')%奈奎斯特滤波器myNyquist=load ('myNyquist0.5.mat');%Rolloff=0.5,fs=256,Band=8 den=1;filtersignal=filter(myNyquist.Num,den,transmissionsignal);%经升余弦滚降系统之后信号subplot(6,1,4)plot(t2,filtersignal)axis([0,20/Rb,-2,2])grid ontitle('经升余弦滚降系统之后信号')%抽样判决samplesignal=[];for i=n/2:n:length(filtersignal)if filtersignal(i)>0for j=1:nsamplesignal=[samplesignal,1];endelsefor j=1:nsamplesignal=[samplesignal,-1];endendend%画抽样判决之后的信号subplot(6,1,5)plot(t2,samplesignal,'b.')grid onaxis([0,20/Rb,-1.2,1.2])title('抽样判决之后的信号')%反向恢复原编码ssignal=[];for i=n/2:n:length(samplesignal)if samplesignal(i)>0ssignal=[ssignal,1];elsessignal=[ssignal,0];endend%恢复信号subplot(6,1,6)plot(t1,ssignal,'b.')grid onaxis([0,20/Rb,-1.2,1.2])title('恢复信号')%误码率的计算syms cntcnt=0;for c=1:100if signal(c)==ssignal(c)cnt=cnt+0;elsecnt=cnt+1;endenderror=cnt/n仿真图:原始信号双极性编码加入高斯白噪声后的信号经升余弦滚降系统之后信号抽样判决之后的信号恢复信号。

消除噪声的ICA盲多用户检测

消除噪声的ICA盲多用户检测

消除噪声的ICA盲多用户检测白夏红;李辉;邢钢【摘要】针对已有的基于独立分量分析(Independent Component Analysis,ICA)的盲多用户检测中为了便于分析经常将噪声信号忽略,从而造成系统检测性能下降的问题。

提出了基于ICA的盲多用户检测的改进算法,该算法不仅能抑制远近效应和多址干扰,而且利用信号子空间和有效无偏估计原理可最大限度地消除被忽略的噪声,提高了系统的容量。

通过Matlab实验仿真,验证了该算法的有效性和实用性。

%The noise signal is often neglected for Independent Component Analysis algorithms(ICA)for blind multiuser detection put forward;it leads the detection performance of Direct Sequence spread spectrum Code Division Multiple Address(DS-CDMA) system to decrease. The noise term is taken into account. The improved ICA for blind multiuser detector is proposed. The algorithm can not only suppress Near-Far Effects and Multi-Access Interference but also reduce the noise term neglected as far as possible by signal subspace and effective unbiased estimate, to gain the capacity of the system. Simulation results demonstrate that the proposed method is effective and practicable.【期刊名称】《计算机工程与应用》【年(卷),期】2013(000)024【总页数】4页(P210-213)【关键词】盲多用户检测;独立分量分析;直接序列扩频码分多址(DS-CDMA)系统;罗克拉美下界【作者】白夏红;李辉;邢钢【作者单位】西北工业大学电子信息学院,西安 710129;西北工业大学电子信息学院,西安 710129;西北工业大学电子信息学院,西安 710129【正文语种】中文【中图分类】TN91在直接序列扩频码分多址(Direct Sequence spread spectrum Code Division Multiple Address,DS-CDMA)系统中,发射机为每个用户分配了不同的扩频码序列,而接收机收到的信号包含了所有用户的信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

M a t l a b实现D S/C D M A基带传输系统●设计要求:
各用户的二进制数据b与扩频码c进行扩频,用户数K为4个,扩频增益取31,扩频码采用Gold 码,接收端假设理想同步,对各用户通过解扩恢复各自的信息数据。

发端基带成型采用滚降因子为0.22的平方根升余弦滚降脉冲(用48阶的FIR滤波器来实现,每个码片采样16个样点),接收机用码片第8个或第9个样点作为判决点,信噪比大小(SNR)自设,如SNR可取为20dB或30dB。

●设计原理
1、扩频/解扩技术
扩展频谱(SS:Spread Spectrum)通信简称扩频通信。

在发送端,采用扩频码调制,使信号所占的带宽宽度远大于所传信息必须的带宽;在接收端,采用相同的扩频码进行相关解调来解扩以恢复所传信息数据。

理论基础
扩频通信的基本理论是根据信息论中的Shannon 公式,即
式中:C为系统的信道容量(bit/s);B为系统信道带宽(Hz);S为信号的平均功率;N为噪声功率。

Shannon公式表明了一个系统信道无误差地传输信息的能力跟存在于信道中的信噪比(S/N)以及用于传输信息的系统信道带宽(B)之间的关系。

该公式说明了两个最重要的概念:一个是在一定的信道容量的条件下,可以用减少发送信号功率、增加信道带宽的办法达到提高信道容量的要求;一个是可以采用减少带宽而增加信号功率的办法来达到。

扩频增益是扩频通信的重要参数,它反应了扩频通信系统抗干扰能力的强弱,其定义为
接收机相关器输出信噪比和接收机相关器输入信噪比之比,即
式中,S i和S0分别为接收机相关器输入、输出端信号功率;N i和N0分别为相关器的输入、输出
端干扰功率;R s为伪随机码的信息速率,R d为基带信号的信息速率;B s为频谱扩展后的信号带宽,B d频谱扩展前的信号带宽。

●实现方法:
扩频通信系统与普通的数字通信系统相比较,就是多了扩频调制和解扩部分。

在发端输入的信息先经信息调制形成数字信号,然后由扩频码发生器产生的扩频码序列去调制数字信号以展宽信号的频谱。

在接收端收到的宽带射频信号,变频至中频,然后由本地产生的与发端相同的扩频码序列去相关解扩。

再经信息解调、恢复成原始信息输出。

一次调制为信息调制,二次调制为扩频调制,以及相应的信息解调、解扩
以上是扩频通信的一般的调制解调方式,本文只采用直接序列扩频调制。

直接序列扩频调制是以直接扩频方式构成的扩展频谱通信系统,通常简称直扩(DS)系统。

如前所述,它是直接用高速率为随机码在发端去扩展信息数据的频谱;在收端,用完全相同的伪随机码进行解扩,把展宽的扩频信号还原成原始信息。

这里的“完全相同”是指收端产生的伪随机码不但在码型结构上与发端的相同,而且在相位上也要一致(完全同步)。

如果码型结构相同但不同步,也不能恢复成窄带信号,得不
到所发的信息。

⊗⊗⊗12
b
DS/CDMA 基带传输系统框图
如图,本文的扩频通信的实现,首先用本地产生的GOLD 序列,与各用户数字信号进行扩频调制, 相加后经过余弦滚降滤波器成型基带信号发送,在接收端对接收到的数字信号进行滤波,抽样,然后解扩,恢复出原来的信号。

2、伪随机序列和码分多址技术
伪随机码,它是类似于随机序列基本特性的确定序列。

通常广泛应用二进制序列,因此我们仅限于二进制序列。

在概率论中,二进制独立随机序列一般称为贝努利序列,它由两个元素0,1或-1,1组成,序列中不同位置的元素取值相互独立,取0或取1的概率相等,都为1/2。

它有以下三个基本特性:
(1) 在序列中0和1出现的相对概率各为1/2。

(2) 序列中连0或连1称为游程,连0或连1的个数称为游程的长度。

序列中长度为1的游程数占游程总数的1/2;长度为2的游程占游程总数的1/4;长度为3的游程数占游程总数的1/8;长度为n 的游程数占游程总数的n 21(对于所有有限的n )。

此性质我们称为随机序列的游程特性。

(3) 所得序列和原序列的对应元素有一半相同,一半不相同。

Gold 码的产生方法
Gold 码是m 序列的组合码,由同步时钟控制的两个码字不同的m 序列优选对逐位模2加得到,其原理如图2-1 所示。

这两个码发生器的周期相同,速率也相同,因而两者保持一的
定的相位关系,这样产生的组合码与这两个子码序列的周期也相同。

当改变两个m 序列的
相对位移时,会得到一个新的Gold 码。

Gold 码虽然是m 序列模2 加得到的,但它已不再是m 序列,不过仍具有与m 序列近似的优良特性,各个码组之间的互相关特性与原来两个m 序列之间的互相关特性一样,最大的互相关值不会超过原来两个m 序列间最大互相关值。

Gold 码最大的优点是具有比m 序列多得多的独立码组。

Gold 码序列发生器
Gold 码序列具有以下性质:
(1)两个m 序列优选对经不同移位相加产生的新序列都是Gold 序列,两个n 级移位寄
存器可以产生2n+1 个Gold 序列,周期均为2n-1。

(2)Gold 码序列的周期性自相关函数是一个三值函数,与m 序列相比,具有良好的互相
关特性。

在码分多址通信系统中,利用自相关性很强而互相关值为0或很小的周期性码序列作为地址码,与信息数据相乘(或模2加),经过相应的信道传输后,在接收端以本地产生的已知地址码为参考,根据相关性的差异对收到的所有信号进行鉴别,从中将地址码与本地地址码一致的信号选出来,把不一致的信号除掉(称之为相关检测)。

●本设计中,要求扩频增益取31,即一个信息码元中含有31个gold码元,
用户信息码和gold码都为随机产生,转化为双极性码元,进行扩频调制:(此次发送200个信息码元)现在列举其中一个用户前30个信息码元和扩频调制后100个码元.扩频码长度为
31*200=6200。

相关文档
最新文档