DE69031486T2 - Asynchroner Zähler für vorangehende Nullen mit iterativer Zellenmatrix - Google Patents

Asynchroner Zähler für vorangehende Nullen mit iterativer Zellenmatrix

Info

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
Application number
DE69031486T
Other languages
English (en)
Other versions
DE69031486D1 (de
Inventor
J Barry Shackleford
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Application granted granted Critical
Publication of DE69031486D1 publication Critical patent/DE69031486D1/de
Publication of DE69031486T2 publication Critical patent/DE69031486T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting 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

    Gebiet der Erfindung
  • 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.
  • Hintergrund der Erfindung
  • 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.
  • Kurze Beschreibung der Zeichnungen
  • 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.
  • Detaillierte Beschreibung der Erfindung
  • 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.
DE69031486T 1989-11-06 1990-11-01 Asynchroner Zähler für vorangehende Nullen mit iterativer Zellenmatrix Expired - Fee Related DE69031486T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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