桶式移位器

桶式移位器桶式移位器(barrel shifter)是一种数字电路,可以在一个时钟频率周期内,将数据字进行特定比特数的移位 。桶式移位器可以用一串的数据选择器实现,某一个数据选择器的输出是其他数据选择器的输入,其关係则视要位移的比特数而定 。
例如,以一个四比特的桶式移位器为例,一开始的输入是A, B, C及D,桶式移位器可以由输入ABCD得到DABCCDABBCDA,所有比特的信息都会留下来,只是位置以循环组合的方式改变,桶式移位器有许多不同的套用,是微处理器中的一个重要成分 。
基本介绍中文名:桶式移位器
外文名: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位 —
桶式移位器

文章插图
桶式移位器

文章插图
8位 —在FO4中,关键路径的成本为(预估,不考虑线路延迟):32位:从18 FO4到14 FO4
用途桶式移位器常用的场合是用硬体实现浮点数运算时,若要进行浮点的加法或减法,两个数字的有效位数需要对齐,也就是将较小的数字往右移,增加其次幂,直到两个数字的次幂相等为止,实际作法是将二数的次幂相减,再利用桶式移位器右位移较小的数字,位移比特数即为二数的次幂的差 。若不是用桶式移位器,而是一般较简单的移位器,位移n比特需要n个时钟频率周期 。相关条目环式移位
用途桶形移位器的常见用法是浮点运算的硬体实现 。对于浮点加法或减法运算,两个数字的有效数必须对齐,这需要将较小的数字向右移动,增加其指数,直到它与较大数字的指数匹配 。这是通过减去指数并使用桶形移位器在一个周期内将较小的数字向右移动差值来完成的 。如果使用简单的移位器,则移位n位位置将需要n个时钟周期 。