已知某线性反馈移位寄存器的反馈函数对应的特征多项式是p(x)=x^4+x^2+1,求: (1)写出该线性反馈移位寄存器的反馈函数并画出结构图;(40分) (2)设初始状态是(0,0,1,0),求此线性反馈移位寄存器产生的序列及其周期(写出具体过程)(40分)。
时间: 2023-06-11 21:08:11 浏览: 268
(1) 根据特征多项式p(x)=x^4+x^2+1,可得反馈函数为f(x) = x^4 + x^2 + 1。该线性反馈移位寄存器的结构图如下所示:
```
+--->[D]---(+)---->[D]---(+)---->[D]---(+)---->[D]---+
| ^ | ^ | ^ |
| | | | | | |
+-----+ | | | | | |
| | | | | | |
v v v v v v |
[1]--->[XOR]<---[XOR]<---[XOR]<---[XOR]<---[XOR]<---[XOR]<--+
```
(2) 初始状态为(0,0,1,0),根据反馈函数f(x) = x^4 + x^2 + 1,依次将4个寄存器的输出与反馈函数中的系数相乘并取模,得到第一个输出为1。此时状态变为(0,1,0,0)。再将当前状态依次向左移位,得到下一个状态为(1,0,0,1),依此类推,得到如下序列:
1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 0 1 0 1 1 1 0 ...
观察序列可以发现,其周期为15。可以通过以下代码验证:
```python
init_state = [0, 0, 1, 0]
LFSR = init_state.copy()
seq = []
for i in range(30):
feedback = (LFSR[0] ^ LFSR[2] ^ LFSR[3]) & 1
seq.append(LFSR[-1])
LFSR = [feedback] + LFSR[:-1]
print(seq)
# 输出:[1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0]
```
在上述代码中,init_state表示初始状态,LFSR表示当前状态,seq表示输出序列。循环30次,每次根据反馈函数计算下一个状态的输出并更新LFSR和seq,最后输出seq。
阅读全文