Ziehen Sie den Widerstand im NMOS-Logikwert hoch

Für mein Abiturprojekt habe ich mich entschieden, eine Basis-CPU aus diskreten Komponenten zu bauen. Ich plane, einen 5-V-Logikpegel zu verwenden, und das aktuelle Design erfordert etwa 2000-3000 N-Kanal-MOSFET-Transistoren. Diese Frage bezieht sich speziell auf den Wert des Pullout-Widerstands in der NMOS-Logik.

Bei meinen Steckbretttests habe ich nur 10k-Widerstände verwendet, da ich einen Haufen herumliegen hatte und der Wert typisch für einen Pull-up-Widerstand ist, sodass er vernünftig erschien, aber möglicherweise nicht optimal für das ist, was ich erreichen möchte.

Soweit ich weiß, ist die Wahl dieses Werts ein Kompromiss zwischen dem Stromverbrauch der CPU und der Geschwindigkeit, die jedes Gate benötigt, um seinen Ausgangswert zu erreichen, und daher die maximale Taktgeschwindigkeit, mit der ich es fahren könnte.

Stromverbrauch: Nehmen wir an, dass jeder Transistor einen 10k-Widerstand hat und alle Transistoren eingeschaltet sind. Da typische Werte für R_dson viel kleiner als 10k sind, können wir sie ignorieren. Dies bedeutet, dass der Stromverbrauch in der Größenordnung von 3000 * (5 ^ 2) / 10000 = 7,5 Watt liegen würde. Das erscheint überraschend niedrig – ist dieser Wert angemessen?

Taktrate: Hier tappe ich eher im Dunkeln. Bei welcher Taktgeschwindigkeit könnte ich NMOS-Schaltkreise mit einem 10k-Pullup im Vergleich zu einem 1k-Pullup ansteuern? Wie wäre das im Vergleich zu CMOS-Schaltungen mit vergleichbaren MOSFETs?

7,5W klingt für mich vernünftig. 1,5 A bei 5 V, würde dieser Leistungspegel in einem DIP-Gehäuse nicht gut funktionieren, aber in diskreten Teilen, die über mehrere Quadratfuß Leiterplatte verteilt sind, würde er kein Problem verursachen.
Ich hoffe, Sie entwerfen dies modular. Das Debuggen einer Logikschaltung mit 2000 Transistoren klingt wie ein Albtraum ...
Ich plante, jeden "großen Maßstab" (z. B. Register, Addierer, Inc) auf einem separaten Board zu bauen und jedes einzeln zu debuggen (jedes Design zuerst auf einem Bartboard zu testen).
Ich denke, ein interessanter Ansatz für die Implementierung wäre, eine kleine Leiterplatte zu bauen, die drei NOR-Gatter mit drei Eingängen enthält, und diese als Grundbaustein zu verwenden. Es hätte 14 Anschlüsse entlang einer Kante, sodass es für das Design in ein Steckbrett oder (zum Beispiel) in ein Wirewrap-Board für eine dauerhaftere Einrichtung gesteckt werden kann. Sie könnten eine benutzerdefinierte Platine erstellen oder sie auf einer Uni-SIP-Platine aufbauen . Zwei solcher Module würden verwendet, um ein flankengetriggertes D-Flip-Flop herzustellen. Der ursprüngliche Cray-1 wurde auf ähnliche Weise gebaut, außer dass ein echter IC verwendet wurde.
... Ihre Platine könnte am Ausgang jedes Gates eine kleine LED enthalten, die beim Debuggen helfen würde ... und auch wirklich cool aussehen würde, wenn die Maschine vollständig zusammengebaut ist und läuft!
+1 für den Mut! Viel Glück für die Umsetzung! Ich hätte Ihnen geraten, integrierte Logikgatter als Grundbausteine ​​zu verwenden, keine Transistoren. Große Chance, viele neue Dinge zu lernen, aber es klingt alptraumhaft für eine einzelne Person, die wahrscheinlich auch andere "Schulangelegenheiten" zu bewältigen hat (und vielleicht auch ein bisschen Leben ;-). Nur neugierig, wie viel Zeit haben Sie zur Verfügung, um das Projekt zu erledigen?
Ich habe 7 freie Stunden pro Woche und bin bereit, ein paar zusätzliche Stunden persönliche Zeit pro Woche hinzuzufügen. Ich habe keine bestimmte Frist, aber ich möchte es bis Dezember fertigstellen (es ist schwer zu sagen, wie optimistisch diese Vorhersage ist). Ich habe auch darüber nachgedacht, die Konstruktion mit einem 3D-Drucker als Pick-and-Place-Maschine zu beschleunigen, aber ich kam zu dem Schluss, dass es ein Projekt für sich wäre, es zuverlässig zum Laufen zu bringen, und wahrscheinlich noch mehr Zeit in Anspruch nehmen würde.

Antworten (1)

Das Timing würde hauptsächlich von der kapazitiven Last an jedem Logikgatter abhängen, was sowohl die Verdrahtungskapazität als auch die Kapazität der MOSFET-Gatter, die Sie ansteuern, umfassen würde.

Beispielsweise hat der 2N7000 eine Eingangskapazität von typisch 20 pF (max. 50 pF). Wenn Ihr durchschnittlicher Fanout 3 beträgt, plus etwas Verdrahtungskapazität, ergibt dies eine typische Last von 100 - 200 pF. Bei einem 10K-Pullup erhalten Sie eine RC-Zeitkonstante von 1 - 2 µs. Für ein zuverlässiges Schalten müssten Sie wahrscheinlich mindestens zwei Zeitkonstanten für eine "Gate-Verzögerung" zulassen, wir sprechen also von 2 - 4 µs pro Gate.

Um nützliche Arbeit zu leisten, müssen Sie eine maximale Anzahl von Gate-Verzögerungen pro Taktperiode zulassen. Dies hängt von Ihrem spezifischen Design ab, aber eine Zahl wie 6 bis 10 wäre typisch. Wir sprechen jetzt also von einer Taktperiode von 12 - 40 µs oder Frequenzen im Bereich von 25 - 80 kHz.

Das Umschalten auf einen 1K-Widerstand würde eine Skalierung der Frequenz um etwa den Faktor 10 ermöglichen.

Diese Zahlen lassen mich moderne Prozessorkerne noch mehr schätzen, mit ihren Schaltgeschwindigkeiten um Mikrowellenherde, die tatsächlich zu Berechnungen führen, ist ziemlich nah an Magie.
Würde im Fall der CMOS-Logik die Verwendung von R_DSon des MOSFET als Widerstand für die RC-Schaltung zu vernünftigen Ergebnissen führen?
Ja, das ist einer der Vorteile von CMOS. Die andere besteht darin, den Pullup vollständig abzuschalten, wenn der Ausgang niedrig ist, wodurch die statische Verlustleistung eliminiert wird.