www.mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL: Problem bei Konfiguration


Autor: Maciej (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ihr hab mir beim letzten Mal so toll geholfen, ich hoffe ihr könnt das 
diesmal auch.

Ich habe ein Problem bei der Spezifikation einer Konfiguration. Gegeben 
sind eine Entität X mit einer Architektur A, die zwei Komponenten c1 vom 
Typ C1 und c2 vom Typ C2 verwendet. Ich möchte zu A eine 
Standard-Konfiguration Aconfig angeben, die aber nur c1 konkret 
festlegt. c2 soll immer erst bei der Verwendung von X genau festgelegt 
werden.

Erstelle ich nun eine Konfiguration für irgendeine Einheit, die eine 
Komponente mit der Architektur A verwendet, so klappt die Zuweisung von 
A zu X mittels "use entity" und danach die konkrete Festlegung für c2 
auch bestens. Benutze ich allerdings für die Bindung "use 
configuration", so wird die darauffolgende Bindung für c2 einfach 
ignoriert, und die null-Konfiguration verwendet (also die zuletzt 
analysierte Einheit).

Ich bin mir nicht sicher, wie genau der Sprachstandard in diesem Punkt 
definiert ist, meine Bücher sagen zu dieser Kombination leider nichts 
aus. Mich würde jetzt interessieren, ob das prinzipiell nicht 
funktioniert, oder nur, ob mein Programm (Active-HDL) das nicht korrekt 
verarbeitet. Oder vielleicht gibt es doch noch einen Trick, wie man das 
Problem lösen könnte (möglichst mit der vorhandenen Aufteilung in 
Konfigurationen).

Hier ist das Problem nochmal in gekürzter Quellcode-Form:
entity X is ...
end entity;

architecture A of X is ...
    component C1 ...
    
    component C2 ...
    
end architecture;

-- Standard-Konfiguration für A
configuration Aconfig of X is
    for A
        for c1 : C1 use entity ...
    end for;
    -- Keine Standard-Bindung für C2!
end architecture;

---

-- Funktioniert wie erwartet:
configuration Bconfig_1 of Y is
    for B
        for x : X
            use entity X (A);
            for A
                c2 : C2 use entity ...
            end for;
        end for;
    end for
end configuration;

-- Funktioniert nicht:
configuration Bconfig_2 of Y is
    for B
        for x : X
            use configuration Aconfig;
            -- Diese Bindung wird einfach ignoriert:
            for A
                c2 : C2 use entity ...
            end for;
        end for;
    end for
end configuration;


Viele Grüße,

Maciej

Autor: Maciej (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorab, das sind weder Haussaufgaben noch Übungsaufgaben für die Uni o.ä. 
Außerdem bin ich nun wirklich niemand, der bei kleinen Problemchen 
gleich in einem Forum um Hilfe bittet. Ich bin hier lediglich an die 
Grenze meines Wissens gestoßen, wie VHDL in diesem Punkt überhaupt genau 
definiert ist. Wenn ich nicht schon in Büchern und auf diversen 
Internetseiten nachgeschaut hätte, hätte ich hier nicht gefragt.

Die oben beschriebene Konfigurationsaufteilung bietet mir für meine 
Zwecke eine sehr saubere und äußerst redundantfreie Aufteilung des 
Quellcodes. Ich wüßte eine Lösung, wie ich das Problem mit vielen und 
langen Copy-Paste-Aktionen umgehen könnte, was ich aber als sehr unschön 
empfinde. Vom rein logischen müßte obige Bconfig_2 korrekt 
funktionieren, nur leider tut sie das nicht und ich würde gern die 
Ursache dafür kennen.

Wenn du, Karl der Kleine, also eine Lösung weißt, bitte ich dich mir zu 
helfen, damit ich meinen Quellcode nicht unnötig aufblähen muß.


Viele Grüße,

Maciej

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Xilinx-ISE funktionieren die configurations auch nur sehr 
eingeschränkt. Kannst Du evtl. ein if ... generate-Konstrukt siehe: 
http://de.wikibooks.org/wiki/VHDL#generate) einsetzen?

Rick

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.