Ich arbeite an einem Plugin für Simulationssoftware (nur digitales IC).
Beispielsweise gibt es einen 8-Bit-Bus.
Der Benutzer möchte seinen Wert lesen. Auf der Plugin-Seite überprüfe ich den Status jedes Pins. Es kann 1, 0 oder undefiniert sein. Im Moment, wenn mindestens ein Bit floatet, gebe ich null als Buswert zurück. Ist es überhaupt richtig? Kann ein besserer Rückgabewert sein, der Floating-Bits durch zufällige [1-0] ersetzt und den Benutzer im Protokoll darüber warnt?
Es tut mir leid, aber Sie haben Pech. Es gibt keine offensichtliche Möglichkeit festzustellen, ob ein digitaler Eingang potenzialfrei ist. Die Busempfänger können nicht erkennen, ob ein bestimmter Eingangsspannungspegel auftritt, weil ein Treiber dies wollte, oder ob es daran liegt, dass kein Eingangstreiber vorhanden ist. Er weiß nur, dass der Eingang entweder höher (logisch 1) oder niedriger (logisch 0) als die Schwellenspannung des Empfängers ist.
Es ist sicherlich möglich, eine solche Schaltung zu bauen:
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
In diesem Fall ist Vth die nominelle Logikschwellenspannung und R4 ist ein größerer Widerstand. R1/R2/R3 legen die obere und untere Fehlergrenze für die Eingangsspannung fest.
Im Betrieb zieht ein gültiges High oder Low am Eingang diesen entweder über oder unter die Komparatorsollwerte, und beide Komparatoren lesen entweder High oder Low. Dadurch wird der XOR-Ausgang niedrig gesetzt, was anzeigt, dass der Ausgang gut ist. Wenn der Eingang schwebend gelassen wird, zieht R4 den Eingang auf einen Zwischenwert, und ein Komparator geht hoch, während der andere niedrig geht, und der XOR-Ausgang wird hoch getrieben, was einen schwebenden Eingang anzeigt.
Ich bezweifle natürlich sehr, dass Ihre digitalen Eingänge so aussehen.
In den meisten Simulationsprogrammen hängt die Anzeige der Busdaten von der verwendeten Zahlendarstellung ab. Die allgemeine Regel lautet: Wenn eines der Bits, die eine bestimmte Anzeigeziffer beeinflussen, undefiniert ist, dann wird diese Ziffer als „X“ angezeigt.
Wenn die Anzeige binär, oktal oder hexadezimal ist, kann die resultierende Zahl gültige Ziffern mit 'X' enthalten, da jedes Bit nur eine Ziffer beeinflussen kann. Wenn die Anzeige jedoch dezimal ist, kann jede Anzeigestelle von einem der Bits beeinflusst werden. Wenn also eines der Bits nicht definiert ist, wird der gesamte Buswert als „XXXXXX“ angezeigt.
Auf Computern der 1980er Jahre mit gemultiplexten Adress-/Datenbussen war ein fast gespenstischer Effekt zu beobachten - das Lesen von Adressen, an denen überhaupt kein Gerät vorhanden war, gab Ihnen tendenziell etwas, das wie eine ASCII-Tabelle in einem Debugger aussah. Was wahrscheinlich wirklich passiert ist, war, dass Sie die kapazitive Ladung zurückgelesen haben, die von den Adressschreibvorgängen übrig geblieben ist ... machbar, wenn am Leseende MOS-Geräte vorhanden wären.
In der Praxis hängt es vom Lesegerät ab und davon, was die Verkabelung stören kann: Fast alle TTL-ähnlichen Geräte behandeln einen schwebenden Eingang als solide 1, wenn kein Pulldown-Widerstand vorhanden ist und keine starken Störungen vorhanden sind. CMOS-Eingänge ohne Pulldown oder Pullup geben Ihnen in der Tat, was auch immer die kapazitive Ladung in der Verkabelung bereithält, wenn es einen ernsthaften Mangel an Interferenzen gibt - oft geben Ihnen schwebende CMOS-Eingänge einen 50/60-Hz-Takt.
sherrelbc