一种定点除法器及其运算处理方法 【技术领域】
本发明涉及计算机芯片技术领域,特别是涉及一种定点除法器及其运算处理方法。
背景技术
在现代电子系统设计中,定点除法部件往往是必不可少的。大多数定点除法部件基于时序、面积和性能的多方面考虑,通常采用基于减法的循环算法,这种算法的特点是每次循环产生一个商,而循环的次数由除法的操作数位数决定。
如在32位通用处理器中,一次定点除法需要32次循环才能完成。
通过分析,大部分除法操作并不需要经过这么多次循环。例如,当进行8位无符号定点除法操作时,如果被除数为00001000,除数为00000001,按照传统的方法,该除法操作需要8次移位和减法操作才能完成,这样会产生很多没有必要的循环运算。
现有技术中提出一种定点除法器实现运算的方法,获取除数和被除数的绝对值,根据除数和被除数的符号位,获取商的符号位并存储;判断被除数绝对值是否大于或等于除数绝对值,若是,则计算被除数的最高有效位与除数的最高有效位的数位之差,获得位差,并根据商的符号位、除数/被除数绝对值,以及位差,获取被除数与除数的商值;否则输出为零。其把除法运算转化成移位运算和减法运算,与现有技术相比,便于硬件电路的实现,减少了所用器件门数,缩短了运算时间,提高了运算效率,取得了较好的效果。
该方法提出的算法是基于移位和相减的,在算法的大部分循环内,该除法器的移位部件每次循环只移位一次。该方法对传统算法的改进来自于第一次移位。传统的算法的第一次移位只移一位,而该方法是移(被除数的最高有效位与除数的最高有效位的数位之差)位,因此比传统的算法取得了性能的提升。
例如对上面的操作数,第一次移位将除数左移4位,这样完成该除法操作只需要4次移位和减法操作。
但是,这样的优化还是没有解决基于减法的循环算法中移位和减法操作太多的问题。
【发明内容】
本发明的目的在于提供一种定点除法器及其运算处理方法,其克服现有技术中的缺陷,在保持较低的除法器面积和功耗的前提下,取得较高的性能。
为实现本发明目的而提供的一种定点除法器,包括判0装置,预处理装置,循环移位相减装置,结果处理装置,其中:
所述判0装置,用于判断除数是否为0;在除数为0时提示出错信息后结束返回;如果不为0则由所述预处理装置进行预处理操作;
所述预处理装置,用于接收用于标识该除法是否有符号操作的标识符、以及被除数和除数;产生被除数和除数的绝对值,并根据判0操作结果和被除数和除数绝对值大小比较的结果进行选择操作;产生对商值和余数进行处理的标识符,传输给所述结果处理装置;
所述循环移位相减装置,用于根据当前的循环执行的阶段、前导0个数和输入的操作数,控制移位和减法操作,并在循环结束时将结果输出到所述结果处理装置;
所述结果处理装置,用于接收输入的判0处理结果,预处理得到的标识符,以及循环移位相减得到结果,判断处理后输出商值和余数。
为实现本发明目的还提供一种定点除法器运算处理方法,包括下列步骤:
步骤S100,在预处理阶段,进行判0操作,对被除数和除数进行预处理,根据判0操作的结果和预处理得到的被除数和除数的绝对值大小比较的结果,选择是进入步骤S200,还是进入步骤S300;
步骤S200,在循环移位相减阶段,根据当前的循环执行的阶段、前导0个数和输入的操作数,控制移位和减法操作,并在循环结束时将结果输出到结果处理装置;
步骤S300,在结果处理阶段,根据判0操作的结果,预处理判断得到的除法操作的符号标识符,以及循环移位相减操作得到地结果,判断处理后输出商值和余数。
本发明的有益效果:本发明的定点除法器及其运算处理方法,基于减法的循环,其可以动态的根据被除数和除数的情况,减少循环的次数,并通过重复使用移位器和减法器,在保持较低的除法器面积和功耗的前提下,取得较高的性能。
【附图说明】
图1是本发明实施例定点除法器结构示意图;
图2是本发明实施例定点除法器运算处理方法流程图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的定点除法器及其运算处理方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明而不是对本发明的限制。
如图1所示,本发明实施例的定点除法器,包括:
判0装置1,用于判断除数是否为0;
判0装置1判断除数是否为0,并在除数为0时提示出错信息后结束返回;如果不为0则由预处理装置2进行预处理操作。
预处理装置2,用于接收用于标识该除法是否有符号操作的标识符sign、以及被除数和除数;产生被除数和除数的绝对值,并根据判0操作结果和被除数和除数绝对值大小比较的结果进行选择操作;产生对商值和余数进行处理的标识符,传输给结果处理装置4;
预处理装置2根据当前的除法操作是否有符号操作或者被除数和除数的最高位来确定商值的符号,以及根据判断的结果产生对商值和余数进行处理的标识符,传输给结果处理装置4。
循环移位相减装置3,用于根据当前的循环执行的阶段、前导0个数和输入的操作数,控制移位和减法操作,并在循环结束时将结果输出到结果处理装置4。
结果处理装置4,用于接收输入的判0处理结果,预处理得到的标识符,以及循环移位相减得到结果,判断处理后输出商值和余数。
结果处理装置4根据当前操作是否为有符号操作,以及被除数和除数的符号位,进行结果处理,并对循环移位相减装置3输出的结果进行求补和恢复余数操作,输出除法的商与余数结果。
较佳地,所述循环移位相减装置3包括前导0计数器31,循环控制装置32,移位器33,减法器34,修正器35以及判断装置36。
前导0计数器31,用于在计算被除数绝对值、除数绝对值和循环移位相减过程中得到的结果的前导0个数。
前导0计数器31计算的前导0个数,是指一个二进制数从最高位算起,第一个1之前的0的个数,即最高有效位前连续0的个数;
循环控制装置32,用于根据当前的循环移位相减阶段,选择需要被移位的操作数,获取需要移动的位数,输出给移位器33。
循环控制装置32根据当前循环移位相减阶段,选择输出给移位器的操作数,计算需要移动的位数。
所述需要被移位的操作数,或者可以是被除数的绝对值,或者可以是除数的绝对值,或者可以是循环移位相减过程中得到的结果。
当在第0次循环移位相减阶段,需要进行移位相减的操作数,分别是被除数的绝对值和除数的绝对值,其中,移位后的被除数的绝对值输出到减法器作为被减数;移位后的除数的绝对值作为减数。
当在非第0次循环移位相减阶段,需要进行移位相减的操作数,是上一次循环移位相减操作得到,并经过修正后的结果,即修正结果。
所述计算需要移动的位数为:
1)当在第0次循环移位相减阶段,只对被除数绝对值和除数绝对值进行移位相减时,需要移动的位数为前导0计数器值;
2)当在非第0次循环移位相减阶段,对减法器输出的结果进行移位时,需要移动的位数为上一次循环移位相减阶段中标示器中标示值、单次最大移动位数和步长值三者中的最小值。
其中,所述步长值为:如果减法器操作输出的结果为负数,则步长值为1;如果减法器操作输出的结果为正数,而且该结果的前导0个数为0,则步长值为1;如果减法器操作输出的结果为正数,而且该结果的前导0个数大于单次最大移动位数与标示器中标示值之差,即结果的前导0个数>单次最大移动位数与标示器中标示值之差,则步长值为单次最大移动位数与标示器中标示值之差;否则,步长值为前导0个数。
所述单次最大移动位数是移位器33移位操作最大移位的位数,例如,在32位除法操作中,一次需要移位的最大位数为32。
移位器33,用于将输入的操作数,根据循环控制装置计算得到的需要移动的位数,左移相应的位数,并将移位后的操作数输出给减法器。
减法器34,用于将移位后的操作数,根据循环移位相减装置的控制,确定被减数和减数,相减后输出。
所述修正器35,用于判断减法器减法操作的结果,进行修正。
修正器35判断出减法操作的结果,如果为正数,则将减法操作的结果左移一位,低位补1后输出作为下一次循环移位相减操作的被减数;否则,将减法操作的结果左移一位,低位补0后输出作为下一次循环移位相减操作的被减数。
判断装置36,用于判断装置根据前导0计数器的值,除法操作的最大循环次数以及标示器的相比较的值进行判断当前的循环阶段是否结束;若循环已经结束,则将减法操作的结果输出到结果处理器处理;若循环没有结束,则根据前导0计数器和减法操作输出的结果,进行下一次循环移位相减操作。
如果前导0计数器31的值大于除法操作的最大循环次数减去本次循环移位相减操作中标示器的标示值的差,则不需要再进行下一次循环移位相减,将减法操作的结果输出到结果处理器处理;
如果前导0计数器31的值小于除法操作的最大循环次数减去本次循环移位相减操作中标示器的标示值的差,则根据前导0计数器和减法操作输出的结果,进行下一次循环移位相减操作。
更佳地,所述循环控制装置32,包括选择器321,步长器322,标示器323。
所述选择器321,用于选择被除数绝对值操作数、或者除数绝对值操作数、或者减法器输出结果,作为循环移位相减操作的操作数,输出到移位器。
所述步长器322,用于控制循环移位相减操作每次循环的步长值,其大于或者等于1。
如果减法器操作输出的结果为负数,则步长值为1;如果减法器操作输出的结果为正数,而且该结果的前导0个数为0,则步长值为1;如果减法器操作输出的结果为正数,而且该结果的前导0个数大于单次最大移动位数与标示器中标示值之差,即结果的前导0个数>单次最大移动位数与标示器中标示值之差,则步长值为单次最大移动位数与标示器中标示值之差;否则,步长值为前导0个数。
所述标示器323,用于标示当前循环移位相减阶段,并计算当前循环移位相减阶段的标示值;
所述标示器323的标示值的初始值为第0次循环移位相减阶段中,除数前导0的个数。
如图2所示的流程图,相应地,本发明提供一种定点除法器运算处理方法,一共分为三个阶段:1)预处理阶段;2)循环移位相减阶段;3)结果处理阶段。
步骤S100,在预处理阶段,使用判0装置和预处理装置,进行判0操作,对被除数和除数进行预处理,根据判0操作的结果和预处理得到的被除数和除数的绝对值大小比较的结果,选择是进入步骤S200,还是进入步骤S300。
在预处理过程中,预处理装置根据该除法操作是否有符号操作,判断得到除法操作的符号标识符,并将标识符输出到结果处理装置;获取被除数和除数的绝对值,比较绝对值大小,并根据判0的结果和绝对值大小比较的结果选择是进入步骤S200,还是进入步骤S300。
步骤S200,在循环移位相减阶段,使用循环控制装置,前导0计数器和移位器,减法器和判断装置进行操作;根据当前的循环执行的阶段、前导0个数和输入的操作数,控制移位和减法操作,并在循环结束时将结果输出到结果处理装置。
步骤S300,在结果处理阶段,使用结果处理装置;根据判0操作的结果,预处理判断得到的除法操作的符号标识符,以及循环移位相减操作得到的结果,判断处理后输出商值和余数。
下面对定点除法器运算处理方法进行详细描述:
当有新的除法操作进入定点除法器时,一共有三个输入:被除数、除数和标识符。
标识符表示当前除法操作是有符号运算还是无符号运算。
定点除法器进入预处理阶段,预处理阶段的步骤S100,包括如下几个步骤:
步骤S110,对除数进行判0操作;
如果除数不为0,则继续进行预处理;如果除数为0,则当前操作为无效除法操作,直接转到结果处理阶段步骤S300。
步骤S120,根据该除法操作是否有符号操作,判断得到除法操作的符号标识符,并将符号标识符输出到结果处理装置;
步骤S130,根据标识符的值,对被除数和除数进行取绝对值操作;
如果当前操作是有符号操作,则对被除数和除数进行取绝对值操作;否则,直接将被除数和除数分别作为两者的绝对值。
步骤S140,比较被除数和除数的绝对值大小,如果被除数的绝对值大于除数的绝对值,则进入循环移位相减阶段步骤S200;否则,转到结果处理阶段步骤S300。
对被除数和除数进行预处理后,进入循环移位相减阶段步骤S200,所述步骤S200包括下列步骤:
步骤S210,前导0计数器计算被除数的绝对值、除数的绝对值的前导0个数,并将被除数前导0个数作为标示器的起始值;或者计算循环移位相减操作过程中得到的结果的前导0个数。
前导0计数器计算一个二进制数从最高位算起,第一个1之前的0的个数;
步骤S220,循环控制装置根据循环移位相减阶段,选择需要进行移位相减的操作数和需要移位的位数,并且输出给移位器。
所述需要进行移位相减的操作数,或者可以是被除数的绝对值,或者可以是除数的绝对值,或者可以是循环移位相减操作过程中得到的结果。
循环控制装置根据各个循环移位相减阶段,为移位器选择输入的移位相减的操作数。
当在第0次循环移位相减阶段,需要进行移位相减的操作数,分别是被除数的绝对值和除数的绝对值,其中,移位后的被除数的绝对值输出到减法器作为被减数;移位后的除数的绝对值作为减数。
当在非第0次循环移位相减阶段,需要进行移位相减的操作数,是上一次循环移位相减操作得到,并经过修正后的结果,即修正结果。
所述需要移位的位数为:
1)当在第0次循环移位相减阶段,只对被除数绝对值和除数绝对值进行移位相减时,需要移动的位数为前导0计数器的值;
2)当在非第0次循环移位相减阶段,对减法器输出的结果进行移位时,需要移动的位数为上一次循环移位相减阶段中标示器中标示值、单次最大移动位数和步长值三者中的最小值。
所述单次最大移动位数是移位器移位操作最大移位的位数,例如,在32位除法操作中,一次需要移位的最大位数为32。
较佳地,所述步骤S220包括下列步骤:
步骤S221,标示器标示出当前循环执行阶段,并以前导0计数器计算得到除数的前导0个数为标示初始值,以步长器中的步长循环控制移位相减执行,并将标示初始值和步长输出给移位器;
步骤S222,移位器根据需要移位的位数,把输入的操作数左移,并将移位后的操作数低位补0,将移位后的操作数输出给减法器进行减法操作。
在第0次移位相减操作阶段,前导0计数器计算出被除数需要移位的位数,传输给移位器,同时,循环控制装置也将被除数的绝对值传输给移位器,移位器根据前导0计数器计算出的被除数需要移位的位数,对被除数的绝对值进行左移后,将移位后的被除数绝对值低位补0,传输给减法器,作为被减数;类似地,移位器根据前导0计数器计算出的除数需要移位的位数,对除数的绝对值进行左移后,将移位后的除数绝对值低位补0,传输给减法器,作为减数。
在非第0次移位相减操作阶段,前导0计数器计算出前一次移位相减操作的结果的前导0个数,得到其需要移位的位数,传输给移位器,同时,循环控制装置也将该前一次移位相减操作的结果传输给移位器,移位器根据前导0计数器计算出的该结果需要移位的位数,对该结果进行左移后,将移位后的该结果低位补0,传输给减法器,作为被减数。
步骤S230,减法器将移位后的操作数进行减法操作,根据标示器的标示值,在第0次循环移位相减操作时,将移位后的被除数绝对值作为被减数,和移位后的除数绝对值相减;并记录移位后除数绝对值,在循环结束之前,该移位后除数绝对值将一直作为减数使用;在非第0次循环移位相减操作时,将移位后的上一次循环移位相减操作结果作为被减数,和移位后的除数绝对值,以步长取相应高位相减;将减法操作后的相减的结果输出;
步骤S240,循环控制装置的修正器判断,如果减法操作的结果为正数,则将减法操作的结果左移一位,低位补1后输出作为下一次循环移位相减操作的被减数;否则,将减法操作的结果左移一位,低位补0后输出作为下一次循环移位相减操作的被减数;
步骤S250,判断装置根据前导0计数器的值,除法操作的最大循环次数以及标示器的标示值,判断当前的循环阶段是否结束;
若循环已经结束,则进入结果处理阶段步骤S300;若循环没有结束,则循环移位相减装置根据前导0计数器和减法操作输出的结果,转到步骤S210,进行下一次循环移位相减操作。
所述步骤S250包括下列步骤:
步骤S251,如果前导0计数器的值大于除法操作的最大循环次数减去本次循环移位相减操作中标示器的标示值的差,则不需要再进行下一次循环移位相减,转到步骤S300进行结果处理;
步骤S252,如果前导0计数器的值小于除法操作的最大循环次数减去本次循环移位相减操作中标示器的标示值的差,则转到步骤S210,进行下一次循环移位相减操作。
在结果处理阶段,所述步骤S300包括如下步骤:
步骤S310,当除数为0时,报错返回;
步骤S320,根据被除数绝对值、除数绝对值和标识符,判断得出除法运算的商和余数并输出。
所述步骤S320包括如下步骤:
步骤S321,当被除数绝对值小于除数绝对值时,直接取商为0;
如果该除法为无符号除法,或者该除法为有符号除法,并且被除数和除数同号,即符号相同时,则余数为被除数绝对值;否则,如果该除法为有符号除法,并且被除数和除数异号,即符号不相同,则余数为被除数的绝对值的补码;
步骤322,当除数绝对值等于除数绝对值时,余数为0;当除法运算为无符号除法运算,或者该除法为有符号除法、并且被除数和除数符号相同时,则商为1;否则商为-1;
步骤S323,如果被除数的绝对值大于除数绝对值的话,如果该除法为无符号除法,或者该除法为有符号除法,并且被除数和除数同号,即符号相同时,则除法操作的商为减法器输出的减法操作的结果,左移剩余的最大可移位数后,从最低位起取最大循环次数位的值。如果循环相减步骤S230所得到的差为正数,则此正数为余数,否则余数为循环相减步骤S230所得到的差加上除数绝对值。如果该除法操作为有符号除法并且被除数为负数,则还需要对得到的余数进行求补数操作得到最终的余数。
否则,如果该除法为有符号除法,并且被除数和除数异号,即符号不相同,则除法操作的商为减法器输出的减法操作的结果,左移剩余的最大可移位数,从最低位起取最大循环次数位后取补的值,如果循环相减步骤S230所得到的差为正数,则此正数为余数,否则余数为循环相减步骤S230所得到的差加上除数绝对值。如果该除法操作为有符号除法并且被除数为负数,则还需要对得到的余数进行求补数操作得到最终的余数。
下面进一步列举四个具体的实施例子
例1.本例中,设所进行的除法操作是32位无符号定点除法,被除数和除数分别为32’bit:00000000_00000000_11111111_00000000,32’bit:00000000_00000000_00000000_00000000。
下面将对具体的方法步骤进行描述:
11)预处理阶段。
首先判定除数为0,该除法操作为无效操作。因此除法操作进入结果处理阶段。
12)结果处理阶段。
结果处理部件接收判0部件的输入,由于当前除法操作为除数为0的无效操作,因此根据设计的要求采取一系列处理措施(例如,报除数为0的警告等)后,完成除法操作。
例2.本例中,设所进行的除法操作是32位无符号定点除法,被除数和除数分别为32’bit:00000000_00000000_11111111_00000000,32’bit:00000000_00001111_00000000_00000000。
下面将对具体的算法步骤进行描述:
21)预处理阶段。
首先判定除数不为0,该除法操作为有效操作;因为该除法操作是无符号运算,因此不需要对被除数和除数求绝对值;经过比较,被除数小于除数,因此除法操作进入结果处理阶段。
22)结果处理阶段。
结果处理部件接收预处理部件的输入,由于被除数的绝对值小于除数的绝对值,因此可以得到商值为0,余数直接取被除数的绝对值,即32’bit:00000000_00000000_11111111_00000000,至此该除法操作完成。
例3.本例中,设所进行的除法操作是32位无符号定点除法,被除数和除数分别为32’bit:00000000_00000000_11111111_00000000,32’bit:00000000_00000000_00000000_00001111。
按照现有的传统基于减法和移位的除法操作,每次只左移一位,然后进行减法运算,上面这个除法操作需要32次循环操作。现有技术对基于减法和移位的除法算法的优化,可以使上面的运算减少16次循环,而按照本发明提出的新方法,在预处理后,只需要两次循环操作就完成了。下面将对具体的方法法步骤进行描述:
31)预处理阶段。
首先判定除数不为0,该除法操作为有效操作;因为该除法操作是无符号运算,因此不需要对被除数和除数求绝对值;经过比较,被除数大于除数,因此除法操作进入循环移位相减阶段。
32)循环移位相减阶段。
321)第一次循环移位相减:
首先计算被除数的前导0个数为16,因此将被除数左移16位;然后计算除数的前导0个数为28,因此除数左移28位;同时置循环控制器的标示器初始值为16。
移位后得到的被减数为
32’bit:11111111_00000000_00000000_00000000,减数为32’bit:11110000_00000000_00000000_00000000;
两者以步长4,高4位相减得到的结果为32’bit:00001111_00000000_00000000_00000000,因为减法结果为正数,因此将1补入到减法结果最后一位组成33’bit:00001111_00000000_00000000_000000001,记录减数的高4位作为减法器的减数4’bit:1111。
置循环控制器的标示器值为原标示器值16+步长值4=20;
前导0计数器计算减法结果的前导0个数为4,由于32位除法操作的最大循环次数为32,而标示器的值为20,因此剩余的最大可移位数为12,而因为4小于12,所以再循环移位相减;
322)第二次循环移位相减;
将所述33’bit的减法结果左移步长4位,并在移位后补0,得到33’bit:11110000_00000000_00000000_000010000,然后用这个移位后的结果的高4位减去减数4’bit:1111,得到结果为33’bit:00000000_00000000_00000000_000010000,因为减法的结果为正数,因此将1补入到减法结果最后一位组成得到结果为33’bit:00000000_00000000_00000000_000010001。
置循环控制器的标示器值为原标示器值20+步长值4=24;
前导0计数器计算得到被减数的前导0个数为28,由于32位除法操作的最大循环次数为32,而标示器的值为24,因此剩余的最大可移位数为8;又因为28大于8,因为此时被减数剩余的有效位数,即剩余的前8位,都为0(28>8),因此可以认为此时为整除,则不需要再循环移位相减,所以至此可以认为除法操作的结果是整除,此时被减数剩余位数为0,剩余的商也一定为0,余数为0。
33)结果处理阶段。
将上一步得到的结果33’bit:00000000_00000000_00000000_000010001左移剩余的最大可移位数8位后,取低32位32’bit:0000000_00000000_000010001_00000000为商,余数为0,至此该除法操作完成。
综上所述,此次运算包括对被除数和除数的移位各一次,减法两次,对减法结果移位两次,相对以往的算法,大大提高了效率。
例4.本例中,设所进行的除法操作是32位有符号定点除法,被除数和除数分别为32’bit:00000000_00000000_11111111_00000000,32’bit:11111111_11111111_11111111_11110001。
按照现有的传统基于减法和移位的除法操作,每次只左移一位,然后进行减法运算,则这个除法操作需要32次循环操作。现有技术对基于减法和移位的除法算法的优化可以使该运算减少16次循环,而按照本发明提出的新方法,在预处理后,只需要两次循环操作就完成了。下面将对具体的算法步骤进行描述:
41)预处理阶段。
首先判定除数不为0,该除法操作为有效操作;因为该除法操作是有符号运算,因此需要对被除数和除数求绝对值,被除数为正数,其被除数绝对值dividend是32’bit:00000000_00000000_11111111_00000000,除数为负数,经过计算操作,其绝对值divisor为32’bit:00000000_00000000_00000000_00001111;经过比较,被除数的绝对值dividend大于除数的绝对值divisor,因此除法操作进入循环移位相减阶段;同时将被除数和除数的符号位以及标识符传递给结果处理装置。
42)循环移位相减阶段。
421)第一次循环移位相减:
首先计算被除数绝对值dividend的前导0个数为16,因此前导0计数器的值为16位;然后计算除数绝对值divisor的前导0个数为28,前导0计数器的值为28;将标示器的初始值置为被除数前导0的个数值16。
移位器根据前导0计数器的值进行移位,移位后得到的被减数为32’bit:11111111_00000000_00000000_00000000,减数为32’bit:11110000_00000000_00000000_00000000,两者以步长4,高4位相减得到的结果为32’bit:00001111_00000000_00000000_00000000,因为相减后的减法结果为正数,因此将1补入到减法结果最后一位组成33’bit:00001111_00000000_00000000_000000001。记录减数的高4位作为减法器的减数4’bit:1111。
置循环控制器的计数器值为20。
前导0计数器计算减法结果的前导0个数为4,由于32位除法操作的最大循环次数为32,而标示器的值为20,因此剩余的最大可移位数为12,而因为4小于12,所以再循环移位相减;
422)第二次循环移位相减:
将所述33’bit的减法结果左移步长4位,并在移位后补0,得到33’bit:11110000_00000000_00000000_000010000,然后用这个移位后的结果的高4位减去减数4’bit:1111,得到结果为33’bit:00000000_00000000_00000000_000010000,因为减法的结果为正数,因此将1补入到减法结果最后一位组成33’bit:00000000_00000000_00000000_000010001。
置循环控制器的计数器值为24。
上步减法操作的前导0个数为28,但是由于32位除法操作的最大循环次数为32,而循环控制计数器的值为24,因此剩余的最大可移位数为8。又因为28大于8,即被减数剩余的位数为0,则不需要再循环移位相减,所以至此可以认为除法操作的结果是整除,(已整除)余数为0。
43)结果处理阶段。
将上一步得到的结果33’bit:00000000_00000000_00000000_000010001左移剩余的最大可移位数8位后,取低32位32’bit:0000000_00000000_000010001_00000000为商的绝对值。根据标识符判断该除法为有符号除法,且被除数和除数异号,得该除法操作的结果为其绝对值的补码,即32’bit:11111111_11111111_111101111_00000000,余数为0,至此该除法操作完成。
综上所述,此次运算包括对被除数和除数的移位各一次,减法两次,对减法结果移位两次,相对以往的算法,大大提高了效率。
本发明的定点除法器及其运算处理方法,可以动态的进行移位操作,通过复用移位器和减法器等面积较大的部件,跟以往的算法相比,显著的减少了移位和减法的次数,从而大大提高了除法器的性能的同时,只增加了较小的面积和功耗的开销。
最后应当说明的是,很显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型。