除法器实验报告 下载本文

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;