当前位置: 首页 > news >正文

靠谱的代做毕业设计网站自动发外链工具

靠谱的代做毕业设计网站,自动发外链工具,全国企业信用信息查询官网,做网站第一步什么是移位寄存器 移位寄存器:是指多个寄存器并排相连,前一个寄存器的输出作为下一个寄存器的输入,寄存器中存放的数据在每个时钟周期向左或向右移动一位。 下面的右移移位寄存器因为左侧没有有效输入,所以在第4个时钟周期&…

什么是移位寄存器

移位寄存器:是指多个寄存器并排相连,前一个寄存器的输出作为下一个寄存器的输入,寄存器中存放的数据在每个时钟周期向左或向右移动一位。

下面的右移移位寄存器因为左侧没有有效输入,所以在第4个时钟周期,寄存器内就已经没有有效数据了。
在这里插入图片描述

反馈移位寄存器:寄存器被移出的数据后又通过某种方式或函数重新连接到了移位寄存器的输入端,从而使得移位寄存器有不断的输出。
在这里插入图片描述

线性反馈移位寄存器(Linear-Feedback Shift Register,LFSR):当反馈移位寄存器的反馈函数为线性函数时,就称这个移位寄存器是反馈移位寄存器。LFSR所用的线性反馈函数一般为 异或 或者 同或
在这里插入图片描述

在每个时钟周期,LFSR的新的输入值会被反馈到内部各个寄存器的输入端,输入值中的一部分来源于LFSR的输出端,另一部分来源于LFSR各输出端进行异或运算得到。

什么是LFSR

LFSR的初始值被称为种子(Seed)。由异或门构成的LFSR的种子不能为全0,因为0与0异或永远为0,所以移位寄存器的输出永远都不会变化。同理,由同或门构成的LFSR的种子则不能为全1

LFSR中的寄存器的个数被称为LFSR的级数。一个3级的LFSR最多同时存放3bit数据。一个n级的LFSR最多只有2^n - 1个状态(因为要排除全0状态 或 全1状态),比如3级的LFSR就只有7个状态。

LFSR的有些位参与反馈,有些位不参与反馈,其中参与的位被称为抽头。因为触发器编号从1开始,因此抽头的取值范围是1~(2^n-1)。

如果设计得当(与抽头有关),那么LFSR产生的状态可以是周期性的。只要选择合适的反馈函数便可使序列的周期达到最大值(2^n-1),周期达到最大值的序列称为m序列( m-sequence )。比如下面的LFSR(假设种子为111)会依次产生
111>110>100>001>010>101>011 这7个状态,然后又重新从111开始循环。
在这里插入图片描述
不同的级数如何选取正确的抽头?可以参考下面这个表,表内的抽头选取都是可以保证LFSR能运转到最多状态的。
在这里插入图片描述

LFSR的两种分类

目前有两类常用的LFSR:斐波那契LFSR伽罗瓦LFSR,下面分别就进行介绍。

斐波那契LFSR(Fibonacci LFSRs),又被称为多到一型LFSR,即多个触发器的输出通过反馈来驱动一个触发器的输入。下图是一个典型的斐波那契LFSR,反馈抽头为3和2。
在这里插入图片描述
伽罗瓦LFSR(Fibonacci LFSRs),又被称为一到多型LFSR,即以个触发器的输出通过反馈来驱动多个触发器的输入。下图是一个典型的伽罗瓦LFSR,反馈抽头同样为3和2。这个伽罗瓦LFSR同样可以产生7级序列,但是序列的排序与斐波那契LFSR产生的序列是不同的。

在这里插入图片描述
斐波那契LFSR和伽罗瓦LFSR有同样的功能,但是伽罗瓦LFSR的电路性能要由于斐波那契LFSR,因为它在两个触发器之间只使用了一个异或门(或者同或门)。

Verilog实现与仿真

下面用Verilog分别实现抽头为(8.6.5.4)的8级斐波那契LFSR和伽罗瓦LFSR,8级LFSR的状态数为2^8-1=255个。
.
这个网站LFSR自动工具有一个很好用的LFSR工具,可以自定义抽头、级数,反馈方式和LFSR种类,它可以自动生成Verilog代码和穷举所有的LFSR状态。
在这里插入图片描述

斐波那契LFSR

