Hallo, ich habe ein kleines Problem und hoffe, dass mir jemand helfen kann. Ich habe in meinem Design einen bidirektionalen Datenbus (inout) und ein register angeschlossen. Ich möchte auf den Datenbus schreiben (funktioniert) und erwarte eine Antwort (Bus in den Tristate versetzen). Wenn ich jetzt die Daten auf dem Datenbus in ein Register kopieren will, klappt das nicht. Das Zielregister hat dann immer einen 0xFFFF Wert, statt dem Datenbuswert. QuartusII gibt dazu auch eine Warnung aus: Warning (13046): Tri-state node(s) do not directly drive top-level pin(s) Warning (13047): Converted the fan-out from the tri-state buffer "AD" to the node "fifo_wrdat" into an OR gate AD ist mein Datenbus, fifo_wrdat das Zielregister. Verstanden habe ich die Warnung schon, aber ich weiß nicht, wie ich dieses Problem lösen kann, irgendwie muss das doch gehen!
Das sagt doch alles: Tri-state node(s) do not directly drive top-level pin(s) Die Tristates müssen bis in den Toplevel wenn du extern was treiben willst. Interne Tristates können die meisten (eigendl. alle neuen) FPGAs nicht, Quartus wandelt es in Logik um
Hi, Das klingt ganz so, als wenn du innerhalb des FPGAs einen Tri-State Bus haben willst. Das geht nicht. Heutige FPGAs haben nur in den IO-Zellen Tri-State Buffer. Üblicherweise muss der internen Bus aufgetrennt werden.
Genau das ist ja mein Problem: Wie kann ich Daten von einem Tristate-Bus in ein Register kopieren, wenn dieses aber nicht im Tristate sein darf?
1 | fifo_wrdat <= AD; |
geht eben nicht.
Ich beschreibe Tristates im Toplevel (und nur im Toplevel) immer so:
1 | ...
|
2 | port ( |
3 | data_pad : std_logic; |
4 | ...
|
5 | );
|
6 | ...
|
7 | signal data_in : std_logic; |
8 | signal data_out : std_logic; |
9 | signal data_enable : std_logic; |
10 | ...
|
11 | data_in <= data_pad; |
12 | data_pad <= data_out when data_enable = '1' else 'Z'; |
13 | ...
|
Alles was unterhalb des Toplevel liegt, muß mit den Signalen data_in, data_out und data_enable auskommen. Duke
Danke viel mals, Duke! Das hat mir wirklich weitergeholfen, kann jetzt ohne diese Warnings kompilieren und das Zielregister ist nicht mehr ständig 0xFFFF.
Kein Problem. Wir haben alle mal klein angefangen. Und wer gescheit fragt, soll auch 'ne gescheite Antwort bekommen. Duke
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.