clr_dr <= '0';
load_dr <= '0';
init_rem <= '0';
load_rem <= '0';
shift_rem <= '0';
IF count2 = 0 THEN
load_dr <= '1';
init_rem <= '1';
ELSIF count2=1 THEN --minus divisor
add_op <='0';
load_rem <='1';
ELSIF count2=2 THEN --restore dividend IF remainder(2*k+1)='0' THEN
add_op<='0';
load_rem<='0'; ELSE
add_op<='1';
load_rem<='1';
END IF;
ELSE --shift left and set the rem0
shift_rem <= '1';
END IF;
END PROCESS;
PROCESS(finish)
BEGIN
IF finish='1' THEN
remainder_r <='0' & remainder((2*k+1) DOWNTO (k+2)); quotient <= remainder(k DOWNTO 0);
ELSE
quotient <= (OTHERS => '0');
remainder_r <= (OTHERS => '0');
END IF;
END PROCESS;
END structural;