+ -- anmerkung: xst (xilinx) kann folgende zeile nicht uebersetzen
+ -- > if op1 = to_signed(-2147483648, CBITS) then
+ -- darum folgende schreibweise ->
+ if op1 = x"80000000" then
+ if op2 = to_signed(10,CBITS) then
+ -- so ziemlich das boeseste was passieren kann
+ -- deswegen, weil divisor und dividend in positive
+ -- zahlen umgewandelt werden.
+ -- daher: hardcodiertes ergebnis fuer division durch 10 (fuer parser)
+ op3_next <= to_signed(-214748364,CBITS);
+ opM_next <= to_signed(8,CBITS);
+ else
+ -- sonst fehler..
+ state_next <= SERROR;
+ end if;
+ elsif (op1_var < op2_var) then
+ -- => man braucht nix grossartiges rechnen
+ op3_next <= to_signed(0,CBITS);
+ opM_next <= op1_var;
+ else
+ -- spannend! signale initialisieren fuer den naechsten schritt
+ state_next <= SDIV_SHIFT_TO_MSB;
+ laengediv_next <= (others => '0');
+ quo_next <= (others => '0');
+ op1_next <= op1_var;
+ op2_next <= op2_var;
+ sign_next <= op1(CBITS-1) xor op2(CBITS-1);
+ end if;