摘要: 介绍了线性反馈移位寄存器以及完全描述它们的多项式。应用说明描述了如何实现它们以及可用于改进所生成数字的统计特性的技术。
lfsr(线性反馈移位寄存器)提供了一种在微控制器上快速生成非顺序数字列表的简单方法。生成伪随机数只需要右移操作和异或操作。图1显示了一个5位LFSR。图2显示了用C语言实现的LFSR,图3显示了用8051汇编实现的16位LFSR。
LFSR完全由其多项式指定。例如,每个项都存在的6(th)次多项式表示为方程x(6) + x(5) + x(4) + x(3) + x(2) + x + 1。这种大小的多项式有2((6 - 1))= 32种不同的可能。就像数字一样,有些多项式是素数或原数。我们对原始多项式很感兴趣因为它们会给我们移动时最长的周期。一个n次的最大长度多项式会有2(n) - 1种不同的状态。每次转换后都会转换到一个新的状态。因此,一个6次多项式将有31种不同的状态。1到31之间的每个数字在重复之前都会出现在移位寄存器中。在原始的6(th)次多项式的情况下,只有6个。表1列出了所有原始的6(th)次多项式和它们各自的多项式掩码。多项式掩码是通过取多项式的二进制表示并截断最右边的位来创建的。在实现多项式的代码中使用掩码。它需要n位来实现n(th)次多项式的多项式掩码。
每个原始多项式都有奇数个项,这意味着每个原始多项式的掩码都有偶数个1位。每个原始多项式也定义了第二个原始多项式,它的对偶。对偶可以通过从多项式的次数中减去每一项的指数来找到。例如,给定6(6)次多项式x(6) + x + 1,其对偶是x(6-6) + x(6-1) + x(6-0),等于x(6) + x(5) + 1。在表1中,多项式1与2、3与4、5与6互为对偶。
表2列出了每种不同大小的多项式的周期以及每种大小存在的原语多项式的数量。表3为每个不同大小的多项式列出了一个多项式掩码。它还显示了当LFSR初始化为1时,连续移位后LFSR将保持的前四个值。这个表应该有助于确保实现是正确的。
LFSR的值永远不会为零,因为LFSR为零的每次移位都会使其为零。LFSR必须初始化,即播种到一个非零值。当LFSR保持1并且移位一次时,它的值将始终是多项式掩码的值。当寄存器除最高有效位外全为零时,接下来的几次移位将显示高位移位到低位,并填充零。例如,任何具有基本多项式的8位移位寄存器最终将生成序列0x80、0x40、0x20、0x10、8、4、2、1,然后是多项式掩码。
一般来说,基本的LFSR不能产生很好的随机数。一个更好的数字序列可以通过选择一个更大的LFSR和使用随机数的低位来改进。例如,如果你有一个10位的LFSR并且想要一个8位的数字,你可以取寄存器的底部8位作为你的数字。使用这种方法,在LFSR完成一个周期并重复之前,您将看到每个8位数字四次,零三次。这解决了得到零的问题,但数字仍然没有表现出很好的统计特性。相反,您可以将LFSR的子集用于随机数,以增加数字的排列并改进LFSR输出的随机特性。
在得到随机数之前多次移动LFSR也可以改善其统计特性。将LFSR移动其周期的一个因子将使总周期长度减少该因子。表2列出了各时期的因素。
相对较短的lfsr周期可以通过将两个或多个不同大小的lfsr的值叠加在一起来解决。这些xor lfsr的新周期将是周期的LCM(最小公倍数)。例如,一个基本的4位LFSR和一个基本的6位LFSR的LCM是LCM(15,63),即315。当以这种方式加入lfsr时,请确保只使用lfsr的最小位数;使用更少的量是更好的做法。对于4位和6位的lfsr,不应该使用超过底部4位。在图2中,底部16位来自32位和31位lfsr。注意,XORing两个相同大小的lfsr不会增加周期。
lfsr的不可预测性可以通过在反馈项上增加一点“熵”来增加。在这样做的时候应该小心一些——随着熵位的增加,LFSR有很小的可能会全部归零。如果周期性地增加熵,LFSR的归零会自我修正。这种用反馈项XORing位的方法就是计算循环冗余检查(crc)的方法。
多项式不是生来相等的。有些多项式肯定会比其他的好。表2列出了位大小为31位的可用基本多项式的数量。尝试不同的多项式,直到你找到一个满足你需要的。表3给出的口罩是随机选择的。
用于测试随机数生成器的所有基本统计测试都可以在Donald Knuths, the Art of Computer Programming, Volume 2, Section 3.3中找到。可以使用NIST的统计测试套件进行更广泛的测试。NIST也有一些描述随机数测试的出版物,并参考了其他测试软件。
图1所示 LFSR的简化图
图2 实现LFSR的C代码
图3 8051汇编代码实现一个16位带掩码0D295h的LFSR
不可约多项式 | 二进制形式 | 二元掩模 | 面具 | |
1 | X6 + x + 1 | 1000011 b | 100001 b | 0 x21 |
2 | X6 + x5 + 1 | 1100001 b | 110000 b | 0 x30 |
3. | X6 + x5 + x2 + x + 1 | 1100111 b | 110011 b | 0 x33 |
4 | X6 + x5 + x4 + x + 1 | 1110011 b | 111001 b | 0 x39 |
5 | X6 + x5 + x3 + x2 + 1 | 1101101 b | 110110 b | 0 x36 |
6 | X6 + x4 + x3 + x + 1 | 1011011 b | 101101 b | 0 x2d |
学位 | 期 | 时期因素 | 不。这个次的原始多项式 |
3. | 7 | 7 | 2 |
4 | 15 | 3、5 | 2 |
5 | 31 | 31 | 6 |
6 | 63 | 3 3 7 | 6 |
7 | 127 | 127 | 18 |
8 | 255 | 3 5 17 | 16 |
9 | 511 | 73 | 48 |
10 | 1023年 | 3 11 31 | 60 |
11 | 2047年 | 23日,89年 | 176 |
12 | 4095年 | 3 3 5 7 13 | 144 |
13 | 8191年 | 8191 | 630 |
14 | 16383年 | 3,43,127 | 756 |
15 | 32767年 | 7,31,151 | 1800年 |
16 | 65535年 | 3 5 17 257 | 2048年 |
17 | 131071年 | 131071 | 7710年 |
18 | 262143年 | 3 3 3 7 19 73 | 7776年 |
19 | 524287年 | 524287 | 27594年 |
20. | 1048575年 | 3,5,5,11,31,41 | 24000年 |
21 | 2097151年 | 7,7,127, 337 | 84672年 |
22 | 4194303年 | 3,23,89,683 | 120032年 |
23 | 8388607年 | 178481 | 356960年 |
24 | 16777215年 | 3,3,5,7,13,17,241 | 276480年 |
25 | 33554431年 | 31, 601, 1801 | 1296000年 |
26 | 67108863年 | 3,2731,8191 | 1719900年 |
27 | 134217727年 | 7,73, 262657 | 4202496年 |
28 | 268435455年 | 3、5、29、43、113、127 | 4741632年 |
29 | 536870911年 | 233,1103, 2089 | 18407808年 |
30. | 1073741823年 | 3,3,7,11,31,151, 331 | 17820000年 |
31 | 2147483647年 | 2147483647 | 69273666年 |
32 | 4294967年,29 | 3,5,17,257, 65537 | 不可用 |
学位 | 典型的面具 | 连续换班后LFSR的前四个值 | |||
3. | 0 x5 | 0 x5 | 0 x7 | 0 x6 | 0 x3 |
4 | 0 x9 | 0 x9 | 0 xd | 0 xf | 0 xe |
5 | 0 x1d | 0 x1d | 0 * 13 | 0 x14 | 0 xa |
6 | 0 x36 | 0 x36 | 0 x1b | 0 x3b | 0 x2b |
7 | 0 x69 | 0 x69 | 0 x5d | 0 x47 | 0 x4a |
8 | 0 xa6 | 0 xa6 | 0 x53 | 0 x8f | 0 xe1 |
9 | 0 x17c | 0 x17c | 0 xbe | 0 x5f | 0 x153 |
10 | 0 x32d | 0 x32d | 0 x2bb | 0 x270 | 0 x138 |
11 | 0 x4f2 | 0 x4f2 | 0 x279 | 0 x5ce | 0 x2e7 |
12 | 0 xd34 | 0 xd34 | 0 x69a | 0 x34d | 0 xc92 |
13 | 0 x1349 | 0 x1349 | 0 x1a | 0 x1e3f | 0 x1c56 |
14 | 0 x2532 | 0 x2532 | 0 x1299 | 0 x2c7e | 0 x163f |
15 | 0 x6699 | 0 x6699 | 0 x55d5 | 0 x4c73 | 0 x40a0 |
16 | 0 xd295 | 0 xd295 | 0 xbbdf | 0 x8f7a | 0 x47bd |
17 | 0 x12933 | 0 x12933 | 0 x1bdaa | 0 xded5 | 0 x14659 |
18 | 0 x2c93e | 0 x2c93e | 0 x1649f | 0 x27b71 | 0 x3f486 |
19 | 0 x593ca | 0 x593ca | 0 x2c9e5 | 0 x4f738 | 0 x27b9c |
20. | 0 xaff95 | 0 xaff95 | 0 xf805f | 0 xd3fba | 0 x69fdd |
21 | 0 x12b6bc | 0 x12b6bc | 0 x95b5e | 0 x4adaf | 0 x10e06b |
22 | 0 x2e652e | 0 x2e652e | 0 x173297 | 0 x25fc65 | 0 x3c9b1c |
23 | 0 x5373d6 | 0 x5373d6 | 0 x29b9eb | 0 x47af23 | 0 x70a447 |
24 | 0 x9ccdae | 0 x9ccdae | 0 x4e66d7 | 0 xbbfec5 | 0 xc132cc |
25 | 0 x12ba74d | 0 x12ba74d | 0 x1be74eb | 0 x1f49d38 | 0 xfa4e9c |
26 | 0 x36cd5a7 | 0 x36cd5a7 | 0 x2dabf74 | 0 x16d5fba | 0 xb6afdd |
27 | 0 x4e5d793 | 0 x4e5d793 | 0 x6973c5a | 0 x34b9e2d | 0 x5401885 |
28 | 0 xf5cde95 | 0 xf5cde95 | 0 x8f2b1df | 0 xb25867a | 0 x592c33d |
29 | 0 x1a4e6ff2 | 0 x1a4e6ff2 | 0 xd2737f9 | 0 x1cddf40e | 0 xe6efa07 |
30. | 0 x29d1e9eb | 0 x29d1e9eb | 0 x3d391d1e | 0 x1e9c8e8f | 0 x269faeac |
31 | 0 x7a5bc2e3 | 0 x7a5bc2e3 | 0 x47762392 | 0 x23bb11c9 | 0 x6b864a07 |
32 | 0 xb4bcd35c | 0 xb4bcd35c | 0 x5a5e69ae | 0 x2d2f34d7 | 0 xa22b4937 |
上一篇:醒来,听听红外线
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308