Hallo,
zur Zeit hab ich ein Problem mit der Übergabe eines eigenen Typen an
eine Prozedur welche in einem Paket abgelegt ist.
Wenn ich auf die Übergabe von "PROC_TEST => TEST" beim Prozeduraufruf
verzichte läuft alles. Sobald ich den Code wie unten beschrieben
kompiliere kommt (Beim Kompilieren der Architektur) folgender Fehler: No
feasible entries for subprogram "and_proc1". Bekannt gemacht ist
"MY_TYPE" ja im Paket und der Übergabetyp ist ja auch der selbe, wo
liegt also das Problem?
1 | -- Paket
|
2 |
|
3 | LIBRARY ieee;
|
4 | USE ieee.std_logic_1164.ALL;
|
5 | use IEEE.NUMERIC_STD.ALL;
|
6 |
|
7 | package TEST_PAKET is
|
8 |
|
9 | type MY_TYPE is (A, B, C);
|
10 |
|
11 | procedure AND_PROC1(signal IN1 : in std_logic;
|
12 | signal IN2 : in std_logic;
|
13 | signal PROC_TEST : in MY_TYPE;
|
14 | signal OUT1 : out std_logic);
|
15 |
|
16 | end TEST_PAKET;
|
17 |
|
18 | package body TEST_PAKET is
|
19 |
|
20 | procedure AND_PROC1(signal IN1 : in std_logic;
|
21 | signal IN2 : in std_logic;
|
22 | signal PROC_TEST : in MY_TYPE;
|
23 | signal OUT1 : out std_logic)is
|
24 | begin
|
25 | if (IN1 = '1' and IN2 = '1') then
|
26 | OUT1<='1';
|
27 | else
|
28 | OUT1<='0';
|
29 | end if;
|
30 | end procedure;
|
31 |
|
32 | end TEST_PAKET;
|
33 |
|
34 |
|
35 |
|
36 | -- Modul
|
37 |
|
38 | library IEEE;
|
39 | use IEEE.STD_LOGIC_1164.ALL;
|
40 | use IEEE.STD_LOGIC_ARITH.ALL;
|
41 | use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
42 | library ssy;
|
43 | use ssy.TEST_PAKET.all;
|
44 |
|
45 |
|
46 | entity AND_ent is
|
47 |
|
48 | port ( CLK : in std_logic;
|
49 | and_in1 :in std_logic;
|
50 | and_in2 : in std_logic;
|
51 | and_out : out std_logic);
|
52 | end AND_ent;
|
53 |
|
54 | architecture AND_arch of AND_ent is
|
55 |
|
56 | type MY_TYPE is (A, B, C);
|
57 | signal TEST : MY_TYPE;
|
58 |
|
59 | begin
|
60 |
|
61 | AND_PROC1(IN1 => and_in1,
|
62 | IN2 => and_in2,
|
63 | PROC_TEST => TEST,
|
64 | OUT1 => and_out);
|
65 |
|
66 | end AND_arch;
|