Forum: FPGA, VHDL & Co. VHDL - configuration (Anfänger)


von Hans (Gast)


Lesenswert?

Hallo!

Was VHDL angeht bin ich leider ein ziemlicher Anfänger und habe daher 
ein Problem mit der Simulation unter ISE 9.1. Bei einem sehr simplen 
Beispiel habe ich das Problem, dass die configuration bei der Simultion 
nicht beachtet wird. D.h. die für die Komponente genannte Entity und 
Architektur wird nicht eingesetzt und daher die Warnung "No entity is 
bound for inst" ausgegeben...

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity FullAdder is
    Port ( InA : in  STD_LOGIC;
           InB : in  STD_LOGIC;
           InCarry : in  STD_LOGIC;
           Sum : out  STD_LOGIC;
           Carry : out  STD_LOGIC);
end FullAdder;

architecture Structural of FullAdder is

  component HalfAdd
    port (I_a, I_b : in STD_LOGIC;
        O_s, O_c : out STD_LOGIC);
  end component;

  signal Carry1 : STD_LOGIC;
  signal Carry2 : std_logic;
  signal Sum1    : STD_LOGIC;

begin
  HalfAdd1 : HalfAdd port map (InA, InB, Sum1, Carry1);
  HalfAdd2 : HalfAdd port map (Sum1, InCarry, Sum, Carry2);
  Carry <= Carry1 or Carry2;
end Structural;

configuration HalfAdd_cfg of FullAdder is

  for Structural
    for all: HalfAdd
      use entity work.HalfAdder(Behavioral)
      port map (I_a, I_b, O_s, O_c);
    end for;
  end for;

end HalfAdd_cfg;

von Jan M. (mueschel)


Lesenswert?

Hast du die entsprechende Datei mit dem Halbaddierer auch in dein 
Projekt hinzugefügt?
In der Regel kannst du dir die configuration dann auch sparen, wenn nur 
genau eine entity mit dem jeweiligen Namen in deinem Projekt vorhanden 
ist.

von Hans (Gast)


Lesenswert?

Danke für den Hinweis. Nachdem ich die configuration eliminiert habe und 
die Kompenente genauso wie die entity (HalfAdder) benannt habe, läuft es 
problemlos.

Allerdings war die Datei mit der entsprechenden entity und architecture 
bereits Teil des Projekts. Daher wundert es mich einwenig, denn 
eigentlich sollte es doch möglich sein mehrere architectures für eine 
entity zu definieren und mittels der configuration entsprechend 
zuzuordnen? Oder muss die configuration an anderer Stelle, also in einer 
gesonderten Datei stehen?

von Rick Dangerus (Gast)


Lesenswert?

Vergiss die configurations. Im XST User guide steht (chapter: VHDL 
Language Support):
1
Configuration Supported only with the "all" clause for instances
2
              list. If no clause is added, XST looks for the
3
              entity/architecture compiled in the default library.

Was auch immer das heißen mag.

Rick

von Rick Dangerus (Gast)


Lesenswert?

Hab grad noch was gefunden (ungetestet):
1
-- use diffrent architectures in xst
2
3
ARCHITECTURE behaviour OF top IS
4
5
COMPONENT dut
6
PORT( ... );
7
END COMPONENT;
8
9
-- an alternative to using a configure statement
10
-- to select a particular architecture
11
for instance1: dut use entity WORK.dut(arch_A);
12
for instance2: dut use entity WORK.dut(arch_B);
13
14
BEGIN
15
instance1: component dut
16
PORT MAP ( ... );
17
18
instance2: component dut
19
PORT MAP ( ... );
20
21
...
22
23
...
24
END;
25
26
-- VHDL module dut
27
ENTITY dut is
28
Port ( ... );
29
END dut;
30
31
ARCHITECTURE arch_A of dut is
32
begin
33
...
34
end arch_A;
35
36
ARCHITECTURE arch_B of dut is
37
begin
38
...
39
end arch_B;
40
41
-- End of VHDL

Ist aber für den Einstieg eher unübersichtlich.

Rick

von Hans (Gast)


Lesenswert?

Bei obigen Code hatte ich die all clause zwar berücksichtigt, aber genau 
in diesem Fall trat eben auch das Problem auf. Die letzte Variante mit 
der direkten Konfiguration in der architecture lief bei mir. Scheint 
also wohl der Fall, dass die configuration nicht wirklich unterstützt 
wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.