移位暫存器(shift register)具有串列輸入並列輸出的功能,  意即輸入一串列資料, 會轉成同時輸出的並列資料, 若以8位元移位串暫存器為例, 則一次轉換可輸出8位元的資料.

8bit移位暫存器74HC164為14PIN IC, 有兩個Data輸入腳分別為A與B, 8個輸出腳Q0-Q7, 1個時脈輸入腳CP, 及1個清除腳MR.

資料輸入腳A/B: 當輸入腳位A或B為L狀態時, Q0輸出都為L, 當輸入腳位A與B都為H時, Q0才會輸出H.

資料輸出腳Q0-Q7: Q0輸出是依據 Data A/B而有變化, Q1-Q7則時分別由上一位Q0-Q6傳遞過來.

時脈腳CP: 當Clock訊號由L->H時會觸發一次位移.

資料清除重置腳位/MR: 該腳位為低位元(LOW)有效, 當觸發訊號為L時, 則會清除輸入與輸出腳位成LOW.

 

我們可以從邏輯方塊圖看出A/B輸入腳是經過一個及閘才傳入,它的輸出順序分別從Q0-Q7

 

若輸入資料為01010101,每經過1個Clock會右移一次, 則經過8個Clock後,則Q0-Q7分別輸出為0 1 0 1 0 1 0 1.

從時序圖可以看出訊號變化

 

何時會使用到移位暫存器?

當需要大量控制I/O PIN輸出時, 因MCU本身I/O數量有限, 且不可能整顆IC就只控制顯示, 那I/O腳位可能就會不夠使用.

 

以控制LED矩陣為例

若要控制8*8矩陣, 則需要8+8=16條資料線.

若要控制8*8*4矩陣, 則需要16+16=32條資料線.

由此來看,若顯示的數量越多, 所需的資料線也會很可觀, 因此才需要簡化的方法

當控制16*16矩陣時.

若直接連接則需32條線

若以3對8解碼器(74LS138)來控制, 則需要4顆IC及24條線(3條控制線*4+3條資料輸入線*4)

若以移位暫存器(74LS164)來控制, 則需4顆IC及5條線(列=1條資料線+1條時脈線+1條清除線,行=1條資料線,1條清除線)

除了成本考量, 由於是使用串列輸出,也需考慮MCU的時脈輸出的速度能否達到需求.

 

生活舉例

假設在平衡板上放了4個蓄水桶, 閘門上方有預注水桶, 試著在A與D注滿水,且需保持平衡.

方法1. 使用兩根水管同時給水, 再開啟閘門.

方法2. 使用一根水管先在A注水,再移動到B注水,之後開啟閘門.

 

方法1如同使用兩條資料線

優點:速度快

缺點:水管多,且要有足夠的管線.

 

方法2如同使用一條資料線,再透過移位暫存器(需有人去移動水管), 等到位後才開啟閘門.(線少但成本增加)

優點:水管少

缺點:需增加人力成本及速度慢

 

引用資料

http://www.fairchildsemi.com/datasheets/74/74VHC164.pdf

 

 

arrow
arrow
    全站熱搜

    門外漢 發表在 痞客邦 留言(1) 人氣()