1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 1
1 0 1 1 0 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 10 0 1 1 0 0 0 1 0 1 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0
1 1 1 1 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 1 10 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 0 0 1 1
1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 0 00 0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 1 0 1 0 1
0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 1 01 0 0 1 1 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 1 0
0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 1 1 11 1 1 0 1 0 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 将6组m序列任意两两组合计算他们的互相关值,并找出其中最大的互相关值的绝对值与Ra,b(k)?2(n?2)2?1 (n为偶数)比较求出n=6所对应的优选对对应的本原多项式:
x6?x?1与x6?x4?x3?x?1 x6?x?1与x6?x5?1
x6?x?1与x6?x5?x2?x?1 x6?x4?x3?x?1与x6?x5?x3?x2?1 x6?x4?x3?x?1与x6?x5?x4?x?1 x6?x5?1与x6?x5?x3?x2?1 x6?x5?1与x6?x5?x4?x?1 x6?x5?x2?x?1与x6?x5?x3?x2?1 x6?x5?x2?x?1与x6?x5?x4?x?1
(此为本原多项式f(x)?x6?x?1和本原多项式f(x)?x6?x5?1所得m序列的互相关值:-1 11 -9 -1 -1 7 11 -5 -9 7 -1 3 -1 11 7 7 11 11 -5 -13 -9 -5 7 15 -1 -13 3 -5 -1 -9 11 -1 7 -5 7 3 11 7 11 -13 -5 15 -13 -5 -9 -1 -5 3 7 -13 15
31
-5 -1 3 -13 -5 3 -5 -5 -9 -1 -1 -9 其中最大的互相关值的绝对值为15,小于2(6?2)2?1。故本原多项式f(x)?x6?x?1和本原多项式
f(x)?x6?x5?1互为优选对)
选出由本原多项式f(x)?x6?x?1和本原多项式f(x)?x6?x5?1生成的m序列为m序列的优选对,以此优选对为例来产生Gold序列。实现如下: fbconnection1=[1 0 0 0 0 1]; fbconnection2=[0 0 0 0 1 1];
goldseq=gold_seq(fbconnection1,fbconnection2);
保存为goldxulie.m,运行后在MATLAB命令窗口输入:goldseq=gold_seq([1 0 0 0 0 1], [0 0 0 0 1 1])并回车,返回结果为31×31的矩阵,其每一行即为一 个Gold序列,这里列出其中两个Gold序列:0
1 1 0 0 0 1 0 1 1 0
1 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 11 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 10 1 1 0 0 1 0 0 0 0
0
0 1 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1
1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 00 0 0 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 0 0 11 0
其中自编函数gold_seq.m用来产生Gold序列。其输人参数为能组成优选对的两个反馈连接,输出矩阵的每一行为一个Gold序列。其代码如下
function[goldseq]=gold_seq(fbconnection1,fbconnection2) mseq1=m_sequence(fbconnection1); mseq2=m_sequence(fbconnection2); N=2^length(fbconnection1)-1; for shift_amount=0:N-1
shift_mseq2=[mseq2(shift_amount+1:N) mseq2(1:shift_amount)]; %实现移位 goldseq(shift_amount+1,:)=mod(mseq1+shift_mseq2,2); %进行模2加计算 end;
32
Gold序列仿真图如下,图5.3所示:
gold sequence1.41.210.80.60.40.20-0.2-0.45101520253035
图5.3 gold序列仿真图
5.3 MATLAB环境中伪随机序列相关函数的实现及特性
先将序列中的“ 0”映射成“-1”,再根据伪随机序列相关函数的定义求其对应的相关值,程序如下:
function r=cc(seq1,seq2)
N=length(seq1); %计算序列的长度;
seq1=2*seq1-1; %将序列中的“ 0”映射成“-1”; seq2=2*seq2-1; %将序列中的“ 0”映射成“-1”; r(1)=seq1*seq2'; %计算两个序列间的相关值 for k=1:N-1
seq2_shift=[seq2(k+1:N) seq2(1:k)]; %现循环移位 r(k+1)=seq1*seq2_shift'; end
33
5.4 两种相关函数间的相关特性比较
34
第六章 心得体会
这两周进行的通信系统专业课程设计是通信工程专业的最后一次课程设计。这次课程设计是在我们学完主要专业课程之后进行的,这使得这次课程设计能够综合以前所学的专业知识,是对前面知识的一次实际检验。
我选的是有关PN码(也就是伪随机序列)发生器的设计。从最基本的原理分析到设计原理框图,再到程序设计及仿真的完整设计流程做起,巩固已学知识,加深理解,力争做到灵活应用。在选好课题之后,我在图书馆及互联网查找相关资料,确定详细的设计方案。最后,参阅了大量资料后,确定了以m序列发生器的设计为例,阐述伪随机序列发生器设计的一般原理。
在通信工程应用中,常采用二进制伪随机序列。而伪随机序列或称伪随机码,是模仿随机序列的随机特性而产生的一种玛字,也称为伪噪声序列或伪噪声码。在数字通信中,伪随机序列有很多种,有m序列、Gold序列、M序列等。本次课程设计,让我学到了很多东西,更让我明白了做任何事情没有正确的态度是不行的。而且我发现有些事情看似容易,但是做起来就不象想象中的那么容易了。此次设计我获益太多。希望以后能有更多自己动手的机会!
35
参考文献:
[1] 苏金名,阮沈勇.MATLAB实用指南(上册).北京:电子工业出版社,2002 [2]段吉海等.基于CPLD/FPGA的数字通信系统建模与设计.电子工业出版社2004,5 [3] 李勇,徐震.MATLAB辅助现代工程数学信号处理.西安:西安电子科技大学出版社,2002,105-126
[4] 王沫然.Simulink4建模及动态仿真.北京:电子工业出版社,2001 [5] 刘敏,魏玲.MATLAB通信仿真与应用.北京:国防工业出版社,2002
[6] 肖国镇,粱传甲,王玉民.伪随机序列及其应用.北京:国防工业出版社,1985 [7] 樊昌信,詹道庸,徐炳祥,吴成柯.通信原理.北京:国防工业出版社,1995,323-338 [8] 张扬,杜兴民,卫剑钒.一种M序列的高效生成算法.通信学报,1999,第6期,86-90 [9] 曾凡鑫.关于本原M序列的一些自相关函数取值.通信学报,1997,第9期,26-30 [10] 王贵竹.产生伪随机序列的字节溅射法.安徽大学学报2000第4期,64-70 [11] 陈顺林,董庆蓉.m序列在移动通信扰码中的应用及仿真。现代电子技术,2002,第3期,27-29
[12] 方秀花,江修富.计算机搜索平衡Gold序列方法研究.技术指挥学院院报,2001,第5期,61-64
[13] 曾兴雯,吴蕾等.M序列自相关函数最大旁瓣的概率分布.西安电子科技大学学报,2002,29(1),71-73
[14] 陈清华,许以金.扩频码分多址通信的关键技术.现代通信,2002,第9期 [15] 张广森,王虎.CDMA通信系统的MATLAB仿真.天津通信技术,2002,第3期,30-32 [16] 吴明捷,马景兰.直接序列扩频通信中的伪随机码.公矿自动化.2002,第3期,11-14 [17] 曹庆华.扩频通信中伪随机序列的捕获.电信快报,2001,第8期,27-29
[18] 王贵竹,李津生.变位记数制与伪随机序列的生成.中国科技大学学报,2000,第4期,38-43
36