| |
LFSR基本结构与MATLAB程序
线性反馈移位寄存器(LFSR)是一组由D触发器和异或门组成的电路模块,其输出是一串除全零序列以外的周期性序列。
图1 LFSR基本结构
上图中,Q1~Qn为输出,g1~gn为反馈系数。以3位输出为例,若g1=1,g2=1,g3=0,图1可以转换成图2的形式。
图2 3位LFSR
若Q3Q2Q1的初始值(种子)为111,则LFSR循环输出如下:
图3 循环输出
下表为LFSR的matlab程序,其中seed为初始种子,g为反馈系数,n为位数,cycle为时钟周期。
function q=LFSR(seed,g,n,cycle) % LFSR序列输出 % q:
LFSR依次输出所得矩阵 % seed: LFSR种子 % g: 反馈系数 % n:
序列长度 % cycle:循环次数,即时钟周期数
%分别获取种子和反馈系数矩阵 %低位在前 seed_matrix=rot90(bitget(seed,n:-1:1))' g_matrix=rot90(bitget(g,n:-1:1))'
%输出矩阵第一行为seed q(1,1:n)=seed_matrix;
%依次输出每一个触发器的值 %反馈系数决定是否异或 for i=1:cycle
q(i+1,1)=q(i,n); for
j=2:n
if(g_matrix(j)==1)
q(i+1,j)=xor(q(i,j-1),q(i,n));
else
q(i+1,j)=q(i,j-1);
end end end %将高位在前转换成低位在前 q=rot90(q)'; |
验证结果如下,与图3一致。
>> Q=LFSR(5,3,3,7) Q = 1 0
1
0 0 1
0 1 0
1 0 0
0 1 1
1 1 0
1 1 1
1 0 1 |
转载请注明出处,谢谢!