伪随机序列
通信原理精品课-第七章m序列(伪随机序列)

04
m序列在扩频通信中的应用
扩频通信的基本原理和特点
扩频通信的基本原理
扩频通信是一种利用信息信号对一个很宽频带的载波进行调制,以扩展信号频谱 的技术。通过扩频,信号的频谱被扩展,从而提高了信号的抗干扰能力和隐蔽性 。
扩频通信的特点
扩频通信具有抗干扰能力强、抗多径干扰能力强、抗截获能力强、可实现码分多 址等优点。同时,扩频通信也存在一些缺点,如信号的隐蔽性和保密性可能受到 影响,信号的带宽较宽,对信道的要求较高。
在无线通信中,由于信号传播路径的不同,接收端可能接收到多个不同路径的信号,形成多径干 扰。
抗多径干扰
m序列具有良好的自相关和互相关特性,可以用于抗多径干扰。通过在发射端加入m序列,可以 在接收端利用相关器检测出原始信号,抑制多径干扰的影响。
扩频通信
m序列可以用于扩频通信中,将信息信号扩展到更宽的频带中,提高信号的抗干扰能力和隐蔽性 。
离散性
m序列是一种周期性信号,其 功率谱具有离散性,即只在某 些特定的频率分量上有能量分 布。
带宽有限
m序列的功率谱具有有限的带 宽,其带宽与序列的长度和多 项式的系数有关。
旁瓣抑制
m序列的功率谱具有较好的旁 瓣抑制特性,即除了主瓣外的 其他频率分量的能量较小。
m序列在多径干扰抑制中的应用
多径干扰
抗截获能力
m序列扩频通信系统具有较强 的抗截获能力。由于信号的频 谱被扩展,敌方难以检测和识 别信号,从而提高了通信的保 密性。
码分多址能力
m序列扩频通信系统具有较强 的码分多址能力。不同的用户 可以使用不同的扩频码进行通 信,从而实现多用户共享同一 通信信道。
05
m序列的未来发展与研究方向
m序列与其他通信技术的融合应用
通信课件正交编码与伪随机序列

|
| iNTc | Tc,i 0,1,2...
1/ N
Tc iNTc iNTc (N 1)Tc iNTc
1
0
NTc
1
N
m序列波形的功率谱密度
Gold码
n个寄存器的m序列数目有限,且互相关起 伏大
Gold码构造数量多且互相关特性好的码 Gold采用优选m序列,可以构造出2n+1
in 14 cities
U.S. PCS standard issued
First commercial CDMA system
in Hong Kong using QUALCOMM phones
Commercial systems in 100 U.S. cities Japan selects
CDMA
宽带干扰
这里宽带干扰来自系统其他用户、多径传 播等,它们的特点是干扰信号占用的频带 与扩频信号一样宽。
从理论上说,如果宽带干扰与接收信号是 不相关的,则解扩时由于采用相关接收机, 宽带干扰对接收信号的干扰为0。但是实际 系统中,由于种种原因,不可能实现各个 用户的完全正交。
抗多径干扰
对于普通的2PSK来说,信道中的多径传播 (从频域看就是频率选择性失真)会造成 码间干扰,解决这个问题的方法之一是使 用均衡,均衡一般比较复杂。如果我们采 用DSSS,则可以用比较简单的方法解决 此问题。
能重复产生(随机序列一般不可重复) 问题:如何产生伪随机序列
m序列发生器 Gold序列发生器 …
m序列发生器
m序列是最长线性反馈移位寄存器序列的 简称,它是由带线性反馈的移位寄存器产 生的周期最长的序列。
例:两个线性移位寄存器序列发生器如下
输出 图1A
pn序列产生原理

