桶形移位器

桶式移位器是一種組合邏輯電路,通常作為微處理器CPU的一部分。它具有n個數據輸入和n個數據輸出,以及指定如何移動數據的控制輸入,指定移位方向、移位類型(循環、算術還是邏輯移位)及移動的位數等等。

基本介紹

  • 中文名:桶形移位器
  • 外文名:Barrel shifter
設計任務,設計思路,具體電路設計,

設計任務

設計一個簡單16位桶式移位器,只能向左循環移位,所以控制輸入僅需指明移動的位數。
系統框圖為
例如,已知16個數據輸入及左移位數S=0101(5位)則16個數據輸出分別為

設計思路

從上面的例子可以看出,對單個輸出DOUT[15]來說,當輸入S=0000(左移0位)時,DOUT[15]= DIN[15];若S=0001(左移1位),則DOUT[15]= DIN[14];以此類推。可以看出,輸出DOUT[15]的值在16個輸入中選擇一個,具體選哪一個由輸入S決定。可以使用一個十六選一的多路復用器,以完成該功能。有下面的電路框圖:
同樣,對輸出DOUT[14],也可以使用一個十六選一的多路復用器實現。只是當輸入S=0000(左移0位)時,DOUT[14]= DIN[14];若S=0001,則DOUT[14]= DIN[13];以此類推,而S=1111,則DOUT[14]= DIN[15]。所以在輸入的具體連線時,要保證上述功能實現,DIN的連線順序略有變化。
同理可知,每一位輸出要使用一個十六選一的多路復用器,整個電路需要16個。整個電路框圖位:由上圖也可以看出,循環左移位是通過不同多路復用器的輸入端的連線實現,每個十六選一的多路復用器,其十六個輸入根據移位的方向設定。
問題:1、假設要實現的功能變為循環右移位,電路應如何變化?
2、若將循環左移位變為邏輯左移位,又該如何變化?
3、如果有一個控制端M,控制是循環左移還是右移,電路中又該增加什麼?

具體電路設計

利用MSI器件實現電路。
對每個十六選一的多路復用器,可以用2片74X151實現。擴展方法類似圖5-66。四位選擇端中的低三位S[2..0]連至C、B、A,最高位S[3]作為片選,為0時選上面的晶片,為1時選下面的。因為74X151的使能端EN低電平有效,所以連線時S[3]直接接上面晶片的EN端,取非後接下面晶片。對一位輸出,具體電路圖為:
可簡化畫為:總的實現電路圖為
討論1)所需晶片:74X151 16′2=32片;
74X00(與非門) 16/4=4片;
74X04(非門) 1/6片;(每片上有6個門)
前面的設計方案,每一位輸出可以根據輸入S,選擇一次移位0~15位。其實,移位可以分幾步移,比如S=0101,則可以先移1位,再移4位,表示在電路上,就是串聯結構。移位位數:S=(S3S2S1S0)2=(8′S3+4′S2+2′S1+1′S0)10,其中SI有0和1兩種取值,若SI=0,不移位,SI=1,移位1,2,4或8,具體數由I的值決定。可以選擇74X157實現,兩輸入多路復用器。具體電路如下:
其中,中間信號X、Y、Z為由S0、S1、S2決定的移位結果。比如S=1101,則輸入DIN左移位1位送入X,X左移位0位送入Y,Y左移位4位送入Z,Z左移位8位送入DOUT,從輸入到輸出一共移位1+4+8=13位。
同樣地,如果將移位位數S表示為:
S=(S3S2S1S0)2=(8′S3+4′S2+2′S1+1′S0)10=((2′S3+1′S2)′4+(2′S1+1′S0))10,分兩級結構,S3S2決定移動0位、4位、8位或12位,再由S1S0決定移動0位、1位、2位或3位,用四選一得多路復用器74X153實現,移動可以通過輸入在多路復用器的輸入端的連線實現,連線示意圖如下。

相關詞條

熱門詞條

聯絡我們