线性反馈移位寄存器
通信原理精品课-第七章m序列(伪随机序列)
04
m序列在扩频通信中的应用
扩频通信的基本原理和特点
扩频通信的基本原理
扩频通信是一种利用信息信号对一个很宽频带的载波进行调制,以扩展信号频谱 的技术。通过扩频,信号的频谱被扩展,从而提高了信号的抗干扰能力和隐蔽性 。
扩频通信的特点
扩频通信具有抗干扰能力强、抗多径干扰能力强、抗截获能力强、可实现码分多 址等优点。同时,扩频通信也存在一些缺点,如信号的隐蔽性和保密性可能受到 影响,信号的带宽较宽,对信道的要求较高。
在无线通信中,由于信号传播路径的不同,接收端可能接收到多个不同路径的信号,形成多径干 扰。
抗多径干扰
m序列具有良好的自相关和互相关特性,可以用于抗多径干扰。通过在发射端加入m序列,可以 在接收端利用相关器检测出原始信号,抑制多径干扰的影响。
扩频通信
m序列可以用于扩频通信中,将信息信号扩展到更宽的频带中,提高信号的抗干扰能力和隐蔽性 。
离散性
m序列是一种周期性信号,其 功率谱具有离散性,即只在某 些特定的频率分量上有能量分 布。
带宽有限
m序列的功率谱具有有限的带 宽,其带宽与序列的长度和多 项式的系数有关。
旁瓣抑制
m序列的功率谱具有较好的旁 瓣抑制特性,即除了主瓣外的 其他频率分量的能量较小。
m序列在多径干扰抑制中的应用
多径干扰
抗截获能力
m序列扩频通信系统具有较强 的抗截获能力。由于信号的频 谱被扩展,敌方难以检测和识 别信号,从而提高了通信的保 密性。
码分多址能力
m序列扩频通信系统具有较强 的码分多址能力。不同的用户 可以使用不同的扩频码进行通 信,从而实现多用户共享同一 通信信道。
05
m序列的未来发展与研究方向
m序列与其他通信技术的融合应用
我国在zuc序列密码算法
我国在zuc序列密码算法
ZUC(祖冲之)序列密码算法是我国自主研发的一种序列密码算法,该算法主要用于数据的机密性和完整性保护,是实现网络空间安全的基础算法和核心技术。
ZUC算法已成为国际标准ISO/IEC 29189:2017,标志着我国在密码算法领域取得了重要突破。
ZUC算法主要由LFSR(线性反馈移位寄存器)、BR(比特重组)和F (非线性函数)三部分组成。
输入为128位长的密钥和128位长的初始化向量,输出为(n, n),其中n为节拍数(轮数)。
在ZUC算法的实现过程中,首先进行初始化阶段,然后进行多轮迭代,每轮迭代包括以下步骤:
1. 线性反馈移位寄存器(LFSR)操作:根据初始化向量和密钥进行LFSR操作,生成新的状态。
2. 比特重组(BR)操作:将LFSR生成的状态进行比特重组,得到新的数据。
3. 非线性函数(F)操作:将BR操作得到的新数据作为输入,经过非线性函数F处理,生成输出。
4. 输出:经过一定的轮数迭代后,ZUC算法输出一系列32位长的字串,用于加密和解密数据。
ZUC算法在我国商用密码体系中具有重要地位,广泛应用于移动通信、物联网、安全认证等领域。
其成为国际标准,不仅提升了我国在全球密码算法领域的地位,也为全球网络安全提供了更为可靠的技术保障。
lsfr表达式
lsfr表达式
LSFR(线性反馈移位寄存器,Linear Feedback Shift Register)是一种常用的序列发生器,它可以生成具有较长周期的伪随机序列。
LSFR的工作原理是利用移位寄存器和反馈线性组合的方式生成下一个状态的值。
LSFR的表达式可以表示为:
Y = XOR(X1, X2, X3, ..., Xn),
其中Y表示当前状态的值,X1、X2、X3等表示移位寄存器的位(也称为“阶数”),XOR表示异或运算。
LSFR的输入主要包括初始状态和反馈多项式。
初始状态是移位寄存器最初的值,反馈多项式则决定了计算下一个状态的方式。
反馈多项式一般以二进制表示,其中1表示对应位参与异或运算,0表示对应位不参与异或运算。
通过不断更新LSFR的状态,可以生成一个周期较长的伪随机序列。
这个序列在某些应用中具有随机性,并被广泛应用于密码学、通信等领域。
作业参考答案3级线性反馈移位寄存器在c3=1时可有4种
1. 3级线性反馈移位寄存器在 C 3 = 1时可有4种线性反馈函数,设其初始状态为(a i , a 2, a 3)=(1,0,1),求各线性反馈函数的输出序列及周期。
解:此时线性反馈函数可表示为 f (a 1, a 2, a 3)= a C 2a 2 C 1 a 3 当 C 1 = 0, C 2= 0 时, f (ai, a 2, a 3)= :a 1 C 2a 2 C £3= a 1,输出序列为 101101 …, 周期=3 当 C 1 = 0, C 2= 1 时, f (ai,a 2, a 3)= :a 1 C 2a 2 C 1 a 3= a 1 a 2,输出序列为 0……,周期=7当 C 1= 1, C 2= 0 时,f (ai,a 2, a 3)= :a 1 C 2a 2 oa 3= a 1 a 3,输出序列为 1……,周期=7当 C 1= 1, C 2= 1 时, f (ai,a 2, a 3)= :a 1 C 2a 2 C 1 a 3= a 1 82 a 3,有输出序列为 1010 …, 周期=22. 设n 级线性反馈移位寄存器的特征多项式为 p (x ),初始状态为(a i ,a 2,…,a n-i , a n )=(00…01),证明输出序列的周期等于 p (x )的阶证:设p (x )的阶为p ,由定理2-3,由r | p ,所以r p设A (x )为序列{a 。
的生成函数,并设序列{a }的周期为r ,则显然有A (x )p (x ) = (x )又 A (x ) = a+a 2x +…+ax +x (a 1+a 2x +…+a 「x )+( x ) (a+a 2x +…+ax )+ …r-1rr -1 r=a 1+a 2x +…+a r x /(1- x ) = a+a 2x +…+a 「x /( x -1)于是 A (x )=( a+a 2x +…+a r X r-1)/( x r -1) = (x )/ p (x )又(a 1, a 2,…,a n-1, a n )=(00 …01) 所以 p (x )( a n x +•• •+ a r x)=(x )(x -1) 即 p (x )x (a n +…+ a 「x )= (x )( x -1)由于x n-1不能整除x r -1,所以必有x n-1| (x ),而(x )的次数小于n ,所以必有 (x )= x n-1所以必有p (x ) | (x r -1),由p (x )的阶的定义知,阶 p r综上所述:p = r #3. 设 n = 4, f ( a, a 2, a 3, a 4)=a 1 a 4 1a 2a 3,初始状态为(a, a 2, a 3, a 4)= (1,1,0,1),求此非线性反馈移位寄存器的输出序列及周期。
线性反馈与对偶移位寄存器的功能实现
线性反馈与对偶移位寄存器的功能实现091234 谢锦仪一、实验目的:该实验为验证性实验。
通过本实验,使学生切实理解线性反馈移位寄存器与对偶移位寄存器的工作原理,学会编写和运用两种移位寄存器“进动一拍”的程序,培养和锻炼学生对于密码学中各种基本“构造”的编程实现能力。
二、实验内容及完成情况:1. 分别写出实现n-LFSR与 n-DSR(n为正整数)进动一拍的程序(旨在能“由寄存器的一个状态算出紧接着的下一个状态”),要求:寄存器状态的各分量自然地与相应数据存储区的各比特位一一对应,不允许仅1个状态分量就占据1个存储单元(字节、字或双字等)。
2. 基于上述程序完成以下工作:选定一个8次联接多项式,这时检验状态存储区自然形成的1字节二进制数是否与前出现者相同就可判定状态是否开始成圈(即进入周期性重复),据此编制i) 分别计算LFSR与DSR在一个给定初态(由外部响应给出)下输出序列ii) 求出LFSR或DSR之一状态图的程序。
三、实验要求:1.对较低次数的联接多项式,程序计算结果须与手工推算一致;2.抓图显示“输出序列”与“状态图”(附页),不能出现明显错误。
四、结果:1、LFSR2、DSR五、实验体会:这次实验有很大的难度,尤其是对其中移位的操作难倒了不少人。
并且看了老师给的程序后理解不是很深,看了很长时间后才有所了解,后来经过复习以前的课程对LFSR和DSR 有了更深层次的理解之后终于明白了程序改如何编写了。
总的来说,这次实验不但是我对LFSR和DSR两种古典密码有了很好的理解,而且也是我对C语言编程中的位运算也熟悉了不少,相信在以后的工作中会给我带来很大的便利。
六、思考题:为什么“检验状态存储区自然形成的二进制数是否与前出现者相同就可判定状态是否开始成圈(即进入周期性重复)”?答:因为每个状态都有唯一的前一拍状态,对应的所有的状态应该是一一连接的(不一定都在一条线上)。
所以如果出现了2个一样的状态,那么后续的对应状态一定相同。
线性反馈移位寄存器LFSRverilog实现
线性反馈移位寄存器LFSRverilog实现⼀、什么是LFSR?线性反馈移位寄存器(linear feedback shift register, LFSR)是指,给定前⼀状态的输出,将该输出的线性函数再⽤作输⼊的移位寄存器。
异或运算是最常见的单⽐特线性函数:对寄存器的某些位进⾏异或操作后作为输⼊,再对寄存器中的各⽐特进⾏整体移位(百度百科定义)。
线性反馈移位寄存器反馈分为两种,⼀种是IE型的LFSR,即异或门内接的线性反馈移位寄存器:另⼀种是异或门外接的线性反馈移位寄存器,简称EE型LFSR:gi表⽰接不接⼊反馈,只能为0或1,为1即为接⼊,为0不接⼊。
关于线性反馈移位寄存器(LFSR)数学原理更加详细的介绍,可以参考下⾯这篇⽂章。
本⽂主要是介绍如果使⽤verilog来实现LFSR电路的编写。
需要注意的是,LFSR是伪随机的,这意味着它只是接近随机,并不是完全随机的。
这是因为其实从LFSR的任何状态,你都可以预测下⼀个状态。
有⼀些重要的移位寄存器属性需要注意:LFSR是伪随机的,从LFSR的任何状态,都可以预测下⼀个状态。
影响下⼀个状态的⽐特位叫做抽头。
当抽头使⽤XOR门时,全0状态不会出现,这是因为0与0异或将始终产⽣0,此时LFSR将停⽌运⾏。
当抽头使⽤XNOR门时,全1状态不会出现,这是因为1与1同或(异或⾮)将始终产⽣1,此时LFSR将停⽌运⾏。
任何LFSR的最⼤可能迭代次数 = 2^N-1,N为级数,也就是寄存器bit位的个数。
那么怎样的LFSR才能遍历2^N-1个状态,产⽣最⼤的迭代次数呢?也就是到底寄存器的哪些位去组合然后反馈到输⼊端,才能使该LFSR的所有2^N-1个状态都出现呢?这⾥官⽅给了⼀个表,我们可以根据这个表来确定LFSR的结构:需要注意的是LFSR的每⼀位的索引是从1开始,然后到N,⼀共2^N-1个状态(因为使⽤异或反馈时要除去全0状态,使⽤异或⾮反馈时要除去全1状态)。
第八章伪随机序列
二、 游程分布(游程分布的随机性)
游程:一个序列中取值(1 或 0)相同连在一起的元素的统称 游程长度:
分布特性:
1.m序列的一个周期(p=2n-1)中,游程总数为2n-1。
2.当1 <游程长度k ≤n-1,游程数目占总数2-k 当1 ≤k ≤n-2,连“1”和连”0“游程各占一
半
例如 m序列:000111101011001, p=15
cn-1 n
a0
cn=1 输出 ak
线性反馈移位寄存器
它是由n级移位寄存器、时钟发生器(图中未画出)
及一些异或电路连接而成。图中ai(i=1,2,…..n-1)
为某一级移存器状态,Ci表示反馈线连接状态: Ci=1,表示反馈线通,参与反馈; Ci=0,表示断开,不参与反馈。 C0 =Cn=1。
1.
0
0
1
1
0
0
1
1
1
0
1
1
1
1
0
1
1
1
1
0
1
1
0
1
0
1
1
0
1
0
1
1
0
1
15位
0
1
1
0
ak 0
0
1
1
1
0
0
1
0
1
0
0
0
0
1
0
需要自己推导一下
0
0
0
1
1
0
0
0
… … … …
说明:
1.为了m序列发生器组成尽量简单, 就使用项数少的那些本原多项式。
2.本原多项式的递多项式也是本原 多项式,表中每一项多项式可组成 两种发生器。
【常用电路】线性反馈移位寄存器(LFSR)
【常⽤电路】线性反馈移位寄存器(LFSR)读华为技术⽂档《FIFO经验谈》看到的这个电路: FIFO的读写地址产⽣⽐较简单,当读使能有效时,在时钟作⽤下,读地址加1;当写使能有效时,写地址加1。
当FIFO深度较⼤时,同时FIFO的速度要求较⾼时,可以采⽤线性反馈移位计数器(LFSR)。
它的速度⾮常快,但是要牺牲⼀个地址。
针对同步的⼤FIFO,它们的读写地址完全可以使⽤线性反馈移位寄存器 LFSR 产⽣,⽽不是简单的加1操作,极⼤的提⾼了速度,如果对FIFO的利⽤率没有很⾼要求的时候,推荐使⽤该⽅法。
使⽤LFSR的优点是在XILINX的FPGA中布线,可以使⽤LUT直接完成。
1/************************************************************\2* *3* Generation of Read and Write address pointers. They use *4* LFSR counters, which are very fast. Because of the *5* nature of LFSR, one address is sacrificed. *6* *7\************************************************************/8wire read_linearfeedback, write_linearfeedback;910assign read_linearfeedback = ! (read_addr[8] ^ read_addr[4]);11assign write_linearfeedback = ! (write_addr[8] ^ write_addr[4]);1213always @(posedge clock or posedge fifo_gsr)14if (fifo_gsr) read_addr <= 9'h0;15else if (read_allow)16 read_addr <= { read_addr[7], read_addr[6], read_addr[5],17 read_addr[4], read_addr[3], read_addr[2],18 read_addr[1], read_addr[0], read_linearfeedback };1920always @(posedge clock or posedge fifo_gsr)21if (fifo_gsr) write_addr <= 9'h022else if (write_allow)23 write_addr <= { write_addr[7], write_addr[6], write_addr[5],24 write_addr[4], write_addr[3], write_addr[2],25 write_addr[1], write_addr[0], write_linearfeedback };。
线性移位寄存器
2r 2
C(t) (ai )(ait )
i0
2r 1, 1,
t 0 0 t 2r 1
16
习题
一、一个线性移存器如图,
(1)写出该线性移存器的线性递推式。 (2)写出该线性移存器的联接多项式。 (3)写出该线性移存器
二、已知 f (x) x6 x 1 是6次本原多项式,a是 f (x) 生 成的m序列, (1) a的周期是多少? (2) a在的一个周期内,0、1各出现多少次? (3) a在的一个周期内,游程分布如何?
其中 cn 0 ,若 cn 0 我们说该寄存器是退化 的,否则是非退化的。
4
移位寄存器序列空间
符号说明:G(f)表示以f(x)为联结多项式的n级线 性移位寄存器序列构成的空间
定理1:G(f)是GF(q)上的一个n维线性空间。 证明:只需证明G(f)中的任意两个序列的任意线
性组合也属于G(f)即可。即证:
• 在密码学中,我们希望参与变换的序列周期越 长越好,因此对线性反馈移存器我们更感兴趣 的是能达到最长周期的序列,即m序列。
9
本原多项式
若n次多项式f(x)是不可约多项式且 p(f)=qn-1,则称f(x)是GF(q)上的本原多项式。
以本原多项式为连接多项式产生的非零序 列均是m序列。
10
m序列特性
a G( f ),b G( f ), a b G( f ),, GF(q)
特例:当q=2时,G(f)中任意两个序列之和仍然 属于G(f)。
5
(不)可约多项式
(不)可约多项式 定义:若存在g(x),h(x),使得f(x)=g(x)h(x),则
称f(x)是可约多项式;否则,称其为不可约多 项式。
周期为3
4.2线性反馈移位寄存器序列
第二节线性反馈移位寄存器序列1基本概念和性质反馈移位寄存器, 特别线性反馈移位寄存器是许多密钥序列生成器的重要部件, 这一节引进线性反馈移位寄存器的模型, 并用数学(特别是代数)工具描述线性反馈移位寄存器.2设n是正整数, n级反馈移位寄存器的模型见下图a k+n−1 a k+n−2……… a k+1a k输出f (x n,…, x2, x1)反馈函数其中f(x1,…, x n)是一逻辑函数, 即f(x1,…, x n)∈2[x1,…, x n]这里2= {0, 1}表示二元域, n≥ 1.3当f(x1,…, x n)是线性函数时, 即f(x1, x2, … , x n) =c1x1+c2x2+ … +c n x n, c i∈2,称对应的反馈移位寄存器为线性反馈移位寄存器(简称LFSR), 所产生的序列称为线性(反馈)移位寄存器序列, 简记为LFSR序列.45此时所产生的序列适合关系式a n +k = 10n i −=∑c n −i a k +i , k = 0, 1, 2, ….并称序列a = (a 0, a 1,…)为n 级线性递归序列。
线性递归序列是LFSR 序列的数学描述, 但为书写简便, 以后在称谓上我们就用LFSR 序列.定义4.1 设a是LFSR序列, 称a的次数最小的特征多项式为a的极小多项式.定理4.1 设a是LFSR序列, 则a的极小多项式是唯一的.6进一步, 设m(x)是a的极小多项式, 则f(x)是a的一a(x)|f(x).个特征多项式当且仅当ma显然, LFSR序列的极小多项式刻画了生成该序列的最短LFSR,而定理4.1进一步说明, 这样的最短LFSR是唯一的.78设f (x )是F 2上n 次多项式, a =(a 0,a 1,a 2,…)是以f (x )为特征多项式的线性递归序列, 则a 由前n 比特a 0,a 1,…,a n −1唯一确定.例如: 设f (x )=x 3+x +1, a =(0,1,1,…)是以f (x )为特征多项式的线性递归序列, 则a =(0,1,1,1,0,0,1,0,1,1,1,…).定义4.2 对于F上序列a, 若存在非负整数k和正2整数T, 使得对任意i≥k, 都有a=a i, 则称a是准周i+T期序列, 最小这样的T称为a的周期, 记为per(a); 若k=0, 则称a是(严格)周期序列.注4.1 设per(a)=T, R是正整数, 若对任意i≥k, 有a i+R=a i, 则T|R.9显然, LFSR是一种有限状态机, 因此, 由LFSR生成的序列必然是准周期的. 下面的定理表明反之也是成立的, 即所有的准周期序列都可用LFSR来生成.定理4.2 a是准周期序列当且仅当a是LFSR序列.10利用序列的极小多项式可以判断序列是否严格周期.(x)是a的极小多项定理4.3 设a是LFSR序列, ma(0)≠0.式, 则a是周期序列当且仅当ma11进一步, 序列的周期由其极小多项式的周期完全确定.定理4.4 设a是周期序列, f(x)是它的极小多项式, 则per(a)=per(f(x)).12注4.2 若a是非严格周期序列, 定理4.4也成立. 由于非周期序列总可以转化成周期序列, 并且实际中使用的序列也都是周期序列, 故后面的讨论仅针对周期序列.13推论4.1 设f(x)是F上不可约多项式, 则以f(x)为2特征多项式的非零序列a有per(a)=per(f(x)).14最后, 我们给出LFSR序列的根表示.[x]是n次无重因子多项式,f(0)≠0, 定理4.5 设f(x)∈F2F2m是f(x)的分裂域, α1,α2,…,αn∈F2m是f(x)的全部根, 则,a1,…), 存在唯对任意以f(x)为特征多项式的序列a=(a一一组β,β2,…,βn∈F2m, 使得1a k=β1α1k+β2α2k+⋅⋅⋅+βnαn k, k≥0.15反之,设β,β2,…,βn∈F2m,若1a k=β1α1k+β2α2k+⋅⋅⋅+βnαn k∈F2, k≥0,,a1,…)以f(x)为特征多项式, 且f(x)是a的极则a=(a≠0, 1≤i≤n.小多项式当且仅当βi16m-序列注意到LFSR总是将0状态转化成0状态, 因此对于一个n级LFSR, 最多可输出周期为2n−1的周期序列.定义4.3 设a是n级LFSR序列, 若per(a)=2n−1, 则称a为n级最大周期序列, 简称为n级m-序列.17由定义显然有定理4.6 设a是n级LFSR序列, 则a是n级m-序列当且仅当a的极小多项式是n次本原多项式18定理4.7 若a是以n次本原多项式f(x)为极小多项式的m-序列, 则0, a, La,…, L2n−2a是以f(x)为特征多项式的序列全体.定理4.7说明, 由同一个本原多项式生成的两条m-序列彼此平移等价. 由定理4.7, 容易证明m-序列满足以下平移可加性.19定理4.8 设a是n级m-序列, 则对于非负整数s和t, 有L s a+L t a=L k a或0, 其中0≤k≤2n−2.注4.3 实际上, 定理4.8给出的平移可加性是m-序列的特有性质, 即对于周期为T的序列a, 非负整数s和t, 若L s a+L t a=L k a或0, 0≤k≤2n−2, 则a是m-序列.20m-序列是最重要的线性反馈移位寄存器序列, 不仅是因为m-序列的周期可达到最大, 而且因为m-序列的统计特性完全满足Golomb S.W.提出的三条随机性假设.2122(1) 元素分布设a 是周期为T 的序列, 将a 的一个周期依次排列在一个圆周上, 并且使得a 0和a T −1相邻, 我们称这样的圆为a 的周期圆.23引理4.1 设a 是n 级m-序列, 0 < k ≤ n , 则F 2上任意一个k 维向量(b 1,b 2,…,b k )在 a 的一个周期圆中出现的次数N (b 1,b 2,…,b k )为N (b 1,b 2,…,b k ) = 122, (,,,)(0,0,...,0)21,.n k k n k b b b −−⎧≠⎪⎨−⎪⎩…若,否则特别地, 分别取k=1和k=n, 有推论4.2 在n级m-序列的一个周期中1出现2n−1次, 0出现2n−1−1次.推论4.3 在n级m-序列的一个周期(圆)中每个(n维)非零状态出现且仅出现1次.2425(2) 游程分布设a 是周期序列, a 在一个周期圆中形如010...01全为 和 101...10全为的项分别叫做a 的0游程和1游程. 而0游程中连续0的个数及1游程中连续1的个数称为游程长度. m -序列具有非常理想的游程分布.定理4.9 设0<k≤n−2, 在n级m-序列的一个周期圆中, 长为k的0游程和1游程各出现2n−k−2次; 长度大于n的游程不出现; 长度为n的1游程和长度为n−1的0游程各出现一次; 长度为n的0游程和长度为n−1的1游程不出现; 游程总数为2n−1.2627(3) 自相关函数m-序列的自相关函数满足二值性, 即定理4.10 设a 是n 级m -序列, 则C a (t ) = 10(1)k k t T a a k +−+=−∑=1, 0(mod 21);21,0(mod 21).n n n t t ⎧−≠−⎪⎨−≡−⎪⎩若若.线性复杂度与Berlekamp-Massey算法线性复杂度的概念是针对LFSR结构提出的, 它衡量了用LFSR来生成给定序列的最小代价. 由于特征多项式完全刻画了生成序列的LFSR, 故自然有以下定义.28定义4.4 设a是周期序列, 称序列a的极小多项式的次数为a的线性复杂度, 记为LC(a).注4.4 对于周期序列a, 显然有LC(a)≤per(a)291969年提出的Berlekamp-Massey算法[14]解决了求序列极小LFSR的问题. 对于线性复杂度为L的序列a, 该算法在已知a的连续2L比特的前提下即可还原出整条序列, 计算时间复杂度仅为O(L2).30第四章序列密码因此, 好的伪随机序列必须具有高的线性复杂度. 对于上一小节介绍的n级m-序列, 其周期为2n−1, 是n 级LFSR能输出的最大周期序列, 但n级m-序列的极小多项式是n次本原多项式, 这意味着n级m-序列的线性复杂度等于n, 则在已知2n比特的条件下, 利用Berlekamp-Massey算法可还原出长为2n−1的原序列. 可见, n级m-序列绝不可单独作为密钥流序列使用.31。
prbs之m序列
10.3.2 码分多址(CDMA)通信
d1
× PN1
× cosωct
延迟τ
1
n(t) Σ + × cosωct × PNi ∫ di
…
dk
× PNk
× cosωct
延迟τ
…
k
图 10-7 码分多址扩频通信系统模型
10.3.3 通信加密
信源
X1
E + Y 发送 信道 接收
E +
X1 Y
用户
m序列 产生器
10.3 m序列的应用
10.3.1 扩展频谱通信
信码 调制 d(t) Acosωct 载波 n(t) 噪声 × + × 带通 解调 d(t) 信码
扩频函数
解扩函数
图 10-4 扩展频谱通信系统
扩展频谱技术的理论基础是山农公式。对于加性白高斯噪 声的连续信道,其信道容量C与信道传输带宽B及信噪比S/N之
1. 线性反馈移位寄存器的递推关系式 递推关系式又称为反馈逻辑函数或递推方程。设图10-1 所 示的线性反馈移位寄存器的初始状态为(a0 a1 …an-2 an-1), 经一 次移位线性反馈,移位寄存器左端第一级的输入为
an c1an 1 c2an 2 cn 1a1 cn a0 ci an i
该系统是用伪码序列来启闭信号的发射时刻和持续时间。该
方式一般和其它方式混合使用。
以上 3 种工作方式是基本的工作方式,最常用的是直扩
方式和跳频方式两种。
4. 混合式扩频方式 在实际系统中,仅仅采用单一工作方式不能达到所希望 的性能时,往往采用两种或两种以上工作方式的混合式扩频。 如FH/DS, DS/TH, FH/TH等。
i 1
n
若经k次移位,则第一级的输入为
m序列
m 序列一、m 序列的产生1、最长线性反馈移位寄存器序列m 序列是最长线性反馈移位寄存器序列的简称,它是由带线性反馈的移位寄存器产生的周期最长的序列。
可以看到图1A 的输出的周期为15,除去全0外,图1A 的输出是周期最长的的序列。
我们希望尽可能少的级数产生尽可能长的序列。
一般说来,一个n 级反馈移存器可能产生的最长周期为12-n 。
反馈电路如何连接才能输出序列最长?是本节要讨论的问题。
2、m序列的特征方程移存器的结构用特征方程表示:∑==+++=ni i i nn x c x c x c c x f 010...)(3、m 序列的递推方程∑=-=ni ik i k a c a 14、m 序列的母函数∑∞==++++=010......)(k k k nn x a x a x a a x G5、几个有用的定理用来构造m 序列定理一、)()()(x h x G x f =,其中)(x h 为次数低于)(x f 的次数的多项式。
定理二、一n 级线性反馈移位寄存器的相继状态具有周期性,周期为12-≤n p 。
定理三、若序列}{k a A =具有最长周期12-=n p ,则其特征多项式)(x f 应为既约多项式。
定理四、一个线性移位寄存器的特征多项式)(x f 若为既约的,则由其产生的序列}{k a A =的周期等于使)(x f 能整除的)1(+p x 最小正整数p 。
6、本原多项式若一个n 次多项式满足如下条件:(1)、)(x f 是既约的(2)、)(x f 可整除m x +1,12-=n m(3)、)(x f 除不尽1+q x ,m q <则称)(x f 为本原多项式。
由本原多项式产生的序列一定是m 序列。
二、m 序列的性质1、均衡性在m 序列的一个周期中,“0”“1”的数目基本相等。
“1”比“0”多一个。
2、游程分布游程:序列中取值相同的那些相继的元素合称为一个“游程”。
游程长度:游程中元素的个数。
作业参考答案3级线性反馈移位寄存器在c3=1时可有4种
第二章作业参考答案1.3级线性反馈移位寄存器在c3=1时可有4种线性反馈函数,设其初始状态为(a1,a2,a3)=(1,0,1),求各线性反馈函数的输出序列及周期。
解:此时线性反馈函数可表示为f(a1,a2,a3)=a1⊕c2a2⊕c1a3当c1=0,c2=0时,f(a1,a2,a3)=a1⊕c2a2⊕c1a3=a1,输出序列为101101…,周期=3当c1=0,c2=1时,f(a1,a2,a3)=a1⊕c2a2⊕c1a3=a1⊕a2,输出序列为10111001011100…,周期=7当c1=1,c2=0时,f(a1,a2,a3)=a1⊕c2a2⊕c1a3=a1⊕a3,输出序列为10100111010011…,周期=7当c1=1,c2=1时,f(a1,a2,a3)=a1⊕c2a2⊕c1a3=a1⊕a2⊕a3,有输出序列为1010…,周期=22.设n级线性反馈移位寄存器的特征多项式为p(x),初始状态为(a1,a2, …,a n-1,a n)=(00…01),证明输出序列的周期等于p(x)的阶证:设p(x)的阶为p,由定理2-3,由r|p,所以r≤p设A(x)为序列{a i}的生成函数,并设序列{a i}的周期为r,则显然有A(x)p(x)=φ(x)又A(x)=a1+a2x+…+a r x r-1+x r(a1+a2x+…+a r x r-1)+(x r)2(a1+a2x+…+a r x r-1)+…=a1+a2x+…+a r x r-1/(1-x r)=a1+a2x+…+a r x r-1/(x r-1)于是A(x)=(a1+a2x+…+a r x r-1)/(x r-1)=φ(x)/p(x)又(a1,a2, …,a n-1,a n)=(00…01)所以p(x)(a n x n-1+…+a r x r-1)=φ(x)(x r-1) 即p(x)x n-1(a n+…+a r x r-n)=φ(x)(x r-1)由于x n-1不能整除x r-1,所以必有x n-1|φ(x),而φ(x)的次数小于n,所以必有φ(x)=x n-1所以必有p(x)|(x r-1),由p(x)的阶的定义知,阶p≤r综上所述:p=r#3.设n=4,f(a1,a2,a3,a4)=a1⊕a4⊕1⊕a2a3,初始状态为(a1,a2,a3,a4)=(1,1,0,1),求此非线性反馈移位寄存器的输出序列及周期。
线性反馈移位寄存器原理
线性反馈移位寄存器原理
线性反馈移位寄存器是一种在数字电路中常用的元件,它能够将输入数据按照一定的顺序进行移位,并以一定的方式反馈部分数据到输入端。
它由多个触发器组成,每个触发器都能存储一个比特的数据。
实现线性反馈移位寄存器基本的原理是运用触发器的工作原理。
触发器是一种能够存储数据并在时钟信号的作用下改变输出状态的元件。
常见的触发器有D触发器和JK触发器等。
线性反馈移位寄存器的输入数据依次通过每个触发器,并从最后一个触发器的输出端输出。
同时,一部分触发器的输出被反馈到输入端,与输入数据进行异或运算后作为下一个触发器的输入。
这样,每次时钟信号到来时,输入数据随着触发器的工作状态向前移位,并根据反馈数据的异或结果产生新的输入数据。
通过合理选择反馈数据的位置和数值,线性反馈移位寄存器可以实现不同的功能。
例如,当反馈数据位于最后一个触发器和倒数第二个触发器之间,并且为1时,可以实现一个带有反馈的移位寄存器;当反馈数据为1并且位于最后一个触发器时,可以实现一个循环移位寄存器。
线性反馈移位寄存器广泛应用于数字通信、数据编码、序列生成等领域。
它具有简单、可靠、高效的特点,在现代的数字系统中扮演着重要的角色。
M序列原理及代码
M序列原理及代码M序列,也称为最大线性互补序列(Maximum Length Linear Feedback Shift Register Sequence,简称Maximal Length LFSR Sequence),是一类具有最长周期的伪随机序列。
原理:M序列是用线性反馈移位寄存器(Linear Feedback Shift Register,简称LFSR)实现的。
LFSR是由多个反馈连接的寄存器组成,每次使用一个时钟周期,将最低位输出,并根据预设的反馈位进行移位操作。
当LFSR的长度达到最大值时,输出序列就成为了一个M序列。
一个M序列的周期长度为2^N-1,其中N为LFSR的长度。
M序列的序列长度等于N,因此一个M序列可以被表示为一个长度为N的二进制序列。
根据LFSR的长度和反馈连接的位置的不同,产生的M序列的质量也会有所差异。
较好的M序列具有均匀分布的频谱性质,并且能够通过各种统计测试。
代码实现:下面是一个简单的Python代码实现M序列生成器:```pythonclass MSequence:def __init__(self, taps):self.taps = tapsself.register = 1def shift(self):feedback = 1 if self.register & self.taps == self.taps else 0self.register = (self.register >> 1) , (feedback <<(len(bin(self.register))-2))def generate_sequence(self, length):sequence = []for _ in range(length):sequence.append(self.register & 1)self.shiftreturn sequence```在上述代码中,MSequence类包含了一个寄存器的状态和反馈位。
lfsr多项式系数选择表
LFSR(线性反馈移位寄存器)是一种广泛应用于数字通信和数据存储的设备。
它通过一个反馈多项式来产生序列,这个多项式决定了序列的特性。
多项式的选择对于LFSR的性能至关重要,因为它决定了序列的周期、噪声容限以及可能的冲突序列的数量。
在LFSR中,多项式的选择是通过一个系数选择表来实现的。
这个表是一个包含一系列可能的多项式的列表,每个多项式由一组系数表示。
选择哪一个多项式作为反馈多项式的过程通常取决于应用的需求和特定的硬件限制。
系数选择表的使用有几个优点。
首先,它允许开发者根据特定的应用需求来定制LFSR的行为。
例如,某些多项式可能更适合于高速数据传输,而其他多项式可能更适合于具有高噪声容限的应用。
其次,系数选择表还允许使用可编程硬件来实现LFSR,这意味着开发者可以根据需要进行调整和优化。
使用系数选择表还为LFSR提供了更好的可扩展性。
通过选择不同的多项式,开发者可以构建具有不同特性的序列生成器,从而适应不断变化的应用需求。
此外,系数选择表还提供了一种灵活的方法来处理硬件限制和错误。
如果硬件出现故障或出现错误,开发者可以通过更改多项式来恢复性能或减少错误的影响。
然而,系数选择表也带来了一些挑战。
首先,选择正确的多项式是一项具有挑战性的任务,因为它需要对应用的需求和硬件性能有深入的了解。
其次,系数选择表的实现可能需要更多的存储空间和计算资源,这可能会影响系统的性能和效率。
最后,随着硬件技术的不断发展,可能需要不断更新和优化系数选择表以适应新的硬件平台和需求。
总之,LFSR的多项式系数选择表是一种用于选择适合特定应用需求和硬件性能的多项式的有效方法。
它提供了一种灵活和可扩展的方法来构建高性能的序列生成器,并处理各种应用中的挑战。
然而,正确的多项式选择需要深入了解应用需求和硬件性能,以及适当的存储和计算资源。
因此,在实践中,正确使用系数选择表需要开发者具备丰富的数字设计和系统设计经验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有趣的线性反馈移位寄存器(LFSR)
最近一直在研究信道编码,发现在信道编码里面有一个电路比较重要也比较有趣,那就是线性反馈移位寄存器LFSR ,相信大家对LFSR 电路也不陌生了,在通信领域lfsr有着很广泛的应用,比如说M序列,扰码,信道编码,密码学这方面都有很广泛的应用,LFRS的结构一般如下图:
其中他需要一个生成多项式为:
这个多项式是一个本原多项式,然后知道这个电路有一些有意思的性质,下面我以m = 3 来做个例子具体的电路图如下所示:
假设开始的时候(D2,D1,D0 )= (0,0,1),那么每过一个时钟周期会进行跳变一次,
可以看到具体的跳变如下所示:
然后我们可以看到这个计数器循环起来了,很好玩吧,无论进入那样一个状态除了0之外,都可以循环着回来,其实这里就相当于了一个3bit的伪随机数,很有意思,不是所有的多项式都有这个特性,我们现在在从数学上面来看看这个问题,其实最上面的电路是可以看成是一个除法电路,在Galois域的一个除法电路。
现在假设的是R(x)是寄存器中剩余的数据,M(x)是输入的码字多项式,然后数学公式可以表示成:
然后我分别计算出了M(x)的各种情况,
然后我们单独进行一下7次方的运算
发现7次方的运算和0次的时候的余数是一样的
然后我们发现其实在上面的电路中对多项式的除法也是可以循环起来的,可以验证的是
把这个记成
上面的式子是可以循环的,然后我又想到了CRC的计算,CRC的计算也可以通过一个除法电路来实现, 假设码子多项式为
生成多项式为
那么CRC的码字为这样我们同样可以用LFSR电路来进行实现
首先对M(x)乘以一个x的r次方,然后去去除G(x),在电路上的表现就是
所以在输入码字以后还需要多输入r拍的0这样才能使最后的CRC码字数据.
同理这个电路也可以进行CRC校验,把生成的数据全部都依次输入进这个。