网站搜索:
第10节 移位器
文章出处:与非网
更新于2008-05-16 12:14:40

移位器电路就是根据N比特输入信号和M比特控制信号来产生N比特的输出信号。这里N路输出比特位实际上就是输入信号比特位的移位结果。从左到右移动的比特位数由控制信号产生。比如,如下图第一行所示,8比特移位器可以向左或向右移动1,2或3个比特位。其中控制信号有几个不同的作用:两个比特信号(A1和A2)决定需要移动几个比特位;一个Fill(填充)信号(F)用于决定当由于移动造成比特位空缺时,填充1还是填充0;一个Rotate(旋转)信号(R)用于决定移出的比特位是丢弃还是重新添入空缺比特位中;还有一个方向信号(D=1,向右)用于决定移动的方向。

当比特位向左或向右移动时,一些比特位会移出移位器的一端,而被丢弃了。新的比特位要从相反的方向移入。如果没有Fill输入信号存在,那么将移入0(Fill输入信号的存在定义了移入到空缺比特位中的数是1还是0)。如上图中第二行所示,移位器提供了旋转功能,使之能重新捕获移出的比特位,并将之添入到空缺的比特位中。
根据移位器中移位,旋转,方向,填充以及比特计数的功能,就可以设计出操作不同输入数的各种不同的移位器。比如,设计一个简单的移位器,如右边真值表所示,给出了4比特移位器的输入输出要求。该移位器可以向左或向右移位旋转一个比特。注意,真值表中使用了键值变量来压缩行数。使用“笔-纸”的手工方法或基于计算机的最简化程序,就可以从真值表中找出最简化电路。

在数字电路中,如果一组信号表示二进制数,并在总线上移动数据位(第2位数据右移5次到第7位),或做简单的乘法和除法运算,那么就可以使用移位器。(尤其是为什么要在总线上将数据从一个比特位移动到另一个比特位,这将在后面章节中讨论)移位电路可以简单的右移1,2或3个比特来表示乘以2,4或8(同样的,通过左移1,2,或3个比特来表示除以2,4,或8)
如下图所示的VHDL设计,是一个简单的8比特移位器,并可以向坐或向右旋转移动一位。在这个例子中使用了条件赋值语句(该语句只在结构体中使用)。条件赋值语句使用“when/else关键词来分开各分支信号赋值。当在描述复杂组合逻辑电路的时候,条件赋值表达式就非常有用。事实上,这里使用的条件赋值表达式和前面使用的selected赋值表达式在描述通用组合电路时,都是非常有用的VHDL表达式。
注意,在第一次条件赋值表达式操作中,将整个的“din总线都赋给了“dout总线-这在操作总线数据元素的时候非常有用。一般情况下,只有一样大小的总线才能相互赋值。也要注意,这里使用了位与符号(&)来完成旋转和‘0‘位填充的操作。
 
 
 


关于OpenHW | OpenHW使用说明 | FAQ | 相关法律 | 版权声明 | 网站地图
联系邮件:xiaoquan@eefocus.com  联系电话: 010-58859035-8012
Powered by eefocus.com