ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

桶形移位器(个人学习参考)

2022-01-14 20:03:12  阅读:240  来源: 互联网

标签:符号 参考 学习 输入 逻辑移位 data 移位 out


BP算法的FPGA需要浮点数运算,所以学习了一下桶形移位器

桶形移位器的使用

桶形移位器的常见用法是浮点运算的硬件实现。对于浮点加或减法操作时,有效数的两个数的必须对准,这需要移动所述较小数到右边,增加其指数,直到它的较大数目的指数相匹配。这是通过减去指数并使用桶形移位器在一个周期内将较小的数字向右移动差值来完成的。如果使用简单的移位器,则移位n位位置将需要n个时钟周期。


桶形移位器是一个数字电路,可以移位一个数据字由指定数量的位,而无需使用任何的时序逻辑,只有纯组合逻辑,即,它固有地提供一个二进制运算。但是,从理论上讲,它也可以用于执行一元运算,例如在固定数量(例如地址生成单元)受固定数量限制的情况下进行逻辑左移。实现桶形移位器的一种方法是作为多路复用器序列其中一个多路复用器的输出以取决于移位距离的方式连接到下一个多路复用器的输入。桶形移位器通常用于在现代微处理器中移位和旋转n位,通常在单个时钟周期内进行


使用一个四位的桶形移位器,其输入为A、B、C和D。移位器可以将ABCD位的顺序循环为DABC、CDAB或BCDA。在这种情况下,不会丢失任何位。也就是说,它可以将所有输出右移三个位置(因此可以进行A、B、C和D的任何循环组合)。桶形移位器具有多种应用,包括作为微处理器中的有用组件


例如设计一个8位桶形移位器:8位桶形移位器是有8个数据输入位,8个数据输出位和3个控制输入位的组合逻辑电路,其输出字等于输入字的循环移位,循环移位的次数由控制输入位指定。代码如下
module barrel_shifter(data,num,out);
input [7:0] data;
input [2:0] num;
output [7:0] out;
reg [7:0] out
    always @(*) begin
case(num)
   3'b000:out=data;
   3'b001:out={data[6:0],data[7]};
   3'b010:out={data[5:0],data[7:6]};
   3'b011:out={data[4:0],data[7:5]};
   3'b100:out={data[3:0],data[7:4]};
   3'b101:out={data[2:0],data[7:3]};
   3'b110:out={data[1:0],data[7:2]};
   3'b111:out={data[0],data[7:1]};
endcase
end
endmodule

以上都是逻辑运算的桶形移位器,如果是算数的请注意补充符号

知识点补充:

算术移位和逻辑移位运算

  1. 逻辑移位

    对于逻辑移位,就是不考虑符号位,移位的结果只是数据所有的位数进行移位。根据移位操作的目的,左移时,低位补0,右移时,高位补0;

例:
01010101>>3=00001010
01101011<<3=01011000
Q1:此时是不是就有一个问题,不考虑符号位,如果一个负数,逻辑右移,结果就会变成正数,例如
10000101=-5>>1=01000010=66
的确是的,因为这是逻辑运算的特点,算术移位运算才会考虑符号位!
Q2:如果一个有符号数,逻辑左移,导致符号位变化,此时也算逻辑运算的特点吗?
例如:10000001=-1<<1=00000010=2;
这里只是溢出,并不算特点,类型溢出在算术移位中也存在!
  1. 算术移位

    算术是带有符号的数据,所以我们不能直接移动所有的位数,这可能会使得符号不正确。


其它参考原码 反码 补码的其它知识,FPGA中有符号位,就是它的最高位,扩展的时候需要填充的是符号位

标签:符号,参考,学习,输入,逻辑移位,data,移位,out
来源: https://www.cnblogs.com/doincli/p/15803313.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有