RISC-V MCU中文社区

【分享】 基于 SRT4 的整数除法器设计与优化

发表于 全国大学生集成电路创新创业大赛 2023-05-28 18:18:38
0
2047
0

报名编号:CICC1740 团队名称:小型三极管
保留余数法:
保留余数法是一种数位迭代法,其实质是通过加减法实现除法运算。该算法从商的最高有效位开始,逐位进行试探性的减法,同时使用加法来保留余数。在循环中,加法和减法的操作方式取决于上一轮部分余数 Rj 的符号与被除数的符号是否一致。如果一致,则做减法,否则做加法,舍去符号位的进位。每轮操作得到的部分余数 R 左移一位,并进行减法。如果试探减法成功,则商位为“1”,继续进行循环操作直至结束。
Goldsmidit 算法:
这种类型的算法被公认为是目前性能最佳的算法,其核心思想可以用下面的公式表达:
图片alt
在这里,所使用的算法是函数迭代,其中被除数为D,除数为d,商为Q=D/d,分子为Di,分母为di,迭代因子为Fi[7]。通过数学方法,将除法运算转换为乘法运算,并迭代直到分子的值接近商值Q,分母接近1。然而,这种算法的缺点也非常明显,需要额外设计乘法器,这会影响乘法指令的周期,并且还需要对得到的结果进行额外的处理。
SRT 算法:
这种算法采用数值循环的基本思想,结构简单。其基本概念是,通过一次求商运算可以得到固定位数的商值,同时通过循环运算得到准商和余数值[8]。SRT算法通常采用查询基于Radix的查找表的方法来获得结果,常见的SRT算法有SRT4和SRT16。整个运算过程由加减法和移位操作完成,可以用以下方式描述:
图片alt
商选择函数为:
图片alt
最终结果为:
图片alt
在这个算法中,Rj代表迭代循环j次后的部分余数值,d代表除数,D代表被除数,q代表商位。该算法的运算周期取决于不同基数的时钟计算,可以用公式n=log2 r来表示,其中n代表运算过程中产生的商位数,r为设定的基数[9]。例如,基数为2的算法在每次迭代中得到1位商位,基数为4的算法得到2位商位,基数为16的算法得到4位商位,基数为64的算法得到6位商位,以此完成多次循环迭代运算。

喜欢0
用户评论
Damon_SCUT

Damon_SCUT 实名认证

知行合一

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板