硬件除法器原理_[ECC&RSA]除法器

 在ECC和RSA算法硬件实现(Barrett约减和Montgomery约减)中,需要提前计算某些参数,会应用到除法器。

01

传统除法器

传统除法器的设计非常单纯:一、先取除数和被除数的正负关系,然后正值化被除数。传统除法器因为需要递减的关系,所以除数就取负值的补码,方便操作。二、被除数递减与除数,每一次的递减,商数递增。三、直到被除数小于除数,递减过程剩下的是余数。四、输出的结果根据除数和被除数的正负关系。传统的除法器设计简单,但是如果除数比较大,被除数比较小,计算起来就会占用更多的时钟周期。

02

移位相减除法器

移位相减除法器的优势在于,计算时间只与除数、被除数位宽有关,与除数和被除数大小无关。

03

移位相减除法器实现

对于32的无符号除法,被除数a除以除数b,他们的商和余数一定不会超过32位。首先将a转换成高32位为0,低32位为a的temp_a。把b转换成高32位为b,低32位为0的temp_b。在每个周期开始时,先将temp_a左移一位,末尾补0,然后与b比较,是否大于b,是则temp_a减去temp_b将且加上1,否则继续往下执行。上面的移位、比较和减法(视具体情况而定)要执行32次,执行结束后temp_a的高32位即为余数,低32位即为商。

04

移位相减除法器原理

假设4bit的两数相除 a/b,商和余数最多只有4位 (假设1101/0010也就是13除以2得6余1)。我们先自己做二进制除法,则首先看a的MSB,若比除数小则看前两位,大则减除数,然后看余数,以此类推直到最后看到LSB;而上述算法道理一样,a左移进前四位目的就在于从a本身的MSB开始看起,移4次则是看到LSB为止,期间若比除数大,则减去除数,注意减完以后正是此时所剩的余数。而商呢则加到了这个数的末尾,因为只要比除数大,商就是1,而商0则是直接左移了,因为会自动补0。这里比较巧因为商可以随此时的a继续左移,然后新的商会继续加到末尾。经过比对会发现移4位后左右两边分别就是余数和商。

硬件除法器原理_[ECC&RSA]除法器_第1张图片

Something else:

除数Divisor,被除数Dividend,商数Quotient,余数Reminder。

部分转载自:

http://xilinx.eetrend.com/d6-xilinx/forum/2013-11/6071.html

https://wenku.baidu.com/view/6fdbfa0f52ea551810a687c2.html

你可能感兴趣的:(硬件除法器原理)