国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Verilog編程】線性反饋移位寄存器(LFSR)原理及Verilog代碼實現(xiàn)

這篇具有很好參考價值的文章主要介紹了【Verilog編程】線性反饋移位寄存器(LFSR)原理及Verilog代碼實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、移位寄存器的基本概念

1.移位寄存器

移位寄存器:指若干個寄存器排成一列,每個寄存器中存放1bit二進(jìn)制數(shù)據(jù)(0或1),每個時鐘周期向左或向右移動一個bit。下圖所示為一個向右移動的移位寄存器。
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

2.反饋移位寄存器

反饋移位寄存器(Feedback Shift Register,F(xiàn)SR):每個時鐘脈沖,移位寄存器向右移動一位,則移位寄存器的左左側(cè)就會空出一位。這個如果左側(cè)有輸入,則移位寄存器的右側(cè)輸出端則會有源源不斷的數(shù)據(jù)輸出。如果來自移位寄存器的某些序列根據(jù)一定的反饋函數(shù)形成左側(cè)輸入,則稱該結(jié)構(gòu)為反饋移位寄存器。
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

3.線性反饋移位寄存器

線性反饋移位寄存器(Linear Feedback Shift Register,LFSR):當(dāng)反饋移位寄存器的反饋函數(shù)f(x)是線性時,則稱為線性反饋移位寄存器。
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
線性反饋移位寄存器的反饋函數(shù)為:對移位寄存器中的某些位進(jìn)行異或。將反饋函數(shù)得到的計算結(jié)果反饋到移位寄存器的最左邊,即得到了線性反饋移位寄存器。

狀態(tài)

狀態(tài):一個LFSR當(dāng)前存儲的序列被稱為一個狀態(tài)。當(dāng)LFSR向右移動一位時,左側(cè)會被反饋函數(shù)補(bǔ)上一位計算后的數(shù)據(jù),得到一個新的LFSR序列,此時LFSR就移動到了一個新狀態(tài)。

抽頭

抽頭:線性反饋移位寄存器有些位參與異或,有些位不參與異或,其中參與異或的位被稱為抽頭。抽頭會影響下一狀態(tài)的比特位。LFSR的觸發(fā)器編號從1開始,因此抽頭的取值范圍是1~(2n-1)。

種子

種子:LFSR中的初值,種子應(yīng)該是非零的。如果為全零的話,下一狀態(tài)任意做異或也還是為0,則線性反饋移位寄存器的輸出用于0,無效。

二、LFSR的一些基本概念

1.級數(shù)和周期

級數(shù):LFSR中的寄存器個數(shù)稱為LFSR的級數(shù)。一個5級的LFSR最多同時存放5bit數(shù)據(jù)
周期:一個n級的LFSR最多只有(2n-1)個狀態(tài),即:一個n級的LFSR最多只能遍歷2n-1個序列,即最大周期為(2n-1)。
注:nbit移位寄存器能存儲的數(shù)據(jù)為0~(2n-1),即2n個狀態(tài),但是由于LFSR禁止全0狀態(tài),因此一個n級的LFSR最多只能有(2n-1)個狀態(tài)。因此一個LFSR的最大周期是(2n-1)個系統(tǒng)時鐘周期,當(dāng)用LFSR產(chǎn)生PRBS(偽隨機(jī)噪聲)時,是存在周期性的。值得注意的是:不是所有的LFSR都能達(dá)到(2n-1)個周期,這與抽頭的設(shè)計相關(guān)。只要選擇合適的反饋函數(shù)便可使序列的周期達(dá)到最大值(2n-1),周期達(dá)到最大值的序列稱為m序列。

2.特征多項式

線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
由上圖,可以得到第n+1位的值為:
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
由上文可以看出,特征多項式表示的是抽頭系數(shù),抽頭的設(shè)計關(guān)系到LFSR的最大周期,一般要使LFSR得到最大周期(2^n-1),可參照如下表:
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

三、LFSR的分類

1.斐波那契LFSR:多到一型LFSR(many to one)

抽頭序列對應(yīng)bit位置的多個寄存器的輸出異或后驅(qū)動一個寄存器輸入

