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 :)
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.