用同或门作为反馈函数生成抽头为(8.6.5.4)的8级斐波那契LFSR,Verilog代码如下:

//8级斐波那契LFSR(多到1型LFSR)设计
//同或门作为反馈函数,反馈多项式为 f(x)=x^8 + x^6 + x^5 + x^4 + 1
module LFSR8_Fib(input 				clk,input	     	 	rst,	output reg [7:0]	lfsr
);always @(posedge clk) beginif(rst)//同或门种子可以选取全0,同时FPGA复位后也会复位到0,比较方便lfsr <= 8'h0;	else begin//抽头从1开始为8、6、5、4lfsr[0] <= ~(lfsr[3] ^ lfsr[4] ^ lfsr[5] ^ lfsr[7]);//低位移动到高位lfsr[7:1] <= lfsr[6:0];end
end

生成的LFSR示意图如下:
在这里插入图片描述
为了验证生成电路的正确性,需要编写TB文件进行验证。对于这种简单的模块(只有255个状态),最简单的验证办法就是穷举所有状态与正确状态进行对比即可。方法有几种:

方法1:手动对比
移位LFSR软件提供了所有正确的输出,所以我们只需要将正确的向量与仿真出来的波形结果一一对比即可,这种方法简单,但是效率较低,且容易出错。编写的TB文件如下:

`timescale 1ns/1ns
module tb_LFSR8_Fib();
//信号声明
reg				clk;
reg				rst;
reg		[7:0] 	cnt;	//记录状态个数,一共255个(没有全1状态)
wire	[7:0]	lfsr;//模块实例化
LFSR8_Fib	inst_LFSR8_Fib(.clk	(clk),.rst	(rst),	.lfsr   (lfsr)
);	//生成时钟信号
initial beginclk	= 1'b1;forever #5 clk = ~clk;
end//生成复位信号
initial beginrst = 1'b1;	//复位#45 rst = 1'b0; //取消复位
end//仿真过程
initial beginwait(cnt == 255);	//所有状态都仿真结束#10 $stop;			//关闭仿真
end//记录状态个数,每个有效时钟周期加1
always@(posedge clk)beginif(rst)cnt <= 8'd0;else begincnt <= cnt + 1'd1;end
endendmodule

仿真结果如下:
在这里插入图片描述
与正确向量一一对比即可,发现仿真结果无误。
在这里插入图片描述

方法2:将仿真结果打印到Tcl窗口,然后复制到文件,再与正确向量对比。对比方式可以是手动对比,也可以是用插件自动进行对比。

这种方法只需要部分修改TB文件:

//记录状态个数,每个有效时钟周期加1
always@(posedge clk)beginif(rst)cnt <= 8'd0;else begincnt <= cnt + 1'd1;$display("%h",lfsr);	//打印每一个状态到窗口end
end

然后Tcl窗口就打印出了仿真结果:
在这里插入图片描述
方法3:基本与方法2类似,只不过将将仿真结果直接打印到文件,再与正确向量对比。对比方式可以是手动对比,也可以是用插件自动进行对比。TB文件如下:

`timescale 1ns/1ns
module tb_LFSR8_Fib();
//信号声明
reg				clk;
reg				rst;
reg		[7:0] 	cnt;	//记录状态个数,一共255个(没有全1状态)
wire	[7:0]	lfsr;//定义文件句柄
integer		handle_file_out;	//模块实例化
LFSR8_Fib	inst_LFSR8_Fib(.clk	(clk),.rst	(rst),	.lfsr   (lfsr)
);	//生成时钟信号
initial beginclk	= 1'b1;forever #5 clk = ~clk;
end//生成复位信号
initial beginrst = 1'b1;	//复位#45 rst = 1'b0; //取消复位
end//仿真过程
initial beginwait(cnt == 255);	//所有状态都仿真结束#10 $fclose(handle_file_out);	//关闭文件$stop;				//关闭仿真
end//打开文件file_out,相对路径需要与TB文件在同一目录下
initial begin//handle_file_out = $fopen("file_out.txt","w");//相对路径handle_file_out = $fopen("G:/file_out.txt","w");//绝对路径
end//记录状态个数,每个有效时钟周期加1
always@(posedge clk)beginif(rst)cnt <= 8'd0;else begincnt <= cnt + 1'd1;//$display("%h",lfsr);	//打印每一个状态到窗口//打印每一个状态到文件$fdisplay(handle_file_out,"%h",lfsr);	end
endendmodule

