-
桶式移位器
鎖定
桶式移位器(barrel shifter)是一種數字電路,可以在一個時鐘頻率週期內,將數據字進行特定比特數的移位。桶式移位器可以用一串的數據選擇器實現,某一個數據選擇器的輸出是其他數據選擇器的輸入,其關係則視要位移的比特數而定。
例如,以一個四比特的桶式移位器為例,一開始的輸入是A, B, C及D,桶式移位器可以由輸入ABCD得到DABC、CDAB或BCDA,所有比特的信息都會留下來,只是位置以循環組合的方式改變,桶式移位器有許多不同的應用,是微處理器中的一個重要成分。
- 中文名
- 桶式移位器
- 外文名
- barrel shifter
桶式移位器實現
桶式移位器可以用平行的2×1數據選擇器的組合而成。對於8位的桶式移位器,需要二箇中間的信號,分別表示位移四比特、二比特或是不位移,這是依S[2]和S[1]的值而定,信號會再經過數據選擇器位移一比特,這是由S[0]控制。
int1 = IN , if S[2] == 0 = IN << 4, if S[2] == 1 int2 = int1 , if S[1] == 0 = int1 << 2, if S[1] == 1 OUT = int2 , if S[0] == 0 = int2 << 1, if S[0] == 1
桶式移位器成本
n比特數據的桶式移位器,需要的數據選擇器數量為
。以下列出五種常見的數據字寬度及其桶式移位器需要的數據選擇器數量:
128位 —
64位 —
32位 —
16位 —
在FO4中,關鍵路徑的成本為(預估,不考慮線路延遲):
- 32位:從18 FO4到14 FO4
桶式移位器用途
桶式移位器常用的場合是用硬件實現浮點數運算時,若要進行浮點的加法或減法,兩個數字的有效位數需要對齊,也就是將較小的數字往右移,增加其次冪,直到兩個數字的次冪相等為止,實際作法是將二數的次冪相減,再利用桶式移位器右位移較小的數字,位移比特數即為二數的次冪的差。若不是用桶式移位器,而是一般較簡單的移位器,位移n比特需要n個時鐘頻率週期
[1]
。
桶式移位器相關條目
- 環式移位
桶式移位器用途
桶形移位器的常見用法是浮點運算的硬件實現。 對於浮點加法或減法運算,兩個數字的有效數必須對齊,這需要將較小的數字向右移動,增加其指數,直到它與較大數字的指數匹配。 這是通過減去指數並使用桶形移位器在一個週期內將較小的數字向右移動差值來完成的。 如果使用簡單的移位器,則移位n位位置將需要n個時鐘週期。