DE69031486T2 - Asynchroner Zähler für vorangehende Nullen mit iterativer Zellenmatrix - Google Patents
Asynchroner Zähler für vorangehende Nullen mit iterativer ZellenmatrixInfo
- Publication number
- DE69031486T2 DE69031486T2 DE69031486T DE69031486T DE69031486T2 DE 69031486 T2 DE69031486 T2 DE 69031486T2 DE 69031486 T DE69031486 T DE 69031486T DE 69031486 T DE69031486 T DE 69031486T DE 69031486 T2 DE69031486 T2 DE 69031486T2
- Authority
- DE
- Germany
- Prior art keywords
- bit
- input
- cell
- data
- signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 239000011159 matrix material Substances 0.000 title 1
- 230000006870 function Effects 0.000 description 5
- 238000001465 metallisation Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000000034 method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/74—Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
Description
- Die vorliegende Erfindung bezieht sich allgemein auf einen Zähler für führende Nullen. Insbesondere bezieht sich die vorliegende Erfindung auf einen Asynchronzähler für führende Nullen, der ein Iterationszellulararray verwendet.
- Bei Computersystemen werden arithmetische Operationen gewöhnlicherweise in einem Speicher, wie z. B. einem Register einer ALU (ALU arithmetic logic unit = Rechenwerk), ausgeführt. Der Speicher, in welchem der Operand gespeichert ist, weist gewöhnlicherweise so viele Bitpositionen auf, wie erforderlich wären, um die größtmögliche Zahl zu speichern, für die der Computer entworfen worden ist, um damit zu arbeiten. Bei vielen Operationen ist jedoch die Größe des Operanden wesentlich kleiner als die Größe dieser größten Zahl. In diesem Fall ist der Speicher oder das Register links von dem höchstwertigen Bit des Operanden, das eine binäre "1" ist, mit Nullen gefüllt. Diese sind als führende Nullen bekannt.
- Es ist bekannt, daß die Geschwindigkeit, mit welcher arithmetische Operationen auf den Operanden durchgeführt werden, erhöht werden kann, wenn die Anzahl der führenden Nullen in dem Operanden im voraus bekannt ist. Detektoren/Zähler für führende Nullen zum Durchführen dieser Funktion sind Stand der Technik. Einige Detektoren/Zähler für führende Nullen verwenden eine synchrone Schaltungsanordnung zum "Normieren" des Operanden. Die US-Patente Nr. 3,234,368, 3,831,012 und 4,586,154 sind Beispiele dafür. Im allgemeinen verwenden diese Systeme eine Art verschiebungs- oder synchroner Zählfunktion, um die Position des höchstwertigen Bits mit dem Wert "1" in dem Operanden zu bestimmen. Synchrone Systeme erfordern taktbetriebene Schieber und/oder Zähler, wodurch die Computergesamtverarbeitungsgeschwindigkeit beeinträchtigt wird.
- Andere Detektoren/Zähler für führende Nullen verwenden eine asynchrone Schaltungsanordnung zum Bestimmen der Anzahl von führenden Nullen in dem Operanden. Die US-Patente Nr. 3,678,259, 4,106,105 und 4,247,891 sind Beispiele dafür. Zum Durchführen der Zählfunktion der führenden Nullen wird eine asynchrone Schaltungsanordnung bevorzugt, da diese die Computergesamtverarbeitungsgeschwindigkeit nicht beeinträchtigt. Jedoch sind bekannte asynchrone Detektoren/Zähler für führende Nullen kompliziert und bei einem Computerentwurf nicht immer einfach zu implementieren. Außerdem sind bekannte asynchrone Detektoren/Zähler für führende Nullen nicht ohne weiteres fur eine Verwendung mit den sich ständig verbreiternden Busarchitekturen erweiterbar. Ein bedeutender Nachteil von bekannten sowohl synchronen als auch asynchronen Detektoren/Zählern für führende Nullen besteht darin, daß deren Entwurf eine beträchtliche Überlappung der Signalleitungen ergibt, die die Schaltungsanordnungskomponenten verbinden. Folglich ist für den Fall von Schaltungsimplementierungen, die einen Metallisierungstyp verwenden, um die Verbindungen zu bewirken, wie es beispielsweise bei Implementierungen einer gedruckten Schaltungsplatine und einer integrierten Schaltung (z. B. eine kundenspezifische LSI; LSI = large-scale integration = Großintegration) der Fall wäre, ein aufwendiger und/oder komplexer Aufbau mit mehreren isolierten Metallisierungsschichten erforderlich.
- Es ist daher wünschenswert, einen asynchronen Zähler für führende Nullen zu schaffen, der einfach auf eine beliebige Busbreite erweiterbar ist, und bei dem keine Überkreuzung einer der Signalleitungen, die die Komponenten der Schaltungsanordnung verbinden, auftritt, und der jedoch gleichzeitig einen einfachen Aufbau aufweist. Die vorliegende Erfindung erreicht diese Ziele.
- Die US-A-3678259 beschreibt eine Zähllogik für führende Nullen, die ein Gattersystem und ein Zählsystem aufweist. Die Eingangssignale zu dem Gattersystem umfassen alle die Bits in einem Wort, für welches die Anzahl der führenden Nullen bestimmt werden soll. Das Gattersystem weist eine Mehrzahl von Gattern auf, die jeweils einem Bit in dem binären Eingangswort entsprechen. Die Gatter sind derart angeordnet, daß jedes Gatter nur dann Informationen weitergibt, wenn das entsprechende Bit, das an das Gatter angelegt ist, Null ist und alle höherwertigen Bits auch Null sind. Die Ausgangssignale der Gatter sind an eine Mehrzahl von Addierern angelegt, wo dieselben gezählt werden, wobei die Gesamtsumme als das Ausgangssignal der Schaltung vorgelegt wird.
- Die Merkmale der Erfindung sind durch Anspruch 1 definiert.
- Eine Zählerzelle für führende Nullen gemäß einem Ausführungsbeispiel der Erfindung ist mit einer Mehrzahl von weiteren Zellen der gleichen Art kaskadierbar, um ein Array zu definieren, das ein digitales Ausgangswort mit einer Größe liefert, die die Anzahl der führenden Nullen an den Eingängen zu der Mehrzahl von Zellen anzeigt. Bei dieser Anordnung umfaßt jede Zelle einen ersten Dateneingang (In0) zu einer asynchronen Logikschaltung zum Empfangen eines Signals des Zustands eines Bits; einen zweiten Dateneingang (In1) zu der asynchronen Logikschaltung zum Empfangen eines weiteren Signals, das den Zustand eines unmittelbar vorhergehenden, niedrigerwertigen Bits anzeigt; einen Freigabeeingang (G) zu der asynchronen Logikschaltung zum Freigeben/Sperren der Zelle; einen Übertrageingang (Yin) zu der asynchronen Logikschaltung; einen Datenausgang (Y) aus der asynchronen Logikschaltung zum Liefern einer Anzeige der Anzahl von führenden Nullen an dem ersten und dem zweiten Dateneingang (In0, ml); und einen Freigabeausgang (In=0) aus der asynchronen Logikschaltung zum Liefern einer ersten Anzeige, daß sowohl (i) die Zelle freigegeben ist, als auch (ii) die Signale, die an dem ersten und dem zweiten Dateneingang (In0, In1) empfangen werden, beide eine binäre 0 anzeigen, jedoch ansonsten eine entgegengesetzte Anzeige liefern. Das Signal an dem Datenausgang (Y) reagiert lediglich auf den Zustand des Signals an dem Übertrageingang (Yin), wenn die Zelle gesperrt ist, wobei dasselbe jedoch auf den Zustand des Signals an dem ersten und zweiten Dateneingang (In0, In1) reagiert, wenn die Zelle gesperrt ist.
- Das Array ist durch eine Mehrzahl von Zellen definiert, die zumindest eine Reihe definieren, wobei eine erste Zelle in der Reihe zwei niedrigstwertigen Bits eines Busses (beispielsweise eines Busses, der ein Eingangswort zu einem Register überträgt) zugeordnet ist, wobei eine letzte Zelle in der Reihe zwei höchstwertigen Bits des Busses zugeordnet ist, und wobei die restlichen Zellen (falls mehr als zwei in der Reihe vorhanden sind) der Reihe nach den Bitpaaren des Busses zwischen denselben zugeordnet sind. Der Datenausgang und der Freigabeausgang aller Zellen, mit Ausnahme der ersten Zelle, sind mit dem Übertrageingang bzw. Freigabeeingang einer unmittelbar benachbarten Zelle gekoppelt, die zwei niedrigerwertigen Bits des Busses zugeordnet ist. Das Signal an dem Datenausgang der ersten Zelle zeigt das niedrigstwertige Bit der Anzahl der führenden Nullen an. Abhängig von der Busbreite (d. h. von der Anzahl der Bits) können zusätzliche Reihen von Zellen vorgesehen und mit den vorhergehenden Reihen verbunden werden, wie es hierin beschrieben ist. Das Signal an dem Datenausgang der ersten Zelle jeder nachfolgenden Reihe wird ein höherwertiges Bit der Anzahl der führenden Nullen anzeigen.
- Gemäß einem Ausführungsbeispiel der Erfindung ist das Array für eine Verwendung mit einem Bus, der 2N-Bits aufweist, vorgesehen, wobei das Array zweidimensional ist und es 2N- 1-Zellen gibt, die N-aufeinanderfolgende Reihen von Zellen definieren. Jede Reihe, die der ersten Reihe folgt, enthält lediglich die halbe Anzahl von Zellen der unmittelbar vorhergehenden Reihe, wobei das Signal an dem Datenausgang der ersten Zelle jeder Reihe, die der ersten Reihe folgt, ein höherwertiges Bit der Anzahl der führenden Nullen anzeigt.
- Die Signale an den Datenausgängen jeder der ersten Zellen jeder Reihe definieren gemeinsam ein digitales Wort mit einer Größe, die die Anzahl der führenden Nullen auf dem Bus anzeigt.
- Alle Bits auf dem Bus werden gleichzeitig auf eine parallele Weise in das Array eingegeben, wobei dessen Betrieb vollständig asynchron ist. Die Topologie der Array ergibt keine Überkreuzung beliebiger Signalleitungen, die die Zellen verbinden.
- Fig. 1 stellt die Funktionseingänge und Ausgänge einer Zählerzelle für führende Nullen gemäß der vorliegenden Erfindung dar.
- Fig. 2 ist eine Wahrheitstabelle für die Zelle von Fig. 1.
- Fig. 3 stellt einen Entwurf für eine Asynchron-Logikschaltung zum Implementieren der Zelle von Fig. 1 dar.
- Fig. 4A und 4B stellen ein exemplarisches Array für einen Zähler für führende Nullen gemäß der vorliegenden Erfindung dar.
- Fig. 5A und 5B stellen ein weiteres exemplarisches Array für einen weiteren Zähler für führende Nullen gemäß der vorliegenden Erfindung dar.
- Nun wird auf die Zeichnungen Bezug genommen, bei denen gleiche Bezugszeichen gleiche Elemente darstellen, wobei in Fig. 1 eine Zählerzelle 10 für führende Nullen gemäß der vorliegenden Erfindung dargestellt ist.
- Die Zelle 10 weist ein Paar von digitalen Dateneingängen 12, 14 (die jeweils mit In0, In1 beschriftet sind), einen Freigabe/Sperreingang 18 (der mit G beschriftet ist) und einen Übertrageingang 16 (der mit Yin beschriftet ist) auf. Die Zelle weist ferner einen Datenausgang 22 (der mit Y beschriftet ist), welcher der primäre Funktionsausgang der Zelle 10 ist, und einen Freigabeausgang 20 (der mit In=0 beschriftet ist) auf. Die Signale an den Eingängen/Ausgängen, denen ein "+" voransteht, sind aktiv hoch, während diejenigen, an denen ein "-" voransteht, aktiv niedrig sind. Wie es im nachfolgenden offensichtlich wird, ist der Dateneingang 12 zum Koppeln mit einem höherwertigen Bit eines Busses (der beispielsweise ein Eingangswort zu einem Register überträgt) vorgesehen, dessen Anzahl von führenden Nullen bestimmt werden soll, während der Dateneingang 14 zum Koppeln mit dem unmittelbar benachbarten, nächstniedrigerwertigen Bit des Busses vorgesehen ist.
- Fig. 2 stellt die Wahrheitstabelle für die Zelle 10 von Fig. 1 dar. Das "x" in der Wahrheitstabelle zeigt einen "beliebigen" Zustand an. Die Wahrheitstabelle von Fig. 2 stellt dar, daß das Signal an dem Datenausgang 22 aktiv (eine binäre "1") ist, wenn eine binäre ("0") an den Dateneingängen 12 bzw. 14 erfaßt wird. Die Wahrheitstabelle von Fig. 2 stellt ferner dar, daß, wenn die Zelle 10 eine einer Mehrzahl von gleichen Zellen ist, die in einem Array (das im nachfolgenden beschrieben wird) angeordnet sind, die Signale an den Datenausgängen 22 aller nachfolgenden Zellen 10 (d. h., denen niedrigerwertige Bits zugeordnet sind) beim Erfassen eines binären "01"-Musters an den Dateneingängen 12 bzw. 14 in einen aktiven Zustand gezwungen werden, und daß alle nachfolgenden Zellen 10 (wieder, denen niedrigerwertige Bits zugeordnet sind) gesperrt sind. Die Wahrheitstabelle stellt ferner dar, daß, wenn eine Zelle gesperrt ist (d. h., wenn das Signal an dem Eingang 18 inaktiv oder eine binäre "1" ist), lediglich das Signal an dem Übertrageingang 16 das Signal an dem Datenausgang 22 beeinflussen wird. Die Wahrheitstabelle stellt außerdem noch dar, daß, falls eine binäre "11" oder "10" an den Dateneingängen 12 bzw. 14 erfaßt wird, alle nachfolgenden Zellen 10 in dem Array gesperrt sind, und daß das Signal an dem Datenausgang 22 für alle nachfolgenden Zellen in einen inaktiven Zustand (eine binäre "0") gezwungen wird. Die Wahrheitstabelle stellt schließlich dar, daß das Signal an dem Freigabeausgang 20 aktiv (d. h. eine binäre "0") ist, wenn sowohl eine binäre "00" an den Dateneingängen 12, 14 erscheint, als auch das Signal an dem Freigabeeingang 18 aktiv (d. h. eine binäre "0") ist. Es wird offensichtlich, wenn ein Array, das eine Mehrzahl von Reihen von Zellen 10 aufweist, aufgebaut ist., wie es hierin beschrieben ist, daß das Signal an dem Freigabeausgang 20 einer Zelle 10 in einer vorhergehenden Reihe als Dateneingangssignal zu einer Zelle in einer nachfolgenden Reihe dient.
- Vorzugsweise ist die Zelle 10 mit einer asynchronen Logikschaltungsanordnung versehen. Eine asynchrone Logikschaltung zum Implementieren der Zelle 10 ist in Fig. 3 dargestellt. Die asynchrone Logikschaltung von Fig. 3 umfaßt zwei UND- Gatter 24, 28 und ein ODER-Gatter 26, die, wie es gezeigt ist, verbunden sind. Das UND-Gatter 24 weist folglich invertierte Eingänge zum Empfangen des Signals an dem Dateneingang 12 und des Signals an dem Freigabeeingang 18 und einen nicht-invertierten Eingang zum Empfangen des Signals an dem Dateneingang 14 auf. Das UND-Gatter 28 weist drei invertierte Eingänge zum Empfangen der Signale an den Dateneingängen 12, 14 und des Signals an dem Sperreingang 18 auf. Das UND- Gatter 28 weist ferner einen invertierten Ausgang zum Liefern des Signals an dem Freigabeausgang 20 auf. Das ODER- Gatter 26 weist einen Eingang zum Empfangen des Übertrageingangssignals 16 und einen weiteren Eingang zum Empfangen des Ausgangssignals des UND-Gatters 24 auf. Der Ausgang des ODER-Gatters 26 liefert das Datenausgangssignal 22.
- Nun wird die Funktionsweise der Zelle 10 zusammengefaßt. Das Signal an dem Datenausgangssignal 22 reagiert (wie es aus der Wahrheitstabelle von Fig. 2 zu erkennen ist) lediglich auf den Zustand des Signals an dem Übertrageingang 16, wenn die Zelle gesperrt ist, wobei jedoch das Signal an dem Datenausgang 22 in einen aktiven Zustand gezwungen wird, wenn sowohl die Zelle freigegeben ist, als auch eine binäre "01" an den Dateneingängen 12 bzw. 14 erfaßt wird. Das Signal an dem Datenausgang 22 wird in einen inaktiven Zustand gebracht, wenn sowohl die Zelle freigegeben ist, als auch eine binäre "10" oder "11" an den Dateneingängen 12 bzw. 14 erfaßt wird. Das Signal an dem Freigabeausgang 20 liefert eine erste Anzeige (eine binäre "0"), daß sowohl (i) die Zelle freigegeben ist, als auch (ii) eine binäre "00" an den Dateneingängen 12, 14 erfaßt worden ist. Das Signal an dem Freigabeausgang 20 liefert eine zweite entgegengesetzte Anzeige (d.h. eine binäre "1") zu allen anderen Zeitpunkten.
- Es folglich zu sehen, daß, wenn die Zelle 10 freigegeben ist, der Datenausgang 22 ein Bit liefert, das die Anzahl der führenden Nullen an den Dateneingängen 12, 14 anzeigt. Eine einzige Zelle wird daher ein binäres Zwei-Bit-Eingangswort verarbeiten. Der Datenausgang 22 wird keine oder eine führende "0" in dem Eingangswort (beispielsweise dem Operanden) zählen. Falls beide Bits des Wortes, das in die Zelle 10 eingegeben ist, binäre Nullen sind, dann wird das Signal an dem Datenausgang 22 eine binäre "0" sein, wobei das Signal an dem Freigabeausgang 20 aktiv (d. h. eine binäre "0") sein wird, wodurch angezeigt wird, daß das Eingangswort nur aus Nullen besteht. Eine binäre "01" an den Dateneingängen 12, 14 wird bewirken, daß das Signal an dem Datenausgang 22 eine binäre "1" ist, wodurch eine führende "0" angezeigt wird. Eine binäre "11" oder "10" an den Dateneingängen 12, 14 wird bewirken, daß das Signal an dem Datenausgang 22 eine binäre "0" wird, wodurch angezeigt wird, daß keine führenden Nullen vorhanden sind.
- Jede der Zellen 10 kann, wie es angemerkt wurde, mit einer Mehrzahl von gleichen Zellen kombiniert werden, um ein iteratives Array zum Zählen der Anzahl von führenden Nullen auf einem N-Bit-Bus zu bilden. Der Aufbau und Betrieb eines solchen Arrays wird nun beschrieben.
- Die Fig. 4A und 4B stellen jeweils ein exemplarisches eindimensionales Array dar, das drei Zellen des Typs von Fig. 1, die mit 100, 102 und 104 bezeichnet sind, aufweist. Das Eingangswort von dem Bus ist mit 30 für das Beispiel von Fig. 4A und mit 32 für das Beispiel von Fig. 48 beschriftet. Die Zelle 104 empfängt die zwei höchstwertigen Bits des Busses oder des Wortes 30, 32. Die Zelle 100 empf-:ngt die zwei niedrigstwertigen Bits des Busses oder des Wortes 30, 32, wobei die Zelle 102 die Zwischenbits empfängt. Die Beispiele von Fig. 4A und 4B sind für einen einfachen Sechs-Bit-Bus mit den Eingängen, wie es gezeigt ist, vorgesehen, wobei "x" einen beliebigen Zustand darstellt. Wie es gezeigt ist, sind die Zellen 100, 102, 104 derart verbunden, daß das Signal an dem Datenausgang 22 der Zelle 104 als das Signal an dem Übertrageingang 16 zu der Zelle 102 zugeführt wird, und daß das Signal an dem Datenausgang 22 der Zelle 102 als das Signal an dem Übertrageingang 16 zu der Zelle 100 geliefert wird. Auf ähnliche Weise wird das Signal an dem Freigabeausgang 20 der Zelle 104 als das Signal an dem Freigabeeingang 18 zu der Zelle 102 geliefert, wobei das Signal an dem Freigabeausgang 20 der Zelle 102 als das Signal an dem Freigabeeingang 18 zu der Zelle 100 geliefert wird. Das Signal an dem Datenausgang 22 der Zelle 100 (d. h. der ersten Zelle in der Reihe) liefert die Anzeige der Anzahl der führenden Nullen. Folglich gibt es bei dem Beispiel von Fig. 4A vier führende Nullen in dem Eingangswort 30, wobei das Signal an dem Datenausgang 22 eine binre "0" ist. Bei dem Beispiel von Fig. 48 gibt es drei führende Nullen in dem Eingangswort 32, wobei das Signal an dem Datenausgang 22 eine binäre "1" ist. Folglich zeigt das Signal an dem Datenausgang 22 der Arrays von Fig. 4A und 4B an, ob es eine gerade oder ungerade Anzahl von führenden Nullen in dem Eingangswort gibt. Demgemäß kann das Signal an dem Datenausgang 22 der Arrays von Fig. 4A und 4B als das niedrigstwertige Bit der Gesamtanzahl von führenden Nullen betrachtet werden.
- Die Fig. 5A und 5B stellen jeweils ein zweidimensionales Array zum Empfangen eines Eingangswortes von einem 16-Bit-Bus dar. Das Eingangswort von dem Bus ist mit 34 für das Beispiel von Fig. 5A und mit 36 für das Beispiel von Fig. 5B beschriftet. Wie es gezeigt ist, weist das Array von Fig. 5A und 5B vier Reihen auf: die erste Reihe weist Zellen 100 -114 auf (die Zelle 100 definiert die erste Zelle); die zweite Reihe weist Zellen 200 - 206 auf (die Zelle 200 definiert die erste Zelle); die dritte Reihe weist die Zellen 300 - 302 auf (die Zelle 300 definiert die erste Zelle); und die vierte Reihe weist eine Zelle 400 auf (die Zelle 400 definiert die einzige Zelle und damit die erste und letzte Zelle der vierten Reihe). Wie es gezeigt ist, empfängt die Zelle 114 die zwei höchstwertigen Bits des Eingangswortes als Eingangssignal (an den Dateneingängen 12, 14), wobei die Zelle 100 an ihren Eingängen 12, 14 die zwei niedrigstwertigen Bits des Eingangswortes empfängt. Die restlichen Zellen 102 - 112 empfangen jeweils der Reihe nach die restlichen Bitpaare des Eingangswortes als Eingangssignale, wie es gezeigt ist. Die erste Reihe der Zellen 100 - 114 des Arrays von Fig. 5A und 5B ist auf die Art und Weise konfiguriert und deren Zellen sind verbunden, wie es in Verbindung mit den Fig. 4A und 4B beschrieben wurde. Es wird offensichtlich, daß das Signal an dem Datenausgang 22 der ersten Zelle 100 der ersten Reihe anzeigen wird, ob eine gerade oder ungerade Anzahl von Nullen in dem Eingangswort vorhanden ist, und folglich das niedrigstwertige Bit der Gesamtanzahl von führenden Nullen in dem Eingangswort darstellt.
- Die Funktion der nachfolgenden Reihen, d. h. der zweiten Reihe (die Zellen 200 - 206), der dritten Reihe (die Zellen 300 - 302) und der vierten Reihe (die Zelle 400), besteht darin, das nächsthöherwertige Bit in der Anzahl der führenden Nullen zu erhalten. Insbesqndere besteht die Funktion der zweiten Reihe (die Zellen 200 - 206) darin, die Nullen Paare (Paardaten) in der Zeichenfolge von führenden Nullen des Eingangswortes zu zählen. Folglich sind lediglich die Hälfte der Zellen wie in der ersten Reihe erforderlich, um die zweite Reihe aufzubauen. Wie es dargestellt ist, werden diese Paardaten aus den Signalen an den Freigabeausgängen 20 der Zellen in der zweiten Reihe erhalten. Folglich sind die Signale an den Dateneingängen 12, 14 jeder Zelle in die erste Reihe gekoppelt, um die Signale an den Freigabeausgängen 20 der benachbarten Zellen-Paare in der ersten Reihe zu empfangen. Wenn das Signal an dem Freigabeausgang 20 einer beliebigen Zelle 200 - 206 in der zweiten Reihe aktiv (d. h. eine binäre "0") ist, ist dies eine Anzeige dafür, daß die Signale an den Dateneingängen 12, 14 für diese Zelle und folglich die Signale an den Freigabeausgängen 20, die diese Dateneingangssignale zuführen, beide binäre Nullen sind. Es wird offensichtlich, daß das Signal an dem Datenausgang 22 der ersten Zelle 200 der zweiten Reihe der Zellen 200 - 206 die Ungerade/Gerade-Ausrichtung der Gesamtanzahl von Nullen-Paaren in dem Eingangswort anzeigen wird. Folglich zeigt das Signal an dem Datenausgang 22 der ersten Zelle 200 der zweiten Reihe der Zellen das zweitniedrigstwertige Bit der Gesamtanzahl von führenden Nullen an.
- Der Aufbau und Betrieb der dritten Reihe der Zellen 300 - 302 und der vierten Reihe der Zelle 400 ist ausgeführt, wie es im vorhergehenden dargestellt wurde. Es wird offensichtlich, daß das Signal an dem Datenausgang 22 der ersten Zelle 300 der dritten Reihe der Zellen 300, 302 das zweithöchstwertige Bit der Gesamtanzahl von führenden Nullen anzeigen wird. Auf ähnliche Weise wird es offensichtlich, daß das Signal des Datenausgangs 22 der Zelle 400 der vierten Reihe das höchstwertige Bit der Gesamtanzahl von führenden Nullen anzeigen wird. Demgemäß definieren die Signale an den Datenausgängen 22 der ersten Zelle jeder Reihe gemeinsam ein Datenwort, dessen Größe die Gesamtanzahl der führenden Nullen anzeigt.
- Bei dem Beispiel von Fig. 5A gibt es keine führenden Nullen in dem Eingangswort 34, d. h. jedes Bit in dem Eingangswort ist eine binäre "0". Demgemäß ist, wie es gezeigt ist, die Größe des digitalen Ausgangswortes die binäre Zahl "0000" (die Dezimalzahl 0), die anzeigt, daß keine führenden Nullen in dem Eingangswort vorhanden sind. Bei dem Beispiel von Fig. 5B gibt es neun führende Nullen in dem Eingangswort, wobei, wie es gezeigt ist, die Größe des Wortes des Signals an dem Datenausgang die binäre Zahl "1001" ist, welche die Dezimalzahl "9" ist.
- Aus dem vorhergehenden wird es offensichtlich, daß eine Mehrzahl von Zellen 10 kaskadiert und verbunden werden kann, wie es im vorhergehenden beschrieben wurde, um einen Zähler für führende Nullen für ein Eingangswort mit einer beliebigen Breite zu definieren. Das Eingangswort wird zu den Dateneingängen der ersten Reihe der Zellen zugeführt, wobei jede nachfolgende Reihe lediglich die halbe Anzahl von Zellen wie die unmittelbar vorhergehende Reihe aufweist. Das Signal an dem Datenausgang 22 der ersten Zelle 100 der ersten Reihe der Zellen 100 - 114 liefert ein Ausgangssignal, das das niedrigstwertige Bit der Anzahl der führenden Nullen anzeigt, während das Signal an dem Datenausgang 22 der ersten Zelle jeder nachfolgenden Reihe (d. h. die Zellen 200, 300, 400) ein Ausgangssignal liefert, das ein h:herwertiges Bit der Anzahl der führenden Nullen anzeigt. Es wird offensichtlich, daß die letzte Reihe immer nur eine Zelle (beispielsweise die Zelle 400) aufweisen wird, und daß das Signal an dem Freigabeausgang 20 dieser Zelle als Nullanzeiger für das gesamte Eingangswort dient. Bezugnehmend auf Fig. 5A ist beispielsweise das Signal an dem Freigabeausgang 20 der Zelle 400 eine binäre "0", die folglich anzeigt, daß es keine führenden Nullen in dem Eingangswort gibt. Im Gegensatz dazu ist bei dem Beispiel von Fig. 5B das Signal an dem Freigabeausgang 20 der Zelle 400 eine binäre "1", die anzeigt, daß in dem Eingangswort führende Nullen vorhanden sind.
- Obwohl das Zählerarray für führende Nullen, das im vorhergehenden beschrieben wurde, für einen Bus mit einer beliebigen Bitbreite angewendet werden kann, können gewisse Beziehungen definiert werden, wenn die Bitbreite eine Potenz von 2 ist. Folglich ist es für einen 2N-Bit-Bus offensichtlich, daß das Array immer 2N1 1-Zellen aufweist, daß es immer N-aufeinanderfolgende Reihen von Zellen geben wird, und daß die erste Reihe der Zellen immer 2N/2-Zellen aufweisen wird. Diese Beziehungen sind in den Beispielen von Fig. 5A und 5B dargestellt. Ungeachtet der Konfiguration wird es jedoch aus den Zeichnungen und insbesondere aus den Fig. 4A, 4B, 5A und 5B offensichtlich, daß bei der letzten Zelle jeder Reihe (d. h. die Zellen 104 in Fig. 4A und 4B, und die Zellen 114, 206, 302 und 400 in den Fig. 5A und 5B) sowohl die Übertrageingänge 16 als auch die Freigabeeingänge 18 derselben mit einer Quelle verbunden sein sollten, welche eine binäre oder logische "0" darstellt.
- Ein wichtiges Merkmal der Erfindung ist durch die Fig. 4A, 48, 5A und 5B dargestellt. Es wird angemerkt, daß aufgrund der Arraytopologie und insbesondere aufgrund der Art und Weise, mit welcher die Zellen 10 kaskadiert und verbunden sind, keine Überkreuzung der Signalleitungen, die die Zellen 10 verbinden, auftritt. Dieses Merkmal der Erfindung vereinfacht die Implementierung der Erfindung, und insbesondere die Implementierungen, die einen Metallisierungstyp verwenden, um die Verbindungen herzustellen. Folglich erfordert eine Implementierung der Erfindung auf einer gedruckten Schaltungsplatine oder in einer integrierten Schaltung (beispielsweise in einem kundenspezifischen LSI-Chip) lediglich eine Metallisierungsschicht. Mit anderen Worten ist es nicht erforderlich, mehrere isolierte Metallisierungsschichten vorzusehen, wie es beim Stand der Technik der Fall ist.
- Ein weiteres wichtiges Merkmal der Erfindung besteht darin, daß alle Bits des Eingangswortes parallel zu dem Zählerarray zugeführt werden, und daß der Betrieb des Zählerarrays vollkommen asynchron ist. Demgemäß werden keine Maschinentakte beim Verarbeiten des Eingangswortes verschwendet, um die Anzahl der führenden Nullen zu bestimmen.
Claims (3)
1. Eine Zählerzelle für führende Nullen, mit:
einer asynchronen Logikschaltung (10), die einen
Eingang (12) für ein höchstwertiges Datenbit und einen
Eingang (14) für ein niedrigstwertiges Datenbit
aufweist, und die ferner eine Mehrzahl von Ausgängen
aufweist, die einen Datenbitausgang (22) und einen
Übertragbitausgang (20) umfassen,
dadurch gekennzeichnet, daß
die Schaltung ferner eine Einrichtung zum Herstellen
eines Zwei-Bit-Ausgangssignals umfaßt, wobei die
Einrichtung einen Freigabebiteingang (18) und einen
Übertragbiteingang (16) aufweist;
die Schaltung an dem Übertragbitausgang (20) ein Signal
mit einem Sperrwert liefert, wenn ein Sperrwert an den
Freigabebiteingang (18) angelegt ist; und
die Schaltung an dem Datenbitausgang (22) ein Signal
mit einem Wert liefert, welcher durch den Wert eines
Eingangssignals bestimmt ist, das an den
Übertragbiteingang (16) angelegt ist, wenn ein Sperrwert an den
Freigabebiteingang (18) angelegt ist; und
die Schaltung auf Eingangssignale anspricht, die an den
Eingängen (12, 14) für die höchstwertigen und
niedrigstwertigen Datenbits angelegt sind, um das Zwei-
Bit-Ausgangssignal zu liefern, welches:
einen ersten Wert aufweist, falls ein Nicht-Null-
Wert an den Eingang (12) für das höchstwertige Bit
angelegt ist,
einen zweiten Wert aufweist, falls ein Null-Wert
an den Eingang (12) für das höchstwertige Bit
angelegt ist, und ein Nicht-Null-Wert an den Eingang
(14) für das niedrigstwertige Bit angelegt ist,
und
einen dritten Wert aufweist, falls ein Null-Wert
an den beiden Eingängen angelegt ist.
2. Eine Zelle gemäß Anspruch 1, bei der die Logikschaltung
ein UND-Gatter (28) mit invertierenden Eingängen,
die die Datenbits und das Freigabebit empfangen,
und einen Ausgang aufweist, der das
Übertragausgangsbit liefert;
ein weiteres UND-Gatter (24) mit einem Eingang,
der das niedrigstwertige Datenbit empfängt, und
mit invertierenden Eingängen aufweist, die das
höchstwertige Datenbit und das Freigabebit
empfangen; und
ein ODER-Gatter (26) mit einem Eingang, der das
Übertrageingangsbit empfängt, mit einem weiteren
Eingang, der mit einem Ausgang des zweiten UND-
Gatters gekoppelt ist, und mit einem Ausgang
aufweist, der das Datenausgangssignal liefert.
3. Ein Zählerarray für führende Nullen zum Zählen von
führenden Nullen in einem Datensignal, das durch einen
Datenbus übertragen wird, der eine Mehrzahl von
Signalleitungen aufweist, die jeweils ein Datenbit
übertragen, wobei das Array eine Mehrzahl von Zellen gemäß
einem der Ansprüche 1 oder 2 aufweist, welche in einer
Mehrzahl von Reihen angeordnet sind, wobei die
Datenbitausgänge der ersten Zellen (100, 200, 300, 400) der
Reihen gemeinsam ein digitales Wort mit einer Größe
liefern, die die Anzahl der führenden Nullen in dem
Datensignal anzeigt, das durch den Bus übertragen wird,
wobei die Zellen und Reihen derart konfiguriert sind,
Datenbiteingänge jeder Zelle (100 - 114) der
ersten Reihe mit einem Paar von benachbarten
Signalleitungen des Datenbusses gekoppelt sind,
Datenbiteingänge jeder Zelle (200 - 206, 300
- 302, 400) jeder weiteren Reihe mit
Übertragbitausgängen eines benachbarten Paars von Zellen der
vorhergehenden Reihe gekoppelt sind,
der Übertragbiteingang jeder Zelle (100 - 112, 200
- 204, 300) mit Ausnahme der letzten Zelle (114,
206, 302, 400) in jeder Reihe mit dem
Datenbitausgang der vorhergehenden Zelle derselben Reihe
gekoppelt ist,
der Freigabebiteingang jeder Zelle (114, 206, 302,
400) in jeder Reihe mit dem Freigabebitausgang der
vorhergehenden Zelle derselben Reihe gekoppelt
ist,
die Freigabebiteingänge der letzten Zellen (114,
206, 302, 400) jeder Reihe mit
Nullwert-Eingangssignalen versorgt werden, und
die Übertragbiteingänge der letzten Zellen (114,
206, 302, 400) jeder Reihe mit
Nullwert-Eingangssignalen versorgt werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/431,951 US5111415A (en) | 1989-11-06 | 1989-11-06 | Asynchronous leading zero counter employing iterative cellular array |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69031486D1 DE69031486D1 (de) | 1997-10-30 |
DE69031486T2 true DE69031486T2 (de) | 1998-02-05 |
Family
ID=23714129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69031486T Expired - Fee Related DE69031486T2 (de) | 1989-11-06 | 1990-11-01 | Asynchroner Zähler für vorangehende Nullen mit iterativer Zellenmatrix |
Country Status (4)
Country | Link |
---|---|
US (1) | US5111415A (de) |
EP (1) | EP0427464B1 (de) |
JP (1) | JPH03175528A (de) |
DE (1) | DE69031486T2 (de) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5343540A (en) * | 1990-02-07 | 1994-08-30 | Fuji Photo Film Co., Ltd. | Method for detecting positions of consecutive bits set to predetermined codes |
GB9124539D0 (en) * | 1991-11-19 | 1992-01-08 | Texas Instruments Ltd | A circuit for detecting the position of an extreme 1"bit in a binary number |
US5241490A (en) * | 1992-01-06 | 1993-08-31 | Intel Corporation | Fully decoded multistage leading zero detector and normalization apparatus |
US5410719A (en) * | 1992-05-27 | 1995-04-25 | Hewlett-Packard Company | Field compositor for merging data and including cells each receiving three control and two data inputs and generating one control and one data output therefrom |
US5321640A (en) * | 1992-11-27 | 1994-06-14 | Motorola, Inc. | Priority encoder and method of operation |
US5383142A (en) * | 1993-10-01 | 1995-01-17 | Hewlett-Packard Company | Fast circuit and method for detecting predetermined bit patterns |
US5574670A (en) * | 1994-08-24 | 1996-11-12 | Advanced Micro Devices, Inc. | Apparatus and method for determining a number of digits leading a particular digit |
JPH08147142A (ja) * | 1994-11-17 | 1996-06-07 | Mitsubishi Electric Corp | プライオリティ検出用カウンタ装置 |
US5844826A (en) * | 1996-10-18 | 1998-12-01 | Samsung Electronics Co., Ltd. | Leading zero count circuit |
US5977890A (en) * | 1997-06-12 | 1999-11-02 | International Business Machines Corporation | Method and apparatus for data compression utilizing efficient pattern discovery |
US6173300B1 (en) | 1998-08-11 | 2001-01-09 | Advanced Micro Devices, Inc. | Method and circuit for determining leading or trailing zero count |
US6513053B1 (en) | 2000-01-12 | 2003-01-28 | Arm Limited | Data processing circuit and method for determining the first and subsequent occurences of a predetermined value in a sequence of data bits |
US7415494B2 (en) * | 2002-04-03 | 2008-08-19 | Stmicroelectronics Asia Pacific Pte Ltd | Divider apparatus and associated method |
US20060179098A1 (en) * | 2005-02-09 | 2006-08-10 | International Business Machines Corporation | System and method for reduction of leading zero detect for decimal floating point numbers |
US8189683B2 (en) * | 2006-11-28 | 2012-05-29 | General Instrument Corporation | Method and system for providing single cycle context weight update leveraging context address look ahead |
US7397402B1 (en) * | 2007-01-22 | 2008-07-08 | General Instrument Corporation | Method and system for providing arithmetic code normalization and byte construction |
US20080247459A1 (en) * | 2007-04-04 | 2008-10-09 | General Instrument Corporation | Method and System for Providing Content Adaptive Binary Arithmetic Coder Output Bit Counting |
US8213499B2 (en) * | 2007-04-04 | 2012-07-03 | General Instrument Corporation | Method and apparatus for context address generation for motion vectors and coefficients |
US8005880B2 (en) * | 2007-08-24 | 2011-08-23 | International Business Machines Corporation | Half width counting leading zero circuit |
US8335256B2 (en) * | 2008-11-14 | 2012-12-18 | General Instrument Corporation | Motion compensation in video coding |
US8954833B2 (en) | 2012-06-06 | 2015-02-10 | International Business Machines Corporation | Half width counting leading zero circuit using comparators |
KR101586175B1 (ko) * | 2015-08-10 | 2016-01-21 | 주식회사 디에이치피 | 안전사용기능을 갖는 핸드블랜더 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3234368A (en) * | 1963-12-31 | 1966-02-08 | Sperry Rand Corp | Scale factor device for normalizing a binary number |
US3678259A (en) * | 1970-07-28 | 1972-07-18 | Singer Co | Asynchronous logic for determining number of leading zeros in a digital word |
US3831012A (en) * | 1973-03-28 | 1974-08-20 | Control Data Corp | Normalize shift count network |
US4106105A (en) * | 1977-02-28 | 1978-08-08 | The Singer Company | Zero detector |
US4247891A (en) * | 1979-01-02 | 1981-01-27 | Honeywell Information Systems Inc. | Leading zero count formation |
GB2115190B (en) * | 1982-02-10 | 1985-11-20 | Singer Co | Data word normalisation |
JPS59216245A (ja) * | 1983-05-25 | 1984-12-06 | Nec Corp | 正規化回路 |
JPS62150427A (ja) * | 1985-12-24 | 1987-07-04 | Nec Corp | 浮動小数点正規化桁合せ回路 |
US4864527A (en) * | 1987-08-24 | 1989-09-05 | Victor Peng | Apparatus and method for using a single carry chain for leading one detection and for "sticky" bit calculation |
-
1989
- 1989-11-06 US US07/431,951 patent/US5111415A/en not_active Expired - Lifetime
-
1990
- 1990-11-01 DE DE69031486T patent/DE69031486T2/de not_active Expired - Fee Related
- 1990-11-01 EP EP90311996A patent/EP0427464B1/de not_active Expired - Lifetime
- 1990-11-06 JP JP2302274A patent/JPH03175528A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP0427464A3 (en) | 1992-10-21 |
US5111415A (en) | 1992-05-05 |
DE69031486D1 (de) | 1997-10-30 |
EP0427464B1 (de) | 1997-09-24 |
EP0427464A2 (de) | 1991-05-15 |
JPH03175528A (ja) | 1991-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69031486T2 (de) | Asynchroner Zähler für vorangehende Nullen mit iterativer Zellenmatrix | |
DE69407588T2 (de) | Programmierbare digitale Verzögerungsschaltungseinheit | |
DE69632978T2 (de) | Multi-Operand-Addierer, der Parallelzähler benutzt | |
DE3853805T2 (de) | Digitaler Multiplizierer und Multiplizierer-Akkumulator, welcher Zwischenergebnisse vorlädt und akkumuliert. | |
DE4007223C2 (de) | ||
DE69731700T2 (de) | Arithmetischer Schaltkreis und arithmetisches Verfahren | |
DE10105945A1 (de) | Linearsummierungsmultipliziererarrayimplementie-rung sowohl zur vorzeichenbehafteten als auch zur vorzeichenlosen Multipliaktion | |
DE3854212T2 (de) | Signalgenerator für die Umlaufadressierung. | |
DE2532125C2 (de) | Modularbaustein für Datenverarbeitungsanlagen | |
DE2758130C2 (de) | Binärer und dezimaler Hochgeschwindigkeitsaddierer | |
DE3788617T2 (de) | Vektordatenverarbeitungssystem mit einer E/A-Steuerung für jeden Vektordatenprozessor und einer anderen E/A-Steuerung für mindestens einen anderen Vektordatenprozessor. | |
DE4101004A1 (de) | Paralleler multiplizierer mit sprungfeld und modifiziertem wallac-baum | |
DE69129889T2 (de) | Pipelineschaltung und Verfahren zum Vergleich der relativen Differenz zwischen zwei asynchronen Zeigern und einem programmierbaren Wert | |
DE69229325T2 (de) | Schaltung zur Detektierung der Position eines äussersten "1"-Bits in eine Binärzahl | |
DE19826315C2 (de) | Binärer Komparator | |
DE3587190T2 (de) | Fehlerkorrekturschaltung mit einem reduzierten syndromwort. | |
DE2730918A1 (de) | Anordnung zum multiplizieren von binaerzahlen | |
DE2826773A1 (de) | Verfahren und schaltungsanordnung zum feststellen der wertigkeit von ziffern in arithmetischen operationen mit dezimalrechnern | |
EP0257362A1 (de) | Addierer | |
DE68926541T2 (de) | Adressenmodifizierungsschaltung | |
DE3822324C2 (de) | Vorrichtung zum Zerlegen des Prioritätswertes | |
DE69307398T2 (de) | Programmierbare logische Zelle | |
DE2649147C2 (de) | Anordnung zum wahlweisen Durchführen von logischen und arithmetischen Operationen | |
DE69026363T2 (de) | Multipositionsverschieber mit Paritätsbitgenerator | |
DE1241159B (de) | UEbertragschaltung fuer ein Schnelladdierwerk |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |