Bidirektionaler Pin ohne INOUT

Gast #2848737
Lesenswert?

Hallo,

gibt es eine Möglichkeit einen bidirektionalen Pin zu gestalten, ohne 
den Port-Typ INOUT?

Kann man das über ein externes Signal steuern und eine Art Output-en 
schaffen?

Ich sitze gerade vor einem Design, bei dem in der Beschreibung 
bidirektionale Pins erwähnt werden und eigentlich für die Punktion 
(Doppelbelegung für zwei verschiedene Modi) auch notwendig sind.

Nur leider sind alle Ports des Topfiles IN oder OUT, aber kein Port ist 
INOUT.

Das passt irgendwie mit meinem Weltbild nicht zusammen.

Nun ist die Frage, ob eine genauere Analyse Sinn macht, oder ob ich mich 
erst einmal kümmern muss, Beschreibung und Design in Einklang zu 
bringen.

Vielen Dank!
Micha
#2848834
Lesenswert?

@  Micha (Gast)

>gibt es eine Möglichkeit einen bidirektionalen Pin zu gestalten, ohne
>den Port-Typ INOUT?

Nein. Warum auch?

>Kann man das über ein externes Signal steuern und eine Art Output-en
>schaffen?

Ja, aber das ist ein anderes Thema.

>Ich sitze gerade vor einem Design, bei dem in der Beschreibung
>bidirektionale Pins erwähnt werden und eigentlich für die Punktion
>(Doppelbelegung für zwei verschiedene Modi) auch notwendig sind.

>Nur leider sind alle Ports des Topfiles IN oder OUT, aber kein Port ist
>INOUT.

Weil das wahrscheinlich eben NICHT ein Top level für einen realen IC, 
sondern nur für das Modul ist. INOUT sollte man NUR an IC-Pins bnutzen, 
nicht innerald des FPGAs zwischen Modulen.

>Das passt irgendwie mit meinem Weltbild nicht zusammen.

Doch. Die Treiber und INOUT-Funktion werden in einem umhüllenden Top 
level File (Wrapper) definiert.

MFG
Falk
Gast #2848998
Lesenswert?

Falk Brunner schrieb:
>>Kann man das über ein externes Signal steuern und eine Art Output-en
>
>>schaffen?
>
> Ja, aber das ist ein anderes Thema.

logisch, ist doch easy:

Das externe Signal wird einfach asynchron oder in einsynchronsiter Form 
abgefragt, um den Buffer zu steuern.

Du musst nur den OE des normalen Tristatebuffers ansteuern.

oder in VHDL

if (extern-sig='1') then
   input_output <= ausgabedaten;
else
   input_output <= 'z';
end if;


eingabedaten <= input_output;

fertig

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren