1、 1 洗手 洗手 设计内容及要求 洗手 基于 MATLAB 产生 m 序列 洗手 要求 : beef洗手 1通过 matlab 编程产生 m 序列的产生原理及其产生方法 。 洗手洗手 2对特定长度的 m 序列 , 吃饭 分析其性质 , 吃饭 及其用来构造其它序列的方法 。 洗手洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 2 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 第二章 m序列设计方案的选择 洗手 2.1 方案一 洗手 MATLAB 编程非常简单 , 吃饭 无需进行变量
2、声明 , 吃饭 可以很方便的实现 m序列 。 洗手洗手 2.2 方案二 洗手 洗手 图 2.1 Simulink 实现 m序列 洗手 洗手 Simulink 是 MATLAB 最重要的组件之一 , 吃饭 它提供了一个动态系统建模 , 吃饭 仿真和综合分析的集成环境 。 洗手 在此环境中无需大量书写程序 , 吃饭 而只需通过简单直观的鼠标操作 , 吃饭 就可构造出复杂的系统 。 洗手 Simulink 具有适应性广 , 吃饭 结构及流程清晰及仿真精细等优点 , 吃饭 基于以上优点 , 吃饭 Simulink 已被广泛的运用到控制理论和数字信号处理的复杂仿真和 设计 。 洗手洗手 通过比较方案一和
3、方案二 , 吃饭 发现方案一的有点具有通用性而方案二利用MATLAB 的 Simulink 直接搭建模块 , 吃饭 在移位寄存器较少的情况下利用此方法比较简单 , 吃饭 可是当移位寄存器的个数增多时 , 吃饭 要搭建那么多的模块就显的很繁琐了 ,吃饭 缺乏通用性 , 吃饭 因此本次实验选择方案一 。 洗手洗手 洗手 m序列的产生及性质 洗手 洗手 3.1 m 序列的产生原理 、 bef结构及产生 洗手 3 m 序列是最长线性反馈移位寄存器序列的简称 , 吃饭 m 序列是由带线性反馈的移位寄存器产生的 。 洗手洗手 由 n 级串联的移位 寄存器和反馈逻辑线路可组成动态移位寄存器 , 吃饭 如果反
4、馈逻辑线路只由模 2 和构成 , 吃饭 则称为线性反馈移位寄存器 。 洗手洗手 带线性反馈逻辑的移位寄存器设定初始状态后 , 吃饭 在时钟触发下 , 吃饭 每次移位后各级寄存器会发生变化 , 吃饭 其中任何一级寄存器的输出 , 吃饭 随着时钟节拍的推移都会产生一个序列 , 吃饭 该序列称为移位寄存器序列 。 洗手洗手 n级线性移位寄存器的如图 3.1 所示 : beef洗手 洗手 A 洗手 洗手 洗手 洗手 图 3.1 n级线性移位寄存器 洗手 洗手 图中 Ci表示反馈线的两种可能连接方式 , 吃饭 Ci=1表示连线接通 , 吃饭 第 n-i级输出加入反馈中 ; beefCi=0表示连线断开
5、, 吃饭 第 n-i级输出未参加反馈 。 洗手洗手 因此 , 吃饭 一般形式的线性反馈逻辑表达式为 洗手 -表达式 3.1洗手 将等式左边的 an移至右边 , 吃饭 并将 an=C0an(C0=1)带入上式 , 吃饭 则上式可以写成 洗手 -表达式 3.2洗手 定义一个与上式相对应的多项式 洗手 -表达式 3.3洗手 其中 x的幂次表示元素的相应位置 。 洗手 该式为线性反馈移位寄存器的特征多项式 , 吃饭特征多项式与输出序列的周期有密切关系 。 洗手 当 F(x)满足下列三个条件时 , 吃饭 就一定能产生 m序列 : beef洗手 F(x)是不可约的 , 吃饭 即不能再分解多项式 ; bef
6、洗手 F( x)可整除 xn+1, 吃饭 这里 p=2n+1; bef洗手 F( x)不能整除 xn+1, 吃饭 这里 qq.洗手 满足上述条件的多项式称为本原多项式 , 吃饭 这样产生 m序列的充要条件就变成了如何寻找本原多项式 。 洗手洗手 4 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 3.2 m序列的基本性质 洗手 洗手 均衡性 。 洗手 在 m序列一个周期中 1的个数比 0要多 1位 , 吃饭 这表明序列平均值很小 。 洗手洗手 m序列与其移位后的序
7、列模 2相加 , 吃饭 所得的序列还是 m序列 , 吃饭 只是相位不同而已 。洗手 例如 : bef1110100与向又移 3位的序列 1001110相对应模二相加后的序列为 0111010,吃饭 相当于原序列向右移一位后的序列 , 吃饭 仍为 m序列 。 洗手洗手 m序列发生器中移位寄存器的各种状态 , 吃饭 除全 0状态外 , 吃饭 其他状态只在 m序列中出现一次 。 洗手洗手 m序列发生器中 , 吃饭 并不是任何抽头组合都能产生 m序列 。 洗手 理论分析指出 , 吃饭 产生的m序列数由下式决定 : beef洗手 -表达式 3.4洗手 5 其中 ( X)为欧拉数 。 洗手 例如 5级移位
8、寄存器产生 31位 m序列只有 6个 。 洗手洗手 m序列具有良好的自相关性 , 吃饭 其自相关系数 : beef洗手 -表达式 3.5洗手 从 m序列的自相关系数可以看出 m序列是一个狭义伪随机码 。 洗手洗手 洗手 洗手 洗手 洗手 图 3.2 m序列信号的自相关函数 洗手 洗手 洗手 洗手 洗手 洗手 洗手 3.3 生成 m序列的模块 洗手 洗手 根据 m序列的生成原理图 , 吃饭 如图 3.1所示 , 吃饭 由图可知 m序列是 多级移位寄存器通过线性反馈再进行 模二相加产生的 , 吃饭 最后一位一位输出观察其波形图 。 洗手 程序中使用的代码如下 : b eef洗手 洗手 N=2len
9、gth(reg1)-1;beef洗手 for k=1:N洗手 a_n=mod(sum(reg1.*coeff1(1:length(coeff1)-1),2);beef洗手 reg1=reg1(2:length(reg1),a_n;beef洗手 out1(k)=reg1(1);beef洗手 end洗手 其中 N为 m序列的长度 , 吃饭 值为( 26-1) 。 洗手 由程序已定义了移位寄 存器的初始状态和抽头系数 , 吃饭 在此基础上进行反馈 , 吃饭 后进行模二加 , 吃饭 所得的结果为输出的第一个值 ,吃饭 初始状态向左移移位 , 吃饭 而所得的输出值填补上变成新的序列 , 吃饭 在进行第二
10、次反馈和模二加 , 吃饭 依次循环 N次 , 吃饭 产生 m序列 洗手 洗手 6 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 第四章 m序列构造其他序列 洗手 洗手 洗手 Gold序列具有三值互相关函数 , 吃饭 其值为 : beef洗手 2)(1,1),(1 rtpprtp(式 2.10) 洗手 这里 , 吃饭 洗手 的倍数为偶数但不是, 为奇数 421 ,21)(,12 )2(5.0)1(5.0r rrtp rrr (式 2.11) 洗手 当 r为奇数时 , 吃饭 gold序列中约有 50%的码序列归一
11、化相关函数值为 -1/p。 洗手 当 r为偶数但又不是 4的倍数是 , 吃饭 约有 75%的码序列归一化互相关函数值为 -1/p。 洗手 洗手 Gold序列是 R.Gold于 1967年提出来的 , 吃 饭 它由两个 m序列按下述方法演变而来的 : beef把 2个码长相同的 m序列移位并进行模 2加 , 吃饭 如果相加的两个 m序列是一对优选对 ,吃饭 则相加的结果为一个 Gold序列 。 洗手洗手 设有一对周期为 N=2r-1的 m序列优选对 a , 吃饭 b , 吃饭 以其中任意一个序列为基准序列 , 吃饭 如 a , 吃饭 对另一个序列 b进行移位 i次 , 吃饭 得到 b的移位序列
12、bi ,吃饭 然后与序列 a进行模二加得到一个新的周期为 N的序列 c , 吃饭 则称新序列 c为 Gold序列 , 吃饭 既 洗手 ci = a + b i=0, 吃 饭1, 吃饭 2, 吃饭 .,N洗手 洗手 7 洗手 4.1 Gold序列的产生方框图 洗手 洗手 产生 gold序列的程序代码如下 : beef洗手 gold=mod(out1+out2,2);b eef洗手 程序调试及运行结果 洗手 5.1仿真设计流程图 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 否 洗手 洗手 洗手 是 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 否 洗手 洗手 洗手 仿真准备
13、 规划程序模块 编写程序 确认程序无 误 设置仿真参数 运行,调试及数据分析 生成仿真图形 是否达到要 求 结束 8 是 洗手 洗手 洗手 图 5.1 实验仿真流程图 洗手 5.2实验的调试与运行结果 洗手 洗手 程序中把移位寄存器的初始值定义全为 1, 吃饭 抽头系数定义为 1000011和1100111,根据公式 m序列的长度 =2n-1, 吃饭 可知道所得的两个 m序列的长度都为 63,吃饭 所利用的移位寄存器为 6个 。 洗手 代码如下 : bef洗手 reg1=ones(1,6);b eef %寄存器初始状态 洗手 coeff1=1 0 0 0 0 1 1;b eef %设置系数 洗
14、手 reg2=ones(1,7);b eef %寄存器初始状态 洗手 coeff2=1 0 0 1 1 1 1;b eef %设置系数 洗手 洗手 程序检测无误后 , 吃饭 运行程序 , 吃饭 得到图形如下 : bef洗手 洗手 洗手 洗手 洗手 图 5.2 运行后的两 m序列波形仿真图 洗手 洗手 洗手 洗手 洗手 9 洗手 洗手 洗手 根据产生 Gold序列的原理 , 吃饭 运行程序 , 吃饭 得到如下 Gold序列的仿真图 ; beef洗手 洗手 洗手 洗手 图 5.3 运行后 Gold序列的仿真图 洗手 洗手 自相关性 : bef首先将第一个 m序列变成双极性的序列 , 吃饭 在与本身
15、进行 移位相乘进行积分运算 , 吃饭 代码如下 : beef洗手 out1=2*out1-1;b eef %变为双极性序列 洗手 for j=0:N-1洗手 rho(j+1)=sum(out1.*out1(1+j:N),out1(1:j)/N;b eef洗手 end洗手 j=-N+1:N-1;b eef洗手 rho=fliplr(rho(2:N),rho;b eef洗手 figure(3)洗手 plot(j,rho);b eef洗手 axis(-10 10 -0.1 1.2);b eeftitle(第一个 m序列的自相关函数 )洗手 洗手 洗手 洗手 洗手 互相关性 : beef第一个 m序列的函数与第二个 m序列函数的移位相乘进行积分运算 。 洗手10 代码如下 : b eef洗手 for j=0:N-1洗手 R(j+1)=sum(out1.*out2(1+j:N),out2(1:j);b eef洗手 洗手 洗手 图 5.4 m序列自相关性仿真图 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手