一种用于左移数据的方法与系统的制作方法

文档序号:6554125阅读:184来源:国知局
专利名称:一种用于左移数据的方法与系统的制作方法
技术领域
本发明涉及一种与饱和有关的系统与方法,更明确地说,本发明涉及一种利用标准移位器来饱和左移结果的系统与方法。
背景技术
数字信号处理(DSP)是关于检视与操纵电子信号的数字呈现。以数字信号处理加以处理的数字信号通常是现实世界中的语音及/或视频的数字呈现。
数字信号处理通常涉及于时间域、空间域、频域、自相关域(autocorrelation domain)、及/或小波(wavelet)域之中来检视数字信号。于各域之间进行数字信号转换时,一般均涉及到艰难的算术计算。一旦在期许的域之中被表示出来以后,便可对该等数字信号实行更进一步的算术计算。举例来说,可对数字信号套用各种滤波处理。数字信号也可进行各种压缩/解压缩以及加密/解密算法。
因为数字信号处理通常会处理语音及/或视频的数字呈现,所以数字信号处理经常必须以实时(real time)方式来进行。所以,必须以极少甚至毫无任何明显延迟的方式来对该等数字信号实施算术计算,通常是利用一般用途的计算机系统(例如桌上型计算机或工作站)或是专门的数字信号处理器(缩写成DSP)来实施该些算术计算。
数字信号处理器是一种特殊用途的微处理器,其是针对数字信号的处理进行最佳化。数字信号处理器通常会被设计成以实时方式来处理数字信号,举例来说,运用实时操作系统(Real-Time Operation System;RTOS)。RTOS操作系统可在收到多项任务时同时处理该等任务。RTOS通常会依照优先级来处理任务,并且允许高优先级的任务中断低优先级务。RTOS通常会以下面的方式来管理内存最小化内存单位中被特殊任务锁住的时间长度以及最小化被锁住的内存单位的大小;在最小化多项任务试图同时存取相同内存区块时,允许任务以异步方式被实施。
数字信号处理器常用于嵌入式系统中。一嵌入式系统是一被整合于一较大型装置中的特定用途计算机。嵌入式系统通常会运用一小型的RTOS,其是针对某项特殊用途。数字信号处理通常可利用含有一数字信号处理器与一RTOS在内的嵌入式系统来实行。
被数字信号处理器处理的数字信号可表示成由一与零所组成的二进制级数。所以,数字信号处理器必须能够快速且大量地处理二进制数,以使该等数字信号处理器可保有其实时特性。
虽然该二进制数系统可轻易地表现正数,不过,以二进制方式来表现负数则比较复杂。被设计用来表现负二进制数的其中一种方法是运用有记号的二进制数。根据此方法,可以单一位(其通常是被置放于该数的前面)来表示该数的记号。举例来说,假使第一位为「1」,那么紧接其后的数值便可能为负;而假使第一位为「0」,那么紧接其后的数值便可能为正。举例来说,4位数「0010」一般表示的是标准二进制标记法中的数值2。使用有记号的二进制数,正2则可表示成5位数「00010」,其中第一位数字是记号位。同样地,「10010」则可表示负2。
不过,此种表示负二进制数的方法有数项缺点。举例来说,数值零会有两个不同的表示符号,因为「00000」与「10000」可被视为相同数值。此外,对有记号的二进制数实施算术计算还会有相关的问题。举例来说,加法与减法均非常复杂。举例来说,利用相加二进制数的习用技术来相加数值「00010」(2)与「10010」(-2)可能会产生数值「10100」(-4)。所以,当对有记号的数字数值实施算术功能时(例如数字信号处理器经常实施的计算)必须特别小心,从而在使用设计习用相加及/或相减二进制数的硬件时便会相当复杂。此特别谨慎的结果便会降低与数字信号处理器相关的效能并且提高费用。
为防止该些和有记号的二进制数相关的问题,一般常会运用二的补码法。根据二的补码法,某数值的最左边位,最高有效位(MSB),可表示该数的记号。当MSB为零时,该数为正,MSB为一时,该数为负,不过,和上述有记号的二进制数不同的是,MSB为该数的一部分,其会同时影响该被表示数的记号与数值。
根据二的补码法,在-5位数之中,正数可表示为「00000」(0)至「01111」(15)。虽然该数可由任何位数组成,不过对正数来说第一位均保持为零。根据二的补码法的正数数值可被完全诠释成如标准二进制中的数值。
根据二的补码法,负数数值则为相对应的正数的二的补码。为计算该二的补码,可在该数的一的补码中加入一。一的补码为每位数字的反数。举例来说,「00011」(3)的一的补码为「11100」。所以,「00011」(3)的二的补码为「11101」,其值为-3。
该二的补码标记法有数项优点。举例来说,零仅有一种表示(00000)。此外,可利用标准技术与硬件来对数值实施算术功能。举例来说+00011(3)00010(2)00101(5)]]>又举例来说+00011(3)11101(-3)00000(0)]]>从上例的3加负3中可看见,实施标准的算术功能便可获得正确的结果。不过,正确的结果和二进制数的趋势有关,其会被表示成固定的位数,以舍弃应该进位超过MSB的数字。此趋势即熟知的溢位。
虽然在实施减法时可建设性地运用溢位,不过,对两个大的正操作数实施加法也可能会在MSB值为1时产生溢位。在此情况中,相加两个正数则可能无法正确地产生结果,而会翻转成一负数。为避免发生翻转(rollover)现象,以2的补码来实施的运算应该要能够溢位侦测,并且要让结果饱和于可被表示的最大正值或最大负值数字信号处理器,或是产生错误信号。
虽然饱和在技术上不会产生正确的结果,不过却可产生尽可能接近预期结果的结果。在数字信号处理的技术中,饱和结果通常优于翻转结果。举例来说,当相加至代表一声音波形的数字信号的振幅致使新振幅高于能够表示的振幅时,较佳的方式可能是让该振幅饱和于最大可表示的振幅处,而不要让振幅变成负值或是被径行忽略。所以,饱和可能是与数字信号处理有关的算术运算中很重要的一部份。
可对数字数值(举例来说,数字信号)实施的其中一项常见的算术运算为与2的幂数相乘,举例来说,该数可能会乘以2(21)。由将以二进制形式所表示的数值的数字左移便可让该数乘以2。在实施左移中,每位数字均必须向左边移动一个位置,而最低有效位(LSB)则取零值。以00011(3)为例,当向左边移动一个位置之后即变成00110(6),其等于3×2。同样地,将该数乘以2的幂数则可向左边移动数个位置。举例来说,将一数左移2个位置则会产生22(4)的乘法,将一数左移3个位置则会产生23(8)的乘法,依此类推。
只要对正数而言仅有零被移出该数值表示或是对负数而言仅有一被移出该数值表示且MSB并未改变,便可精确地左移以2的补码标记法所表示的数值。不过,对正数来说当一被左移至MSB或是移出该数或者对负数来说当零被左移至MSB或是移出该数时则非常复杂。举例来说,01001(9)左移两个位置会产生00100(4)。
所以,希望实施能够饱和的左移,致使上例中左移01001(9)时产生的是最大可获得的数值01111(15)而非00100(4)。不过,利用以2的补码标记法所表示的操作数的标准移位器硬件在左移之后通常并不支持正确的饱和。所以,希望运用能执行左移且能适当饱和的硬件及方法。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。

