Hallo zusammen, ich habe ein Problem mit dem ISIM-Simulator. Ich nutze ISE und möchte mein Design simulieren. Das Design besteht aus mehreren Modulen, die mit einem Bus vernetzt sind. Dieser Bus ist in einem Package als record definiert. Das Bus-Signal wird initialisiert. Es gibt ein Steuermodul, welches den Bus mit Daten versorgt. Wenn ich dieses Modul alleine im Toplevel instanziiere, werden die Signale alle schön so gesetzt wie es sein soll. Wenn ich nun andere Module einfüge und somit mehrere Module an diesem Bus hängen, sind die Signale alle mit "U" belegt. Könnte das ein ISIM-Bug sein? Oder gibt es einen Trick? Bin relativ ratlos :( Gruß derLars
Der L. schrieb: > Wenn ich nun andere Module einfüge und somit mehrere Module an diesem > Bus hängen, sind die Signale alle mit "U" belegt. 'U' ist "Uninitialized". Du hast also einfach diesen Signalen noch keinen Wert zugewiesen. Oder es treiben mindestens 2 Teilnehmer einen wert auf den Bus und einer der Teilnehmer treibt ein 'U'. Dann löst die Resolution-Table von std_logic nach 'U' auf. Siehe dort: https://ece.uwaterloo.ca/~cgebotys/NEW/std_logic_1164_vhd.htm Ab hier: CONSTANT resolution_table : stdlogic_table ... Und jetzt das eigentliche Problem: Der L. schrieb: > Design besteht aus mehreren Modulen, die mit einem Bus vernetzt sind. Ist das ein bidirektionaler Bus mit "inout" Ports?
räusper Danke Lothar :D Manchmal hat man Tomaten auf den Augen. Und ich werde meinem Kollegen (einem Simulationsmuffel) mal die Hammelbeine lang ziehen. Du hattest natürlich recht, dass es ein Bus definiert als inout ist. Und in einem Dekodierungs-Modul wurden die Daten alle schön abgefragt, aber nicht hochohmig gesetzt :/ Dein "inout"-Hinweis wars, danke! Kaum macht mans richtig, schon klappts.
Der L. schrieb: > Dein "inout"-Hinweis wars, danke! Keine Ursache. > Kaum macht mans richtig Räusper Meine Frage (und mein Verdacht) hatte einen pikanten Hintergrund: Es ist euch hoffentlich klar, dass es solche Busse innerhalb eines FPGAs schon seit der Jahrtausendwend nicht mehr gibt, und dass deshalb jeder Zugriff auf so einen Bus mit einem Multiplexer abgebildet wird. Das klappt natürlich nur solange die Arbitrierung jeden Zugriff auch tatsächlich exklusiv aufschlüsseln kann. Korrekterweise verwendet man im FPGA keinen inout Bus, sondern nur dedizierte und getrennte in und out Busse.
:
Bearbeitet durch Moderator
Ja, dass es solche Busse nicht gibt, ist mir klar. :) Der Code wird von mir ja auch nur weiterverwendet... Im Endeffekt ist dieses Record auch nur eine bidirektionale Datenleitung und die anderen Signale sind alle nur unidirektional. Da das Record aber als ein inout-Port definiert ist, sind die unidirektionalen Signale auf der einen (nicht treibenden) Seite eben "uninitialisiert" :-/
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.