Frage:
Verursachen mehrere Chips, die für einige Nanosekunden in einen Bus ausgegeben werden, Schäden?
fadedbee
2017-06-26 16:11:45 UTC
view on stackexchange narkive permalink

Ich arbeite an einem selbstgebrauten CPU-Design mit der üblichen Mischung aus parallelen EEPROMs, statischen RAMs und Registern, die auf einem einzelnen 8-Bit-Bus dreifach angegeben sind.

Meine / Ausgabe-Aktivierungslogik für drei tristate-fähige Chips im Datenbus lautet:

  / Ken = / a
/ Ren = / a noch / b
/ Männer = / a noch (/ b noch / b)
 

Muss ich mir Sorgen machen über die wenigen Nano-Sekunden, in denen mehr als ein Chip / Oe-Pin aufgrund der unterschiedlichen Anzahl von Gates niedrig ist?

Wird Strom, der für weniger als 10 ns von einem hohen Ausgang eines Chips in einen niedrigen Ausgang eines anderen Chips fließt, Schaden verursachen?

Wenn es Schaden anrichten würde, wie wurde diese Situation in den 1970er und 80er Jahren vermieden?

Update: Chips sind:

Schauen Sie sich die VTC-Kurve eines Cmos-Wechselrichters an.Daunenfets sind eingeschaltet, das passiert jeden Tag.Es ist jedoch am besten zu vermeiden, wenn Sie können.
Fünf antworten:
#1
+7
Graham
2017-06-26 18:45:31 UTC
view on stackexchange narkive permalink

Typischerweise wurde die Situation vermieden, indem die Ausgänge Open-Collector statt Tristate waren und ein Pullup-Widerstand auf +5 V die Schaltung vervollständigte. Wenn ein Gerät die gemeinsam genutzte Leitung auf niedrig und das andere auf Open-Collector schaltete, blieb die gemeinsam genutzte Leitung niedrig. Wenn es nur für eine sehr kurze Zeit einen Konflikt gäbe, würde dies überhaupt keine Probleme verursachen.

Als praktisches Beispiel hierfür ist der CAN-Bus in der Industrie weit verbreitet (insbesondere in Autos) und arbeitet genau so. Der Ausgang jedes Geräts ist ein Open-Collector-Ausgang mit einer Strombegrenzung, und ein Gerät (und nur eines) enthält den Pullup-Widerstand. In einem Industrie- / Automobilkontext, in dem Geräte schief gehen können und können und Drähte auch hoch oder niedrig kurzgeschlossen werden können, wird sichergestellt, dass kein Geräteausgang ein anderes Gerät beschädigen kann, es jedoch schief geht. Darüber hinaus überwacht der CAN-Bustreiber für jedes Gerät den Bus, um zu überprüfen, ob er in den erwarteten Zustand versetzt wurde, und meldet Busfehler an die Anwendung, wenn ein Konflikt festgestellt wird, bei dem jemand anderes über seine Daten stampft.

In der Praxis ist es unwahrscheinlich, dass die Chips dadurch beschädigt werden. Es kommt jedoch zu sofortigen Stromspitzen an den Ausgängen, an denen Hoch und Niedrig kurzgeschlossen sind, was die EMV-Emissionen unangenehm beeinflusst. Designer in den 70er und 80er Jahren waren viel weniger besorgt über EMV, daher ist es wahrscheinlich, dass viele Schaltkreise mit genau diesem Problem aus der Tür gingen.

Nur eine Folge: CAN-Busse haben oft einen Abschlusswiderstand, um Reflexionen zu vermeiden.Dies ist normalerweise bei längeren Kabeln wichtiger, kann jedoch bei Bussen mit HF + -Frequenzen von Bedeutung sein.
Datenbusausgänge waren normalerweise keine Open-Collector-Ausgänge, aber Low-Side-Treiber auf NMOS-Geräten waren viel stärker als High-Side-Treiber.Dies wurde durch die Tatsache ausgeglichen, dass die Schaltspannung näher an der negativen Schiene lag als an der positiven Schiene.
#2
+6
Dave Tweed
2017-06-26 17:05:11 UTC
view on stackexchange narkive permalink

Es gibt verschiedene Möglichkeiten, nicht überlappende Aktivierungen für Busgeräte zu erstellen.Am einfachsten ist es vielleicht, das Taktsignal selbst zu Ihren Gleichungen hinzuzufügen.Dann ist jeweils nur ein Gerät aktiviert, während die Uhr hoch ist, und es sind überhaupt keine Geräte aktiviert, während sie niedrig ist.(Oder umgekehrt, wenn Sie die steigende Flanke der Uhr zum Erfassen von Daten verwenden.)

Normalerweise ist die Ausgabefreigabefunktion der meisten Geräte schnell genug, dass die "Verschwendung" der Hälfte jedes Zyklus auf diese Weise kein Zeitproblem verursacht.Wenn dies jedoch der Fall ist, besteht eine Problemumgehung darin, das Tastverhältnis der Uhr nach Bedarf zu ändern.