PN序列的基本原理1. 引言PN序列(Pseudo-Noise sequence)是一种伪随机序列,具有良好的随机性质,被广泛应用于通信、密码学和信号处理等领域。
本文将详细解释PN序列的产生原理,包括线性反馈移位寄存器(LFSR)和Gold序列的生成方法。
2. 线性反馈移位寄存器(LFSR)LFSR是产生PN序列的主要工具,它是一种由多个触发器组成的寄存器,在每个时钟周期内,通过对寄存器的状态进行移位和反馈,生成下一个时刻的输出。
LFSR由以下三个要素组成: - 寄存器:由若干个触发器(一般是D触发器)组成,每个触发器有一个时钟输入和一个输出。
- 反馈多项式:用于决定每个触发器的输入。
它是一个多项式,其系数为0或1,表示每个触发器的输出是否参与反馈。
- 反馈方式:决定每个触发器的输出是否参与反馈,可以是异或、与或非等逻辑运算。
LFSR的工作过程如下: 1. 初始状态:将寄存器的初始值设定为一个非零值。
2. 时钟触发:在每个时钟周期内,寄存器的状态向左移位,即将每个触发器的输出传递给下一个触发器。
3. 反馈:根据反馈多项式和反馈方式,计算新的输入值。
一般来说,将参与反馈的触发器的输出进行逻辑运算,得到新的输入值。
4. 输出:取寄存器的最低位作为输出。
LFSR的输出序列称为线性反馈移位寄存器序列,具有周期性。
当寄存器的状态重新回到初始状态时,序列将重复。
3. PN序列的生成方法PN序列的生成方法主要有两种:简单LFSR和Gold序列。
3.1 简单LFSR简单LFSR是最基本的PN序列生成方法,其特点是只使用一个LFSR。
简单LFSR的生成过程如下: 1. 初始化:选择适当的寄存器初始值。
2. 时钟触发和反馈:根据LFSR的结构,进行时钟触发和反馈操作。
3. 输出:取LFSR的最低位作为输出。
简单LFSR生成的PN序列周期性较短,安全性较低,易受到攻击。
3.2 Gold序列Gold序列是一种通过两个LFSR相互协作生成的PN序列,其特点是周期性较长,安全性较高。
伪随机序列

伪随机序列可由线性移位寄存器网络产生。
该网络由r级串联的双态器件,移位脉冲产生器和模2加法器组成,下面以4级移位寄存器为例,说明伪随机序列的产生。
规定移位寄存器的状态是各级从右至左的顺序排列而成的序列,这样的状态叫正状态或简称状态。
反之,称移位寄存器状态是各级从左至右的次序排列而成的序列叫反状态。
例如,初始状态是0001,那么an-4=0,an-3=0,an-2=0,an-1=1。
如果反馈逻辑为an= an-3⊕an-4,对于初始状态为0001,经过一个时钟节拍后,各级状态自左向右移到下一级,未级输出一位数,与此同时模2加法器输出值加到移位寄存器第一级,从而形成移位寄存器的新状态,下一个时钟节拍到来又继续上述过程。
未级输出序列就是伪随机序列。
其产生的伪随机序列为an=100110101111000100110101111000…,这是一个周期为15的周期序列。
改变反馈逻辑的位置及数量还可以得到更多不同的序列输出。
从上述例子可以得到下列结论:1、线性移位寄存器的输出序列是一个周期序列。
2、当初始状态是0状态时,线性移位寄存器的输出全0序列。
3、级数相同的线性移位寄存器的输出序列和反馈逻辑有关。
4、同一个线性移位寄存器的输出序列还和起始状态有关。
5、对于级数为r的线性移位寄存器,当周期p=2r-1时,改变移位寄存器初始状态只改变序列的初相。
这样的序列称为最大长度序列或m序列。
module M15Serial(input c_clk,input iN_rst,output o_ser);reg [3:0]flow = 4'b0001;assign o_ser = flow[0];always@(posedge c_clk or negedge iN_rst) beginif(~iN_rst)flow <= 4'b0001;elsebeginflow[3:1] <= flow[2:0];flow[0] <= flow[3] ^ flow[2];endendendmodule//output o_ser 是序列输出。
伪随机序列生成原理详解

