Forum: FPGA, VHDL & Co. ISIM-Problem mit record


von Der L. (vhdl-neuling)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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?

von Der L. (vhdl-neuling)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von Der L. (vhdl-neuling)


Lesenswert?

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
Noch kein Account? Hier anmelden.