calc_done_int <= '0';
calc_error_int <= '0';
--div
- dividend_msb_int <= 0;
- laengediv_int <= 0;
+ dividend_msb_int <= (others => '0');
+ laengediv_int <= (others => '0');
quo_int <= (others => '0');
aktdiv_int <= (others => '0');
op1_int <= (others => '0');
done_intern <= '0';
error_intern <= '0';
-- default fuer div
- dividend_msb_next <= 0;
- laengediv_next <= 0;
+ dividend_msb_next <= (others => '0');
+ laengediv_next <= (others => '0');
quo_next <= (others => '0');
aktdiv_int_next <= aktdiv_int;
op1_next <= (others => '0');
op2_var := (not op2_var) + 1;
end if;
- dividend_msb_var := find_msb(op1_var)-1;
- laengediv_var := find_msb(op2_var)-1;
+ dividend_msb_var := divinteger(find_msb(std_logic_vector(op1_var)))-1;
+ laengediv_var := divinteger(find_msb(std_logic_vector(op2_var)))-1;
- aktdiv_int_next <= op1_var srl (dividend_msb_var - laengediv_var + 1);
+ aktdiv_int_next <= op1_var srl to_integer(dividend_msb_var - laengediv_var + 1);
-- anmerkung: xst (xilinx) kann folgende zeile nicht uebersetzen
-- > if op1 = to_signed(-2147483648, CBITS) then
if divtmp > 0 then
aktdiv_int_var := aktdiv_int sll 1;
- aktdiv_int_var(0) := op1_int(divtmp - 1);
+ aktdiv_int_var(0) := op1_int(to_integer(divtmp) - 1);
quo_var := quo_int sll 1;
if aktdiv_int_var >= op2_int then