文章目录
- 一、移位寄存器的基本概念
- 1.移位寄存器
- 2.反馈移位寄存器
- 3.线性反馈移位寄存器
- 状态
- 抽头
- 种子
- 二、LFSR的一些基本概念
- 1.级数和周期
- 2.特征多项式
- 三、LFSR的分类
- 1.斐波那契LFSR:多到一型LFSR(many to one)
- 从左到右依次递增编号
- 从右到左依次递减编号
- 三级斐波那契LFSR的Verilog代码实现
- 2.伽罗瓦LFSR:一到多型LFSR(one to many)
- 从左到右依次递增编号
- 从左到右依次递减编号
- 三级伽罗瓦LFSR的Verilog代码实现
- 3.斐波那契LFSR与伽罗瓦LFSR的对比
- 4.LFSR的全零禁止态
- 斐波那契LFSR禁止态处理
- 三级斐波那契LFSR禁止态处理的Verilog代码实现
- 伽罗瓦LFSR禁止态处理
- 三级伽罗瓦LFSR禁止态处理的Verilog代码实现
- 参考文献
一、移位寄存器的基本概念
1.移位寄存器
移位寄存器:指若干个寄存器排成一列,每个寄存器中存放1bit二进制数据(0或1),每个时钟周期向左或向右移动一个bit。下图所示为一个向右移动的移位寄存器。
2.反馈移位寄存器
反馈移位寄存器(Feedback Shift Register,FSR):每个时钟脉冲,移位寄存器向右移动一位,则移位寄存器的左左侧就会空出一位。这个如果左侧有输入,则移位寄存器的右侧输出端则会有源源不断的数据输出。如果来自移位寄存器的某些序列根据一定的反馈函数形成左侧输入,则称该结构为反馈移位寄存器。
3.线性反馈移位寄存器
线性反馈移位寄存器(Linear Feedback Shift Register,LFSR):当反馈移位寄存器的反馈函数f(x)是线性时,则称为线性反馈移位寄存器。
线性反馈移位寄存器的反馈函数为:对移位寄存器中的某些位进行异或。将反馈函数得到的计算结果反馈到移位寄存器的最左边,即得到了线性反馈移位寄存器。
状态
状态:一个LFSR当前存储的序列被称为一个状态。当LFSR向右移动一位时,左侧会被反馈函数补上一位计算后的数据,得到一个新的LFSR序列,此时LFSR就移动到了一个新状态。
抽头
抽头:线性反馈移位寄存器有些位参与异或,有些位不参与异或,其中参与异或的位被称为抽头。抽头会影响下一状态的比特位。LFSR的触发器编号从1开始,因此抽头的取值范围是1~(2n-1)。
种子
种子:LFSR中的初值,种子应该是非零的。如果为全零的话,下一状态任意做异或也还是为0,则线性反馈移位寄存器的输出用于0,无效。
二、LFSR的一些基本概念
1.级数和周期
级数:LFSR中的寄存器个数称为LFSR的级数。一个5级的LFSR最多同时存放5bit数据
周期:一个n级的LFSR最多只有(2n-1)个状态,即:一个n级的LFSR最多只能遍历2n-1个序列,即最大周期为(2n-1)。
注:nbit移位寄存器能存储的数据为0~(2n-1),即2n个状态,但是由于LFSR禁止全0状态,因此一个n级的LFSR最多只能有(2n-1)个状态。因此一个LFSR的最大周期是(2n-1)个系统时钟周期,当用LFSR产生PRBS(伪随机噪声)时,是存在周期性的。值得注意的是:不是所有的LFSR都能达到(2n-1)个周期,这与抽头的设计相关。只要选择合适的反馈函数便可使序列的周期达到最大值(2n-1),周期达到最大值的序列称为m序列。
2.特征多项式
由上图,可以得到第n+1位的值为:
由上文可以看出,特征多项式表示的是抽头系数,抽头的设计关系到LFSR的最大周期,一般要使LFSR得到最大周期(2^n-1),可参照如下表:
三、LFSR的分类
1.斐波那契LFSR:多到一型LFSR(many to one)
抽头序列对应bit位置的多个寄存器的输出异或后驱动一个寄存器输入
从左到右依次递增编号
从右到左依次递减编号
以三级LFSR,反馈函数为:f(x)=x3+x2+1为例,其两种编号的伽罗瓦电路图如下
1.从左到右依次递增编号
假设初始状态为001,则该电路的状态跳转为:
周期数为23-1=7
2.从左到右依次递减编号
假设初始状态为001,则该电路的状态跳转为:
周期数为23-1=7
斐波那契LFSR习惯采用“从左到右依次递增编号”的电路。
三级斐波那契LFSR的Verilog代码实现
`timescale 1ns/1ps module fibonacci_lfsr( input wire sclk, input wire rst_n, output reg flfsrn ); reg [1:3] fibo_lfsr;//f(x)=x^3+x^2+1,从左到右依次递增编号 always @(posedge sclk or negedge rst_n)begin if(rst_n==1'b0)begin fibo_lfsr<=3'b001;//initial value end else begin fibo_lfsr<={fibo_lfsr[3]^fibo_lfsr[2],fibo_lfsr[1],fibo_lfsr[2]}; end end always @(*)begin flfsrn=fibo_lfsr[3]; end endmodule
仿真图如下所示,符合预期状态转移过程。
2.伽罗瓦LFSR:一到多型LFSR(one to many)
最后一个寄存器的输出通过与抽头序列对应位置寄存器前一级寄存器的输出异或后驱动多个抽头序列对应位置的寄存器
从左到右依次递增编号
从左到右依次递减编号
以三级LFSR,反馈函数为:f(x)=x3+x2+1为例,其两种编号的伽罗瓦电路图如下
1.从左到右依次递增编号
假设电路初始值为001,则该电路的状态跳转为:
周期数为23-1=7
2.从左到右依次递减编号
假设电路初始值为001,则该电路的状态跳转为:
周期数为23-1=7
伽罗瓦LFSR习惯采用“从左到右依次递减编号”电路。
三级伽罗瓦LFSR的Verilog代码实现
`timescale 1ns/1ps module galois_lfsr( input wire sclk, input wire rst_n, output reg glfsrn ); reg [3:1] galo_lfsr;//f(x)=x^3+x^2+1,从左到右依次递减编号 always @(posedge sclk or negedge rst_n)begin if(rst_n==1'b0)begin galo_lfsr<=3'b000;//initial value end else begin galo_lfsr<={galo_lfsr[1],galo_lfsr[3]^galo_lfsr[1],galo_lfsr[2]}; end end always @(*)begin glfsrn=galo_lfsr[1]; end endmodul
仿真图如下所示,符合预期状态转移过程。
3.斐波那契LFSR与伽罗瓦LFSR的对比
伽罗瓦LFSR具有更高的速度,因为两个触发器之间只有一个异或门。斐波那契LFSR在首尾两个寄存器之间有多个异或门,组合逻辑延时更大,因为为了满足建立保持时间的要求,其频率更小(周期更大),速度更慢。
4.LFSR的全零禁止态
由上文的分析,当LFSR的某个状态为全0后,无论怎么组合,0与0异或都为0,因此LFSR将一直输出0,得不到想要的序列,因此LFSR要避免进入全零状态。其预防的办法有:
(1)将寄存器置位到某个允许的状态
if(|lfsr[n-1:0]==1'b0)begin lfsr[n-1:0]<={{n}{1'b1}};//如果为全零状态,则下一个状态置为全1。 end
(2)使用额外的电路使得电路进入全零状态后自动退出
斐波那契LFSR禁止态处理
如对于斐波那契LFSR,额外添加一个n位或非(NOR)逻辑,如下电路图
(1)当LFSR为全零时,F=1,那么LFSR的状态跳变为:00…00—>00…01,LFSR从全零状态退出
(2)当LFSR不为全零时,F=0,此时
由于任何数(0或1)异或0都等于其本身,因此
故当LFSR不为全零时,不会对电路造成影响。
如对一个三级LFSR,特征多项式为f(x)=x3+x2+1,"从左到右依次递增编号"的斐波那契LFSR,加上“保险”后的电路为:
三级斐波那契LFSR禁止态处理的Verilog代码实现
`timescale 1ns/1ps module fibonacci_lfsr( input wire sclk, input wire rst_n, output reg flfsrn ); reg [1:3] fibo_lfsr;//f(x)=x^3+x^2+1,从左到右依次递增编号 wire all_lfsr_not_0; assign all_lfsr_not_0=~(fibo_lfsr!=3'b000); always @(posedge sclk or negedge rst_n)begin if(rst_n==1'b0)begin fibo_lfsr<=3'b001;//initial value end else begin fibo_lfsr<={fibo_lfsr[3]^fibo_lfsr[2]^all_lfsr_not_0,fibo_lfsr[1],fibo_lfsr[2]}; end end always @(*)begin flfsrn=fibo_lfsr[3]; end endmodule
仿真图如下,当LFSR从全0状态启动后,LFSR自动进入下一状态,符合预期。
伽罗瓦LFSR禁止态处理
同理对伽罗瓦LFSR添加一个n位或非(NOR)逻辑,如下电路图
(1)当LFSR为全零时,F=1,那么LFSR的状态跳变为:00…00—>01…00,LFSR从全零状态退出
(2)当LFSR不为全零时,F=0,此时
由于任何数(0或1)异或0都等于其本身,因此
故
故当LFSR不为全零时,不会对电路造成影响。
如对一个三级LFSR,特征多项式为f(x)=x3+x2+1,"从左到右依次递减编号"的伽罗瓦LFSR,加上“保险”后的电路为:
三级伽罗瓦LFSR禁止态处理的Verilog代码实现
`timescale 1ns/1ps module galois_lfsr( input wire sclk, input wire rst_n, output reg glfsrn ); reg [3:1] galo_lfsr;//f(x)=x^3+x^2+1,从左到右依次递减编号 wire all_lfsr_not_0; assign all_lfsr_not_0=~(galo_lfsr!=3'b000); always @(posedge sclk or negedge rst_n)begin if(rst_n==1'b0)begin galo_lfsr<=3'b000;//initial value end else begin galo_lfsr<={galo_lfsr[1],galo_lfsr[3]^galo_lfsr[1]^all_lfsr_not_0,galo_lfsr[2]}; end end always @(*)begin glfsrn=galo_lfsr[1]; end endmodul
仿真图如下,当LFSR从全0状态启动后,LFSR自动进入下一状态,符合预期。
参考文献
1.详解线性反馈移位寄存器(LFSR)
2.LFSR(线性反馈移位寄存器)
3.线性反馈移位寄存器(LFSR)
猜你喜欢
- 11天前(兵团猛进秦剧团持续开展“戏曲进校园”活动)兵团猛进秦剧团持续开展“戏曲进校园”活动
- 11天前(东北地区全域旅游)东北三省一区宣传贯彻研学旅游行业标准
- 11天前(河南省文旅大会精神)2025河南省文化旅游发展大会新闻发布会在郑州召开
- 11天前(云南滇陇工程咨询有限公司)陇滇携手谋发展 文旅合作谱新篇
- 11天前(曼谷丽思卡尔顿公寓价格)在曼谷丽思卡尔顿酒店CALEŌ 邂逅鸡尾酒的浪漫艺术
- 11天前(夏日纵享 邂逅双面姑苏是哪一集)夏日纵享 邂逅双面姑苏
- 11天前(世茂海峡大厦多高)巴西地产高管齐聚厦门世茂海峡大厦 共探超高层建筑锻造经验
- 11天前(大黄山景区高质量发展联盟成立多少年)大黄山景区高质量发展联盟成立
- 11天前(芜宣机场国际航班)新华丝路:芜宣机场开通至越南首都河内的国际货运航线
- 11天前(北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章