网站搜索:
第3节 比较器
文章出处:与非网
更新于2008-05-16 12:17:57

            一个规模比较器就是这样的器件:接收两组N比特输入,并根据其中一组是否大于、小于或等于另一组来给出三种可能的输出(更简化的比较器,也称为均衡比较器,它只根据两组输入是否相等来给出一个输出)。比较器可以很容易的用VHDL描述出来,但是使用结构性或原理图的方法就很难设计了。实际上,比较器设计是一个很好的例子来显示行为设计的强有力特性,以及结构性设计的糟糕特性。
在行为性VHDL中使用大于和小于操作符(>和<)来描述比较器,如下面代码所示。注意,对于输出端口信号GT和LT,在端口表达式中使用了“inout模式。当有输出端口信号使用在了结构体内赋值表达式的右侧时,那么该输出信号必须使用inout模式。在样例的倒数第二行,GT和LT输出信号在赋值操作符的右边并产生输出EQ,因此,对于EQ赋值表达式来说,GT和LT是输入信号。如果GT和LT只是简单的申明为“out模式,VHDL分析器将会产生一个错误。 
            使用比特分段方法的结构性比较器设计是最脆弱的。考虑一个8比特规模的比较器电路,使用两组8比特操作数来产生GT,LT和EQ。在先面的示例中,如果A=159且B=155出现在比较器上,那么将会GT输出有效,而LT和EQ输出无效。操作数比特中,除了比特2位外,其余比特位都是相等的。奇妙的是,比特2位上的不相等影响了整个电路的输出,驱动GT到1,驱动LT和EQ到0。任何比特位都可以不相等,且任何比特分段模型必须可以作用在任何比特位位置。 
            很明显,只使用两组数据比特作为输入,比特分段设计不可能各自独立的工作。每一个比特段设计必须从相临的比特分段中获得信息。在这个例子中,每个比较器比特分段不仅从两组操作数输入比特位获得信息,还从邻近低位的GT,LT和EQ获得信息。在该例中比特3位单独来看会使EQ有效,但是在比特2位上的不相等会强制比特3位使GT有效,而LT和EQ无效。实际上,操作数上的每一组相等的位,其输出都是由邻近的比特位带来的输入所决定的。


            一个比特分段规模的比较器电路必须有五个输入和三个输出,如真值表中所示。对于任何组合逻辑设计,真值表可以完整的描述出符合要求的比较器比特分段行为特性。一般来说,具有五个输入的真值表需要32行。右边的8行真值表是正确的,因为某些输入组合逻辑是不可能的(比如从邻近比特位过来的输入是互斥的),还有有些不起实质作用(比如,如果当前操作数输入表示A>B,那么邻近的比特位是无关的)。你最好自己再仔细的分析该真值表,并能够理解和确定它所包含的信息。 
            通过真值表,使用笔纸的手工方法或是基于计算机的方法就可以找出最简化的比特分段比较器电路。使用任意一种方式,都可以设计出如下图所示的比特分段电路。如图所示,一旦设计完成,就可以在N比特比较器中使用比特分段电路。注意,对于N比特比较器,最低位的比特位是没有邻近比特位的-那些不存在的比特位可以认为是相等的。同时也要注意,整个比较器的输出来自于最高位比特位的输出。在本章节相应的练习和实验中,你需要利用比较器比特分段设计方法为一个8比特比较器设计其电路。

 

<<上一节    下一节>>



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