女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當前位置:首頁 > 模擬 > 模擬技術
[導讀]移位寄存器有不同的版本,可用于各種各樣的應用程序。本文將向您介紹移位寄存器并說明它們的工作原理。此外,它還將解釋如何將它們用于將多條并行數據線轉換為單個串行連接。

移位寄存器有不同的版本,可用于各種各樣的應用程序。本文將向您介紹移位寄存器并說明它們的工作原理。此外,它還將解釋如何將它們用于將多條并行數據線轉換為單個串行連接。

什么是移位寄存器?

移位寄存器是存儲單個數據字的同步器件,可以對這些位執(zhí)行邏輯移位操作。邏輯移位將字的每個位向左或向右移動。空格通常用零填充:

上圖顯示了向左的邏輯移位。右移以類似的方式工作。

移位寄存器由幾個單位鎖存器組成它們以串行菊花鏈方式連接,以便一個鎖存器的輸出連接到下一個輸入:

有些變速器允許您選擇這些位將被移動。

移位寄存器的類型

通常,有四種不同類型的移位寄存器可用數據輸入和輸出設備的方式不同:

串行輸入,串行輸出

串行輸入,并行輸出

并行輸入,串行輸出

并行輸入,并行輸出

串行和并行類型通常同步運行,因此您需要時鐘信號處理數據。

支持串行和并行輸入的寄存器,如以及串行和并行輸出,被稱為通用移位寄存器。

基本操作

我們假設我們有以下理論4位移位寄存器同時具有串行輸入和輸出以及并行輸出:

如您所見,每個位從右側的串行輸入加載到移位寄存器的D鎖存器中。

第一個時鐘周期將其加載到鎖存器A中。然后鎖存器的輸出具有加載到寄存器中的值。 。下一個時鐘周期設置第二個鎖存器值并將一個新位加載到第一個鎖存器中,從而將位從右向左移位。這與所有寄存器同時發(fā)生。最后一個鎖存器輸出是移位寄存器的串行輸出。

因此,串行移位器可以用作緩沖器。上面的移位器也可用于將串行信號轉換為四條并行數據線。

與串行轉換并行

此技術可用于減少從并行總線讀取值所需的輸入數量。例如,您可以利用它將來自計算機鍵盤的信號轉換為USB控制器可以理解的單個串行信號。在本例中,我使用DIP開關來模擬8位數據總線,并使用Arduino Uno上的單個GPIO引腳讀取8個值:

請注意,橙色和黃色總線實際上可能無法連接成一條線。我決定以這種方式代表他們以使圖像更容易理解:

Arduino控制移位寄存器,產生時鐘信號,并讀取8位。然后輸出值:

結論

移位寄存器是一個由幾個D鎖存器組成的同步器件,它實現了數字電路中的邏輯移位功能。這些IC可用于各種應用。然而,它們通常用于將串行數據線轉換為并行總線,反之亦然。使用它們時,您必須記住,有不同類型可用于不同目的。

移位寄存器(左移、右移、雙向)的Verilog實現

移位寄存器的功能和電路形式較多,按移位方向分有左移、右移、和雙向移位寄存器;按接收數據方式分為串行輸入和并行輸入;按輸出方向分為串行輸出和并行輸出。

如果將若干個觸發(fā)器級聯成如下圖所示電路,則構成基本的移位寄存器。圖中是一個4位移位寄存器,串行二進制數據從輸入端Dsi輸入,左邊觸發(fā)器的輸出作為右鄰觸發(fā)器的數據輸入。若將串行數碼D3D2D1D0從高位(D3)至低位(D0)按時鐘脈沖間隔依次送到Dsi端,經過第一個時鐘脈沖后,Q0=D3。由于跟隨D3后面的是D2,因此經過第二個時鐘脈沖后,觸發(fā)器FF0的狀態(tài)移入觸發(fā)器FF1而FF0轉變?yōu)樾碌臓顟B(tài),即Q1=D3,Q0=D2。以此類推,輸入數碼依次由左側觸發(fā)器移到右側觸發(fā)器。經過4個時鐘脈沖后,4個觸發(fā)器的輸出狀態(tài)Q3Q2Q1Q0與輸入數碼D3D2D1D0相對應。這樣,就將串行輸人數據轉換為并行輸出數據Dpo。

一般來說,N位移位寄存器要由N個觸發(fā)器構成,需要N·Tcp來完成串行到并行的數據轉換,同樣也需要N?Tcp來實現并行到串行的數據輸出。這里,Tcp為時鐘周期。從上述操作可以看出,移位寄存器只能用脈沖邊沿敏感的觸發(fā)器,而不能用電平敏感的鎖存器來構成,因為在時鐘脈沖高電平期間,鎖存器輸出跟隨輸入變化的特性將使移位操作失去控制。顯然,移位寄存器屬于同步時序電路。

