VHDL-Prozeduraufruf aus einer anderen Prozedur

(Firma: Angestellt) #2085610
Lesenswert?

Hallo

Ist es möglich eine Prozedur aus einer anderen Prozedur heraus 
aufzurufen?

Es handelt sich hierbei nur um eine Simulation und muss deshalb nicht 
synthesefähig sein.

Im Moment sieht es bei mir wie folgt aus:
1
procedure Daten_anlegen
2
(
3
signal Daten_Telegramm_1: IN  std_logic_vector (gSPI_Breite - 1 downto 0);
4
signal CRC_Telegramm_1  : IN  std_logic_vector (gSPI_Breite - 1 downto 0);
5
signal Daten_Telegramm_2: IN  std_logic_vector (gSPI_Breite - 1 downto 0);
6
signal CRC_Telegramm_2  : IN  std_logic_vector (gSPI_Breite - 1 downto 0);
7
signal poSPI_CLK:  IN    STD_LOGIC;  -- SPI_Clk
8
signal poSPI_CS_AL  :  out    STD_LOGIC;      -- SPI CS (Active Low)
9
signal poSPI_MOSI  :  out    STD_LOGIC;      -- SPI MOSI
10
signal poSPI_MISO   :  OUT    STD_LOGIC      -- SPI MISO
11
) is
12

13
begin
14

15
SPI_Bus_anlegen (SPI_Daten => Daten_Telegramm_1, poSPI_CLK=>poSPI_CLK, poSPI_CS_AL=>poSPI_CS_AL, poSPI_MOSI=> poSPI_MOSI, poSPI_MISO=>poSPI_MISO);
16
SPI_Bus_anlegen (SPI_Daten => CRC_Telegramm_1, poSPI_CLK=>poSPI_CLK, poSPI_CS_AL=>poSPI_CS_AL, poSPI_MOSI=> poSPI_MOSI, poSPI_MISO=>poSPI_MISO);
17
SPI_Bus_anlegen (SPI_Daten => Daten_Telegramm_2, poSPI_CLK=>poSPI_CLK, poSPI_CS_AL=>poSPI_CS_AL, poSPI_MOSI=> poSPI_MOSI, poSPI_MISO=>poSPI_MISO);
18
SPI_Bus_anlegen (SPI_Daten => CRC_Telegramm_2, poSPI_CLK=>poSPI_CLK, poSPI_CS_AL=>poSPI_CS_AL, poSPI_MOSI=> poSPI_MOSI, poSPI_MISO=>poSPI_MISO);
19
end Daten_anlegen;
20

21

22
procedure SPI_Bus_anlegen
23
(
24
signal SPI_Daten :   IN    std_logic_vector(gSPI_Breite - 1 downto 0);
25
signal poSPI_CLK:  IN    STD_LOGIC;  -- SPI_Clk
26
signal poSPI_CS_AL  :  out    STD_LOGIC;      -- SPI CS (Active Low)
27
signal poSPI_MOSI  :  out    STD_LOGIC;      -- SPI MOSI
28
signal poSPI_MISO   :  OUT    STD_LOGIC      -- SPI MISO
29
) is
30
                                                                       
31

32
begin
33
  wait until falling_edge(poSPI_CLK);
34
  poSPI_CS_AL <= '1';
35
  wait until falling_edge(poSPI_CLK);
36
  poSPI_CS_AL <= '0';
37
  poSPI_MOSI <= SPI_Daten(7);
38
  wait until rising_edge(poSPI_CLK);
39
  wait until falling_edge(poSPI_CLK);
40
  poSPI_MOSI <= SPI_Daten(6);
41
  wait until rising_edge(poSPI_CLK);
42
  wait until falling_edge(poSPI_CLK);
43
  poSPI_MOSI <= SPI_Daten(5);
44
  wait until rising_edge(poSPI_CLK);
45
  wait until falling_edge(poSPI_CLK);
46
  poSPI_MOSI <= SPI_Daten(4);
47
  wait until rising_edge(poSPI_CLK);
48
  wait until falling_edge(poSPI_CLK);
49
  poSPI_MOSI <= SPI_Daten(3);
50
  wait until rising_edge(poSPI_CLK);
51
  wait until falling_edge(poSPI_CLK);
52
  poSPI_MOSI <= SPI_Daten(2);
53
  wait until rising_edge(poSPI_CLK);
54
  wait until falling_edge(poSPI_CLK);
55
  poSPI_MOSI <= SPI_Daten(1);
56
  wait until rising_edge(poSPI_CLK);
57
  wait until falling_edge(poSPI_CLK);
58
  poSPI_MOSI <= SPI_Daten(0);
59
  wait until rising_edge(poSPI_CLK);
60
  poSPI_CS_AL <= '1';          
61
  wait until rising_edge(poSPI_CLK);
62
end SPI_Bus_anlegen ;

Im Moment meckert mein EDA: 'Unknown identifier "SPI_Bus_anlegen"'...

Natürlich könnte ich alles auch in eine Proz. packen. Ich möchte es nur 
wissen.

Über eine kurze aAntwort freue ich mich sehr.

VG


Martin

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren