基于迭代单元的恢复余数开方器
基本算法
该开方器的算法与“手算”(以前并不知道开方还有这种手算的方法)算法相似,使用迭代解决,文字描述如下
将0为余数的初值a,0作为结果初值b
将被开方数前两位{I(...若前两位大,则{I(2m + 1),I(2m)} - 01为输出余数(a(m)),输出结果1(b(m)),否则{I(2m + 1),I(2m)}为输出余数(a(m)),输出结果0(b(m))
将被开方数的从高位数第...3,4位{I(2m - 1),I(2m - 2)}取出,比较{a(m),I(2m - 1),I(2m - 2)}和{b(m),2'b01}的大小,若前一项大,则输出余数a(m - 1)为前一项减后一项,...直到计算完被开方数结束
迭代单元
算法
迭代单元的算法比较简单,描述如下:
组合输入余数和当前开方数的两位{b,I(i),I(i - 1)},组合输入结果和01为{a,2'b01}
比较大小,若组合余数大则输出余数为组合余数减去组合结果...,等待完成,完成后取结果和余数看是否能恢复出正确的输入
module tb_square (
);
parameter WIDTH = 4;
logic clk; // Clock
logic