Ihre Antwort impliziert, dass Aktivierungen, deren Überlappung um einige Nanosekunden erfolgt, Schäden verursachen.Habe ich das richtig gelesen
Nein, ich sage nicht, dass es definitiv physische Schäden geben wird, aber da die Situation in erster Linie ziemlich einfach zu vermeiden ist, warum sollten die Komponenten zusätzlich belastet werden?
Vielen Dank für die Klarstellung.Ich versuche, die Anzahl der Chips unter Kontrolle zu halten / ich könnte UND jedes der Freigabesignale mit einer Uhr, aber das wird ein weiterer Chip und noch mehr Steckbrettdrähte sein.
Sie haben bereits ein gemeinsames Signal "/ a" für alle drei Ausgangsfreigaben - kombinieren Sie einfach die Uhr damit.In den 80er Jahren wäre diese Art der Decodierung in einem PAL durchgeführt worden, so dass keine zusätzlichen Kosten für das Hinzufügen eines weiteren Signals zu jeder Gleichung anfallen würden.
`/ a` wird im zweiten und dritten Fall vom NOR-Gatter invertiert.Ich müsste nur die Uhr mit jedem der Signale ODER-verknüpfen, damit die Freigaben niedrig sind, wenn sowohl die Uhr als auch das ursprüngliche Signal niedrig sind.(Ich habe fälschlicherweise UND zuvor geschrieben.)
In den 70er Jahren wäre ein dedizierter Decoderchip verwendet worden (z. B. 74138/139).Diese haben im Allgemeinen viele zusätzliche Freigabeeingänge, von denen einer für diesen Zweck verwendet wird.
Das Hinzufügen eines Taktsignals zu den Gleichungen verhindert, dass Geräte den Bus so früh im Zyklus fahren, wie sie es sonst könnten.Dies könnte die Verwendung einer langsameren Taktrate oder schnellerer Geräte erforderlich machen, als dies sonst erforderlich wäre.
@supercat: Genau darum geht es in meinem zweiten Absatz.War es nicht klar genug?
@DaveTweed: Ich hatte angefangen, mehr zu schreiben und es dann wahrscheinlich zu sehr reduziert.Einige Geräte scheinen unter der Annahme entworfen zu sein, dass der Bus bereits frei ist, bevor / OE aktiviert wird, und andere scheinen unter der Annahme entworfen zu sein, dass er frei wird, wenn / OE aktiviert wird.Gating / OE mit Clock kann ein guter Ansatz für den ersteren sein, kann aber für den letzteren zu viel des Taktzyklus stehlen.Ein Ansatz, der besser erscheint, wäre, vor jeder Taktflanke einen "Bus Keeper" und eine Freigabe / OE zu verwenden (wodurch die verfügbare Zeit maximiert, aber Konflikte verhindert werden), aber ich habe das nicht gesehen.
@supercat: In der Tat sind viele Tristate-Geräte absichtlich so konzipiert, dass ihre Deaktivierungszeiten im ungünstigsten Fall schneller sind als ihre Aktivierungszeiten im besten Fall, wodurch das Problem insgesamt vermieden wird.Das OP gab jedoch nie an, dass er in seiner Analyse auf diese Detailebene gegangen war.Außerdem reicht normalerweise die Kapazität des Busses als "Bewahrer" für diese Situation aus;Ich habe auch noch nie einen aktiven Keeper gesehen, der dafür eingesetzt wurde.
@DaveTweed: Was die Sache schwierig macht, ist die Kombination von Teilen verschiedener "Vintage" in einem Gerät.Wenn man einige langsame und einige schnelle Geräte hat, kann es notwendig sein, langsamen Geräten einen ganzen Zyklus zu geben, aber Verzögerung / OE für schnelle Geräte.Auf einer DSP-Karte hatte ich Probleme mit einem alten Gerät, das nur langsam freigegeben wurde, aber starke Treiber hatte.Das Hinzufügen von Wartezuständen für Zugriffe auf dieses Gerät hat nicht geholfen, da der DSP es bis zum Start des nächsten Zugriffs aktiviert ließ.Am Ende schrieb ich eine kleine Routine, die in den internen RAM des DSP passen konnte, und griff nur auf das langsame Gerät zu ...
... über diese Routine, um sicherzustellen, dass der externe Bus im Zyklus nach dem langsamen Gerätezugriff im Leerlauf ist.Das war etwas lästig, aber es hat funktioniert.
#3
+3
Marcus Müller
2017-06-26 16:16:25 UTC
view on stackexchange narkive permalink

Wenn es Schaden anrichten würde, wie wurde diese Situation in den 1970er und 80er Jahren vermieden?

manuelles Design, das die Verzögerung kompensiert.

Ob dies zu Schäden führen kann, hängt von Ihrer Technologie ab. Daher können keine allgemeinen Ratschläge gegeben werden.Damit jedoch ein Übergang von 10 ns wirksam wird, muss Ihr System eine Bandbreite> 100 MHz haben, sodass Sie dies aktiv vermeiden können.

