數位電路設計_蕭宇宏_暫存器及其應用_並入串出移位暫存器

. DeltaMOOCx
50粉絲
2023年12月3日
DeltaMOOCx 台達磨課師是大學及高中/高工的免費公益磨課師(MOOCs)平臺。練習題、討論、教師輔導及更多數位課程資源,請至https://univ.deltamoocx.net 註冊。本影片採用「創用CC-姓名標示-非商業性-禁止改作4.0」臺灣授權條款,相關授權作業依「創用CC-姓名標示-非商業性-禁止改作4.0」規範辦理。
各位同學好,在這個小單元呢,要爲同學再介紹另一種移位暫存器,就是併入串出移位暫存器。
那麼這個併入串出移位暫存器,到底跟之前的移位暫存器又有什麼不一樣的地方呢?我們趕緊來看看。
併入串出移位暫存器,英文是parallel in serial out shift register,它有四個輸入信號,
第一個輸入是M個位元的並列輸入信號,縮寫成PI,還有很重要的時鐘脈衝信號,
還有清除位元,最後一個是載入位元,這個載入位元呢,在之後會更詳細的介紹。
再來看到的是輸出,它是單一的位元輸出,也就是串列輸出SO,同樣的可以用方塊圖來表示,
可以看到的是併入串出移位暫存器輸入信號,PI這個是比較特別的地方,是M個位元的輸入,
所以要用這個標記很清楚的把它呈現出來。
另外還有上面的這個load的載入位元,也是跟之前不一樣的地方。
那它的輸出呢,是串列輸出,所以是標記一個位元。
那接下來要看到的是它的暫存器的架構了。
併入串出移位暫存器的架構,我們用四個位元來做例子。
一開始呢,先放入第一個正反器。
特別注意到,由於併入串出移位暫存器的輸入會有兩種選擇,
它有可能會是由並列輸入的部分送入正反器當中,或是由移位的方式來更新它的值。
所以在它的輸入端會加上一個多工器。
這個多工器呢,可以去選擇到底是由並列輸入來送到正反器,
還是由左邊的資料來送入正反器當中。
所以可以看到,接下來的正反器二要如何跟正反器一做連接呢?
就是要透過這個多工器的方式來決定了。
可以看到,它有一個部分的輸入是由PI送入,
另一個部分是由正反器一的輸出來決定的。
同樣的道理,正反器三也是一樣的架構,正反器四也是一樣。
都有兩種選擇,一個部分是並列輸入的部分,
另一個部分是由左邊的正反器的輸出送入的。
那它的輸出信號就是SO,直接就是正反器四的結果了。
不過剛纔提到的這個多工器必須要有選擇信號線,
所以在這裏可以看到load這個載入位元扮演的角色就是這個選擇信號線了。
它會去選擇多工器到底是由並列輸入送入正反器當中,
還是由左邊的正反器的輸出送入。
最後不要忘記了,清除位元還是要把它接入到正反器的部分。
那麼接下來用細部的動作讓同學瞭解併入串出一位暫存器到底是如何運作的。
一開始只要是clear這個清除位元是爲0的話,
就會將所有正反器都清除爲0,
所以此時的SO就會是以0的方式來呈現的。
接下來討論的情況是假設清除位元爲1的時候,
接着要討論到了這個load載入位元,
當load載入位元爲1的時候呢,
證源到達時正反器就會經由並列輸入端將資料寫入到所有正反器裏面,
所以從這裏的箭號表示就可以看出它的動作行爲了。
再來看到的就是假設clear的信號1可是此時load爲0的話,
又有什麼樣的行爲呢?
當證源到達時正反器的值就會由左邊的正反器輸出來決定的,
所以從這裏紅色的箭號就可以看出它的動作了。
不過特別注意到最左邊正反器1因爲左邊已經沒有正反器進來,
所以它的輸入一律用補0的方式來呈現。
爲了讓同學清楚地瞭解併入串出一位暫存器的動作,
同樣利用時序圖清楚地去看到每一個正反器的行爲。
一開始也是透過一個時鐘脈衝來做觸發,
假設一開始clear信號爲0之後都維持爲1,
這是一個載入位元load的信號。
那麼看到來這裏是並列輸入的部分,
因爲它是一個多位元的表示,
所以在這裏用二位元的方式來表示它的值。
那麼可以看到在最左邊的位元是代表正反器1,
之後正反器2,正反器3,到最後的位元是正反器4,
來表示它要送入到相對應的正反器。
那麼首先看到的是正反器1,
一開始clear信號爲0,所以正反器1的值會爲0。
當clear信號爲1第一個陣元發生的時候,
此時load信號爲1,所以特別注意到剛纔看到的架構,
它是會經由並列輸入端將資料寫入到正反器當中。
所以此時對應到的值是1,正反器的值就會更新爲1了。
那麼之後load的信號爲0了,
clark陣元發生的時候就會將左邊的輸入信號接進來,
但是因爲正反器左邊已經沒有其他正反器,
所以一律以補0的方式來呈現,
所以後面的這些部分都是以補0的方式來表示它的結果,
直到接下來的這個陣元,因爲load的信號又再度爲1了,
此時就會將並列輸入值更新到正反器1,
所以正反器1就會變成1了,之後補0,
這個就是正反器1呈現出來的結果了。
再來看到的是正反器2,一開始clear所以清除爲0,
直到clear信號爲1,陣元發生時它會開始改變它的值,
此時的load爲1,所以陣元發生時是會將並列輸入的值更新過來,
所以這裏可以看到是以0的方式更新過來,
那在接下來load變成0了,所以陣元發生的時候
會由陣元發生之前正反器1的值來更新到正反器2,
就跟之前的串入串出串入並出的概念是一樣的,
所以後面都是用類似的方式來進行,直到load信號又爲1了,
又會再次的將並列輸入信號載入。
再來看到的是正反器3的結果,都很類似,一開始清除,
當clear爲1,load爲1的時候正反器發生,
就會將並列輸入資料載入到正反器3,
之後的信號load爲0的話,陣元發生的時候會由
陣元來臨之前正反器2的值來決定,
所以以此可以類推後面的信號,
但是直到load信號又爲1了,
所以又會將並列輸入的資料更新到正反器3。
再來看到的是最後正反器4的部分,同時也是SO,
都是類似的方法,一開始被清除爲0,
然後clear信號爲1,load爲1,
所以會將並列輸入的資料對應的值把它寫入到正反器4裏面。
那之後的信號就是在陣元來臨之前正反器3的結果來做更新了,
直到load信號又再度爲1,纔會將並列輸入的值做更新到正反器4。
那麼這樣就完成了併入串出一位暫存器的時序圖了。
在最後呢,同樣要讓同學瞭解,
併入串出一位暫存器的應用可以是什麼樣的。
用簡單的例子來做介紹,
假設有一個A模組,它的輸出是並列輸出4個位元,
它要與另一個模組B模組,但是輸入信號卻是一個位元的模組相連接的話,
可以怎麼連接呢?
就可以透過併入串出一位暫存器來完成了。
那麼可以透過這個load的信號,
當A模組產生出4個位元的資料之後,
就可以用load來並列載入到一位暫存器,
然後再經過每一個時鐘脈衝送到B模組當中,
就可以完成這樣子的一個連接動作了。
當然,它的電路要設計完成還需要一些控制信號以及控制電路,
那個會是在我們後面的章節纔會做介紹了。
各位同學,在這個小單元呢,
爲同學介紹了併入串出一位暫存器的架構,
並且透過了時序圖清楚地展現出它的細部。
希望同學能夠清楚地瞭解。