從左到右依次遞增編號

線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

從右到左依次遞減編號

線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
以三級LFSR,反饋函數(shù)為:f(x)=x3+x2+1為例,其兩種編號的伽羅瓦電路圖如下

1.從左到右依次遞增編號
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
假設(shè)初始狀態(tài)為001,則該電路的狀態(tài)跳轉(zhuǎn)為:
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
周期數(shù)為23-1=7

2.從左到右依次遞減編號

線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
假設(shè)初始狀態(tài)為001,則該電路的狀態(tài)跳轉(zhuǎn)為:
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
周期數(shù)為23-1=7

斐波那契LFSR習(xí)慣采用“從左到右依次遞增編號”的電路。

三級斐波那契LFSR的Verilog代碼實現(xiàn)

`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

仿真圖如下所示,符合預(yù)期狀態(tài)轉(zhuǎn)移過程。
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

2.伽羅瓦LFSR:一到多型LFSR(one to many)

最后一個寄存器的輸出通過與抽頭序列對應(yīng)位置寄存器前一級寄存器的輸出異或后驅(qū)動多個抽頭序列對應(yīng)位置的寄存器

從左到右依次遞增編號

線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

從左到右依次遞減編號

線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
以三級LFSR,反饋函數(shù)為:f(x)=x3+x2+1為例,其兩種編號的伽羅瓦電路圖如下

1.從左到右依次遞增編號
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
假設(shè)電路初始值為001,則該電路的狀態(tài)跳轉(zhuǎn)為:
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
周期數(shù)為23-1=7

2.從左到右依次遞減編號
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
假設(shè)電路初始值為001,則該電路的狀態(tài)跳轉(zhuǎn)為:
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
周期數(shù)為23-1=7

伽羅瓦LFSR習(xí)慣采用“從左到右依次遞減編號”電路。

三級伽羅瓦LFSR的Verilog代碼實現(xiàn)

`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

仿真圖如下所示,符合預(yù)期狀態(tài)轉(zhuǎn)移過程。
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

3.斐波那契LFSR與伽羅瓦LFSR的對比

伽羅瓦LFSR具有更高的速度,因為兩個觸發(fā)器之間只有一個異或門。斐波那契LFSR在首尾兩個寄存器之間有多個異或門,組合邏輯延時更大,因為為了滿足建立保持時間的要求,其頻率更?。ㄖ芷诟螅?,速度更慢。

4.LFSR的全零禁止態(tài)

由上文的分析,當(dāng)LFSR的某個狀態(tài)為全0后,無論怎么組合,0與0異或都為0,因此LFSR將一直輸出0,得不到想要的序列,因此LFSR要避免進(jìn)入全零狀態(tài)。其預(yù)防的辦法有:
(1)將寄存器置位到某個允許的狀態(tài)

if(|lfsr[n-1:0]==1'b0)begin
			lfsr[n-1:0]<={{n}{1'b1}};//如果為全零狀態(tài),則下一個狀態(tài)置為全1。
		end

(2)使用額外的電路使得電路進(jìn)入全零狀態(tài)后自動退出

斐波那契LFSR禁止態(tài)處理

如對于斐波那契LFSR,額外添加一個n位或非(NOR)邏輯,如下電路圖
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
(1)當(dāng)LFSR為全零時,F(xiàn)=1,那么LFSR的狀態(tài)跳變?yōu)椋?0…00—>00…01,LFSR從全零狀態(tài)退出
(2)當(dāng)LFSR不為全零時,F(xiàn)=0,此時
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
由于任何數(shù)(0或1)異或0都等于其本身,因此
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
故當(dāng)LFSR不為全零時,不會對電路造成影響。

如對一個三級LFSR,特征多項式為f(x)=x3+x2+1,"從左到右依次遞增編號"的斐波那契LFSR,加上“保險”后的電路為:
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

三級斐波那契LFSR禁止態(tài)處理的Verilog代碼實現(xiàn)
`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

仿真圖如下,當(dāng)LFSR從全0狀態(tài)啟動后,LFSR自動進(jìn)入下一狀態(tài),符合預(yù)期。
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

伽羅瓦LFSR禁止態(tài)處理

同理對伽羅瓦LFSR添加一個n位或非(NOR)邏輯,如下電路圖
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
(1)當(dāng)LFSR為全零時,F(xiàn)=1,那么LFSR的狀態(tài)跳變?yōu)椋?0…00—>01…00,LFSR從全零狀態(tài)退出
(2)當(dāng)LFSR不為全零時,F(xiàn)=0,此時
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
由于任何數(shù)(0或1)異或0都等于其本身,因此
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件
故當(dāng)LFSR不為全零時,不會對電路造成影響。

如對一個三級LFSR,特征多項式為f(x)=x3+x2+1,"從左到右依次遞減編號"的伽羅瓦LFSR,加上“保險”后的電路為:
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

三級伽羅瓦LFSR禁止態(tài)處理的Verilog代碼實現(xiàn)
`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

仿真圖如下,當(dāng)LFSR從全0狀態(tài)啟動后,LFSR自動進(jìn)入下一狀態(tài),符合預(yù)期。
線性反饋移位寄存器原理,數(shù)字IC,fpga開發(fā),單片機(jī),嵌入式硬件

參考文獻(xiàn)

1.詳解線性反饋移位寄存器(LFSR)
2.LFSR(線性反饋移位寄存器)
3.線性反饋移位寄存器(LFSR)文章來源地址http://www.zghlxwxcb.cn/news/detail-606783.html

到了這里,關(guān)于【Verilog編程】線性反饋移位寄存器(LFSR)原理及Verilog代碼實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Verilog實現(xiàn)移位寄存器

    Verilog實現(xiàn)移位寄存器

    Verilog實現(xiàn)8位環(huán)形移位寄存器 左移: 環(huán)形就是首尾相連 右移: 普通的移位寄存器用for語句實現(xiàn): 普通左移: tb測試: 圖形分析: 雙向shift:就是加個判斷

    2024年02月11日
    瀏覽(24)
  • Verilog基礎(chǔ)之十一、移位寄存器實現(xiàn)

    Verilog基礎(chǔ)之十一、移位寄存器實現(xiàn)

    目錄 一、前言 二、工程設(shè)計 ?2.1 工程代碼 2.2 綜合結(jié)果 2.3 仿真結(jié)果 ????移位寄存器SRL在工程中屬于使用頻率較高個模塊,可用于存儲數(shù)據(jù),實現(xiàn)串并轉(zhuǎn)換;根據(jù)數(shù)據(jù)移動方向可分為左移寄存器,右移寄存器,左移是向數(shù)據(jù)高位移動,右移是向數(shù)據(jù)低位移動。? 工程中包

    2024年02月11日
    瀏覽(25)
  • 【FGPA】Verilog:移位寄存器 | 環(huán)形計數(shù)器 | 4bit移位寄存器的實現(xiàn) | 4bit環(huán)形計數(shù)器的實現(xiàn)

    【FGPA】Verilog:移位寄存器 | 環(huán)形計數(shù)器 | 4bit移位寄存器的實現(xiàn) | 4bit環(huán)形計數(shù)器的實現(xiàn)

    ? 目錄 Ⅰ. 理論部分 0x00 移位寄存器(Shift Register) 0x01 環(huán)形計數(shù)器(Ring Counter)

    2024年02月05日
    瀏覽(64)
  • hdlbits系列verilog解答(8位寬移位寄存器)-24

    這項練習(xí)是module_shift移位寄存器的延伸。模塊端口不是只有單個引腳,我們現(xiàn)在有以向量作為端口的模塊,您將在其上附加線向量而不是普通線網(wǎng)數(shù)據(jù)。與 Verilog 中的其他位置一樣,端口的向量長度不必與連接到它的導(dǎo)線匹配,但這會導(dǎo)致向量的零填充或截斷。本練習(xí)不使用

    2024年02月08日
    瀏覽(23)
  • Verilog學(xué)習(xí)筆記——時序邏輯(shift register移位寄存器)

    Verilog學(xué)習(xí)筆記——時序邏輯(shift register移位寄存器)

    1. 4位移位寄存器??4-bit shift register 2.?Left/ right register 左移|右移寄存器(1位) ? 3.?Left/right arithmetic shift by 1 or 8 算數(shù) 左移|右移寄存器(1 或8位) 4.?5-bit LFSR 5.?3-bit LFSR ? 6.?32-bit LFSR ? 7.?Shift register 8.?Shift register ? ?9.?3-input LUT ?

    2024年02月03日
    瀏覽(22)
  • m基于FPGA的桶形移位寄存器verilog實現(xiàn),包含testbench

    m基于FPGA的桶形移位寄存器verilog實現(xiàn),包含testbench

    目錄 1.算法仿真效果 2.算法涉及理論知識概要 2.1、桶形移位寄存器的基本原理 2.2、桶形移位寄存器的數(shù)學(xué)模型 2.3、桶形移位寄存器的實現(xiàn)步驟 3.Verilog核心程序 4.完整算法代碼文件 本系統(tǒng)進(jìn)行了兩個平臺的開發(fā),分別是: Vivado2019.2 Quartusii18.0+ModelSim-Altera 6.6d ?Starter Edition 其

    2024年02月04日
    瀏覽(30)
  • 【FPGA】Verilog:時序電路設(shè)計 | 自循環(huán)移位寄存器 | 環(huán)形計數(shù) | 扭環(huán)計數(shù) | 約翰遜計數(shù)器

    【FPGA】Verilog:時序電路設(shè)計 | 自循環(huán)移位寄存器 | 環(huán)形計數(shù) | 扭環(huán)計數(shù) | 約翰遜計數(shù)器

    前言: 本章內(nèi)容主要是演示Vivado下利用Verilog語言進(jìn)行電路設(shè)計、仿真、綜合和下載 示例:計數(shù)器 ? ?? 功能特性:?采用?Xilinx Artix-7 XC7A35T芯片? 配置方式:USB-JTAG/SPI Flash 高達(dá)100MHz 的內(nèi)部時鐘速度? 存儲器:2Mbit SRAM ??N25Q064A SPI Flash(樣圖舊款為N25Q032A) 通用IO:Switch :

    2024年02月10日
    瀏覽(110)
  • 北郵22級信通院數(shù)電:Verilog-FPGA(10)第十周實驗 實現(xiàn)移位寄存器74LS595

    北郵22級信通院數(shù)電:Verilog-FPGA(10)第十周實驗 實現(xiàn)移位寄存器74LS595

    北郵22信通一枚~ 跟隨課程進(jìn)度更新北郵信通院數(shù)字系統(tǒng)設(shè)計的筆記、代碼和文章 持續(xù)關(guān)注作者 迎接數(shù)電實驗學(xué)習(xí)~ 獲取更多文章,請訪問專欄: 北郵22級信通院數(shù)電實驗_青山如墨雨如畫的博客-CSDN博客 目錄 一.代碼部分 ?二.管腳分配 三.實現(xiàn)過程講解及效果 shift_register.v d

    2024年02月05日
    瀏覽(49)
  • FPGA之移位寄存器

    FPGA之移位寄存器

    ????????SLICEM中的LUT可以配置為32位移位寄存器,而無需使用slice中可用的觸發(fā)器。以這種方式使用,每個LUT 可以將串 行數(shù)據(jù)延遲 1 到 32 個時鐘周期。移入D (DI1 LUT 引腳)和移出 Q31(MC31 LUT 引腳)線路將LUT級聯(lián),以形成更大的移位寄存器。因此,SLICEM 中的四個 LUT 被級聯(lián)以

    2024年02月19日
    瀏覽(24)
  • LABVIEW的移位寄存器

    LABVIEW的移位寄存器

    移位寄存器是數(shù)據(jù)的容器,可以包含任何數(shù)據(jù)類型。 添加移位寄存器后,在循環(huán)結(jié)構(gòu)左右兩側(cè)的平行位置將各增加一個包含三角形的方框。左側(cè)的方框代表上一次循環(huán)的運行結(jié)果,而右側(cè)的代表本次循環(huán)要輸入的結(jié)果。 ?最終得到5次循環(huán)后的結(jié)果。 接下來我們做一個通過移

    2024年02月11日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包