1、Shift Register(RAM-based)是MegaWizard Plug-In Manager中的一個IP core,該工具提供了豐富的庫函數,這些庫函數專門針對Altera公司的器件進行優化,電路結構簡單,並大大減少了設計者的工作量。通過MegaWizard Plug-In Manager工具的向導,設計者可以利用Quartus II提供的庫函數自定義功能宏塊,並設置模塊參數和可選端口數值。
https://www.electronics-tutorials.ws/sequential/seq_5.html
2、Shift Register(移位寄存器)
移位寄存器是一種時序邏輯電路,可用於以二進制數形式存儲或傳輸數據。它加載輸入的數據,然后在每個時鍾周期將其移動或“移位”到其輸出,因此稱為移位寄存器。一個移位寄存器基本上由幾個單一位的“D-鎖存器”組成,每個數據位表示一個邏輯“0”或“1”,以串聯式(Serial)菊花鏈(daisy-chain)連接在一起,以便從 一個數據鎖存器(data latch)的輸出成為下一個鎖存器的輸入,依此類推。
數據位可以順序地從移位寄存器輸入或輸出,也就是從左或右方向一個接一個地輸入或輸出,或者同時以並行的方式一起輸入或輸出。組成移位寄存器所需的數據鎖存器的數量通常取決於要存儲的位數,最常見的是由8個單獨的數據鎖存器構成的8位(一個字節)寬度的移位寄存器。
移位寄存器用於數據存儲或數據移動,因此通常用於計算器或計算機內部,例如兩個二進制數字相加之前可進行存儲,或者將數據從串行轉換為並行或並行或並行串行格式。構成移位寄存器的各個數據鎖存器全部由公共時鍾(Clk)信號驅動,使其成為同步設備。
移位寄存器IC通常提供一個清除或復位連接,以便可以根據需要進行“SET”或“RESET”。通常,移位寄存器有四種不同的工作模式,通過移位寄存器的基本數據移動是:
(1)串行輸入到並行輸出(SIPO) - 寄存器一次一位地加載串行數據,所存儲的數據在輸出端以並行形式提供。
(2)串行輸出到串行輸出(SISO) - 數據在寄存器的“IN”和“OUT”串行移位,在時鍾控制下以左或右的方向一次一位地移位。
(3)並行輸入到串行輸出(PISO) - 並行數據同時加載到寄存器中,並在時鍾控制下一次一位地串行移出寄存器。
(4)並行輸入到並行輸出(PIPO) - 並行數據同時加載到寄存器中,並通過相同的時鍾脈沖一起傳輸到各自的輸出。
數據通過移位寄存器從左到右移動的效果可以用圖形表示為:

而且,通過移位寄存器移動數據,可以是在左邊(左移)到右邊,(右移)左進右出,(旋轉)或使用同一個寄存器左右移,從而使其成為雙向的移位寄存器。在本教程中,假定所有的數據向右移動(右移)。
3、Serial-in to Parallel-out (SIPO) Shift Register

操作如下:假設所有觸發器(FFA到FFD)剛剛被復位(CLEAR輸入),所有輸出QA到QD都處於邏輯電平“0”,即沒有並行數據輸出。
如果邏輯“1”連接到FFA的DATA輸入引腳,那么在第一個時鍾脈沖時,FFA的輸出,因此產生的QA將被設置為邏輯“1”,所有其他輸出仍保持邏輯“ 0” 。現在假定FFA的DATA輸入引腳再次回到邏輯“0”,給我們一個數據脈沖或0-1-0。
第二個時鍾脈沖會將FFA的輸出變為邏輯“0”,FFB和QB的輸出變為邏輯“1”,因為其輸入D具有QA的邏輯“1”電平。邏輯“1”現在已經移動或“移位”了一個位置,沿着寄存器向右移動,就像現在在QA一樣。
當第三個時鍾脈沖到達時,這個邏輯“1”值移到FFC(QC)的輸出端,等等,直到第五個時鍾脈沖到來,所有的輸出QA到QD再次回到邏輯電平“0”,因為FFA的輸入在邏輯電平“0”保持不變。
每個時鍾脈沖的作用是將每一級的數據內容向右移一位,如下表所示,直到0-0-0-1的完整數據值被存入寄存器。現在可以從QA到QD的輸出直接讀取此數據值。
然后數據已經從串行數據輸入信號轉換為並行數據輸出。真值表和后面的波形顯示邏輯“1”從左到右通過寄存器的傳播如下。


