伪随机数列发生器-TsouShih
伪随机序列生成原理详解
随机序列是一种重要的数据分析和加密技术,它能够在很多领域发挥重要作用。
然而,在计算机科学中,由于计算机系统是以确定性方式工作的,因此无法真正地产生真正的随机序列。
相反,计算机系统能够生成的是伪随机序列。
本文将详细介绍伪随机序列生成的原理。
在计算机系统中,伪随机序列是通过伪随机数发生器(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能够生成伪随机序列,但由于其基于确定性算法,因此不适用于要求真正随机性的应用,例如密码学中的密钥生成和加密等。
参数化伪随机序列发生器
WENKU DESIGN
2023-2026
END
THANKS
感谢观看
KEEP VIEW
WENKU DESIGN
WENKU DESIGN
WENKU
REPORTING
https://
WENKU DESIGN
WENKU DESIGN
2023-2026
ONE
KEEP VIEW
参数化伪随机序列发 生器
WENKU DESIGN
WENKU DESIGN
WENKU
REPORTING
https://
CATALOGUE
目 录
• 引言 • 参数化伪随机序列发生器的原理 • 参数化伪随机序列发生器的实现 • 参数化伪随机序列发生器的性能分析 • 参数化伪随机序列发生器的应用实例 • 结论与展望
PART 06
结论与展望
结论
1
参数化伪随机序列发生器是一种高效、灵活的随 机数生成方法,适用于各种应用场景,如密码学、 统计学、计算机模拟等。
2
通过调整参数,可以控制随机数的分布、周期、 质量等特性,以满足不同需求。
3
与传统伪随机数生成器相比,参数化伪随机序列 发生器具有更好的随机性和更快的生成速度。
实际线性复杂度
实际应用中,伪随机序列发生器的线性复杂度受到多种因 素的影响,如算法设计、初始状态等。
PART 05
参数化伪随机序列发生器 的应用实例
加密通信
01
02
03
加密算法
数据完整性
网络通信安全
伪随机序列发生器用于生成加密 算法所需的密钥,确保通信安全。
通过使用伪随机数生成器,可以 创建消息的数字签名,验证数据 的完整性和真实性。
第六章伪随机序列生成器
n
l (n)
l ( n)
; n 1
l (n)
6.2 伪随机序列生成器的定义和性质
定义 6.5 一个伪随机序列生成器是一个确定性多项式 时间算法G满足下列两个条件: 1)延伸性,存在一个正整数函数 l (n) n(n 1,2,) 使得对一 切 x 0,1*有 G( x) l ( x ) ; 2)伪随机性,随机变量序列 G(U n ); n 1是伪随机的,即 U l ( n) ; n 1 是多项式时间不 它与均匀分布随机变量序列 可区分的。 生成器G的输入x称为它的种子,要求将长n比特的种 子延伸为长l(n)比特的序列,且该序列与长l(n)的随机 比特序列是多项式时间不可区分的。l(n)>n称为的延 伸因子。
i i i 1
(3)不可预测性。 定义 6.6 随机变量序列X n ; n 1称为多项式时间 不可预测的若对每个多项式时间概率算法M’, 每个正多项式p(n)和一切充分大的n有 1 1 PrM (1 , X ) next ( X ) (6.4) 2 p ( n) 定理 6.3 一个随机变量序列X ; n 1是伪随机的 (参看定义6.4)当且仅当它是多项式时间不 可预测的。 (4)单向函数性。 定理 6.4 设G为一延伸因子l(n)的伪随机序列生 成器,若对每对 x, y 0,1满足 x y ,定义函数 f ( x, y) G( x) ,则f为一强单向函数。
第六章 伪随机序列生成器
6.1 计算不可区分性
* 0 , 1 定义 6.1 一个概率分布族是由 的一个无穷 子集I,称为指标集,和每个指标 i I 对应一个 概率分布p ( x) : D [0,1], p ( x) 0, p ( x) 1 构成,其中 * 0 , 1 Di为 的一个有穷子集。 定义 6.2 两个随机变量族 X | x D , i I 和Y | y E , i I 称为多项式时间不可区分,若对每个多项 式时间概率算法M’,每个正多项式p(n)和一切 充分大的n有 PrM ' ( X i , i) 1 PrM ' (Yi , i) 1 1 (6.1) p( i )
17伪随机数发生器的设计
119
原胞自动机伪随机数发生器同样是通过寄存器的延时来实现。每当一个时钟 脉冲到来时,每一级存储器 Qi 的值根据 CA 规则来决定,CA90 和 CA150(即 CA01011010B 和 CA10010110B)算法规则的规则查找表分别如表 1,2 所示,其中相 邻单元的值为η,输出值为 Q=f(η)。CA90 算法规则等价的逻辑函数是由当前单 元的相邻左右单元的状态值相异或,而 CA150 算法规则等价的逻辑函数是由相邻 当前单元和左右单元的状态值相异或。下面分别给出它们的逻辑函数表达式。
3.原胞自动机 一个原胞自动机(Cellular Automata,CA)是一种有限状态机,有 n 个离散
的单元,每个单元以离散的节拍进化,其中每个单元的下一个状态值由该单元的 当前状态值和其相邻的当前状态值通过查找表(Look-UpTable,LUT)(或等价的逻 辑函数)来决定,而相邻单元的状态值是独立的。
Cn
Cn-1
Cn-2
C1
C0=1
图 1 传统多级线性移位寄存器结构
3.m 序列 m 序列(maximum-length)是一类最大长度线性移位寄存器序列的简称。 m
序列是目前广泛应用的一种伪随机序列,其在通信领域有着广泛的应用,如扩频 通信,卫星通信的码分多址,数字数据中的加密、加扰、同步、误码率测量等领 域。
表 1 CA90 规则查找表
η 111 110 101 100 011 010 001 000
伪随机数发生器
伪随机数发生器程序说明文档——《密码编码学与网络安全》实验六一、基本变量、数据结构、函数说明:注意:基本变量、数据结构、函数说明和实验二DES算法是一样的。
没有任何变化。
1.基本变量定义部分:flag:boolean型变量,用于标识是解密还是加密过程。
2.数据结构定义部分:DT64:int型一维数组,64位的随机时间串。
V64: int型一维数组,64位的种子值。
sum64:int型一维数组,用于存储模二加的中间结果。
R64:int型一维数组,用于存储64位伪随机数。
bytekey:byte型一维数组,用于存储密钥及其子密钥字节流信息。
IP:int型一维数组,静态,用于存储初始置换矩阵。
IP_1:int型一维数组,静态,用于存储初始置换矩阵的逆矩阵。
PC_1:int型一维数组,静态,用于存储置换选择矩阵1。
PC_2:int型一维数组,静态,用于存储置换选择矩阵2。
E:int型一维数组,静态,用于存储扩充置换矩阵。
P:int型一维数组,静态,用于置换函数矩阵。
S_Box:int型三维数组,静态,用于SBox矩阵设置。
LeftMove:int型一维数组,静态,用于设置左移位置列表。
keydata:int型一维数组,用于存储二进制加密密钥。
encryptdata:int型一维数组,用于存储二进制加密数据。
EncryptCode:byte型一维数组,用于存储加密操作完成后的字节数组。
KeyArray:int型二维数组,用于存储密钥初试化后的二维数组。
3.基本函数定义:UnitDes:初始化函数,用于将密钥初始化成字节型数组密钥。
KeyInitialize:用于初始化密钥,生成每一轮的子密钥。
Encrypt:每一轮的加密函数。
ReadDataToBirnaryIntArray:将数据转换为二进制数,存储到数组。
LeftBitMove:循环移位操作函数。
LoopF:落实到每一轮的具体操作函数。
GetEncryptResultOfByteArray:将存储64位二进制数据的数组中的数据转换为八个整数(byte)。
伪随机序列发生器设计
伪随机序列发生器设计伪随机序列发生器(PRNG)是一种通过算法生成的看似随机的数字序列。
与真随机序列不同,伪随机序列是在一定条件下按照确定性算法生成的。
在计算机系统中,PRNG具有广泛的应用,包括密码学、模拟、游戏等领域。
本文将讨论如何设计一个伪随机序列发生器。
1.随机性的度量:在设计PRNG之前,我们需要了解随机性的度量。
一个好的伪随机序列发生器应该具有高周期性(周期长度大),均匀性(数字出现的频率相似)和不相关性(序列中的数字之间没有明显的关联)。
周期指的是序列重复之前所产生的数字数量。
均匀性可以通过观察数字出现的频率和统计分析来评估。
不相关性指的是序列中的任意两个数字之间没有明显的关联。
2.线性反馈移位寄存器(LFSR):LFSR是一种常见的PRNG设计方法。
它由一个位寄存器和一些异或门组成。
位寄存器中的每个位都线性地与寄存器中的其他位进行异或运算,并且每次循环位寄存器向右移位。
输入位是通过将一些位与1或0常量进行异或来确定的。
3.LFSR的优化:为了改善LFSR的性能,在设计中可以考虑一些优化措施。
一种常见的优化措施是增加反馈函数的复杂性。
通过使用非线性函数,可以在相同的位数下获得更长的周期。
另一个优化措施是根据需要选取适当的位数。
位数越大,周期越长,但计算成本也增加。
4.添加非线性元素:为了进一步提高伪随机序列的质量,我们可以添加一些非线性元素。
一种方法是使用置换函数。
置换函数将输入映射到不同的输出,从而增加了数字之间的不相关性。
另一种方法是使用哈希函数。
哈希函数将输入的随机性扩展到更大的空间中,并通过混淆输入来减少数字之间的关联。
5.分析和测试:设计一个PRNG后,我们需要对其进行分析和测试。
常用的测试方法包括统计测试、重复序列测试和关联测试。
统计测试可以用于检查输出数字的频率。
重复序列测试可以用于验证序列中是否存在重复数字。
关联测试则是用于检查序列中数字之间的关联性。
总结:设计一个高质量的伪随机序列发生器需要考虑随机性度量、LFSR和优化、非线性元素的添加以及分析和测试的步骤。
伪随机数发生器
伪随机数发生器作者:孙福玉曹万苍来源:《赤峰学院学报·自然科学版》 2013年第24期孙福玉,曹万苍(赤峰学院,内蒙古赤峰 024000)摘要:文章分析了555电路、74HC160计数器、CD4511译码器等器件的基本工作原理,用555电路产生高频脉冲信号,用74HC160计数,通过CD4511译码后送入数码管显示一个随机数.关键词:随机数;伪随机数;发生器中图分类号:TP212 文献标识码:A 文章编号:1673-260X(2013)12-0030-021 引言随机数在我们的生活中随处可见,例如掷一枚色子所得到的点数、任何一个班级的学生数、某一路段的车流量或者是迎面行驶而来的车辆的车牌号等等.伴随随机事件而产生的随机的数字称为随机数.因为随机数的不可预知性,单一或者小规模的试验是不能正确的估算出随机数的规律的,试验次数越多,则得到的结果越接近真正的答案.本文利用555电路产生脉冲信号,用74HC160计数,通过CD4511译码后送入数码管显示一个随机数.2 基本器件介绍2.1 CD4511的功能介绍首先,我们介绍一下支持数字输出的7段译码器CD4511.图1为七段显示译码器的管脚图.4管脚BI管脚为消隐输入控制端子,如果BI为0,不论其它管脚输入什么值,七段显示数码管处于熄灭状态,也称为消隐状态,七段显示数码不显示数字.如果BI为1,各笔段均正常显示.3管脚LT管脚为测试输入端子,当BI为1,LT为0时,译码输出全为高电平,不论输入端子输入何值,七段显示译码器均工作,从而显示数字8.各笔段均被点亮,以检查显示是否有故障发生.5管脚LE管脚为锁定控制端,CD4511中的译码器的锁存电路由传输门和反相器组成,传输门的导通或截止由控制端LE的电平状态.当LE=0时,允许译码输出.LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值.A1、A2、A3、A4为译码器输入端.a、b、c、d、e、f、g为译码输出端,用于驱动共阴极数码管工作,输出为高电平1时有效.另外,译码器在显示数“6”时,a段消隐;显示数“9”时,d、段消隐,所以显示6、9这两个数时,字形不太美观.所谓共阴LED数码管是指7段LED的阴极是连在一起的,在应用中应接地.限流电阻要根据电源电压来选取,电源电压5V时可使用300欧姆的限流电阻.由以上关于CD4511的介绍可知,它能够根据外部信号使LED点亮或者熄灭,从而达到译码输出的功能.2.2 74HC160的功能介绍74HC160是74系列的4位同步式十进制计数器,74HC160管脚图如图2所示.74HC160的具体功能如下:CLK:时钟脉冲输入端.引入外部时钟控制脉冲的输入端,无时钟脉冲输入时,无法使用计数功能.74HC160接入电路后与译码器等电路元件共用同一时钟脉冲.CLR:复位端,低电平有效,当CLR=0时,输出端异步归零.ENP:禁止计数端,低电平有效,当ENP=0时,计数器失去计数功能.ENT:计数和RC禁止端,低电平有效,当ENT=0时,计数器失去计数和RC功能.同时,ENP失去作用.也就是说,当ENT为低电平时,无论ENP是高电平还是低电平,都无法实现计数功能.LOAD:寄存/计数端,低电平寄存,高电平计数,即当LOAD=0时,计数器处于寄存状态,存储的是前一时钟周期的状态,当LOAD=1时,计数器处于计数状态.由以上有关于74HC160功能的介绍,我们可以了解到:使用两个74HC160级联可以达到我们要求的37进制计数器,还要利用LOAD端的寄存/计数功能来设计数字显示的伪随机数发生器的复位功能.2.3 555定时器的功能介绍在通常的集成电路中,要使电路的各个元件良好地工作在同一状态下,必须对其时钟控制电路进行设计和改善.在本电路中,我们使用555定时器产生时钟脉冲.接下来,我们对NE555作一介绍.NE555管脚图如图3所示:555定时器的各个引脚功能如下:管脚1为接地端.管脚8为外接电源VCC端子,一般用5V电源.管脚3为输出端子.管脚2为低触发端.管脚6为高触发端子.管脚4为直接清零端.当该端子接低电平0时,时基电路不工作,这时不论TH处于何电平,时基电路输出均为0,该端不用时应接高电平1.管脚5为控制电压端子.若此管脚外接电压,则可改变内部两个比较器的基准电压,当不用该管脚时,应将该管脚串入一只电容接地,以避免外部干扰.管脚7为放电端子.该管脚与放电三极管集电极相连,用做定时器时电容的放电.555定时器在本电路设计中,应使4、8脚接VCC,1脚接地,5脚加电容接地以防外部干扰,7、8脚、6、7脚间加滑动变阻器以改变输出时钟脉冲的频率,以达到产生时钟脉冲的作用.时钟脉冲的频率如下式所示,通过调节R1,R2,C1可以得到不同频率的时钟.3 用数字显示的伪随机数发生器电路的分析图4是伪随机数发生器的电路图.由于只是使用计数器,所以并不复杂.在此电路的设计过程中,首先由555定时器产生控制74HC160计数的时钟脉冲.因此,在具体电路的制作与焊接过程中,可以在555定时器与计数器的连接线上加一开关.开关按下,则开始计数,开关松开,则停止计数并显示上一状态的数字.同时,可以通过调节其外接电容来控制其输出时钟脉冲的高低.在具体电路的制作过程中,作者使用的是0—10K的滑动变阻器,在安装焊接前,调节电阻到5K,可以正常显示数字.然后,由两个74HC160构成该电路的计数器.注意,由于我们只要求计数到36,所以在设计时,由两个74HC160的LOAD端接出一个74HC30(八输入与非门)来进行置位,设计我们对计数的要求,我们可以把个位的DB、DC端,十位的DA、DB端接入74HC30的输入端,其余输入端口则全部接VCC,则可以达到异步置位的功能.接下来,要将74HC160的输入端接入CD4511的输入端,把四位二进制数译码为供数字显示的7位数据.在数字显示器和CD4511间,要加入能使数字显示器正常发光的电阻,在具体电路的测试中可知,使用475欧姆的电阻可以使数字显示器正常发光.这种设计方案所制作出的伪随机数发生器的使用方法很简单.按下接通电源的启动开关后,LED就显示各种数字.计数器的内容从0开始按序号变化,不是随机的.所以可以使用稍快的时钟脉冲.在按下停止开关后的一段时间内,计数器照样工作,然后停止在某一数字上.这个数字就是得中的数字.4 结束语文章分析了555电路、74HC160计数器、CD4511译码器等器件的基本工作原理,用555电路产生高频脉冲信号,用74HC160计数,通过CD4511译码后送入数码管显示一个随机数.参考文献:〔1〕汤山俊夫.数字电路设计与制作[M].北京:科学出版社,2009.〔2〕黄智伟.电子电路计算机仿真设计与分析[M].北京:电子工业出版社,2009.〔3〕孙余凯.传感器应用电路300例[M].北京:电子工业出版社,2008.〔4〕张庆双.LED应用电路精选[M].北京:机械工业出版社,2010.。
第3章-第1讲伪随机数发生器与单向散列函数
1、线性反馈移位寄存器
最简单的反馈移位寄存器是线性反馈移位寄存器
(LFSR),反馈函数是寄存器中某些位的异或运算,即是 上的一个多项式,为了能达到最大周期(m序列)应该是上 的一个本原多项式
例子:3级线性反馈移位寄存器
优点:随机统计特性好,速度快 缺点:线性复杂度低,容易受攻击
使用:作为其它生成器的驱动,即生成种子密钥
压缩函数
四轮的操作类似,每轮16次: MD5的一次操作
a a
Mj T[i] b
b
c
非线性函数 + + +
<<<s +
c
d d
四轮操作的不同之处在于每轮使用的非线性函数不同,分别 为(其输入/输出均为32位字):
F(X,Y,Z) = (X^Y) ˇ((~X) ^Z) G(X,Y,Z) = (X^Z)ˇ(Y^ (~Z)) H(X,Y,Z) = X+Y+Z I(X,Y,Z) = Y+(Xˇ (~Z)) 其中,^表示按位与; ˇ表示按位或; ~表示按位反; +表示按位异或。
第三章 安全业务及其实现方法
第一讲 伪随机数发生器与单向散列函数
第一部分 伪随机序列发生器
随机数在网络安全算法中的应用 (1)鉴别方案:序列号,临时密钥 (2)会话密钥的产生:种子密钥的生成,会话密钥的生成 (3)公钥密钥的产生 (4)用于生成序列密码(流密码)的密钥流 密码算法上对随机数的要求?
用途: 消息认证、数字签名。
散列函数要具有单向性,则必须满足如下特性:
(1)有效性
给定M,很容易计算h,便于软硬件实现。 (2)单向性
给定h,根据H(M)=h反推M很难。 (3)弱抗碰撞性(弱攻击性)
给定M,找到另一M’满足H(M)=H(M’)很难。 在某些应用中,单向散列函数还需要满足抗碰撞(Collision) 的条件:要找到两个随机的消息M和M’,使H(M)=H(M’)满足很 难。(抗强抗攻击性)
伪随机序列发生器设计
伪随机序列发生器设计
伪随机序列发生器(PRNG)是生成伪随机数字序列的算法,用于实现
一种统计分布的结果。
它与真正随机序列发生器(TRNG)有所不同,它会
生成完全随机的序列。
伪随机序列发生器(PRNG)一般用于实现加密算法、在游戏中实现随机数据,以及在模拟环境中实现随机事件等多种用途。
1)伪随机序列发生器的硬件部分:目前伪随机序列发生器均采用数
字电路来实现,一般是采用静态只读存储器(SRAM)实现,可以提供高速、稳定和可靠的性能。
2)伪随机序列发生器的算法:伪随机序列发生器需要一个有效的算
法来生成伪随机数字。
比较常用的算法有线性同余法、梅森旋转法、高斯
随机数法等。
3)伪随机序列发生器的参数:伪随机序列发生器需要选择适当的参
数来实现随机序列的变化,可以选择常数、Seed值、基量值等。
4)伪随机序列发生器的测试:需要对伪随机序列发生器进行充分的
测试,以确保它的算法是有效的,能够生成随机数字,而且经过测试不会
有规律性。
总而言之,伪随机序列发生器的设计需要考虑硬件部分、算法、参数
以及测试等多个要素,以确保它能够有效地生成伪随机数字,而且不会有
规律性。
浅谈伪随机数发生器
附录:
平方取中.c #include<stdio.h> int main() { unsigned int seed=0,temp; int i,j,first,number1[5000][100] = {0}; FILE *fp; fp=fopen("d:\\a.txt","w"); for(j=0;j<5000;j++) { if(j==0){printf("Enter the seed:");
结论二:除退化为零外,随机数序列还出现随机数序列循环和收敛的情况。
还是以 m=4 为例,三种收敛的情况,分别为: 1、100→100→100→100→100 2、2500→2500→2500→2500→2500 3、7600→7600→7600→7600→7600 首先, 讨论收敛的情况, 通过用 C 语言编程计算可以得到属于这三种收敛的种子个数以 及数值。(具体数据见附录) 还会出现三种循环的情况,分别为: 1、2100→4100→8100→6100→2100 2、1600→5600→3600→9600→1600 3、0540→2916→5030→3009→0540 然后,由于循环出现的几率比较大,计算机计算比较麻烦,所以观察大量数据寻找这三 种循环的出现规律,有初步发现:
使用了 srand()提供的种子以及线性同余算法,具体通过代码验证了,见附录。Java Random 类被封装 无法看 nextInt() nextFloat()源代码,但是估计也是使用了线性同余。
四、梅森旋转算法(Mersenne twister) 梅森旋转算法是 Makoto Matsumoto (松本)和 Takuji Nishimura (西村)于 1997 年开发 的伪随机数产生器, 基于有限二进制字段上的矩阵线性再生。 可以快速产生高质量的伪随机 数,修正了古老随机数产生算法的很多缺陷。常见的有两个变种 Mersenne Twister MT19937 和 Mersenne Twister MT19937-64。 说到梅森旋转算法, 不得不提一下线性反馈移位寄存器 (LFSR) , 线性反馈移位寄存器 (linear feedback shift register, LFSR)是指,给定前一状态的输出,将该输出的线性函数再用 作输入的移位寄存器。 异或运算是最常见的单比特线性函数: 对寄存器的某些位进行异或操 作后作为输入,再对寄存器中的各比特进行整体移位。 首先,移位寄存器包括两个部分
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8位伪随机数列发生器天津工业大学理学院XXXXXXXXXX2011年12月09日背景如果一个序列,一方面它是可以预先确定的,并且是可以重复地生产和复制的;一方面它又具有某种随机序列的随机特性(即统计特性),我们便称这种序列为伪随机序列。
因此可以说,伪随机序列是具有某种随机特性的确定的序列。
它们是由移位寄存器产生确定序列,然而他们却具有某种随机序列的随机特性。
因为同样具有随机特性,无法从一个已经产生的序列的特性中判断是真随机序列还是伪随机序列,只能根据序列的产生办法来判断。
伪随机序列系列具有良好的随机性和接近于白噪声的相关函数,并且有预先的可确定性和可重复性。
这些特性使得伪随机序列得到了广泛的应用,特别是在CDMA系统中作为扩频码已成为CDMA技术中的关键问题。
伪随机序列的特性对系统的性能有重要的影响,因此有必要了解和掌握伪随机序列的的概念和特性。
原理伪随机数列的概念与特性伪随机数列也称作PN码。
它具有近似随机数列(噪声)的性质,它的相关函数接近白噪声的相关函数 (Δ函数 ),即有窄的高峰或宽的功率谱密度 ,使它易于从其他信号或干扰中分离出来。
而又能按一定的规律(周期)产生和复制的序列。
因为随机数列是只能产生而不能复制的,所以称其为“伪”随机数列。
广泛应用于通信、雷达、导航等重要的技术领域。
近年来 ,在自动控制、计算机、声学、光学测量、数字式跟踪和测距系统 ,以及数字网络系统的故障分析检测也得到广泛的应用。
伪随机数列具有这样的特点:(1)每个周期中,“1”码出现2n-1次,“0”码出现2n-1次,即0、1出现概率几乎相等。
(2)序列中连1的数目是n,连0的数目是n-1。
(3)分布无规律,具有与白噪声相似的伪随机特性。
M序列m序列码发生器是一种反馈移位型结构的电路,它由n位移位寄存器加异或反馈网络组成,其序列长度M=2n-1,只有一个多余状态即全0状态,所以称为最大线性序列码发生器。
由于其结构已定型,且反馈函数和连接形式都有一定的规律,因此利用查表的方式就设计出m序列码。
列出部分m序列码的反馈函数F和移存器位数n的对应关系。
如果给定一个序列信号长度M,则根据M=2n-1求出n,由n查表便可以得到相应的反馈函数F。
m序列的性质:均衡特性(平衡性)、游程特性(游程分布的随机性)、移位相加特性(线性叠加性)、自相关特性、伪噪声特性。
四级移位寄存器构成的m序列:a a a a从原理框图可以看出,要实现该功能的电路必须用到异或门。
M序列M序列是一种非线性的伪随机序列,它是最长序列,也是有由非线性移位寄存器产生的码长为2n的周期序列。
因为M序列已达到n级移位寄存器所能达到的最长周期,所以又称为全长序列。
M序列的构造可以在m序列的基础上实现。
由于m序列包含了2n-1个非零状态,仅缺一个0状态,因此,只要在m 序列适当的位置插入一个0状态,即可完成码长为2n-1的m序列向码长为2n 的 M序列的转换。
对于任意的自然数n,一定有n级M序列以及产生此M序列的n级移位寄存器存在。
n级M序列的总长为M=2(2 -n)n当n>4时,M序列比m序列的数目多得多,这对某些需要地址序列很多的应用场合提供了灵活的选择。
四级移位寄存器构成的M 序列:从原理框图可以看出,要实现该功能的电路必须用到异或门,及与门来完成对000状态的检测。
电路设计方案A-采用数字逻辑电路来实现 M 序列发生器电路及原理采用数字逻辑电路来实现 M 序列发生器 ,利用 D 触发器作为延时器件 ,若D 触发器为 0状态 ,D 输入端为 1,清零端和使能端均为 1,当时钟脉冲上升沿到来时 ,则触发器翻转。
在脉冲为 1期间 ,由于 D 触发器维持阻塞作用 ,使其状态保持不变直到下一个脉冲上升沿的到来 ,在D 触发器维持阻塞作用aa a a000状态检测器之后 ,D信号就失去了作用。
利用与非门和异或门完成反馈逻辑 ,其中 74L S74为双 D触发器, 74L S175为四 D触发器构成移位寄存器 , 74L S00与非门和 74L S86异或门组成移位寄存器的反馈逻辑。
一种可选择阶数序列发生器的电路原理图如图 1所示 ,其中 CL R为清零信号 , CP为移位寄存器的时钟信号 , SW 2D IP9为拨码开关 ,用来选择寄存器阶数和反馈函数。
可以通过调拨码开关来达到改变序列发生器的阶数的目的 , V out为序列输出。
●仿真结果理论证明可行,multisim仿真时,有一个元件找不到,导致仿真不成功。
方案B-基于MATLAB的伪随机数列发生器●原理我们以 5阶移位寄存器为例,来产生 m序列。
特征多项式(fx)= 1 +x2 +x5为本原多项式,亦即反馈连接形式为[ C1,C2,C3,C4,C5]=[0,1,0,0,1]时,输出序列为 m序列。
以下是产生 m序列的程序代码:fbconnection =[01001];mseq = m sequence(fbconnection);保存为mxulie. m,运行后在MATLAB命令窗口输入mseq,返回结果:1000010101110110001111100110100其中自编函数m sequence. m用来产生m序列,输入参数为由本原多项式所对应的反馈连接形式。
其代码如下:function[mseq]= m sequence(fbconnection);n = length(fbconnection);N= 2ˆn-1;register =[zeros(1,n-1)1];%定义移位寄存器的初始状态mseq(1)= register(n);for i=2:Nnewregister(1)= mod(sum(fbconnection. * register),2);for j=2:n,newregister(j)= register(j-1);end;register = newregister;mseq(i)= register(n);end●结果虽然有很好的实用价值,但是只能作用于电脑,并不能产生实物。
因而不适用于我们的课程要求,。
方案C-应用CPLD设计随机序列发生器●电路及原理应用CPLD技术,设计一个伪随机码脉冲信号发生器电路,所用到的主要元器件有74LS74、EPM7128SLC84—15 MAX 7000可编程逻辑器件及一些门电路等,并利用MAX+PLUS Ⅱ软件来观察电路波形及CPLD综合实验板来检测电路的功能是否达到设计要求。
主要模块核心模块EPM7128SLC84-15开关模块其中核心模块中的4、5、6、8、9、10、11、12号引脚分别连接的开关模块中的8个开关;开关电路的内部电路图为:LED显示模块核心模块中25、27、28、29、30、31、33、34号引脚分别接LED显示模块中的8个LED;LED内部电路为:CPLD具有灵活的可编程逻辑可以方便的实现高速数字信号处理,突破了并行处理、流水级数的限制,有效的利用了片上资源,加上反复的可编程能力越来越受到国内外从事数字信号处理研究者的青睐。
结果硬件达不到要求,并不能产生实物。
因而不适用于我们的课程要求,。
元器件清单元件型号数量74LS175D 374LS74N 174LS86N 274LS04D 174LS00D 1电路安装调试电路焊接正确的焊接方法焊接时利用烙铁头的对元件引线和焊盘预热,烙铁头与焊盘的平面最好成45°夹角,等待焊金属上升至焊接温度时,再加焊锡丝。
被焊金属未经预热,而将焊锡直接加在烙铁头上,使焊锡直接滴在焊接部位,这种焊接方法常常会导致虚焊。
焊接要素1)焊接温度和时间焊锡的最佳温度为350ºC,温度太低易形成冷焊点,高于400ºC易使焊点质量变差,且容易导致焊盘(铜皮)变形或脱落。
焊接时间:完成润湿和扩散两个过程需2-3S,1S 仅完成润湿和扩散两个过程的35%。
一般IC、三极管焊接时间小于3S,其他元件焊接时间为4-5S。
2) 焊锡量适当焊点上焊锡过少,机械强度低。
焊锡过多,会容易造成绝缘距离减小、焊点相碰或跳锡等现象。
电烙铁使用注意事项电烙铁温度升高后,首先应将烙铁尖点上薄薄的一层焊锡,避免烙铁尖因氧化而不沾锡。
使用过程中,烙铁尖表面应一直保持有薄薄的焊锡层,多余的焊锡可轻轻甩在烙铁架上,或用一块湿布(湿海绵)擦拭一下。
暂时不用时,应将电烙铁温度调至最低。
电路调试焊接完调试不顺利。
重焊也是断路。
感想历时数周的课程设计终于结束。
从结果来看,我们并不非常顺利,但是收获仍然不菲。
首先在拿到题目收集方案的过程中就学到了极多的东西。
伪随机数列由于其在通信中的重要运用,在课程里有学习过相关的理论知识,但是关于具体实现的办法,理论课程并未过深涉及,在查资料的过程中,发现关于伪随机数列的实现办法种类繁多,有使用电脑作为平台的伪随机数列发生的办法,也有作用于硬件的伪随机数列发生器。
有基于F PGA的伪随机数列发生器设计,基于D SP的设计,基于C PL D的设计以及本文采用的基于数字模拟电路的设计。
在找方案选方案的过程中,对原有的理论知识进行了全新的理解和巩固。
也对理论应用所应该关注的外部所需硬件环境和成本有所认识。
方案敲定以后,具体实践时候出了诸多问题,一方面让我们在应对问题中学会灵活运用自己学过的知识,另一方面培养我们的动手和协作的能力。
看似简单的项目,却需要非常耐心和极多精力的投入,还有优势互补的团队合作。
附录1:电路图。