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