数据饱和管理器及相应方法 【相关申请的交叉引用】
本申请要求2003年2月26日在韩国知识产权局提交的韩国专利申请第2003-12042号的优先权,上述申请全部引用于此作为参考。
【技术领域】
本发明涉及一种数据饱和管理器及响应方法。
背景技术
数据饱和管理已经被广泛地应用于界定信号处理系统的复杂操作结果,如可能产生超过可以表示的量值的中间或最终计算结果的能量计算或相干累加(coherent accumulation)的结果。例如,一个16位的信号处理器可以表示在从0到65535(无符号的)或从-32768到32767(有符号的)的范围内的结果。因此,小于-32768或大于32767的16位信号处理器的操作结果就不能被表示。
当一个操作结果(还是假定一个16位的信号处理器)没有落到从十六进制0x8000(十进制-32768)到十六进制0x7FFF(十进制32767)的范围内时,饱和管理装置通知用户,和/或将超出范围的结果截断到该范围的最大值(32767)或最小值(-32768)。随后的基于超出范围的或截断的结果的计算将变得不可靠。
超出范围的操作结果通常被称为溢出发生。截断该超出范围的结果到最大值或最小值的方法通常被称为饱和管理方法。
图1说明根据背景技术的用于解释16位数据地饱和管理的表。在图1中,X是操作结果而Y是输出。当X大于最大值32767时,Y就被截断到32767。当X小于最小值-32768时,Y就被截断到-32768。当X落到范围从-32768到32767时,Y就等于X。
在多数情况下,这样的饱和管理是使用程序来执行的,而且程序的执行延续几个耗时循环。
如果这样的饱和管理是通过硬件实现的,则需要大型的设计规模(layoutsize)。另外,当该用户定义一个可以被表示的特定的范围时,这个特定的范围是被固定在硬件中的,即使在应用程序要求改变该范围或者用户希望改变该范围的时候,这也防止了用户改变这个可被表示的范围。
图2根据背景技术说明了用于实现饱和管理的软件代码的例子。这个实现功能(implementation function)是图1中的饱和管理的常见形式,即:如果X大于一个上界,Y被截断至该上界;如果X小于一个下界,Y被截断至该下界;如果X落到上界和下界之间的范围,Y等于X。图2的饱和管理的例子需要大约4-5个处理器周期来完成运行。在诸如全球移动通信系统(UMTS)的移动通信系统中,饱和管理常常在相干累加或非相干累加期间来执行。通常,饱和管理所需的这些少数的周期对移动通信系统几乎没有负面的影响,但是当其它的应用程序(代表其它的计算负载)被加到这个移动通信系统上时,这可能会变成这个移动通信系统上的显著的计算负担。
图3是根据在图2中通过硬件实现常见功能的背景技术,说明了饱和管理装置300的方框图。
饱和管理装置300包括:2的补码(2’s complement)计算器310、减法器320、比较器330和340、和一个选择单元(或多路复用器,以后称为MUX)350。
边界值BV代表数字信号DATA能够正确表示的最大值。边界值BV可以由用户设定。数据信号DATA是一些数据处理操作(未示出)的结果。边界值BV被施加到二进制补码计算器310和减法器320(减法器从BV减1)。
例如,如果边界值数据BV是28,数字信号DATA的有效值范围是从-27到27-1。当数据溢出发生时,输出信号SATRST被截断为数值-27或27-1。更详细的说,比较器330将数据信号DATA与从减法器320输出的差值27-1进行比较。比较器340将数据信号DATA与从2的补码运算器310输出的最小值-27进行比较。MUX 350根据比较器330和340的输出,来输出数据信号DATA、最小值-27和最大值27-1中的一个。
饱和管理装置300只需要3个时钟周期,但是有效数据信号DATA的范围被特定数值,也就是-27和27-1所固定。可以提供允许数据信号DATA的有效范围动态改变的电路,但是这样增加了饱和管理装置300的脚印(footprint)。
【发明内容】
本发明的实施例提供了一种管理数据饱和的装置或者(换句话说)一种数据饱和管理器。这样的装置可以通过简单的电路配置来实现,并且可以允许用户动态设定操作结果的有效范围。
本发明的实施例还提供了一种管理数据饱和的方法,该方法可以通过上述的数据饱和管理器来实现。
【附图说明】
本发明的上述和其它方面和优点将会通过参考附图来详细的描述其示例性的实施例而变得更加清楚,其中:
图1是根据背景技术用于解释在16位数据中的饱和管理的表;
图2是根据背景技术的实现饱和管理的软件的例子;
图3是根据背景技术的说明饱和管理器的方框图;
图4是根据本发明的实施例的说明饱和管理器的方框图;
图5是根据本发明的实施例的更详细地说明图4中的有效位决定单元的电路图;
图6是根据本发明的实施例的示例性执行,用于解释数据饱和的确定的表;
图7是依据本发明的实施例的更详细地说明图4中的饱和检测单元的例子的方框图;
图8是根据本发明的实施例的更详细地说明图4中的界限生成单元的例子的方框图;
图9是根据本发明的实施例的用于解释选择单元的操作的表;
图10A表示在图3中的背景技术的饱和管理装置的操作速度的测试结果;
图10B表示对根据本发明的实施例的管理饱和的装置的示例性实现的操作速度的测试结果;以及
图11是根据本发明的实施例的描述管理饱和的方法的流程图。
【具体实施方式】
本发明将会通过参照附图来更加完整的加以描述。如果可能,则相同的参考标记被用来表示在附图中的相同的元件。
图4是根据本发明的实施例的说明管理饱和的装置400的方框图。
饱和管理器400包括:有效位决定单元410、饱和检测单元420、界限产生单元430、和选择单元440。
响应于边界值BV,有效位决定单元410产生边界值数据BVD,其表示在数据信号DATA中的有效的位。数据BVD可以被用来确定数据信号DATA是否饱和。
可以使用比相应于处理器(未示出)的数据总线更少的位数表示边界值BV,所述处理器中包含了饱和管理器400。如果包含了饱和管理器400的处理器包括K位的数据总线,并且边界值BV被表示为2A,有效位的数目对应于数据BVD的高(K-A)位。
如果有效位BV被定义为2A,有效位决定单元410使用第一逻辑值表示边界值数据BVD的有效位,并且使用第二逻辑值表示边界值数据BVD的其它位。
饱和检测单元420接收数据信号DATA,响应于边界值数据BVD确定数据信号DATA是否饱和,并且将结果作为检测信号SATDET输出。
更详细地说,饱和检测单元420通过提取和评估数据信号DATA的与边界值数据BVD的有效位相对应的高位来确定数据信号DATA是否饱和。
当数据信号DATA的最高有效位(MSB)被设置为该第一逻辑值的时候,如果相应于边界值数据BVD的有效值的数据位中的至少一位被设置为第二逻辑值,可以确定该数据信号是饱和的。当数据信号DATA的最高有效位MSB被设置成第二逻辑值的时候,如果相应于边界值数据BVD的有效值的数据位中的至少一位被设置为第一逻辑值,可以确定该数据信号是饱和的。
如果数据信号DATA是饱和的,那么饱和检测单元420将检测信号SATDET设置为第一逻辑值。如果数据信号DATA没有饱和,那么检测信号SATDET被设置为第二逻辑值。
界限产生单元430响应于边界值数据BVD输出最大界限UPLIMIT和最小界限LOLIMIT。最大界限UPLIMIT是边界值数据BVD的反向的复制(copy)。最小界限LOLIMIT等于边界值数据BVD。
选择单元440响应于数据信号DATA和检测信号SATDET,输出数据信号DATA、最大界限UPLIMIT、最小界限LOLIMIT中的一个。更详细地说,如果数据信号DATA的MSB被设置成第一逻辑值并且检测信号SATDET被设置成第一逻辑值,选择单元440通过选择最小界限值LOLIMIT截断它的输出。如果数据信号DATA的MSB被设置成第二逻辑值并且检测信号SATDET被设置成第一逻辑值,选择单元440通过选择最大界限值UPLIMIT截断它的输出。如果检测信号SATDET被设置成第二逻辑值,那么选择单元440输出数据信号DATA。
图11是根据本发明的实施例的描述管理饱和的方法的流程图100。
流程图1100描述的方法对应图4的饱和管理器400的操作。因此,饱和管理器400的操作将通过参考图11的步骤S1110-S1140进行描述。
在第一步骤1110,响应于边界值BV,有效位检测单元410生成边界值数据BVD,该数据被用来确定数据信号DATA是否饱和。
边界值BV是由用户来设定的,然后BV最大界限UPLIMIT和最小界限LOLIMIT就可以被确定。由于最大界限UPLIMIT和最小界限LOLIMIT受限制于包括了饱和管理器400的处理器的数据总线宽度,所以边界值BV未必是无限制的(unlimited)。边界值BV一般会小于(但是可以等于)处理器的数据总线宽度。
例如,如果数据总线的宽度是8位的,并且用户希望将数据信号DATA的有效值范围设置为从-32到31,也就是-25~25-1,则该用户设定边界值BV为32。该数字“32”可以仅用6个二进制位来表述和用像“0010 0000”的8位来表述。
当包含有饱和管理器400的处理器包括K位的数据总线,并且边界值BV被表述为2A时,该有效位相应于边界值数据BVD的高(K-A)位(或者,换句话说,该K-A个最高有效位)。这里的K和A为正整数并且K之A。在上面的例子里,K等于8而A等于5,所以该有效位对应于边界值数据BVD的高3位。
有效位决定单元410输出边界值数据BVD的有效位作为第一逻辑值,并输出边界值数据BVD的其它位作为第二逻辑值。为便于说明,这里以后的第一逻辑数值被假定为“1”而第二逻辑数值被假定为“0”。然而,第一逻辑数值和第二逻辑数值可以被设定为其它数值,例如,前述值的倒值(reverse)。
继续K=8和A=5的例子,有效位决定单元410输出二进制数“1110 0000”作为边界值数据BVD。图5是根据本发明的实施例的更加具体地描述图4的有效位决定单元的例子的电路图。
参照图5,边界值BV是由N位组成并被表述为2A,这里N是一个正整数,N≤K并且N≥A。有效位决定单元410包括从第一到第N-1个逻辑或门OR1到ORN-1。为便于说明,这样里以后假定该边界值BV包括8位并且表述为25,虽然这是不限制的,因为N和A可以为其它值。
第一或门OR1在边界值BV的最低有效位(LSB)上,例如,在第一位BV1,第2位BV2上执行或运算。第二到第N-1或门,即OR2到ORN-1,进行如下操作:分别接收从第3到第N位,即BV3到BVN,的相应的一位;每个或门分别在接收到的一位和前一个或门的输出上执行或运算;边界值BV的第一位BV1被作为边界值数据BVD的LSB输出,即第一位BVD1。第一到第N-1或门,即OR1到ORN-1,的输出被作为边界值数据BVD的第二到第N位,即BVD2到BVDN,来输出。
换句话说,边界值BV的第一位BV1被作为边界值数据BVD的第一位BVD1来输出。第一或门OR1的输出被作为边界值数据BVD的第二位BVD2来输出。以这种方式,第N-1或门ORN-1的输出被作为边界值数据BVD的第N位BVDN来输出。有效位决定单元410将BVN位到BVA位设置为“1s”,将BVA-1位到BV1设置为“0s”。
在下一个步骤1120,根据边界值数据BVD,饱和检测单元420产生检测信号SATDET,该信号表示数据信号DATA是否饱和。步骤1120对应于饱和检测单元420的操作。
饱和检测单元420接收数据信号DATA,根据边界值数据BVD确定数据信号DATA是否饱和,并且将确定的结果作为检测信号SATDET输出。如果数据信号DATA是饱和的,那么检测信号SATDET被设置为第一逻辑值。如果数据信号DATA是不饱和的,那么检测信号SATDET被设置为第二逻辑值。
饱和检测单元420通过提取和评估数据信号DATA的与边界值数据BVD的有效位对应的高位来确定数据信号DATA是否饱和,也就是数据信号DATA的高(K-A)位(同样,也可以描述为K-A个最高有效位)。
为便于描述,假设一个例子,其中有效位数为3,数据信号DATA例如采用数值96,该数值为二进制数“0110 0000”。饱和检测单元420利用数据信号DATA的高3位来确定数据信号是否饱和,该高3位在本例中是“011”。更具体地说,当数据信号DATA的MSB是第一逻辑值,并且相应于边界值数据BVD其它有效位的数据信号DATA的数据位中的至少一位为第二逻辑值(例如本例中是真)的时候,则可以确定数据信号DATA是饱和的。
图6说明根据本发明的实施例的示例性的实现(这里N=8,A=5),用于解释数据饱和确定的表。参照图6,如果相应于边界值数据BVD的有效位的数据信号DATA的位是“111”,可以确定数据信号DATA表示一个不饱和的负数。因此,检测信号SATDET被输出为第二逻辑值,也就是“0”。但是当相应于边界值数据BVD的有效位的数据信号DATA的位是“110”时,可以确定数据信号DATA表示一个饱和的负数。因此,检测信号SATDET被输出为第一逻辑值,也就是“1”。
在图6中,当数据信号DATA的MSB是第二逻辑值,并且相应于边界值数据BVD的其它有效位的数据信号DATA的位中的至少一位为第一逻辑值时,可以确定数据信号DATA表示一个饱和的正数。如果相应于边界值数据BVD的有效位的数据信号DATA中的位为“000”,可以确定数据信号DATA表示一个不饱和的正数。因此,检测信号SATDET被输出为第二逻辑值,也就是“0”。
作为另一个例子,当相应于边界值数据BVD的有效位的数据信号DATA的位为“001”,可以确定数据信号DATA表示一个饱和的正数。因此,检测信号SATDET输出为第一逻辑值,也就是“1”。
回到步骤S1120的讨论(这里例子中的数据信号DATA是二进制数“01100000”),相应于边界值数据BVD的有效位的数据信号DATA的位是“011”。因此,可以确定数据信号DATA表示一个饱和的正数。
图7是根据本发明的实施例的更详细地说明饱和检测单元420的例子的方框图。
参照图7,当数据信号DATA由M位组成时,饱和检测单元420包括:第一到第M-1反向器,即I1到IM-1;第一到第M-1检测信号生成单元,即DS1到DSM-1;与数据信号DATA的负值相关的逻辑或门NEG_OR;与数据信号DATA的正值相关的逻辑或门POR;以及选择单元710。
第一到第M-1反向器,即I1到IM-1,对数据信号DATA的第一到第M-1位逻辑值进行反向。第一到第M-1检测信号发生单元,即DS1到DSM-1,接收在数据信号DATA的第一到第M-1位中的相应位、数据信号DATA第一到第M-1位的反向的逻辑值、以及边界值数据BVD的相应位,并生成第一到第M-1正值检测信号PDS1到PDSM-1和第一到第M-1负值检测信号NDS1到NDSM-1。
第一到第M-1检测信号发生单元,即DS1到DSM-1包括:逻辑与门PAND1到PANDM-1,分别与数据信号DATA的正值有关;逻辑与门NEG_AND1到NEG_ANDM-1,分别与数据信号DATA的负值有关。正值与门PAND1到PANDM-1对数据信号DATA的第一到第M-1位,即D1到DM-1中的相应位,和边界值数据BVD的相应位BVD1到BVDN执行与运算,并生成正值检测信号PDS1到PDSM-1。负值与门NEG_AND1到NET_ANDM-1分别对数据信号DATA第一到第M-1位,即D1到DM-1的反向的逻辑值,和边界值数据BVD相应位BVD1到BVDN执行与运算,并分别生成负值检测信号NDS1到NDSN-1。
负值或门NEG-OR对第一到第M-1位负数值检测信号NDS1到NDSM-1执行或运算,并输出第一信号S1。正值或门POR对第一到第M-1位正数值检测信号PDS1到PDSM-1执行或运算,并且输出第二信号S2。
如果数据信号DATA的MSB是第一逻辑值,选择单元710选择并输出第一信号S1作为检测信号SATDET。如果数据信号DATA的MSB是第二逻辑值,选择单元710选择并输出第二信号S2作为检测信号SATDET。
回想假设数据信号DATA是“0110 0000”的例子,现在通过假设边界值数据BVD是“1110 0000”对该例子进行扩展。当数据信号DATA和边界值数据BVD被输入到饱和检测单元420,第一信号S1变成“0”,而第二信号S2变为“1”。由于数据信号DATA的MSB是第二逻辑数据,即“0”,选择单元710输出第二信号S2作为检测信号SATDET。
数据信号DATA的位数可能会比边界值数据BVD的位数多。假若这样,一个或多个二进制数“1”值可以被加到边界值数据BVD的MSB之后(或者,换句话说,BVD可以在它的MSB之上填补一个或多个“1”的值)这样数据信号DATA的位数与边界值数据BVD的位数相同。
由于图7的饱和检测单元420仅仅包括或门、与门、反向器,所以与背景技术饱和管理装置300(在其它东西中,它使用了两个比较器330和340,它们中的每一个都是由N*N衰减测量器来实现,等)相比具有配置简单的优点。
在下一个步骤S1130,产生最大界限UPLIMIT和最小界限LOLIMIT。步骤1130相应于界限产生单元430的操作。
图8是根据本发明的实施例的更详细地说明界限产生单元430的电路图。
在本发明的开发中,认识到背景技术中存在的以下问题,并确定了其解决方法。为了得到其边界值,饱和管理方法300从边界值BV中减“1”,对每一位进行反向,并且在每一个反向的位上加“1”以得到2的补码,这造成了配置和操作复杂的问题。例如为了减少成本和/或提高可制造性等,需要比较不复杂的技术和相关电路用于获得边界值。本发明的实施例提供这样的相对比较不复杂的技术和相关电路用于获得边界值。
参照图8,界限产生单元430输出基于边界值数据BVD的最大界限UPLIMIT和最小界限LOLIMIT。最大界限UPLIMIT是边界值数据BVD的反向的复制。最小界限LOLIMIT等于边界值数据BVD。
当数据信号DATA饱和时,饱和管理器400截断数据信号DATA到最大界限UPLIMIT或最小界限LOLIMIT。例如,如果边界值BV是32,也就是二进制数“0010 0000”,并且如果边界值数据BVD是“1110 0000”,那么最大界限UPLIMIT是边界值数据BVD的反向的复制,也就是31,即二进制“00011111,而最小界限LOLIMIT等于边界值数据DATA”,也就是二进制“11100000”,即-32。
界限产生单元430的配置是简单的。界限产生单元430包括第一到第N反向器,即IL1到ILN,第一到第N反向器对边界值数据BVD的相应位进行反向,并且输出反向后的位作为最大界限UPLIMIT。最小界限LOLIMIT等于边界值数据BVD。
在步骤S1140,选择单元440根据数据信号DATA和检测信号SATDET,输出数据信号DATA、最大界限UPLIMIT、最小界限LOLIMIT中的一个。
图9是依据本发明的实施例的用于解释选择单元440的操作的表。
参照图9,如果数据信号的MSB是第一逻辑值(还是假定为“1”),并且检测信号SATDET是第一逻辑值,选择单元440输出最小界限LOLIMIT作为结果信号SATRST。
如果检测信号SATDET是第一逻辑值,则确定数据信号DATA是饱和的。如果数据信号DATA的MSB是第一逻辑值(并且SATDET=“1”),则数据信号DATA是负值,并且选择单元440因此输出最小界限LOLIMIT作为结果数据SATRST的值。如果数据信号DATA的MSB是第二逻辑值(还是假定为“0”)(并且SATDET=“0”),那么检测数据信号DATA是正值,并且选择单元440因此输出最大界限值UPLIMIT作为结果数据SATRST的值。
如果检测信号SATDET是第二逻辑值,则数据信号DATA是不饱和的。因此,选择单元440输出数据信号DATA,而不管数据信号DATA的MSB是第一逻辑值还是第二逻辑值。
图11示出在步骤S1120之后执行的步骤S1130。回顾图4可以看出,步骤S1130也可以与步骤S1120并行执行或在步骤S1120之前执行。
图10A是对图3的背景技术的饱和管理装置300的操作速度进行测试的结果的列表。作为对比,图10B是来自对包含有根据本发明的实施例的饱和管理器400的装置的示例性实现的测试的结果列表。
在图10A和10B中的示例测试中,数据信号DATA由18位组成,并且边界值BV由16位组成。图10A分别列出了减少(decrement)操作、取补(complement)操作、比较操作和多路复用操作的速度,以及相应需要执行这些操作的区域的指示。图10B分别列出了有效位决定(由单元410),饱和检测(由单元420)速度,界限产生(由单元430)和选择(由单元440)的速度,以及相应需要这种操作/单元的区域的指示。如图10A和10B所示,饱和管理器400比图3的背景技术中饱和管理装置300优越。
根据本发明的实施例,用户可以动态地设置操作的范围,并相对于背景技术仍能减少用于饱和管理所需消耗的时间和资源。
尽管本发明已经通过参照其示范性的实施例被详细地说明和描述,但是本领域的普通技术人员可以理解在不脱离本发明的精神和范围情况下,可以进行各种形式和细节上的改变。