Forum: FPGA, VHDL & Co. Bidirektionale Signale Pull - Down Widerstand notwendig?


von Stephan M. (stmiko)


Lesenswert?

Hallo,

ich habe für einen XC2C64A einen VHDL - Code erzeugt mit dem es möglich 
sein soll einen 8 - Bit Port zu lesen bzw. zu beschreiben.
Das Ansprechen des CPLD erfolgt über einen parallelen Bus. Nun ist es so 
angedacht, dass beim Ansprechen einer bestimmten Adresse die Daten des 
Parallelbusses an den Port ausgegeben werden und beim Senden einer 
anderen Adresse das anliegende Signal am Port ausgelesen wird.
Den Treiber der Schnittstelle habe ich wie folgt deklariert:
1
PA <= PORTA when DIRA = '1' else (others => 'Z');

Im Gesamtsystem soll dann dieser Port entweder nur als Eingang bzw. nur 
als Ausgang genutzt werden. Eine Umschaltung im laufenden System soll 
nicht erfolgen.
Jetzt meine Frage an euch:
Bei Nutzung des Ports als Eingang wird dieser in den Tri - State Zustand 
geschaltet, ist es nun notwendig einen externen Pull - Down Widerstand 
an jeden Pin des Ports anzubinden? Da das System universell genutzt 
werden soll, kann es vorkommen, dass dieser Port auch als Ausgang bei 
einer anderen Anwendung genutzt wird. Würde dieser z.B. 10k Pull - Down 
am Pin diesen Betrieb als Ausgang trotzdem ermöglichen?

Viele Grüße

Stephan

von Matthias (Gast)


Lesenswert?

Ich bin da kein großer Experte aber es müsste so sein: Solange bei 
Nutzung als Eingang die andere Seite immer einen definierten Pegel 
erzeugt braucht es keinen Widerstand. Wenn das nicht immer garantiert 
ist (bsp-weise wenn der Baustein auf der anderen Seite auch mal einige 
Zeit auf hochohmig schalten könnten, zb während einer FPGA 
Konfiguration), empfiehlt es sich. In die Gegenrichtung gilt das 
gleiche.

von Klaus F. (kfalser)


Lesenswert?

Stephan M. schrieb:
> Bei Nutzung des Ports als Eingang wird dieser in den Tri - State Zustand
> geschaltet, ist es nun notwendig einen externen Pull - Down Widerstand
> an jeden Pin des Ports anzubinden?

Das ist normalerweise nicht notwendig.
Wenn der Port als Eingang geschalten wird, dann wird dieses 
Eingangsignal ja von irgendwo herkommen, oder?

von Stephan M. (stmiko)


Lesenswert?

Ja,
wenn der Port als Eingang genutzt wird, liegt immer ein
definiertes Signal an jedem Pin

von Uwe (Gast)


Lesenswert?

Wenn man einen Port als Eingang benutz liegt das dran was du dran 
machst, daß muß nicht unbedingt definiert sein. Falls du ein Open 
Collector dran machst mußt du auch nen Pullup ran machen. Wenn du 
Tristate Komponenten dran hast wäre interessant was dran ist wenn alle 
auf Z sind (oder Verhindern über Decoder, so das immer einer aktiv ist). 
Sonst hast du irgendwas drauf (nen Radiosender oder sowas) oder der 
eingangsverstärker arbeitet im Analogbereich. Ist schlecht für 
energieverbrauch bzw. Verlußtleißtung über den Eingangtransistoren. Es 
kommt aber immer auf die Beschaltung drauf an.

von HildeK (Gast)


Lesenswert?

Stephan M. schrieb:
> Würde dieser z.B. 10k Pull - Down
> am Pin diesen Betrieb als Ausgang trotzdem ermöglichen?

Wenn du aus oben genannten Gründen doch einen Widerstand einbaust - 
übrigens egal ob Pull-Down oder Pull-Up - dann ist der Betrieb als 
Ausgang trotzdem problemlos möglich. Auch Werte mit 1k sind i.A. kein 
Problem.

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


Lesenswert?

Stephan M. schrieb:
> Würde dieser z.B. 10k Pull - Down
> am Pin diesen Betrieb als Ausgang trotzdem ermöglichen?
Kannst du da nicht einfach einen PullUp/Down im UCF-File konfigurieren?
Im DB steht: "input configurations include ... pull-up"
Und das Beste daran: wenn du den Pin auf Ausgang umschaltest, entfällt 
dieser Pullup dann automatisch und verbraucht nicht unnötig Strom...

von Stephan M. (stmiko)


Lesenswert?

Hallo Lothar,

wie Du es beschrieben hast, habe ich es auch realisiert.
Mittels der internen PullUps sind die Ports auf einem definierten
Pegel...

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.