Hallo Zusammen,
ich habe eine kurze Frage zur Implementierung des folgenden Konstrukts:
Ich habe einen FPGA und einen anderen Baustein die mit Signalleitungen
verbunden sind, darunter inputs, outputs und bidirectionals (inout).
Im normalen Betrieb sind diese Signale alle in Betrieb. Manche diskrete
Leitungen, manche teil von seriellen und parallelen Bussen.
Bei einem Sonderfall soll der FPGA all seine Ausgangssignale (asynchron)
auf '0' drücken.
Soweit so gut. Ist ja recht einfach zu lösen im FPGA indem ich z.B. alle
Ausgangssignale erst auf interne Signale lege und sie dann durch einen
Multiplexer jage:
1 | OUT_A <= OUT_A_internal WHEN switch = '1' ELSE '0';
|
Hat den Vorteil, dass ich diese Multiplexer alle Zusammen in eine
Komponente schmeissen kann und nicht überall verteilt im Design diese
Bedingung einbauen muss, etwa so:
[FPGA Treibende Komponente] ->- internes Signal ->- [FPGA Muxer] ->-
externes Signal ->- [ext. Bauteil Senke]
Wie aber gehe ich bei bidirektionalen Signalen um?
Ein solches Konstrukt erzeugt mir doch einen Multiplexer, der ja den
Signalfluss auf eine Richtung begrenzt, oder?
Komme ich bei inout Signalen irgendwie drum rum, diese Bedingung direkt
in den Signaltreiber zu bauen? Also:
[FPGA bidir Komponente mit Signalunterdrückung] -<->- [ext. Bauteil
bidir Komponente]
Wisst ihr da mehr? Hoffe mich gut ausgedrückt zu haben.
Grüße
Mat