1.基本移位

首先說明“由于國家標準規(guī)定,邏輯圖中最低有效位(LSB)到最高有效位(MSB)的電路排列順序應從上到下,從左到右。因此定義移位寄存器中的數據從低位觸發(fā)器移向高位為右移,反之則為左移。這一點與通常計算機程序中規(guī)定相反,后者從自然二進制數的排列考慮,將數據移向高位定義為左移,反之為右移?!贝藘热菡浴峨娮蛹夹g基礎-數字部分》康華光主編教材。

module shifter( din, clk, rst, dout,done);

input din, clk, rst;

output [7:0] dout;

output reg done; //完成移位

reg [7:0] dout;

reg [3:0] cnt;

always @(posedge clk)

begin

if(rst) //清零

dout <= 8’b0;

else if(cnt<=4’d7)

begin

dout<=dout>>1; //左移

dout[7]<=din;

/*dout <= dout<<1;

dout[0] <= din; */ //右移

end

else

dout<=dout;

end

always@(posedge clk)

begin

if(rst)

begin

cnt<=4'd0;

done<=1'b0;

end

else if(cnt==4'd7)

begin

cnt<=4'd0;

done<=1'b1;

end

else begin

cnt<=cnt+1'b1;

done<=1'b0;

end

end

endmodule

2.雙向移位

雙向移位實現數據保持、右移、左移、并行置數、并行輸出。

module two_way(

input clk,

input rst,

input s0,s1, //選擇輸入端口

input din1,din2, //串行數據輸入

input [3:0] d, //并行數據輸入

output reg [3:0] q //輸出端口

);

always@(posedge clk or negedge rst)

begin

if(!rst)

q<=4'd0;

else begin

case({s1,s0})

2'b00: q<=q; //輸出保持不變

2'b01: q<={q[2:0],din1}; //右移

2'b10: q<={din2,q[3:1]}; //左移

2'b11: q<=d; //并行置數

endcase

end

end

endmodule

在數字電路中,移位寄存器(Shift Register)是時鐘的脈沖(上升沿)觸發(fā)之下工作的一種以觸發(fā)器為基礎的電路器件,在每個時鐘上升沿的觸發(fā)之下,數據會依次向左或右移動一個比特(Bit),最后在輸出端進行輸出,這里,數據可以以并行或者以串行的方式輸入到該移位寄存器的電路器件中。

移位寄存器也是類似一種存儲器,可以存儲數據,而存在里邊的數據可以從低位向高位移動或從高位向低位移動。例如一個4位的移位寄存器,存在其中的數據為“1100”,如果向左(即高位MSB)移動一次,就變成“100X”,原來的最高位的“1”移出,最低位的“X”可以是新移入的數據,也可以是0(我們本次設計用的是隨機數據,即隨機輸入“0”或者是“1”)。

就是因為移位寄存器中的數據可以在移位脈沖作用下依次逐位右移或者依次逐位左移,而數據既可以并行輸入、并行輸出、串行輸入以及串行輸出,也可以并行輸入、串行輸出、串行輸入以及并行輸出,因此,正是因為移位寄存器如此靈活,才使得它用途廣泛,可以應用于許許多多的數字電路設計模塊之中,從而實現多種多樣的功能。

那么,現在先來我們的代碼,下面是主程序和測試程序(TestBench):

當時鐘信號上升沿到來的時候(前提是復位信號無效的時候),輸出的8位數據先移位后輸出,低位賦值一個隨機數,依次移位。

clk:時鐘信號

rst_n:復位信號,在這里也稱為置零信號,它使得輸出數據為零,后綴“_n”表示低電平的時候有效;

data_out:數據輸出,這里為8位數據輸出,然后先是數據進行移位,從低位讓高位移動,比如仿真中的“11110110”(f6),在下一個時鐘觸發(fā)信號到來之后,就進行左移,由原先的“11110110”往左移一位,變?yōu)椤?110110X”,然后X隨機帶入,這里代入的是“1”,所以下一個輸出為“11101101”(ed),依次類推。

該程序實現的移位寄存器功能一目了然。

對于移位寄存器,這里我們比較常見的芯片有74194芯片(考試也最??嫉?,它是一種四位雙向移位存器。我們根據移位方向,常把它分成左移寄存器、右移寄存器和雙向移位寄存器三種。根據移位數據的輸入和輸出方式,又可將它分為串行輸入-串行輸出、串行輸入-并行輸出、并行輸入-串行輸出和并行輸入-并行輸出四種電路結構。大家如果感興趣的話可以去百度搜索這款移位寄存器的芯片手冊閱讀一下,對于自己的學習還是非常有幫助的!

聲明:該篇文章為本站原創(chuàng),未經授權不予轉載,侵權必究。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