請注意,在第四個時鍾脈沖結束后,數據(0-0-0-1)的4位數據被存儲在寄存器中,並且只要寄存器的時鍾停止,就會保持在那里。實際上,寄存器的輸入數據可以由邏輯“1”和“0”的各種組合組成。通常可用的SIPO IC包括標准的8位74LS164或74LS594。
4、Serial-in to Serial-out (SISO) Shift Register
這個移位寄存器與上面的SIPO非常相似,除了在從輸出QA到QD以並行形式直接讀取數據之前,這次允許數據直接通過寄存器流出另一端。 由於只有一個輸出,所以DATA以串行模式一次一位地移出移位寄存器,因此名稱串行輸入到串行輸出移位寄存器或SISO。
SISO移位寄存器是四種配置中最簡單的一種,因為它只有三個連接,串行輸入(SI)決定什么進入左手觸發器,串行輸出(SO)取自輸出 右手觸發器和排序時鍾信號(Clk)。 下面的邏輯電路圖顯示了一個通用串行輸入移位寄存器。

如果輸出數據與輸入數據完全相同,您可能會想到SISO移位寄存器的意義。那么這種類型的移位寄存器也可以作為臨時存儲設備,或者它可以作為數據的時間延遲設備,時間延遲量由寄存器中的級數,4,8,16等等來控制,或者通過改變時鍾脈沖的應用。通常可用的IC包括74HC595 8位串行輸入到串行輸出移位寄存器,均帶有3態輸出。
5、Parallel-in to Serial-out (PISO) Shift Register
並行輸入到輸出移位寄存器的作用與上面的串行輸入並行輸出相反。數據以所有數據位同時進入其輸入的並行格式加載到寄存器,寄存器的並行輸入引腳PA到PD。數據然后以正常右移模式從表示存在於PA處的數據的Q寄存器順序地讀出到PD。
該數據在每個時鍾周期以串行格式一次輸出一位。需要注意的是,使用這種類型的數據寄存器,不需要時鍾脈沖來並行加載已經存在的寄存器,但是需要四個時鍾脈沖來卸載數據。

由於這種類型的移位寄存器將諸如8位數據字的並行數據轉換成串行格式,所以它可以用來將許多不同的輸入線多路復用成單個串行數據流,該串行數據流可以直接發送到計算機或通過通信線路。通常可用的IC包括74HC166 8位並行/串行輸出移位寄存器。
6、Parallel-in to Parallel-out (PIPO) Shift Register
最后的操作模式是並行輸入到並行輸出移位寄存器。這種類型的移位寄存器還可以用作臨時存儲設備或類似於上述SISO配置的時間延遲設備。數據以並行格式呈現給並行輸入引腳PA至PD,然后通過相同的時鍾脈沖直接一起傳輸至各自的輸出引腳QA至QA。然后一個時鍾脈沖加載和卸載寄存器。下面顯示了這種並行加載和卸載的安排。

PIPO移位寄存器是四種配置中最簡單的,因為它只有三個連接,並行輸入(PI)決定了什么進入觸發器,並行輸出(PO)和排序時鍾信號(Clk)。
與串入輸出移位寄存器類似,這種類型的寄存器也可以作為臨時存儲設備或時間延遲設備,延時量隨時鍾脈沖的頻率而變化。而且,在這種類型的寄存器中,由於不需要串行移位數據,所以在各個觸發器之間不存在互連。
7、Universal Shift Register(通用移位寄存器)
如今,有許多高速雙向“通用”型移位寄存器可供選擇,如TTL 74LS194,74LS195或CMOS 4035,可作為4位多功能設備使用,可用於串行到串行,左移,右移,串行 - 並行,並行 - 串行或並行 - 並行多功能數據寄存器,因此稱為“通用”。
這些通用移位寄存器可以執行並行和串行輸入的任意組合來輸出操作,但需要額外的輸入來指定所需的功能以及預加載和重置設備。一個常用的通用移位寄存器是TTL 74LS194,如下所示。

通用移位寄存器是非常有用的數字設備。它們可以配置為響應需要某種形式的臨時存儲器存儲的操作,或者用於延遲諸如SISO或PIPO配置模式的信息,或者以串行或並行格式從一個點傳輸數據到另一個點。通用移位寄存器在算術運算中經常被用來將數據向左或向右移位以進行乘法或除法運算。
8、Shift Register Tutorial Summary
然后總結一下關於移位寄存器
(1)一個簡單的移位寄存器可以僅使用D型觸發器,每個數據位使用一個觸發器。
(2)每個觸發器的輸出連接到右側觸發器的D輸入端。
(3)移位寄存器將數據保存在每個時鍾脈沖中被移動或“移位”到其所需位置的存儲器中。
(4)每個時鍾脈沖將寄存器的內容向左或向右移位一位。
(5)數據位可以以串行輸入(SI)配置一次加載一位,或者以並行配置(PI)同時加載。
(6)對於串行輸出(SO),可以一次一位地從寄存器中刪除數據,或者從並行輸出(PO)同時刪除全部數據。
(7)移位寄存器的一個應用是在串行和並行之間或並行到串行之間的數據轉換。
(8)移位寄存器分別被識別為SIPO,SISO,PISO,PIPO,或者作為通用移位寄存器,將所有功能組合在單個設備中。

