port map schlägt "Illegal sequential statement" fehler aus bei VHDL

Gast #4598749
Lesenswert?

hey, hier Robert.

ich nutze ModelSim Altera Starter Edition 3.0 und möchte diese 
Funktionalität:

library ieee;

use ieee.std_logic_1164.all;

Entity D_L is

PORT(  CLK: IN std_logic;
  D: IN std_logic;
  QP: OUT std_logic;
  QN: OUT std_logic);
END D_L;

Architecture VERHALTEN of D_L is
Begin
  PROCESS(CLK,D)
  BEGIN
    IF CLK = '1' THEN QP <= D AFTER 50 ps;
    END IF;
    IF CLK = '1' THEN QN <= NOT D AFTER 50 ps;
    END IF;
  END PROCESS;
END VERHALTEN;


hier nochmal benutzen:


library ieee;

use ieee.std_logic_1164.all;

Entity D_FF is

PORT(  CLK: IN std_logic;
  D: IN std_logic;
  QP: OUT std_logic;
  QN: OUT std_logic);
END D_FF;

Architecture VERHALTEN of D_FF is

  COMPONENT D_L
  PORT (  CLK: IN std_logic;
    D: IN std_logic;
    QP: OUT std_logic;
    QN: OUT std_logic);
  END COMPONENT;

Begin
  PROCESS(CLK,D)
  BEGIN
    eins: D_L port map (CLK,D,QP,QN);
  END PROCESS;
END VERHALTEN;

der compiler sagt dazu:

** Error: C:/altera/14.1/D_FF.vhd(25): Illegal sequential statement.
** Error: C:/altera/14.1/D_FF.vhd(27): VHDL Compiler exiting

zum einen würde ich gerne wissen was ich falsch mache, und zum anderen, 
wie man so ein "Funktionsaufruf" bei VHDL nennt.
Ach so beide Daten sind natürlich im gleichen Projekt angelegt.
Gast #4598767
Lesenswert?

Die Instanziierung einer Entity darf nicht innerhalb eines Prozesses 
erfolgen, somit probiere mal das hier:
1
Architecture VERHALTEN of D_FF is
2
  COMPONENT D_L
3
  PORT (  CLK: IN std_logic;
4
    D: IN std_logic;
5
    QP: OUT std_logic;
6
    QN: OUT std_logic);
7
  END COMPONENT;
8
Begin
9
    eins: D_L port map (CLK,D,QP,QN);
10
END VERHALTEN;

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