www.mikrocontroller.net

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


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rick Dangerus (Gast)
Datum:

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

Was auch immer das heißen mag.

Rick

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab grad noch was gefunden (ungetestet):
-- use diffrent architectures in xst

ARCHITECTURE behaviour OF top IS

COMPONENT dut
PORT( ... );
END COMPONENT;

-- an alternative to using a configure statement
-- to select a particular architecture
for instance1: dut use entity WORK.dut(arch_A);
for instance2: dut use entity WORK.dut(arch_B);

BEGIN
instance1: component dut
PORT MAP ( ... );

instance2: component dut
PORT MAP ( ... );

...

...
END;

-- VHDL module dut
ENTITY dut is
Port ( ... );
END dut;

ARCHITECTURE arch_A of dut is
begin
...
end arch_A;

ARCHITECTURE arch_B of dut is
begin
...
end arch_B;

-- End of VHDL

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

Rick

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.