- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线性移位寄存器实现产生伪随数m序列线性移位寄存器实现产生伪随机数m序列线性移位寄存器实现产生伪随机数m序列线性移位寄存器实现产生伪随机数m序列
线性反馈移位寄存器实现产生伪随机数M序列
-----在CN03平台上,主要体现为Random功能的实现。
什么是线性反馈移位寄存器?
数学解释这里就不作介绍了,这里我们主要理解两个词语就行,一个是线性,它是指量与量之间的一种按比例、成直线的关系。这里面有一点点的数学知识,就是说在ai∈(0,1)的存储单元,ai的个数表示为反馈移位寄存器的级,在某一个时刻,这些寄存器会有一个状态,共有2^n个状态,每个状态对应于域GF(2)上的一个N维向量,用(a1,a2,a3,……an)表示。作为某一个时刻的状态,可以用一个函数f(a1,a2,a3…..an)来表示,从而称为该反馈寄存器的反馈函数,因此线性的意思,就是指如果这个反馈函数是a1,a2,a3….an的线性函数,那么这个反馈移位寄存器,就叫做线性反馈移位寄存器,比如f(a1,a2,a3,…an)=kna1⊕kn-1a2⊕….⊕k2an-1⊕k1an,其中系数ki{0,1}i=1,2,3,…,n)。
这里有两种LFSR的实现方式,伽罗瓦(Galois)和斐波那契(Fibonacci)两种形式,也有人称为外部(External)执行方式和内部(Internal)执行方式。所以这两种方式也是有着本质的区别的。
1、伽罗瓦方式(Internal)
如下图
(Galois Implementation)
从图中我们可以看到Galois方式的一些特征,其中包括数据的方向从左至右而反馈线路则是由右至左的。其中X^0项(本原多项式里面的”1”这一项),作为起始项。按照本原多项式所指示的,确定异或门(XOR)在移位寄存器电路上的位置。如上图中的X^4.因此Galois方式也有人称它为线内或模类型(M-型)LFSR.
2、斐波那契方式(External)
如下图
(Fibonacci implementation)
从图中我们可以看到Fibonacci方式的数学流向和反馈形式是恰好跟Galois方式相反的,按照本原多项式,其中的X^0这一项则作为最后一项,这里只需要一个XOR门,将本原多项式中所给出的taps来设定它的异或方式。因此Fibonacci方式也被叫做线外或者简型(S-型)LFSR.
代码是怎么通过这个原来实现伪随机数M序列的产生过程的?
下面来分析一下CN03的随机功能代码实现的过程:
对于Random_mode.c
1、Random_Initialise(void)
这里并不涉及到LFSR部分,其中最重要的是理解seed,就是随机数的种子,它是通过SYS_TICK_VALUE来获得的,也就是说,在系统运行的到某某时刻的时候,如果接到产生随机序列的命令,则获取当前的系统时刻作为seed,这里具有一定的随机性。
获得了随机的seed之后,我们看到它调用了InitialiseBitSwap(seed)。
2、InitialiseBitSwap(unsigned int Seed)
void InitialiseBitSwap(unsigned int Seed)
{ …….
for(…)//先活动一个初始数组,简单的赋值过程
last_bit_swap_array[BitSwapCounter] = bit_swap_array[BitSwapCounter];
…….
while(!LFSR_BitSwap)
{ if(Seed) //在确保LFSR的初始输入是随机数的同时,也要确保它不为0
{ //初始状态为0的时候,整个线性反馈移位的过程无论怎么操作都只有全0的状态
LFSR_BitSwap = Seed 0x1F;
Seed = Seed 1;
}
else
{
LFSR_BitSwap = 1;
}
}
for(….)
{ do
{
if(LFSR_BitSwap BIT_0)//这个条件是加速处理过程,对奇、偶数分开处//理,也能够增加序列的随机性
{ LFSR_BitSwap = (LFSR_BitSwap 1) ^ FIVE_STATE_NEXT_LFSR_FEEDBACK_TAPS;
//这句代码是整个程序里面最为重要的已经代码,它体现了Galois方式的代码实//现过程,跟进所提供的taps,我们可以把这句代码理解为in-line的处理过程,//先移位,然后跟进给出的taps对相应的为进行异或运算,从而实现了线性反馈//移位的功能。通过对照上图,能够较好地理解这个过程。
}
您可能关注的文档
- 弦截法求方程根.ppt
- 县普通初级中学迎检必备材料普通初级中学迎检必备材料县普通初级中学迎检必备材料县普通初级中学迎检必备材料.doc
- 仙剑奇侠传5超详细主支线图攻略(清晰明了)仙剑奇侠传5超详细主支线图文攻略(清晰明了)仙剑奇侠传5超详细主支线图文攻略(清晰明了)仙剑奇侠传5超详细主支线图文攻略(清晰明了).doc
- 咸宁旅游板块资料咸宁旅游板资料块资料.ppt
- 现场安全生产管理制度及措施场安全生产管理制度及措施现场安全生产管理制度及措施现场安全生产管理制度及措施.doc
- 细胞和组织的损伤细胞和组织损伤的损伤.ppt
- 县人大执法检查汇报县人大执检查汇报法检查汇报.doc
- 现场管理人员的素质现场管理员的素质人员的素质.ppt
- 现场管理员的工作内容与职责场管理员的工作内容与职责现场管理员的工作内容与职责现场管理员的工作内容与职责.doc
- 县中医医院调查表县中医医院查表调查表.doc
文档评论(0)