0 引言
在四则运算中,除法最为复杂,在时间上和空间上的开销都比较大。因此很多算法都极力避免进行除法运算,或者采用其他的方案来代替除法运算。但是,除法运算作为基本的四则运算之一,在很多情况下依旧是不可避免的。近年来,陆续出现了很多种除法实现算法,如恢复余数算法(Restoring)、不恢复余数算法(Non-Restoring)、SRT算法、倒数算法和牛顿迭代法等。但是大部分算法都是基于整数除法或者浮点小数除法的,并不太适合进行定点小数计算。下面来简单地介绍一下几种常见除法算法、整数除法与定点小数除法的差异和一种简单的定点小数除法实现。
1 常见的除法算法
恢复余数算法
恢复余数算法是一种基于移位和减法的算法,比较适合FPGA或ASIC实现。恢复余数算法不能直接进行有符号数的补码运算,而只能采用原码进行运算。基于恢复余数算法的无符号除法器具有如下特征:
1) 各参数的字长:被除数为2nbit,除数,商和余数均为nbit;
2) 被除数的高nbit必须小于除数;
3) 算法主要迭代n次。
该算法的基本运算单元如下图所示:
恢复余数算法是一种整数的除法,在计算商的同时还能获得余数,是一种无误差的除法实现方式。
不恢复余数算法
恢复余数算法中的“恢复”指的是,如果之前的计算中余数出现了负值&#