Hallo Forum,
ich bin VHDL-Einsteiger und habe gerade ein Verständnisproblem bei einem 
Zähler. Ich will einen Up-Down Counter realisieren den ich als 
Integrator nutze. Mein Code sieht so aus:
| 1 | library IEEE;
 | 
| 2 | use IEEE.STD_LOGIC_1164.ALL;
 | 
| 3 | --use IEEE.STD_LOGIC_ARITH.ALL;
 | 
| 4 | --use IEEE.STD_LOGIC_UNSIGNED.ALL;
 | 
| 5 | use IEEE.numeric_std.all;
 | 
| 6 | 
 | 
| 7 | entity Integrator is
 | 
| 8 |    Generic (N: integer := 14);
 | 
| 9 |     Port ( updown : in  STD_LOGIC;
 | 
| 10 |            reset : in  STD_LOGIC;
 | 
| 11 |            count : in  STD_LOGIC;
 | 
| 12 |            integrator : out  STD_LOGIC_VECTOR (13 downto 0));
 | 
| 13 | end Integrator;
 | 
| 14 | 
 | 
| 15 | architecture arch of Integrator is
 | 
| 16 | 
 | 
| 17 | signal r_reg : unsigned(N-1 downto 0);
 | 
| 18 | signal r_next : unsigned(N-1 downto 0);
 | 
| 19 | 
 | 
| 20 | begin
 | 
| 21 | --register
 | 
| 22 |   process(count,reset)
 | 
| 23 |     begin
 | 
| 24 |       if(reset='1')then
 | 
| 25 |         r_reg <= (others=>'0');
 | 
| 26 |       elsif(count'event and count = '1')then
 | 
| 27 |         r_reg <= r_next;
 | 
| 28 |       end if;
 | 
| 29 |   end process;  
 | 
| 30 | 
 | 
| 31 | --next state logic
 | 
| 32 | r_next <= r_reg+1 when updown = '1' else
 | 
| 33 | r_next <= r_reg-1 when updown = '0' else
 | 
| 34 | r_reg;  
 | 
| 35 | 
 | 
| 36 | --output logic
 | 
| 37 | integrator <=std_logic_vector(r_reg);
 | 
| 38 | 
 | 
| 39 | end arch;
 | 
Ich nutze Xilinx ISE und als Hardware ein XC95144XL CPLD. Beim 
Synthetisieren bekomme ich immer folgende Fehlermeldung:
"Type of r_next is incompatible with type of <=."
Was kann das bedeuten? Ich wundere mich insbesondere deshalb, da der 
Quellcode aus einem Lehrbuch stammt... kann mir jemand erklären was ich 
falsch mache?
vielen Dank und viele Grüße,
Urs