随机序列是一种重要的数据分析和加密技术,它能够在很多领域发挥重要作用。
然而,在计算机科学中,由于计算机系统是以确定性方式工作的,因此无法真正地产生真正的随机序列。
相反,计算机系统能够生成的是伪随机序列。
本文将详细介绍伪随机序列生成的原理。
在计算机系统中,伪随机序列是通过伪随机数发生器(Pseudo Random Number Generator,简称PRNG)产生的。
PRNG是基于特定的确定性算法设计的,它以一个称为种子(seed)的起始值作为输入,然后通过一系列的数学运算生成伪随机数序列。
种子是PRNG生成随机数的起始点,同样的种子将会生成同样的伪随机数序列。
PRNG的设计基于一个重要的原则,即一个好的PRNG在产生伪随机数时应具有良好的统计特性。
简而言之,这意味着生成的伪随机数序列应该在统计上符合一些随机性质。
例如,均匀分布是一个重要的统计特性,即生成的伪随机数应该均匀地分布在一个给定范围内。
其他常用的统计特性包括独立性(每个生成的数与前面的数无关)和周期性(序列重复的间隔)等。
常见的PRNG算法包括线性同余发生器(Linear Congruential Generator,简称LCG)和梅森旋转算法(Mersenne Twister)等。
LCG是最早出现的PRNG算法之一,它通过以下公式来递归生成伪随机数:Xn+1 = (a*Xn + c) mod m其中,Xn表示当前的伪随机数,Xn+1表示下一个伪随机数,a、c和m是事先确定的常数。
LCG算法的特点是简单、高效,但由于其线性特性,容易产生周期较短的伪随机数序列。
梅森旋转算法则是一种更复杂的PRNG算法,它具有更长的周期和更好的随机性质。
梅森旋转算法的原理基于一个巨大的素数,在该算法中,一个大的状态空间被旋转和变换,从而生成伪随机数。
梅森旋转算法由于其良好的统计特性和随机性质,广泛应用于计算机图形学、模拟和密码学等领域。
尽管PRNG能够生成伪随机序列,但由于其基于确定性算法,因此不适用于要求真正随机性的应用,例如密码学中的密钥生成和加密等。
伪随机序列码的频谱

伪随机序列码的频谱是指该序列在频域上的分布情况。
伪随机序列码是一种特殊的序列,具有类似随机序列的性质,但实际上是通过某种算法生成的确定性序列。
在频域上,伪随机序列码的频谱通常表现为离散的频率分量。
这是因为伪随机序列码是通过周期性的位操作或数学运算生成的,其频谱会在一定的频率范围内出现离散的峰值。
具体来说,伪随机序列码的频谱通常具有以下特点:
1.平坦性:伪随机序列码的频谱在整个频率范围内通常是平坦的,即各个频率分量的幅度相对均匀分布。
2.峰值:伪随机序列码的频谱中会出现一些峰值,表示在某些频率上具有较高的幅度。
这些峰值通常是由于序列生成算法的周期性导致的。
3.带宽:伪随机序列码的频谱带宽通常较窄,即频率分量的集中程度较高。
这是因为伪随机序列码的周期性导致频谱在一定范围内集中分布。
需要注意的是,伪随机序列码的频谱特性可以根据具体的生成算法和序列长度而有所差异。
不同的伪随机序列生成算法可能会导致不同的频谱特性,而序列长度的不同也会影响频谱的分布情况。
伪随机序列码的频谱特性对于许多应用是重要的,例如通信系统中的扩频技术和密码学中的加密算法。
通过分析伪随机序列码的频谱特性,可以评估其在不同应用场景下的性能和可靠性。
伪随机序列的研究与仿真

伪随机序列的研究与仿真伪随机序列(pseudo-random sequence)是指通过算法生成的具有随机性质的序列,但实际上是以确定性的方式生成的序列。
伪随机序列被广泛应用于密码学、模拟仿真、通信系统等领域。
本文将研究伪随机序列的生成方法、性质分析和仿真实验。
首先,伪随机序列的生成方法有多种,常见的有线性反馈移位寄存器(LFSR)、梅森旋转算法等。
其中,LFSR是一种最常用的伪随机序列生成器。
它是由若干个触发器和异或门组成的移位寄存器,通过不断向寄存器输入新的比特,并根据寄存器中的比特进行异或运算,生成新的伪随机序列。
梅森旋转算法是一种基于迭代运算的随机数生成方法,通过矩阵运算和循环左移操作,不断更新种子值,生成伪随机序列。
其次,伪随机序列的性质分析是研究伪随机序列是否具有随机性质的重要方法。
在伪随机序列的性质分析中,常用的指标包括自相关函数、互相关函数和周期。
自相关函数可以用于判断伪随机序列是否具有统计无关性,互相关函数可以用于判断两个伪随机序列之间是否相关。
周期是指伪随机序列重复出现的最小周期,周期越长表示伪随机序列更随机。
最后,通过仿真实验可以验证伪随机序列的性质。
在仿真实验中,可以通过计算自相关函数、互相关函数和周期等指标来验证伪随机序列的性质。
此外,还可以通过模拟随机事件的发生概率来验证伪随机序列的随机性。
例如,在模拟掷硬币事件时,可以通过比较生成的伪随机序列中正面出现的次数和反面出现的次数来验证伪随机序列的随机性。
综上所述,伪随机序列的研究与仿真是一个复杂而有挑战性的任务。
通过研究伪随机序列的生成方法和性质分析,可以更好地理解伪随机序列的随机性质。
通过仿真实验,可以验证伪随机序列的性质,并为伪随机序列在密码学、通信系统等领域的应用提供依据。
第11章_伪随机序列及编码

{ak } a. 举例
+
c0 =1
an-1
an-2
an-3
an-4
输出 ak
假设初始状态为(an-4 an-3 an-2 an-1)= (1000),其反馈逻辑为:
an 1 an 3 an 4
通过穷举法,可找出所有可整除
x15 1 的多项式:
x15 1 x 4 x 1 x 4 x 3 1 x 4 x 3 x 2 x 1 x 2 x 1 x 1
通过穷举法,还可证明,在 n = 4 的多项式中:
x4 x 1 x 4 x3 1
第 11章 伪随机序列及编码
11.4.3 m序列产生器
下图给出了产生m序列的线性反馈移位寄存器的一般结构图:
1、起始状态为:
2、c0 cn 1
a0 a1 an 2 an 1
ci 1表示此线接通,参与反馈;
ci 0表示此线断开,不参与反馈;
+ + +
c0 =1 1 a n-1
其中:A 码组x与其移位码字间对应码元相同个数 D 码组x与其移位码字间对应码元不同个数 xi {0,1 }
第 11章 伪随机序列及编码 5.狭义伪随机码:若
x
x ( j)
2 i
/ p 1
j0
x x
i
i j
/ p=
xi xi j / p
则为狭义伪随机码
1 p
1 1
1 1 1 1
1 1
1 1
1 1
H 4 H8 H 4
1 1 1 1 1 1 1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录伪随机序列 (2)1 基本原理 (2)1.1 背景 (2)1.2 实现原理 (2)2 实现方式 (3)3 FPGA的实现 (5)3.1 设计思路 (5)3.2 代码实现分析 (5)3.2.1斐波那契方式 (5)3.2.2伽罗瓦方式 (9)4 总结 (12)伪随机序列1 基本原理1.1 背景随着通信技术的发展,在某些情况下,为了实现最有效的通信应采用具有白噪声统计特性的信号;为了实现高可靠的保密通信,也希望利用随机噪声;另外在测试领域,大量的需要使用随机噪声来作为检测系统性能的测试信号。
然而,利用随机噪声的最大困难是它难以重复再生和处理。
伪随机序列的出现为人们解决了这一难题。
伪随机序列具有类似于随机噪声的一些统计特性,同时又便于重复产生和处理,有预先的可确定性和可重复性。
由于它的这些优点,在通信、雷达、导航以及密码学等重要的技术领域中伪随机序列获得了广泛的应用。
而在近年来的发展中,它的应用范围远远超出了上述的领域,如计算机系统模拟、数字系统中的误码测试、声学和光学测量、数值式跟踪和测距系统等也都有着广阔的使用。
伪随机序列通常由反馈移位寄存器产生,又可分为线性反馈移位寄存器和非线性反馈移位寄存器两类。
由线性反馈移位寄存器产生出的周期最长的二进制数字序列称为最大长度线性反馈移位寄存器,即为通常说的m序列,因其理论成熟,实现简单,应用较为广泛。
m序列的特点:(1)每个周期中,“1”码出现2n-1次,“0”码出现2n-1次,即0、1出现概率几乎相等。
(2)序列中连1的数目是n,连0的数目是n-1。
(3)分布无规律,具有与白噪声相似的伪随机特性。
1.2 实现原理在二进制多级移位寄存器中,若线性反馈移位寄存器(LFSR)有n 阶(即有n级寄存器),则所能产生的最大长度的码序列为2n-1位。
如果数字信号直接取自LFSR(非翻转信号)的输出,那么最长的连0数为n-1。
除了字符串的连0和连1,伪随机序列在一个长度为n的字符串中将包含任何可能的0和1的组合。
要使移位寄存器产生确定的值,必须置其初值并允许时钟电路产生移位时钟。
一般的线性反馈移存器组成如图1所示,图中一级移存器的状态用ai表示,ai = 0或1, i = 整数。
反馈线的连接状态用ci表示,ci = 1表示此线接通,0表示断开。
反馈线的连接状态不同就能改变输出序列的周期。
图1 一般的线性反馈移存器框图ci的取值决定了移存器的反馈连接和序列的结构,也就是决定了序列的周期。
用特征多项式f(x)表示为:f(x) = c0 + c1x+ c2x2+ ···+ c n x n=∑c i x i当特征多项式符合某些条件时称为本原多项式。
在设计m序列产生器时,移位寄存器反馈线的结构直接决定于本原多项式的结构。
也就是只要找到本原多项式,就能由它构成m序列产生器。
不同周期的m序列所适用的环境不同,ITU-T(国际电信联盟)对此提出了一系列标准。
如ITU-T建议用于数据传输设备测量误码的周期是511,其特征多项式建议采用x9 + x5 + 1;以及建议用于数字传输系统(1544/2048和6312/8448kb/s)测量的m序列周期是215-1 = 32767,其特征多项式建议采用x15+ x14 + 1。
在具体应用时,可参考ITU-T的标准进行选择。
2 实现方式对于某种特定的本原多项式,有两种形式的LFRS结构来实现:Fibonacci (斐波纳契)LFSR和Galois(伽罗瓦)LFSR。
Fibonacci(斐波纳契)LFSR专门在移位寄存器外部使用或(异或)门,而Galois LFSR在移位寄存器链内部使用专门的或门。
两者的一般结构如图2、3所示:n阶图2 Fibonacci(斐波纳契)LFSR从图2中可以看到,该移位寄存器是将各寄存器的输出值抽出来,在外部进行异或运算之后再将该值反馈到输入端。
n阶图3 Galois(伽罗瓦)LFSR从图3 中明显看到,异或运算是在各寄存器之间进行的。
例如,一个本原多项式为x15 + x14 + 1,表示一个15级的移位寄存器的输出。
如果用斐波纳契LFSR实现,这个移位寄存器的第十四和第十五级被加入到异或门,结果反馈到第一级的输入端。
而如果用伽罗瓦LFSR的方式实现,则当前移位寄存器的输出被加入到内置的第十四、十五级的异或门反馈实现。
在当前多项式的项数较少时,用斐波那契方法实现比伽罗瓦方式更好,可以达到较高的时钟速率。
但是,虽然斐波那契的速度更快,但是它的实现方式在项数增加的时候性能会下降,而伽罗瓦LFSR的实现方式在项数增加的时几乎没有性能上的损失。
所以,在应用时可根据不同的系统需求进行选择。
3 FPGA的实现本设计分别用上述两种方式实现7阶的伪随机序列。
3.1 设计思路由m序列的产生原理可知,该发生器主要由移位寄存器和异或门的反馈输入实现。
因此,将设计分为以下几个步骤:1)给移位寄存器赋初值,使其产生一个确定的序列;2)分别根据斐波那契方式和伽罗瓦方式的特点,得到下一状态寄存器的输入值;3)更新当前各寄存器的状态值,并且输出最高位的值。
3.2 代码实现分析3.2.1斐波那契方式斐波那契V代码如下:module wsj_1( data_out, clock_in, reset_in );output data_out; //输入输出声明input clock_in, reset_in;//==============变量声明============================= wire [06:00] exp_out; //下一状态各寄存器存储的值,其最高位为//下一次触发时的输出值reg [06:00] exp_in;reg data_out;parameter poly_in = 07'h03; //poly为特征多项式转化而来的7位值,//若为…1‟,表示此处需要或门//Poly : x^7 + x^6// : 000 0011// : 0 3parameter length_in = 1'b0;//==================得到下一状态的输入值===================== assign exp_out[00] = (exp_in[00] & poly_in[06]) ^(exp_in[01] & poly_in[05]) ^(exp_in[02] & poly_in[04]) ^(exp_in[03] & poly_in[03]) ^(exp_in[04] & poly_in[02]) ^(exp_in[05] & poly_in[01]) ^(exp_in[06] & poly_in[00]) ^ length_in;//由特征多项式得到下一状态的输入值assign exp_out[06:01] = exp_in[05:00];//当前状态值移位得到下一状态值//=================更新状态并将数据输出======================= always @ (posedge clock_in) beginif (reset_in) beginexp_in <= 7'b1111111; //给寄存器赋初值data_out <= 1; endelse beginexp_in <= exp_out;data_out <= exp_out[06]; //输出值endendendmodule在上述程序中,首先值得注意是Poly这个参数定义,它根据特征多项式转化而来,这样定义可以更方便的得到下一状态的输出值。
系统将当前寄存器的状态值与该参数相与,并将各位异或,实现的即为寄存器外部的异或,由此得到的便是下一状态的输入值。
将当前状态值移位便得到下一状态各寄存器的值。
还有一点要注意的是,在系统进行复位之后,必须给寄存器赋初值,否则输出序列是不定值。
移位寄存器输出的是串行数据,在实际应用中常常需要并行的伪随机序列,用户只需根据自己的需要,循环调用此模块,并用N x M位(其中N表示并行数据的宽度,M表示伪随机序列的阶数)的寄存器进行存储,在同一时刻便可输出并行的伪随机码。
3.2.1.1 仿真分析代码在ISE软件中综合之后,进行功能仿真。
其仿真波形如图4所示:图4 伪随机序列仿真图在复位信号reset_in之后,系统自动启动,正常工作,第一行的data_out 即为串行输出的伪随机序列。
在ISE上综合并且功能仿真通过之后,还需在开发板是进行调试,以验证程序实际运行的效果。
调试时采用开发板上100MHZ的固定时钟作为设计时钟输入,故在工程中要注意对时钟进行约束,否则程序无法在开发板上运行。
本设计采用chipscope逻辑分析仪进行调试,调试需要使用到三个核:ICON、ILA和VIO核。
ICON为控制内核,其控制端口为2,分别控制ILA核和VIO 核。
ILA核用于观察伪随机序列输出的波形,触发端口为1位。
VIO核输入输出信号进行设置,异步输出控制复位信号,1位宽;异步输入观察输出的数据,1位宽。
图5为生成VIO核时的设置:图5 VIO核的设置图5中选中的是异步输入输出,位宽都是1位长。
其它核的生成方法类似,按照前面所述进行设置即可。
最后添加的chipscope调试代码如下:wire [35:0] control_ila,control_vio;wire async_in;wire async_out;wire reset_in;wire trig0;assign reset_in = async_out;assign async_in = data_out;assign trig0 = data_out;icon i_icon(.CONTROL0(control_ila),.CONTROL1(control_vio));vio i_vio(.CONTROL(control_vio),.ASYNC_OUT(async_out),.ASYNC_IN(async_in));ila i_ila(.CLK(clock_in),.CONTROL(control_ila),.TRIG0(trig0));其中,reset_in是系统的复位信号,由async_out控制;data_out是输出的数据,由trig0可观察到该信号的波形。
图6为VIO核的调试界面:图6 VIO核界面图中reset_in为复位信号,data_out为输出的数据。
图7为最后ILA核呈现的波形界面:图7 ILA核调试波形从图7中可以看到,伪随机码的波形与功能仿真的波形一致。