前言
文章中求解的方法可供参考,如果有出错可评论或私信博主。
一、题目
已知序列{an}和{bn}分别作为钟控序列生成器LFSR1和LFSR2的输入,求解钟控序列生成器的输出序列{dn}及周期。
{an}为2
级m序列,{bn}为3
级m序列
{an} = 0 1 1 0 1 1 · · ·
{bn} = 1 1 1 0 1 0 0 1 1 1 0 1 0 0 · · ·
注:省略号前面的二进制为一个周期
二、原理
最简单的钟控序列生成器如下:
原理:
当LFSR1输出1时,移位时钟脉冲通过与门使LFSR2进行一次移位,从而生成下一位。
当LFSR1输出0时,移位时钟脉冲无法通过与门影响LFSR2。因此LFSR2重复输出前一位。
二、求周期p
设{an}和{bn}的周期分别为p1和p2
- p1 = 2m-1
- p2 = 2n-1
- w1 = 2m-1
- gcd(w1,p2):求w1和p2的最大公因子
周期p = p1*p2 / (gcd(w1,p2))
注: w1的m-1是整个指数部分,而p1和p2的指数是m和n
{ak}是2级m序列,{bk}是3级m序列。
所以m的值为2,n为3
将m和n的值带入上面的几个公式中
周期p = (22-1) * (23-1) / gcd (2(2-1) ,23-1)
= 3 * 7 / gcd(2 , 7)
= 21 / 1
= 21
三、求输出序列{dn}
[1]. 求d1
首先确定的是d1,即输出序列{dn}第一位的值,首位比较不同,
d1 = b1
{an} = 0 1 1 0 1 1 · · ·
{bn} = 1 1 1 0 1 0 0 1 1 1 0 1 0 0 · · ·
注:之后的高亮二进制部分为新得到或当前使用的二进制位
输入序列 | 使用情况 |
---|---|
{b1} | 1 |
输出序列{dn} | 结果 |
---|---|
{d1} | 1 |
[2]. 求d2
- 确定
{dn}
第二位d2
时,先获取a1
的值,如果值是0
时,d2 = d1
(即dk
填入dk-1
的值)
{an} = 0 1 1 0 1 1 · · ·
{bn} = 1 1 1 0 1 0 0 1 1 1 0 1 0 0 · · ·
输入序列 | 使用情况 |
---|---|
{a1} | 0 |
{b1} | 1 |
输出序列{dn} | 结果 |
---|---|
{d1 d2} | 1 1 |
[3]. 求d3
- 确定
{dn}
第三位d3
时,得到a2
的值为1
,此时就和上一步不同。得输出{bn}
序列的值,因为之前输出过了b1
的值,所以不能再用这个b1
值,则d3 = b2
{an} = 0 1 1 0 1 1 · · ·
{bn} = 1 1 1 0 1 0 0 1 1 1 0 1 0 0 · · ·
输入序列 | 使用情况 |
---|---|
{a1 a2} | 0 1 |
{b1 b2 } | 11 |
输出序列{dn} | 结果 |
---|---|
{d1 d2 d3} | 1 1 1 |
[4]. 求d4
- 求取的方法和步骤
3
和4
类似,当前的a
值为1
,所以得输出最新的b
值来当作d4的值。
{an} = 0 1 1 0 1 1 · · ·
{bn} = 1 1 1 0 1 0 0 1 1 1 0 1 0 0 · · ·
输入序列 | 使用情况 |
---|---|
{a1 a2} | 0 1 1 |
{b1 b2 b3} | 1 1 1 |
输出序列{dn} | 结果 |
---|---|
{d1 d2 d3 d4} | 1 1 1 1 |
[5]. 最终结果
- 由于{dn}的一个周期内比较多的二进制,其他位的求解类似就不介绍了。
- 你可以根据步骤1来确定首位,根据步骤2和步骤3来确定第k位的值。
d{n} = 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 · · ·