移位暫存器(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
留言列表