Ich habe 31 digitale Eingänge (jeder ist hoch oder niedrig) und möchte einen digitalen Ausgang, der nur dann hoch ist, wenn mindestens 16 Eingänge hoch sind. Wie kann ich diese "Mehrheitsfunktion" (die auch das höchstwertige Bit der Summe ist) mit den wenigsten MOS-Transistoren implementieren?
Als Bonus würde ich auch gerne die schnellste Implementierung im schlimmsten Fall wissen.
Konfigurieren Sie 31 MOS-Transistoren als schaltbare Stromquellen, die einen 32. speisen, der als Stromsenke mit dem 15-fachen der Quellenströme konfiguriert ist. Beobachten Sie dann die Spannung des Summierknotens.
EDIT - Ich sollte keine Spiele spielen. Der Titel sagte "Digital", also werden wir digital gehen. Eine Konfiguration wäre
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Dieser verarbeitet 15 Eingänge. Duplizieren Sie es und fügen Sie einen 4-Bit-Volladdierer hinzu, und Bob ist Ihr Onkel. Ich habe den letzten Addierer nicht gezeigt, aber Sie sollten in der Lage sein, es selbst herauszufinden.
Und natürlich, wenn Sie dies mit BJTs bauen, wie bei TTL- oder ECL-Logik, werden überhaupt keine MOS-Transistoren verwendet.
Verbinden Sie die 31 Eingänge (0-30 im Diagramm unten) mit vier 8-Bit-Schieberegistern mit parallelem Eingang und seriellem Ausgang wie dem 74HC597, die in Reihe kaskadiert sind (nur zwei gezeigt). Takten Sie den seriellen Ausgang des letzten Registers in einen Binärzähler wie den 74HC4024. Verwenden Sie einen anderen 74HC4024-Zähler, um zu verfolgen, wann 32 Taktimpulse aufgetreten sind, die dann den Zyklus wiederholen.
Aus irgendeinem verrückten Grund fingen der ursprüngliche CD4024 und der Nachfolger 74HC4024 an, ihre Flip-Flops mit Q1 anstelle von Q0 zu nummerieren. Sehr verwirrend. Daher zeige ich stattdessen das NXP-Teil (HEF4024B), das diese Anomalie korrigiert.
Wenn also alle 32 Taktimpulse (wenn Q5 des zweiten Zählers hoch geht) mindestens 16 Eingänge hoch waren (was bedeutet, dass Q4 des ersten Zählers 1 ist), wird dieser Status in einem D-Flip-Flop (74HC74) zwischengespeichert. und gespeichert, bis der nächste Satz von 32 Taktimpulsen abgeschlossen ist. Währenddessen werden die Eingänge parallel zu den Schieberegistern umgeladen.
Dies ist insofern ein Sonderfall, als der Mehrheitsschwellenwert eine Zweierpotenz ist, sodass nur ein Pin (in diesem Fall Q4, der 16–31 darstellt) abgefragt werden muss. Wenn der Schwellenwert stattdessen beispielsweise 14/27 wäre, müsste ein Adressdecoder hinzugefügt werden, um die Werte 14 und 15 zusätzlich zu 16 zu trennen.
Bei einem Eingangstakt von 90 MHz gibt es eine maximale Verzögerung von 355 ns von einer Änderung im Eingang bis zur Aktualisierung des Mehrheitsstatus am Ausgang.
Hinweis - nicht unbedingt die gesamte "Klebelogik" gezeigt, aber dies sollte die Idee vermitteln.
Es scheint, als würden Sie hier einige Konzepte verwechseln. Sie sagen, Sie wollen einen Mehrheitswahlkreis. In diesem Fall könnten Sie eine sehr große Wahrheitstabelle erstellen und die Schaltung mithilfe von Reduktionstechniken reduzieren. Zum Beispiel:
Input-Output
000 / 0
001 / 0
010 / 0
011 / 1
100 / 0
101 / 1
...und so weiter und so fort. Wenn Sie dann die endgültigen Logikgatter haben, zerlegen Sie einfach das Gatter in Ihre Transistorzahl. Sie werden dies nicht für 32 Bit tun können, es sei denn, Sie haben viel Zeit zur Verfügung. Angenommen, Sie haben für jede Kombination 1 Sekunde gebraucht, dann brauchen Sie immer noch 2^32 Sekunden oder 136 Jahre. Wenn Sie so lange gelebt haben, müssten Sie eine Art Gate-Reduktion durchführen.
Wenn Sie sagen "Das bedeutendste Stück der Summe", ist dies etwas verwirrend. Stellen Sie sich vor, Sie haben 3 Eingänge, die hoch sind, das höchstwertige Bit der Summe ist 1, ebenso bei 2. Wenn Ihr Mehrheitszähler nur 3 Bits hätte, würde Ihnen diese Information nichts sagen.
"Die schnellste Im-Worst-Case-Implementierung" klingt wie die Summe der Gate-Verzögerungen, die bei der Worst-Case-Realisierung auftreten würden; die am stärksten kaskadierte Realisierung hätte die größte Verzögerung.
Hinweis: Latches und Flipflops bestehen ebenfalls aus Logikgattern, die ebenfalls aus Transistoren bestehen. Vielleicht könnten Sie ein Schieberegister und einen Zähler bauen und dann eine kleine kombinatorische Logik am Ausgang des Zählers verwenden.
Viel Glück.
Ich bin hauptsächlich ein analoger Mensch, also würde ich dies mit analogen Techniken tun.
Summieren Sie alle Eingänge in einem Summierverstärker. Führen Sie den Ausgang des Verstärkers einem Komparator zu, der auslöst, wenn die gewünschte Anzahl von Eingängen HI ist.
Dies kann zu einem resistiven Summierer (kein Operationsverstärker erforderlich) und einem Komparator vereinfacht werden.
Bimpelrekkie
bobuhito
Bimpelrekkie
b degnan