发明内容
本发明所要解决的技术问题在于提供一种用于左移数据的方法及其系统,为能执行左移且能适当饱和的系统及方法。
为实现上述目的,本发明提供的用于左移数据的方法,其包含左移该数据以产生左移结果,右移该数据以产生右移结果,并且依据该右移结果来判断该左移结果是否需要饱和。
而且,为实现上述目的,本发明所提供的用于左移数据的系统,其包含一左移信道用于左移数据,一算术右移信道用于右移数据,其中该右移信道会右移数据致使该右移结果含有与已被移出该左移信道之中的位相同的位。
本发明再提供一种计算机系统,其包含一处理器以及一可被该计算机系统读取的程序储存装置,该储存装置可具有一由该处理器执行的多个指令所组成的程序,以便实行用于左移数据的方法步骤。该方法包含左移该数据以产生左移结果,右移该数据以产生右移结果,并且依据该右移结果来判断该左移结果是否需要饱和。
采用本发明的用于左移数据的方法及其系统,能执行左移且能实现适当饱和。


图1为一左/右算术移位器的方块图;图2为根据本发明一具体实施例的被配置成能够饱和的左/右算术移位器的方块图;图3为根据本发明一具体实施例的用于实施能够饱和的左移的方法的流程图;图4为根据本发明一具体实施例的饱和检查单元的方块图;以及图5为一能够实现根据本发明具体实施例的方法与设备的计算机系统的范例。
其中,附图标记11左/右算术移位器 12左移信道13右移信道 14数据字符15控制字符 16方向位17二输入多任务器 18移位结果20更改组件 21左/右算术移位器22左移信道 23右移信道24饱和检查单元 25数据字符26控制字符 27移位结果28移位饱和标记位 41节点42节点 43最大的可表示数44最小的可表示数 45第一比较器46第二比较器 47或门48、49反向器 50与门51输出节点 1000计算机系统1001中央处理单元 1002内部总线1003网络控制器 1004随机存取内存
1005区域性网络数据传送控制器 1006区域性网络接口1007连结线 1008数据储存装置1009输入装置 1010打印机接口1011显示单元具体实施方式
为清楚起见,在说明图式中所示的本发明的较佳具体实施例时将运用特定的术语。不过,本揭发明并不希望受限于所选定的特定术语,且应该了解的是,每个特定组件均包含可以雷同方式运作的技术等效例。
用于让操作数乘以2的幂输的左移位器以及用于让操作数除以2的幂数的右算术移位器通常会一起被组成一左/右算术移位器,其包括一左移信道与一算术右移信道。图1为一左/右算术移位器的方块图。该左/右算术移位器11包括一左移信道12与一右移信道13。数据字符14可被传送至该左移信道12与该算术右移信道13。举例来说,该数据字符14可为一36位。再举例来说,该数据字符14可由4位保护位与32位所组成。保护位出现在MSB前面的一组位,用以防止溢位高出该保护位的大小。所以,该保护位不可被视为该数据字符的一部份,因此,该数据字符可被视为一32位。该具有32位的数据字符14可能含有该欲被移动的数值的二进制表示符号。
一控制字符15可被传送至该左移信道12与该算术右移信道13,以便指定移动该数据字符14的位置数。举例来说,该控制字符15可能是一5位的控制字符15。该左移信道12与该算术右移信道13两者的输出均可被传送至一二输入多任务器17。一方向位16也可被传送至该二输入多任务器17,用以决定究竟该回传左移结果还是该回传算术右移结果作为移位结果18。
虽然左/右算术移位器11可用来对以2的补码标记法所表示的数值(举例来说,32位的数据字符25)实施算术运算,不过,该左/右算术移位器11却可能无法正确地让超过该操作数长度所允许的最大值的数值饱和。举例来说,该左/右算术移位器11可能无法让被向左移动大量位置的大型数据字符饱和。
本发明的具体实施例试图运用一左/右算术移位器(例如上述及图1中所示的移位器)来实施能够饱和的左移,举例来说,超过可存在的一组保护位所给予的保护范围的外。图2为根据本发明一具体实施例的具有饱和功能的左/右算术移位器的方块图。
一数据字符25可被送至该左/右算术移位器21,举例来说,可提供一32位的数据字符25。如上述,该左/右算术移位器21能够接受一36位的元字符,举例来说,其中32位是保留给操作数使用而4位则是保留作为溢位保护位。数据字符25可被传送至一左移信道22与一算术右移信道23。一控制字符26可被送至该左/右算术移位器21,举例来说,可提供一5位的控制字符26以便指示该数据字符25应该被移动的位置。虽然可利用由任何数量位所组成的数据字符25来设计本发明的具体实施例,不过,相对地,控制字符26则应该含有足够的位以便表示经过该数据字符25的所有位的移动情形。
该控制字符26可能还包含一方向位。在此情况中,该控制字符26可为一6位,其中该方向位会被分离。或者,可如同上面范例般地独立提供该方向位。
该控制字符26可被传送至该左移信道22,举例来说,以其原始格式来进行。该控制字符26可在第一次通过一位型的非门、反向器、或是能够更改该控制字符26的其它更改组件20之后被传送至该算术右移信道23。举例来说,该更改组件20可决定被送至该算术右移信道23的控制字符26为1的补码、2的补码、或是其它转换结果,以使该右移信道23所产生的结果等于该左移信道22的结果中被移出去的位。举例来说,当控制字符26为「11000」(24)表示有24位的移动时,该左移信道22便会将数据字符25移动二十四个位置,从而便会将二十四个位移出去。接着,该右移信道23便可从该更改组件20中接收控制字符26的2的补码命令,产生该数为「01000」(8)并且会将数据字符25移动8个位置,从而所产生的结果便等于从该左移信道22中被移出去的该24个位。
接着,饱和检查单元24便可检查与该左移信道所输出结果的MSB串接之后该右移信道所输出的结果,用以判断信息是否遗失。假使该串接值不是全部为一或全部为零,便是有信息已经遗失。举例来说,假使该串接值同时含有一与零的话,那么便可判断信息已经遗失且需要予以饱和。接着便可依据右移信道所产生的结果来决定正确的饱和值。举例来说,假使该结果为正,举例来说,该数的开头为零,那么该移位结果便可设为最大的正值,举例来说0111 11111111 1111 1111 1111 1111 1111,该结果是一32位(本例为一具有4位保护位的36位)。假使该结果为负,举例来说,该数的开头为1,那么该移位结果便可设为最大的负值,举例来说1000 0000 0000 0000 0000 0000 0000 0000,该结果是一32位。
串接右移信道所输出的结果与左移信道的结果的MSB的替代方法为更改右移所依据的控制字符,以使左移信道的结果的MSB为右移信道的结果的一部份。举例来说,该算术右移信道可将数据移动一额外的位。再举例来说,运用实施1的补码(而非2的补码)的更改组件便可实现此目的。再举例来说,该更改组件可为一位型的非门组件。
饱和检查单元24可计算该饱和值,也可不计算该饱和值。举例来说,饱和检查单元24可产生一移位饱和标记位28,该位会表示该值是否需要饱和。该移位饱和标记位28与该移位结果27均可由该左/右算术移位器21来传送。
图3为根据本发明一具体实施例的用于实施能够饱和的左移的方法的流程图。其前提为控制字符判断出数据可被左移数个位(步骤S31)。接着便可更改该控制字符,以使当该控制字符决定如何右移该数据时,该右移的结果会是在左移中被移出去的位(步骤S32)。可依据该经更改的控制字符来右移该数据(步骤S33)。被右移的数据可能是被左移的数据的副本。最后,可检查串接该左移结果的MSB后的该右移结果,用以判断该左移结果是否需要饱和(步骤S34)。假使需要饱和的话,便可饱和该左移结果。
图4为根据本发明一具体实施例的饱和检查单元的方块图。节点41可接收源自该左移信道输出的记号位以及该算术右移信道所输出的36位,作为一37位。节点42可接收上面所讨论的控制字符的方向位。第一比较器45可比较该37位输入以判断该输入是否大于最大的可表示数43。第二比较器46可比较该输入以判断该输入是否小于最小的可表示数44。因为当该输入大于最大的可表示数43或是小于最小的可表示数44时均要发生饱和,所以,可利用一或门47来决定何时要发生饱和。不过,根据本发明其中一具体实施例,假使实施左移的话,该方向位会接收逻辑0。所以,该位必须在与门50以前被反向。或门47的结果可利用一反向器48进行反向并且输入至与门50。
节点42的方向位可被送至一反向器49。反向器49的输出也可被送至与门50。所以,假使发生右移的话,该方向位便会停止产生饱和标记。与门50的结果可被送至输出节点51。
图5为一可实现本发明的方法与系统的计算机系统的范例。本揭示的系统与方法可被设计成于一计算机系统(举例来说,大型计算机、个人计算机(PC)、手持式计算机、服务器...等)上执行的应用软件。该应用软件可被储存于一记录媒体之中,该计算机系统可进行区域性存取,也可通过连接至网络(举例来说,局域网络或是网际网络)的硬线连接或无线连接进行存取。
举例来说,一般称为系统的计算机系统1000可能包含一中央处理单元(CPU)1001、随机存取内存(RAM)1004、打印机接口1010、显示单元1011、局域网络(LAN)数据传送控制器1005、局域网络(LAN)接口1006、网络控制器1003、内部总线1002、以及一或多个输入装置1009(举例来说,键盘、鼠标...等)。如图所示,该计算机系统1000可能会通过一连结线1007被连接至一数据储存装置(举例来说,硬盘)1008。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种用于左移数据的方法,其特征在于,包括左移该数据以产生左移结果;右移该数据以产生右移结果;以及依据该右移结果来判断该左移结果是否需要饱和。
2.根据权利要求1所述的用于左移数据的方法,其特征在于,该右移结果包括的位等于从左移中被移出去的位。
3.根据权利要求1所述的用于左移数据的方法,其特征在于,左移该数据包括将该数据向左移动一左移控制字符所示的位数量,而右移该数据则包括将该数据向右移动一右移控制字符所示的位数量。
4.根据权利要求3所述的用于左移数据的方法,其特征在于,该右移控制字符是依据该左移控制字符。
5.根据权利要求3所述的用于左移数据的方法,其特征在于,该右移控制字符依据该左移控制字符的1的补码。
6.根据权利要求3所述的用于左移数据的方法,其特征在于,该右移控制字符依据该左移控制字符的2的补码。
7.根据权利要求1所述的用于左移数据的方法,其特征在于,依据该右移结果来判断该左移结果是否需要饱和包括依据该右移结果与该左移结果来判断该左移结果是否需要饱和。
8.根据权利要求1所述的用于左移数据的方法,其特征在于,依据该右移结果来判断该左移结果是否需要饱和包括依据该右移结果与该左移结果的最高有效位来判断该左移结果是否需要饱和。
9.根据权利要求1所述的用于左移数据的方法,其特征在于,依据该右移结果来判断该左移结果是否需要饱和包括串接该左移结果的最高有效位与该右移结果;判断该串接是否同时含有1与0;以及当判断该串接同时含有1与0时便决定该左移结果需要饱和。
10.根据权利要求1所述的用于左移数据的方法,其特征在于,还包括在决定该左移结果需要饱和时饱和该左移结果。
11.根据权利要求10所述的用于左移数据的方法,其特征在于,饱和该左移结果包括依据该右移结果来判断该左移结果是否应该饱和成正数;当其判断该左移结果应该饱和成正数时,以可被表示的最大正值来取代该左移结果;以及当其判断该左移结果不应该饱和成正数时,以可被表示的最大负值来取代该左移结果。
12.一种用于左移数据的系统,其特征在于,包括一左移信道,用以左移数据;以及一算术右移信道,用以右移数据,其中该右移信道会右移该数据以使该右移结果包括的位等于从左移信道中被移出去的位。
13.根据权利要求12所述的用于左移数据的系统,其特征在于,还包括一饱和检查单元,用于依据该右移结果来判断该左移结果是否需要饱和。
14.根据权利要求12所述的用于左移数据的系统,其特征在于,还包括一左移控制字符,用于表示该左移信道移动该数据的位数;以及一右移控制字符,用于表示该右移信道移动该数据的位数,其中该右移控制字依据该左移控制字符。
15.根据权利要求14所述的用于左移数据的系统,其特征在于,进一步包括一更改组件,用以利用该左移控制字符来产生该右移控制字符。
16.根据权利要求14所述的用于左移数据的系统,其特征在于,进一步包括一更改组件,用以由计算该左移控制字符的一的补码来产生该右移控制字符。
17.根据权利要求14所述的用于左移数据的系统,其特征在于,进一步包括一更改组件,用以由计算该左移控制字符的2的补码来产生该右移控制字符。
18.根据权利要求13所述的用于左移数据的系统,其特征在于,该饱和检查单元依据该右移结果来判断该左移结果是否需要饱和是通过依据该右移结果与该左移结果来判断该左移结果是否需要饱和。
19.根据权利要求13所述的用于左移数据的系统,其特征在于,该饱和检查单元依据该右移结果来判断该左移结果是否需要饱和是通过依据该右移结果与该左移结果的最高有效位来判断该左移结果是否需要饱和。
20.根据权利要求13所述的用于左移数据的系统,其特征在于,依据该右移结果来判断该左移结果是否需要饱和包括串接该左移结果的最高有效位与该右移结果;判断该串接是否同时含有1与0;以及当其判断该串接同时含有1与0时便决定该左移结果需要饱和。
21.根据权利要求13所述的用于左移数据的系统,其特征在于,该饱和检查单元会在决定该左移结果需要饱和时产生一标记。
全文摘要
本发明公开了一种用于左移数据的方法与系统,利用标准移位器饱和左移结果,其中,用于左移数据的方法,其包含左移该数据以产生左移结果,右移该数据以产生右移结果,并且依据该右移结果来判断该左移结果是否需要饱和。本发明提供的用于左移数据的系统,包括一左移信道,用以左移数据;以及一算术右移信道,用以右移数据,其中该右移信道会右移该数据以使该右移结果包括的位等于从左移信道中被移出去的位。采用本发明的用于左移数据的方法及其系统,能执行左移且能实现适当饱和。
文档编号G06F5/01GK1804787SQ20061000098
公开日2006年7月19日 申请日期2006年1月13日 优先权日2005年1月14日
发明者尼可拉斯·皮尔森 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1