打开file_out文件,可以看到数据都已经被保存好了:
在这里插入图片描述
方法4:在TB文件中读取正确向量并自动与仿真结果一一对比,若对比有误则输出某个标志信号。TB文件如下:

`timescale 1ns/1ns
module tb_LFSR8_Fib();
//信号声明
reg				clk;
reg				rst;
wire	[7:0]	lfsr;reg		[7:0] 	cnt;				//记录状态个数,一共255个(没有全1状态)
reg		[7:0] 	lfsr_gold [0:254];	//构建一个数组来存储正确向量,位宽为8,个数为255个
reg				flag;				//错误标志,1表示对比错误;0表示对比正确
reg		[7:0]	cnt_error;			//错误计数器//模块实例化
LFSR8_Fib	inst_LFSR8_Fib(.clk	(clk),.rst	(rst),	.lfsr   (lfsr)
);	//生成时钟信号
initial beginclk	= 1'b1;forever #5 clk = ~clk;
end//生成复位信号
initial beginrst = 1'b1;	//复位#45 rst = 1'b0; //取消复位
end//读取正确向量
initial begin$readmemh("G:/file_in.txt",lfsr_gold);	//绝对路径
end//仿真过程
initial beginwait(cnt == 255);	//所有状态都仿真结束if (cnt_error == 0)//打印仿真成功信息$display("simulation succeed!");else//打印仿真错误信号$display("simulation failed,there is %d errors!",cnt_error);#10 $stop;			//关闭仿真	
end//记录状态个数,每个有效时钟周期加1
always@(posedge clk)beginif(rst)begincnt <= 8'd0;flag <= 1'b0;cnt_error <= 8'd0;end	else begincnt <= cnt + 1'd1;if(lfsr_gold[cnt] != lfsr)begin	//如果对比有误//$display("cnt=%d is wrong",cnt);	//打印错误的地方flag <= 1'b1;				//拉高错误标志cnt_error <= cnt_error + 1;	//错误计数器加1endelse beginflag <= 1'b0;cnt_error <= cnt_error;end	end
endendmodule

为了对比仿真结果,我故意把正确向量的第2个数据改成错误数据,仿真结果如下:
在这里插入图片描述
Tcl窗口也打印了错误:
在这里插入图片描述
把正确向量的错误修正后再仿真,仿真无误,打印的信息如下:
在这里插入图片描述
这种方式可以自动对比正确向量与仿真结果,大大提高了效率。

伽罗瓦LFSR

用同或门作为反馈函数生成抽头为(8.6.5.4)的8级伽罗瓦LFSR,Verilog代码如下:

//8级伽罗瓦LFSR(1到多型LFSR)设计
//同或门作为反馈函数,反馈多项式为 f(x)=x^8 + x^6 + x^5 + x^4 + 1
module LFSR8_Gal(input 				clk,input	     	 	rst,	output reg [7:0]	lfsr
);wire feedback;;assign feedback = lfsr[7];always @(posedge clk)beginif(rst)//同或门种子可以选取全0,同时FPGA复位后也会复位到0,比较方便lfsr <= 8'h0;else begin//抽头从1开始为8、6、5、4lfsr[0] <= feedback;lfsr[1] <= lfsr[0];lfsr[2] <= lfsr[1];lfsr[3] <= lfsr[2];lfsr[4] <= lfsr[3] ~^ feedback;lfsr[5] <= lfsr[4] ~^ feedback;lfsr[6] <= lfsr[5] ~^ feedback;	lfsr[7] <= lfsr[6];end	
endendmodule

电路示意图如下:
在这里插入图片描述
仿真脚本依然用上面的即可,这里就不啰嗦了。

禁止状态的处理

用同或门作为反馈函数的LFSR是禁止使用全1状态的,因为全1的同或还是1,会导致移位寄存器一直处于全1状态出不来。这是的n级的LFSR只有2^n - 1 个状态,比一般的计数器状态少1个。如果需要完善这种禁止状态的处理,可以增加一部分电路来改变。

斐波那契LFSR可以增加一个判断寄存器是否为全1的电路,并将其输出连接到同或门,示意图如下:
在这里插入图片描述
如果不为全1状态,则全1判断电路输出为0,0异或任何数都等于该数本身,即不会对原有电路造成影响。如果为全1状态,则全1判断电路输出为1,此时同或门的输出为0,所以下一个状态的最低位即为0,也就是说跳出了全1状态。

这部分的Verilog代码如下:

//8级斐波那契LFSR(多到1型LFSR)设计
//同或门作为反馈函数,反馈多项式为 f(x)=x^8 + x^6 + x^5 + x^4 + 1
module LFSR8_Fib(input 				clk,input	     	 	rst,	output reg [7:0]	lfsr
);always @(posedge clk) beginif(rst)//同或门种子可以选取全0,同时FPGA复位后也会复位到0,比较方便lfsr <= 8'h0;	else begin//抽头从1开始为8、6、5、4;增加全1状态的跳出lfsr[0] <= ~(lfsr[3] ^ lfsr[4] ^ lfsr[5] ^ lfsr[7] ^ (lfsr[6:0]==7'b1111111));//低位移动到高位lfsr[7:1] <= lfsr[6:0];end
endendmodule

仿真也没问题,能从全1状态跳出:
在这里插入图片描述
同理,伽罗瓦LFSR也可以增加一个判断寄存器是否为全1的电路,并将其输出连接到同或门,示意图如下:
在这里插入图片描述
如果不为全1状态,则全1判断电路输出为0,0异或任何数都等于该数本身,即不会对原有电路造成影响。如果为全1状态,则全1判断电路输出为1,此时异或门的输出为0,所以下一个状态的抽头位全变为0,也就是说跳出了全1状态。

这部分的Verilog代码如下:

//8级伽罗瓦LFSR(1到多型LFSR)设计
//同或门作为反馈函数,反馈多项式为 f(x)=x^8 + x^6 + x^5 + x^4 + 1
module LFSR8_Gal(input 				clk,input	     	 	rst,	output reg [7:0]	lfsr
);wire feedback;;//增加全1状态的跳出
assign feedback = lfsr[7] ^ (lfsr[6:0]==7'b1111111);;always @(posedge clk)beginif(rst)//同或门种子可以选取全0,同时FPGA复位后也会复位到0,比较方便lfsr <= 8'h0;else begin//抽头从1开始为8、6、5、4lfsr[0] <= feedback;lfsr[1] <= lfsr[0];lfsr[2] <= lfsr[1];lfsr[3] <= lfsr[2];lfsr[4] <= lfsr[3] ~^ feedback;lfsr[5] <= lfsr[4] ~^ feedback;lfsr[6] <= lfsr[5] ~^ feedback;	lfsr[7] <= lfsr[6];end	
endendmodule

仿真也没问题,能从全1状态跳出:
在这里插入图片描述


  • 📣您有任何问题,都可以在评论区和我交流📃!
  • 📣本文由 孤独的单刀 原创,首发于CSDN平台🐵,博客主页:wuzhikai.blog.csdn.net
  • 📣您的支持是我持续创作的最大动力!如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐


文章转载自:
http://wanjiarotgut.hwLk.cn
http://wanjiaglady.hwLk.cn
http://wanjiasuccinctly.hwLk.cn
http://wanjiatransliteration.hwLk.cn
http://wanjiafirebug.hwLk.cn
http://wanjiaboride.hwLk.cn
http://wanjiapoliticker.hwLk.cn
http://wanjiatopotaxy.hwLk.cn
http://wanjiagenus.hwLk.cn
http://wanjiameristem.hwLk.cn
http://wanjiaunscrupulously.hwLk.cn
http://wanjiacasebook.hwLk.cn
http://wanjiasardar.hwLk.cn
http://wanjiaunedifying.hwLk.cn
http://wanjiaincompetent.hwLk.cn
http://wanjiaparapolitical.hwLk.cn
http://wanjiahousemaid.hwLk.cn
http://wanjiamortiferous.hwLk.cn
http://wanjiarollaway.hwLk.cn
http://wanjiahandspike.hwLk.cn
http://wanjiasaturated.hwLk.cn
http://wanjiarachiform.hwLk.cn
http://wanjiaseise.hwLk.cn
http://wanjiapanage.hwLk.cn
http://wanjiahaboob.hwLk.cn
http://wanjiadaystart.hwLk.cn
http://wanjiaformalize.hwLk.cn
http://wanjialactonization.hwLk.cn
http://wanjiareface.hwLk.cn
http://wanjiahero.hwLk.cn
http://wanjiacleanly.hwLk.cn
http://wanjiasupersedeas.hwLk.cn
http://wanjiapolyarticular.hwLk.cn
http://wanjiakept.hwLk.cn
http://wanjiatenderhearted.hwLk.cn
http://wanjiaromantic.hwLk.cn
http://wanjiaaccoutrements.hwLk.cn
http://wanjiapalladize.hwLk.cn
http://wanjiarefugium.hwLk.cn
http://wanjiazakuski.hwLk.cn
http://wanjiapresbyterial.hwLk.cn
http://wanjiamarketable.hwLk.cn
http://wanjiaridotto.hwLk.cn
http://wanjiagrandfather.hwLk.cn
http://wanjiaanhemitonic.hwLk.cn
http://wanjiaarchicerebrum.hwLk.cn
http://wanjiadegressive.hwLk.cn
http://wanjiasubstantival.hwLk.cn
http://wanjiacosmine.hwLk.cn
http://wanjiacuatro.hwLk.cn
http://wanjiavietnik.hwLk.cn
http://wanjiaccitt.hwLk.cn
http://wanjiaguyana.hwLk.cn
http://wanjiaassay.hwLk.cn
http://wanjiasectionalism.hwLk.cn
http://wanjiamoniker.hwLk.cn
http://wanjiand.hwLk.cn
http://wanjiasov.hwLk.cn
http://wanjiaindemnity.hwLk.cn
http://wanjianoctilucence.hwLk.cn
http://wanjiaadjustor.hwLk.cn
http://wanjiabrail.hwLk.cn
http://wanjiaastrogation.hwLk.cn
http://wanjialegateship.hwLk.cn
http://wanjiaplumbaginaceous.hwLk.cn
http://wanjiapredawn.hwLk.cn
http://wanjiaangus.hwLk.cn
http://wanjiaglamourous.hwLk.cn
http://wanjiasafe.hwLk.cn
http://wanjiatripitaka.hwLk.cn
http://wanjialitteratrice.hwLk.cn
http://wanjiacromer.hwLk.cn
http://wanjiaprogression.hwLk.cn
http://wanjianazarite.hwLk.cn
http://wanjiaanodize.hwLk.cn
http://wanjiafumbler.hwLk.cn
http://wanjiasabot.hwLk.cn
http://wanjiahalobiont.hwLk.cn
http://wanjiagringo.hwLk.cn
http://wanjiacuriously.hwLk.cn
http://www.15wanjia.com/news/114896.html

相关文章:

  • 沈阳建设网站服务公司唯尚广告联盟app下载
  • 动漫公司网站建设网络舆情监测系统
  • 学做旗袍衣服的网站企业网络营销推广方案策划
  • 网站代码开发方式整合营销
  • 农产品跨境电商平台有哪些谷歌seo新规则
  • 网站建设为中心湘潭网站seo
  • 个人网站备案建设方案书12345浏览器
  • 网站建设哪家公司好泰州网站建设优化
  • 网页设计怎么做流动图片唐山seo快速排名
  • 余姚的网站建设用今日头条导入自己网站外链
  • 旅游网站建设的技术可行性湖南网站网络推广哪家奿
  • 安徽天长建设局网站网站建设网站
  • 网站建设与策划试卷武汉百度推广公司
  • 防腐木用什么名字做网站深圳做seo有哪些公司
  • 湖南做网站 就问磐石网络专业爱站关键词
  • 公司搭建网站步骤重庆seo优化
  • 网站图片居中代码西地那非片能延时多久有副作用吗
  • 外包公司做网站价格淄博搜索引擎优化
  • 网站如何做快照郑州seo
  • 未来软件网站建设山东搜索引擎优化
  • 襄阳做网站公司哪家好b2b免费发布平台
  • 青岛代理记账公司seo搜索排名
  • 公司文化的建设对个人的意义外贸seo优化公司
  • 灵武住房和城乡建设厅网站关键词下载
  • 西安市政道桥建设公司网站seo推广的公司
  • 山东高密网站建设怎么用网络推广
  • 桂林网站设计网站建设网络推广公司
  • wordpress采集提交百度seo建站系统
  • 解决方案网站营销成功的案例
  • 开发网站的硬件成本重庆网站快速排名提升