mikrocontroller.net

Forum: FPGA, VHDL & Co. argumente übergeben


Autor: Bernhard Fuchs (zoidberg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab ein kleines problem mit concurrent Procedures.

ich hab in einem package zwei procedures.die eine ist überladen mit der 
anderen.

die deklarationen sehen so aus

procedure A (
    signal   in      : in  std_logic;
    signal   ctrl       : in  std_logic_vector(2 downto 0);
    signal   out     : out std_logic);

procedure A (
    signal   in     : in  std_logic_vector;
    signal   ctrl       : in  std_logic_vector(2 downto 0);
    signal   out     : out std_logic_vector;
    constant   vector : in  integer range 0 to 31);

jetzt füge ich gleich am begin der Architecture den procedure call 
ein..daher wird das ganze ja eine concurrent procedure (also ein ganz 
normaler process)

bei procedure A geht das auch problemlos!
wenn ich aber jetzt B verwenden will... um das ganze generisch zu machen 
habe ich folgendes problem.

im body der überladenen procedure A mache ich einfach folgendes.

 A(in => in(vector), ctrl  => ctrl, out => out(vector));

was eigentlich eine ganz simple signal zuweisen wäre...

als fehler bekomme ich von modelsim

Actual (indexed name) for formal "out" is not a static signal name.
genau so bei "in"

der witz an der Sache ist das wenn ich das Bit des Vector hard-code 
gehts (eh klar)
hab auch schon mit signal oder variable versucht.
komme aber auf kein ergebniss.

hüfe :)

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in und out sind reservierte Woerter in VHDL und duerfen deswegen nicht 
als Signalnamen verwendet werden.

Ausserdem muessen Portzuweisungen bei der Synthese fest liegen und 
duerfen nicht von irgendeinem veraenderlichen Signal (vector) abhaengen. 
Du musst daher noch zusaetzlich fuer jedes Signal einen Multiplexer 
beschreiben.

Autor: Bernhard Fuchs (zoidberg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das mit in,out war jetzt ein fehler.. das hab ich nur schnell getippt. 
die heissen sowieso anders.. war nur zur veranschaulichung.

es ist doch aber möglich das so zu machen. hab das auch in vielen 
bespielen zu generizität gesehen.
bei der synthese baut er das dann automatisch um un die entsprechende 
vector-größe

es macht ja keinen sinn für die vector-größen von 0 bis XXX alle 
procedures neu zu deklarieren. in den standard libs von VHDL wird das ja 
auch so gehandhabt dass nur der typ angegeben wird und keine größe.

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard Fuchs wrote:
> es ist doch aber möglich das so zu machen. hab das auch in vielen
> bespielen zu generizität gesehen.
> bei der synthese baut er das dann automatisch um un die entsprechende
> vector-größe

Vektorgroesse ja - nicht aber Auswahl eines bestimmten Signals, sofern 
das nicht schon bei der Synthese fest steht - Die Groesse eines Vektors 
muss ja auch schon vorher bekannt sein und kann nicht erst im laufenden 
Design festgelegt werden.

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.