Es wird einen 1-MHz-Takt geben, der die 74HCxxx-Logik bei 5 V verwendet.Während dieser wenigen ns wird der Wert des Busses nicht gespeichert.Mein Anliegen ist nicht die Existenz eines Transienten, sondern ob ein Transient Chips zerstört, indem er Strom fließen lässt.
Vielleicht könnten Sie den Strom mit einem kleinen Widerstand begrenzen?
#4
+3
supercat
2017-06-26 21:03:06 UTC
view on stackexchange narkive permalink

Wenn ein Gerät so ausgelegt ist, dass Daten so schnell und stark wie möglich ausgegeben werden, wenn / OE aktiviert ist, kann ein Buskonflikt zu erheblichen Spitzenströmen führen, die unerwünschte Störungen auf den Versorgungsschienen verursachen können, selbst wenn sie keine physischen Schäden verursachen. Andererseits kann ein solches Gerät in der Lage sein, den Bus in weniger als einem halben Taktzyklus in einen gültigen Zustand zu bringen. In diesem Fall kann das Gating / OE mit dem Takt einen solchen Konflikt vermeiden. Einige andere Geräte können den Bus jedoch nicht so schnell fahren und müssten näher an einem vollen Zyklus sein, um den Bus zu fahren. Geräte, die den Bus langsamer fahren, neigen jedoch weniger dazu, während kurzzeitiger Phasen von Gerätekonflikten übermäßigen Strom zu leiten.

Ein Unterschied von einigen Nanosekunden beim Empfang von Aktivierungssignalen durch Geräte ist weniger wichtig als das Timing, mit dem die Geräte selbst auf Aktivierungssignale reagieren. Wenn ein Gerät den Datenbus nur langsam freigibt, muss sein Gate-Signal möglicherweise so gesteuert werden, dass es frühzeitig freigegeben wird, um sicherzustellen, dass das erste Gerät den Betrieb des ersten Geräts beendet, wenn ein anderes Gerät versucht, den Bus zu steuern.

#5
+2
analogsystemsrf
2017-06-26 20:35:47 UTC
view on stackexchange narkive permalink

Hier gibt es mindestens zwei Probleme: thermische Überspannungen und VDD-Transienten.

Lassen Sie uns einige Zahlen dazu setzen. Angenommen, Transistoren mit einer Siliziumausdehnung von 20 Mikron mal 20 Mikron und einer Tiefe von 10 Mikron. Das Volumen beträgt somit 20 · 20 · 10 oder 4.000 Kubikmikron. Ältere Technologie-Bipolare mit Kollektoren im Basis-Emitter-Bereich sind ungefähr so ​​groß. Die spezifische Wärme von Silizium beträgt 1,6 PicoJoule / Kubikmikron / ° C. Unser Gerät ist 4.000 * 1,6 pJ = 6,4 NanoJoule / ° C. Wie viel Temperaturanstieg können wir in 10 Nanosekunden thermischer Spitze erzeugen?

Verwenden Sie 5 Volt und 100 Milliampere (eine ziemlich gute Spitze zwischen 2 gegenüberliegenden Bustreibertransistoren). Die Leistung beträgt 0,5 Watt und die Energie beträgt 0,5 NanoJoule pro Nanosekunde. In 10 Nanosekunden beträgt die Energie 5 NanoJoule.

Teilen Sie nun einfach: 5nJ / 6,4nJ == 0,8 ° C Anstieg. Angenommen, gleichmäßig innerhalb des 20 * 20 * 10U-Volumens verteilt. Da der größte Teil des bipolaren Volumens der vergrabene Kollektor ist, ist "einheitlich" eine gültige Annahme. Somit ist 1 ° C pro Busfahrer die Antwort. Wenn sich 8 Treiber in einem Paket befinden, ändert sich die 1 ° C-Zahl? Nein, da die Wärmequellen in 8 verschiedenen Regionen verteilt sind und das vorübergehende Auftreten ein niedriges Tastverhältnis ist

Nun zu dieser zweiten Ausgabe: dem VDD-Klingeln. Frühe Bus-Treiber-ICs enthielten 8 Schaltkreise mit nur einem GND und einem VDD. Der Zusammenbruch der Schiene war ein großes Problem. Warum?

Nehmen Sie eine Induktivität von 10 nS GND + VDD an. Angenommen, Sie laden 8 Lasten mit jeweils 50 pF mit einem Trise von 10 ns. Oder 2 Volt / Nanosekunden Anstiegsgeschwindigkeit.

Wenn 1pF bei 1 V / ns 1 mA benötigt, benötigt unser einzelner Ausgang 100 mA. Die acht Ausgänge benötigen 800 mA. Angenommen, die Ladestöße steigen in der Hälfte der Zeit oder 5 ns von NULL auf 800 mA. Was ist der Rail Bounce?

V = L · dI / dT = 10 nH · 0,8 A / 5 ns = 1,6 Volt. Somit bewegt sich GND um 0,8 V nach oben und VDD um 0,8 V nach unten.

Da ich einen dreieckigen Stromimpuls angenommen habe (steigend und fallend in 5 ns), ist die Laderate geringer als erforderlich.Um das Timing des Vollladungsimpulses zu erreichen, müssen wir die Spitzenströme verdoppeln, und das Aufprallen beträgt sowohl für GND als auch für VDD 1,6 Volt.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...