Hallo! Wenn ich in Quartus einen Opendrain-Buffer (OPNDRN) vor einen Ausagang setze: Ist der Ausgang meines Stratix-FPGAs dann ein Open-Drain (Open-Collector??) Ausgang? Ich bräuchte also dann einen externen Pullup? Ich will mehrere Stratix-Boards mit einem Bus vernetzen. Da das kein Master/Slave-Bus ist, kann es sein, dass zwei gleichzeitig senden wollen. Mit OC wäre das kein Problem.
Hallo Jan, Ich wiess nicht genau was die OPNDRN (Komponente oder Einstellung) ist. Auf jeden Fall ist ein Open-Drain in Stratix möglich, es ist eigentlich nichts anderes als ein Tri-State: MyPin <= '0' when MySig = '0' else 'Z'. Externe Pullups braucht es auf jeden fall, denn der interne Pullup ist mit seinen 25 kohm zu hochohmig. Kannst du mehr Infomationen zu deinem Vorhaben geben (Geschwindigkeit, Leitungslänge und Lasten)?
Es sollen sechs Nios II DevKits mit Stratix an einen gemeinsamen Bus angeschlossen werden. Der Bus (38 I/O insgesamt) wird bestehen aus einen Flachkabel von jedem Board zu einer zentralen Verteilerplatine. Da jede Einheit (jeder FPGA) autonom agiert, ist ein Master/Slave-Bus unerwünscht. Da mehrere FPGAs gleichzeitig senden können, kann es zu Kurzschlüssen kommen. Opendrain wäre da ideal. Man müsste nur eine Collision-Detection einbauen. Ich kanns leider momentan nicht ausprobieren: Wenn ich vor den Bidir-Pin einen OD-Buffer setze, in den Buffer ein High reinkommt, dann müsste der Portpin auf Z stehen, richtig? Muss ich bei den Pin-Assignments dann irgendeine Option setzen und welchen Logiktyp? LVTTL?
Du gibst deinem Pin in der Portbeschreibung den Typ inout, dann funktioniert das schon. entity ... port (MyPin : inout std_logic) architecture ... MyPin <= '0' when MySig = '0' else 'Z'; Optionen muss man keine setzten, ausser der IO-Sandard auf ein "single endet" Typ (LVTTL, LVCMOS). Ich wiess zwar immer noch nicht wie schnell das arbeitet, aber bei 6 Lasten (kapazitiv) und das ganze noch über Flachkabel, wird es nicht funktionieren. Überlege mal wie lange es dauern wird, bis der Pullup das Signal von 0 auf 1 ziehen kann und wie Störungsanfällig es ist. Wenn du sowiso Verteilerplatine machen musst, kannst du da doch ein CPLD drauf machen, das den Zugriff auf den Bus steuert. Jedes FPGA das den Bus benutzen will meldet das beim CPLD über eine Leitung und wartet dann über eine zweite Leitung auf die Bestätigung. Somit kannst du dir auch die Collision-Detection sparen.
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.