DE19941196A1 - Zweikanal-FIFO mit synchronisierten Lese- und Schreibzeigern - Google Patents
Zweikanal-FIFO mit synchronisierten Lese- und SchreibzeigernInfo
- Publication number
- DE19941196A1 DE19941196A1 DE19941196A DE19941196A DE19941196A1 DE 19941196 A1 DE19941196 A1 DE 19941196A1 DE 19941196 A DE19941196 A DE 19941196A DE 19941196 A DE19941196 A DE 19941196A DE 19941196 A1 DE19941196 A1 DE 19941196A1
- Authority
- DE
- Germany
- Prior art keywords
- signal
- flop
- flip
- clock
- write
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1075—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/12—Indexing scheme relating to groups G06F5/12 - G06F5/14
- G06F2205/123—Contention resolution, i.e. resolving conflicts between simultaneous read and write operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Communication Control (AREA)
Abstract
Ein FIFO-Stapel wird mit einem DPRAM realisiert. Einer der Kanäle des DPRAM wird zum Hinzufügen von Elementen zu dem FIFO-Stapel verwendet, und der andere Kanal wird zum Entfernen von Elementen von dem FIFO-Stapel verwendet. Die Kanäle arbeiten in verschienenden Taktbereichen. Eine Synchronisierschaltung koordiniert die Lese- und Schreiboperationen über die Taktbereiche hinweg.
Description
Die Erfindung betrifft im allgemeinen die Synchronisierung von Adreßzeigern über mehrere
Taktbereiche hinweg und insbesondere einen Zweikanal-FIFO-Speicher (FIFO = First-In-
First-Out), der einen Lese- und einen Schreibzeiger über mehrere Taktbereiche (Domänen)
synchronisiert.
Ein FIFO-Speicher ist ein allgemein bekannter Speichertyp, der zahlreiche Anwendungen in
elektronischen Schaltungen und Systemen findet. Ein FIFO-Speicher speichert Elemente in
einem Stapel, wobei die ältesten Elemente als erste entnommen werden. In vielen Anwendun
gen kann ein Prozeß dem Stapel Elemente hinzufügen. Dieser Prozeß wird als Schreibprozeß
bezeichnet. Ein anderer Prozeß kann Elemente von dem Stapel entnehmen. Dieser Prozeß
wird als Leseprozeß bezeichnet. Der Schreibprozeß muß einen Adreßzeiger aufrechterhalten,
damit er dem Stapel Elemente hinzufügen kann. Ahnlich muß der Leseprozeß einen Adreß
zeiger aufrechterhalten, damit er Elemente aus dem Stapel entnehmen kann.
In vielen Anwendungen wird der FIFO-Speicher mit Hilfe eines Zweikanal-RAM (DPRAM =
Dual Port RAM) realisiert. Ein Kanal oder Port wird von dem Schreibprozeß verwendet, und
der andere Kanal oder Port wird von dem Leseprozeß verwendet. Der Schreibprozeß beginnt
mit der Speicherung eines Elements bei der niedrigsten verfügbaren Speicherstelle. Der
Schreibprozeß fügt dann bei aufeinanderfolgenden Speicherstellen Elemente hinzu, indem ein
Schreibzeiger inkrementiert wird. Wenn der Schreibprozeß die höchste verfügbare Speicher
zelle erreicht, wird der Schreibzeiger inkrementiert, damit er zu der niedrigsten verfügbaren
Speicherstelle zurückkehrt. Der FIFO-Speicher arbeitet somit umlaufend.
Der Leseprozeß beginnt mit der Entnahme des Elementes bei der niedrigsten verfügbaren
Speicherstelle. Der Leseprozeß setzt sich fort, indem er Elemente bei nachfolgenden Spei
cherstellen entnimmt, wobei der Lesezeiger inkrementiert wird. Wenn der Lesezeiger bei dem
Schreibzeiger ankommt, ist der Speicher leer, und der Leseprozeß entnimmt keine weiteren
Elemente von dem FIFO-Stapel. Wenn der Schreibzeiger bei dem Lesezeiger ankommt, ist
der Speicher voll, und der Schreibprozeß beendet das Hinzufügen von Elementen.
In vielen Anwendungen arbeiten der Schreibprozeß und der Leseprozeß in verschiedenen
Taktbereichen. Es muß daher eine Schaltung vorgesehen werden, um den Schreibzeiger in
einem Taktbereich zu erzeugen und den Lesezeiger in dem anderen Taktbereich zu erzeugen.
Zusätzlich muß die Schaltung die Schreib- und Lesezeiger über die Taktbereiche hinweg syn
chronisieren, damit der Schreibprozeß nur leeren Speicherstellen ein Element hinzufügt und
der Leseprozeß Elemente aus gültigen Speicherstellen entnimmt. Diese Synchronisierung
kann erhebliche Verzögerungen zwischen den Lese- und Schreibprozessen einführen. Zusätz
lich geht die Synchronisierung häufig mit komplizierten, anwendungsspezifischen Schaltun
gen einher, die üblicherweise in den Standardbibliotheken der CMOS-Zellen nicht verfügbar
sind. Die Entwicklung solcher anwendungsspezifischer Schaltungen führt zu zusätzlichen
Kosten und zusätzlichem Zeitaufwand.
Gemäß eines Aspekts der Erfindung umfaßt ein FIFO einen Speicher, einen Schreibkanal,
einen Lesekanal und eine erste und eine zweite Synchronisierschaltung. Der Speicher ist so
konfiguriert, daß er einen FIFO-Stapel speichert. Der Schreibkanal ist so konfiguriert, daß er
gestützt auf einen Schreibadreßzeiger dem FIFO-Stapel Elemente hinzufügt. Der Schreibka
nal arbeitet in einem ersten Taktbereich. Der Lesekanal ist so konfiguriert, daß er gestützt auf
einen Leseadreßzeiger Elemente von dem FIFO-Stapel liest.
Der Lesekanal arbeitet in einem zweiten Taktbereich, der sich vom ersten Taktbereich unter
scheidet. Die erste Synchronisierschaltung ist mit dem Schreibkanal betrieblich gekoppelt und
so konfiguriert, daß sie den Schreibadreßzeiger empfängt und den Schreibadreßzeiger mit
dem zweiten Taktbereich synchronisiert. Die zweite Synchronisierschaltung ist mit dem Le
sekanal betrieblich gekoppelt und so konfiguriert, daß sie den Leseadreßzeiger empfangt und
den Leseadreßzeiger mit dem ersten Taktbereich synchronisiert.
Gemäß eines weiteren Aspekts der Erfindung umfaßt eine Synchronisierschaltung, die sich
zum Koordinieren von Adreßzeigern über Taktbereiche hinweg eignet, ein erstes und ein
zweites Zeitsteuer-Flip-Flop und eine Inversionsschaltung. Das erste Zeitsteuer-Flip-Flop ist
so konfiguriert, daß es erste Zeitsignale erzeugt. Das erste Zeitsteuer-Flip-Flop arbeitet in
einem ersten Taktbereich. Die Inversionsschaltung ist mit dem ersten Zeitsteuer-Flip-Flop
betrieblich gekoppelt und so konfiguriert, daß sie invertierte Zeitsignale gestützt auf die ersten
Zeitsignale erzeugt. Das zweite Zeitsteuer-Flip-Flop ist mit dem Invertierer betrieblich ge
koppelt und so konfiguriert, daß es zweite Zeitsignale gestützt auf die invertierten Zeitsignale
erzeugt. Das zweite Zeitsteuer-Flip-Flop arbeitet in einem zweiten Taktbereich, der sich vom
ersten Taktbereich unterscheidet.
Die Erfindung ist im folgenden anhand bevorzugter Ausführungsformen mit Bezug auf die
Zeichnungen näher erläutert. In den Figuren zeigt:
Fig. 1 ein Blockdiagramm einer bevorzugten Ausführungsform eines FIFO-Speichers;
Fig. 2 ein Flußdiagramm eines bevorzugten Schreibprozesses, der in dem FIFO-Speicher der
Fig. 1 abläuft;
Fig. 3 ein Flußdiagramm eines bevorzugten Leseprozesses, der in dem FIFO-Speicher der
Fig. 1 abläuft;
Fig. 4 einen Schaltplan einer bevorzugten Ausführungsform einer Adreßsynchronisierschal
tung;
Fig. 5 einen Schaltplan einer anderen bevorzugten Ausführungsform einer Adreßsynchroni
sierschaltung; und
Fig. 6 ein Zeitablaufdiagramm der Signale aus der Schaltung der Fig. 5.
Mit Bezug auf Fig. 1 wird im folgenden eine bevorzugte Ausführungsform eine FIFO-
Speichers 100 beschrieben. Der FIFO-Speicher 100 umfaßt ein DPRAM 110. Ein Kanal oder
Port 113 wird zum Schreiben von Daten in das DPRAM 110 verwendet, und ein Kanal oder
Port 115 wird zum Lesen von Daten aus dem DPRAM 110 verwendet. Der Kanal 113 und der
Kanal 115 umfassen jeweils einen Adreßkanal und einen Datenkanal. Die Leitungen wr_addr
114 sind mit dem Kanal 113 verbunden und werden zum Auswählen einer Speicherstelle in
dem DPRAM 110 verwendet. Die Leitungen wr_data 112 sind ebenfalls mit dem Kanal 113
verbunden. Diese Leitungen werden dazu verwendet, während einer Schreiboperation Daten
signale an die ausgewählte Adreßstelle zu liefern. Gemeinsam werden die Leitungen wr_addr
114 und wr_data 112 dazu verwendet, einem FIFO-Stapel in dem DPRAM 110 ein Element
hinzuzufügen.
Die Leitungen rd_addr 118 sind mit dem Kanal 115 verbunden und werden dazu verwendet,
eine Speicherstelle in dem DPRAM 110 auszuwählen. Die Leitungen rd_data 116 sind eben
falls mit dem Kanal 115 verbunden. Diese Leitungen werden dazu verwendet, während einer
Leseoperation Datensignale von einer ausgewählten Adreßstelle zu empfangen. Gemeinsam
werden die Leitungen rd_addr 118 und rd_data 116 dazu verwendet, ein Element von dem
FIFO-Stapel zu entnehmen.
Bei einer bevorzugten Ausführungsform sieht das DPRAM 110 nur die Schreibfunktion für
den Schreibkanal 113 und nur die Lesefunktion für den Lesekanal 115 vor. Eine Vielzahl im
Handel erhältlicher DPRAMs bieten jedoch sowohl die Schreib- als auch die Lesefunktion für
beide Kanäle, und solche DPRAMs eignen sich als Alternativen zum Realisieren der Erfin
dung.
Der FIFO-Speicher 100 ist so konfiguriert, daß über den Schreibkanal 113 dem Stapel Ele
mente hinzugefügt werden können und daß über den Lesekanal 115 dieselben Element von
dem Stapel entnommen werden können. Elemente werden über den Schreibkanal 113 in auf
einanderfolgenden Speicherstellen hinzugefügt. Das erste Element wird in die Speicherstelle
"000h" geschrieben, das nächste Element wird in die Speicherstelle "001h" geschrieben usw.
Schließlich fügt der Schreibkanal 113 der höchsten Speicherstelle ein Element hinzu (z. B.
"FFFh" in einem 4K Speicher). Nach diesem Schreibvorgang wird der Schreibzeiger inkre
mentiert, so daß er zur ersten Speicherstelle "000h" zurückkehrt. Der Lesezeiger arbeitet auf
dieselbe Weise.
Um sicherzustellen, daß ein Schreibkanal 113 nicht versucht, ein Element in eine Speicher
stelle hinzuzufügen, die noch nicht gelesene Daten enthält (d. h. ein Element, das noch nicht
über den Lesekanal 115 entnommen wurde), wird ein FIFO-Voll-Signal erzeugt. Ähnlich
wird, um sicherzustellen, daß der Lesekanal 115 nicht versucht, ein Element aus einer Spei
cherstelle zu lesen, in die keine Daten geschrieben wurden (d. h. eine Speicherstelle, in die von
dem Schreibkanal 113 keine Daten geschrieben wurden), ein FIFO-Leer-Signal erzeugt.
Der Schreibkanal 113 und der Lesekanal 115 können in verschiedenen Taktbereichen (Takt
domänen) arbeiten. Deshalb werden der Lese- und der Schreibadreßzeiger über die Taktberei
che hinweg synchronisiert. Die Lese- und Schreibadreßzeiger werden dazu verwendet, FIFO-
voll(fifo_full)- und FIFO-leer(filo_empty)-Signale zu erzeugen.
Im einzelnen sind die Leitungen wr_addr 114 mit einer Synchronisiereinrichtung 120 und
einer Schreiblogikschaltung 122 verbunden, und die Leitungen rd_addr 118 sind mit einer
Synchronisiereinrichtung 124 und einer Leselogikschaltung 126 verbunden. Die Synchroni
siereinrichtung 120 empfängt den aktuellen Schreibzeiger über die Leitungen wr_addr 114.
Nach einer ausreichenden Verzögerung zum Koordinieren der Taktbereiche liefert die Syn
chronisiereinrichtung 120 den Schreibzeiger an die Leselogikschaltung 126 über die Leitun
gen 128. Ähnlich empfängt die Synchronisiereinrichtung 124 den aktuellen Lesezeiger über
die Leitungen rd_addr 118. Nach einer ausreichenden Verzögerung zum Koordinieren der
Taktbereiche liefert die Synchronisiereinrichtung 124 den Lesezeiger an die Schreiblogik
schaltung 122 über die Leitungen 132. Die Leselogikschaltung 126 und die Schreiblogik
schaltung 122 erzeugen das fifo_empty-Signal 130 bzw. das fifo_full-Signal 136.
Eine bevorzugte Art zum Erzeugen des fifo_empty-Signals 130 und des fifo_full-Signals 136
besteht darin, auf der MSB-Seite (Seite des höchstwertigen Bits) der Signale wr_addr und
rd_addr ein zusätzliches Bit hinzuzufügen und dieses als ein Teil der Signale wr_addr bzw.
rd_addr zu behandeln, wenn diese inkrementiert werden. Wenn z. B. angenommen wird, daß
wr_addr und rd_addr 12 Bit breit sind, macht das Hinzufügen eines 13. Bits auf der MSB-
Seite diese 13 Bit breit. Während des Zurücksetzens werden wr_addr [12 : 0] und rd_addr
[12 : 0] alle auf null zurückgesetzt. wr_addr wird inkrementiert, bis fifo_full aktiviert (logisch
wahr gesetzt) wird rd_addr wird; inkrementiert, bis fifo-empty aktiviert wird. Man beachte,
daß wr_addr [12 : 12] (das dreizehnte Bit des Signals wr_addr) und rd_addr [12 : 12] (das drei
zehnte Bit des Signals rd_addr) während geradzahliger Durchgänge des FIFO-Speichers den
Wert null haben und während ungeradzahliger Durchgänge den Wert eins haben. Aus der
folgenden logischen Gleichung ergibt sich daher das Signal fifo_full:
(wr_addr [12 : 12] XOR rd_addr_sync [12 : 12]) UND (wr_addr [11 : 0] XNOR
rd_addr_sync [11 : 0]);
fifo_empty ergibt sich aus der logischen Gleichung:
rd_addr [12 : 0] XNOR wr_addr_sync [12 : 0],
wobei XOR exklusiv-ODER und XNOR exklusiv-NICHT-ODER bezeichnet.
Die Schreiblogikschaltung 122 und die Leselogikschaltung 126 implementieren diese Logik
funktionen zum Erzeugen der Signale fifo_full bzw. fifo_empty.
Bei der Initialisierung werden der Lese- und der Schreibadreßzeiger auf "000h" gesetzt. Wenn
Elemente hinzugefügt werden, wird der Schreibzeiger inkrementiert. Demzufolge wird die
Leselogikschaltung 126 das Signal fifo_empty deaktivieren (logisch falsch setzen). Abhängig
davon werden Elemente von dem FIFO gelesen, und der Lesezeiger wird inkrementiert. Wenn
der Lesezeiger den Schreibzeiger einholt, wird das Signal fifo_empty aktiviert, bis dem FIFO-
Stapel zusätzliche Elemente hinzugefügt worden sind.
Wie oben erwähnt, wird der Schreibzeiger, wenn er die höchste Speicherstelle erreicht, in
krementiert, um zur ersten Speicherstelle zurückzukehren. Wenn zusätzliche Elemente hinzu
gefügt werden, kann der Schreibadreßzeiger schließlich den Leseadreßzeiger einholen. Wenn
zusätzliche Elemente hinzugefügt würden, würden diese Elemente andere Elemente über
schreiben, die noch nicht von dem Stapel gelesen worden sind. Um dies zu vermeiden, wird
das Signal fifo_full aktiviert. Es darf nicht weitergeschrieben werden, bis weitere Elemente
von dem FIFO-Stapel entnommen worden sind.
Wie oben erwähnt, ist der FIFO-Stapel in dem DPRAM 110 realisiert. Diese Konfiguration
eignet sich zur Verwendung mit einem DPRAM jeder üblichen Größe und Breite.
Mit Bezug auf Fig. 2 ist im folgenden der Prozeß zum Hinzufügen von Elementen zu dem
FIFO-Stapel mit weiteren Einzelheiten beschrieben. Im Schritt 210 ermittelt das FIFO, ob das
Signal fifo_full aktiviert ist. Wenn ja, bleibt das FIFO beim Schritt 210. Anderenfalls geht das
FIFO zum Schritt 212 weiter. Hier inkrementiert das FIFO den Schreibzeiger, so daß in der
nächsten Speicherstelle ein Element hinzugefügt werden kann. Im Schritt 214 fügt das FIFO
dem Stapel bei der von dem Schreibzeiger ausgewählten Adreßstelle ein Element hinzu. Im
Schritt 216 wird der neue Schreibzeiger über den Taktbereich hinweg übergeben. Dies erlaubt
es dem Leseprozeß, das nächste Element zu entnehmen. Das FIFO geht dann zum Schritt 210
zurück.
Mit Bezug auf Fig. 3 ist der Prozeß zum Entnehmen eines Elements aus dem FIFO mit weite
ren Einzelheiten beschrieben. Im Block 310 ermittelt das FIFO, ob das Signal fifo_empty ak
tiviert ist. Wenn ja, bleibt das FIFO im Block 310. Anderenfalls geht das FIFO zum Block
312 weiter. Hier liest das FIFO Daten aus der Speicherstelle, die durch den Lesezeiger ge
wählt wurde. Im Block 314 inkrementiert das FIFO den Lesezeiger. Im Block 316 wird ein
neuer Lesezeiger über den Taktbereich hinweg übergeben. Dies erlaubt es dem Schreibpro
zeß, bei der geleerten Speicherstelle ein Element hinzuzufügen. Das FIFO geht dann zum
Block 310 zurück.
Mit Bezug auf Fig. 4 ist im folgenden eine bevorzugte Ausführungsform einer Adreßsynchro
nisierschaltung 410 (oder Adreßsynchronisiereinrichtung) beschrieben. Die Adreßsynchroni
sierschaltung 410 kann dazu verwendet werden, die Synchronisiereinrichtung 120 und die
Synchronisiereinrichtung 124 der Fig. 1 zu realisieren. Die Adreßsynchronisierschaltung 410
ist in zwei Taktbereiche (Taktdomänen) aufgeteilt. Insbesondere arbeitet der Block 412 auf
der Basis eines Takts 411 (clock_src), während der Block 414 auf der Basis eines Takts 413
(clock_dest) arbeitet. Der Takt 411 und der Takt 413 sind zueinander asynchron und können
verschiedene Frequenzen haben. Demnach definiert der Block 412 einen Taktbereich gestützt
auf den Takt 411, und der Block 414 definiert einen Taktbereich gestützt auf den Takt 413.
Die Adreßsynchronisierschaltung 410 dient dazu, den Übergang eines Adreßzeigers 423
(addr_ptr) von dem Taktbereich des Blocks 412 zu einem synchronisierten Adreßzeiger 439
(addr_ptr_sync) in dem Taktbereich des Blocks 414 zu koordinieren.
Die Schaltung beginnt ihren Betrieb bei Empfang eines Signals reset_z durch ein UND-Gatter
416. Das Signal reset_z wird dazu verwendet, den normalen Schaltungsbetrieb zu starten.
Während des Betriebs der Synchronisierschaltung 410 muß das Signal reset_z auf einem ho
hen Zustand bleiben. Das UND-Gatter 416 empfängt auch ein Signal dest_out von dem
Zeitsteuer-Flip-Flop 434. Wenn das Signal reset_z und das Signal dest_out beide einen hohen
Zustand haben, liefert das UND-Gatter 416 ein Signal mit hohem Pegel an das Zeitsteuer-
Flip-Flop 418. Das Zeitsteuer-Flip-Flop 418 wird von dem Takt 411 getriggert. Bei Beginn
eines neuen Taktzyklus gibt das Zeitsteuer-Flip-Flop 418 das hochpegelige Signal von dem
UND-Gauer 416 als das Signal src_sync1 weiter. Dieses Signal wird seinerseits an das
Zeitsteuer-Flip-Flop 420 und das XOR-Gatter 422 weitergegeben. Das Zeitsteuer-Flip-Flop
420 arbeitet ähnlich wie das Zeitsteuer-Flip-Flop 418. Bei dem Beginn eines neuen Taktzy
klus gibt das Zeitsteuer-Flip-Flop 420 den Wert des Signals src_sync1 als das Signal src_out
weiter. Wenn also das Signal src_sync1 umschaltet (Übergang), stimmt der Wert des Signals
src_out während einer Taktperiode nicht überein. Da diese Signale beide an das XOR-Gatter
422 übergeben werden, erzeugt dieses während dieser Taktperiode ein Signal mit hohem Pe
gel.
Das Ausgangssignal des XOR-Gatters 422 wird an den Steuereingang eines Multiplexers 424
angelegt. Der Multiplexer 424 empfängt auch den Wert des Zeigers, der von Halte-Flip-Flops
426 gehalten wird, sowie addr_ptr 423, der den momentanen Zeigerwert angibt. Wenn der
Multiplexer 424 ein Signal mit hohem Pegel von dem XOR-Gatter 422 empfängt, liefert er
den Wert von addr_ptr 423 an die Halte-Flip-Flops 426. Anderenfalls liefert er den Wert des
Zeigers vom Ausgang der Halte-Flip-Flops 426 an den Eingang der Halte-Flip-Flops 426. Der
Zeigerwert vom Ausgang der Halte-Flip-Flops 426 wird über die Taktgrenze hinweg an den
Multiplexer 438 übergeben.
Wiederum empfängt das Zeitsteuer-Flip-Flop 430 das Signal src_out vom Zeitsteuer-Flip-
Flop 420. Beim Beginn eines neuen Taktzyklus innerhalb des Taktbereichs des Blocks 414
gibt das Zeitsteuer-Flip-Flop 430 den Wert des Signals src_out als das Signal dest_sync1
weiter. Das Signal dest_sync1 wird an den Invertierer 432 geliefert. Das invertierte Signal
dest_sync1 wird an das Zeitsteuer-Flip-Flop 434 und das XOR-Gatter 436 übergeben. Das
Zeitsteuer-Flip-Flop 434 arbeitet ähnlich wie das Zeitsteuer-Flip-Flop 430. Beim Beginn ei
nes neuen Taktzyklus gibt das Zeitsteuer-Flip-Flop 434 den Wert des invertierten Signals
dest_sync1 als das Signal dest_out weiter. Wenn also das invertierte Signal dest_sync2 sich
ändert (Übergang) stimmt der Wert des Signals dest_out während einer Taktperiode nicht
überein. Da beide Signale an das XOR-Gatter 436 geliefert werden, erzeugt dies während
dieser Taktperiode ein Signal mit hohem Pegel.
Das Ausgangssignal des XOR-Gatters 436 wird an den Steuereingang des Multiplexers 438
übergeben. Der Multiplexer 438 empfängt auch den Wert des Zeigers, der momentan in Ab
tast-Flip-Flops 440 gehalten wird, sowie das Ausgangssignal der Halte-Flip-Flops 426. Wenn
der Multiplexer 438 ein Signal mit hohem Pegel von dem XOR-Gatter 436 empfängt, liefert
er den Zeigerwert von den Halte-Flip-Flops 426. Anderenfalls liefert er den Zeigerwert vom
Ausgang der Abtast-Flip-Flops 440 an den Eingang der Abtast-Flip-Flops 440. Der Zeiger
wert vom Ausgang der Abtast-Flip-Flops 440 ist das Signal addr_ptr_sync. Dieses Signal
folgt somit dem Signal addr_ptr. Das Signal addr_ptr_sync ist jedoch im Taktbereich des
Blocks 414 gültig.
Die Synchronisierschaltung 410 kann mit den Schaltkreiselementen einer im Handel erhältli
chen Standard-CMOS-Zellenbibliothek realisiert werden. Alle Gatter, Flip-Flops und Multi
plexer sind allgemein erhältlich.
Im normalen Betrieb übersetzt die Adreßsynchronisierschaltung 410 das Signal addr_ptr 423
über die Taktbereiche hinweg in addr_ptr_sync 439. Es ist jedoch möglich, daß das Zeitsteu
er-Flip-Flop 418 in einen meta-stabilen Zustand gerät. Um eine Verfälschung der Daten auf
grund des meta-stabilen Zustands zu vermeiden, wird das Flip-Flop 420 Rücken an Rücken
mit dem Flip-Flop 418 angeordnet, so daß das Flip-Flop 418 genug Zeit hat, sich von einem
meta-stabilen Zustand zu erholen, bevor Daten in das Flip-Flop 420 eingehen. Diese Anord
nung kann auch als Doppelsynchronisierung bezeichnet werden und schafft einen stabilen
Betrieb, wenn die Signalverzögerung vom Zeitsteuer-Flip-Flop 418 zum Halte-Flip-Flop 426
geringer als die Taktperiode des Signals clk_src ist und wenn die Signalverzögerung vom
Zeitsteuer-Flip-Flop 430 zum Abtast-Flip-Flop 440 geringer als die Taktperiode des Signals
clk_dest ist. Die Signalverzögerung vom Zeitsteuer-Flip-Flop 418 zum Halte-Flip-Flop 426
umfaßt:
t (Takt des Flip-Flops 418 zu Q) + t (Erholung des Flip-Flops 418 aus meta-stabilem
Zustand) + t (XOR-Gatter) + t (Multiplexer 424) + t (Einrichten des Flip-Flops 426) +
t (Leitungsverzögerungen).
Die Signalverzögerung vom Zeitsteuer-Flip-Flop 430 zum Abtast-Flip-Flop 440 umfaßt:
t (Takt des Flip-Flops 430 zu Q) + t (Erholung des Flip-Flops 430 aus meta-stabilem
Zustand) + t (Invertierer 432) + t (XNOR-Gate 436) + t (Multiplexer 438) + t (Ein
richten des Flip-Flops 440) + t (Leitungsverzögerungen).
Wenn diese Bedingungen nicht erfüllt werden können, kann sich ein meta-stabiler Zustand
ergeben, der undefinierte Übergänge verursachen kann. Dieser potentielle meta-stabile Zu
stand kann vermieden werden, indem der Adreßsynchronisierschaltung 410 zusätzliche
Zeitsteuer-Flip-Flops hinzugefügt werden.
Mit Bezug auf Fig. 5 ist eine weitere bevorzugte Ausführungsform einer Adreßsynchronisier
schaltung 510 (oder Adreßsynchronisiereinrichtung) beschrieben. Die Adreßsynchronisier
schaltung 510 kann dazu verwendet werden, die Synchronisiereinrichtung 120 und die Syn
chronisiereinrichtung 124 der Fig. 1 zu realisieren. Die Adreßsynchronisierschaltung 510 ar
beitet weitgehend ähnlich wie die Adreßsynchronisierschaltung 410 der Fig. 4. Die Adreßsyn
chronisierschaltung 510 verwendet jedoch zwei zusätzliche Zeitsteuer-Flip-Flops. Diese
Zeitsteuer-Flip-Flops reduzieren die Wahrscheinlichkeit des oben beschriebenen meta
stabilen Zustands und führen nur eine minimale zusätzliche Synchronisierungsverzögerung
ein.
Die Adreßsynchronisierschaltung 510 wird in zwei Taktbereiche aufgeteilt. Insbesondere ar
beitet der Block 512 auf der Basis eines Takts 511 (clock_src), während der Block 514 auf der
Basis eines Takts 513 (clock_dest) arbeitet. Der Takt 511 und der Takt 513 sind zueinander
asynchron und können verschiedene Frequenzen haben. Der Block 512 definiert somit einen
Taktbereich gestützt auf den Takt 511, und der Block 514 definiert einen Taktbereich gestützt
auf den Takt 513.
Die Adreßsynchronisierschaltung 510 dient dazu, die Überleitung eines Adreßzeigers 523
(addr_ptr) vom Taktbereich des Blocks 512 zu einem synchronisierten Adreßzeiger 539
(addr_ptr_sync) im Taktbereich des Blocks 514 zu koordinieren.
Die Schaltung beginnt ihren Betrieb bei Empfang eines Signals reset_z durch das UND-Gatter
516. Das Signal reset_z wird dazu verwendet, den normalen Schaltkreisbetrieb zu starten.
Während des Betriebs der Synchronisierschaltung 510 muß das Signal reset_z einen hohen
Zustand behalten. Das UND-Gatter 516 empfängt auch ein Signal dest_out von dem Zeitsteu
er-Flip-Flop 534. Wenn sowohl das Signal reset_z als auch das Signal dest_out einen hohen
Zustand haben, liefert das UND-Gatter 516 ein Signal mit hohem Pegel an das Zeitsteuer-
Flip-Flop 518. Das Zeitsteuer-Flip-Flop 518 wird durch den Takt 511 getriggert. Bei Beginn
eines neuen Taktzyklus gibt das Zeitsteuer-Flip-Flop 518 das Signal mit hohem Pegel von
dem UND-Gatter 516 als das Signal src_sync1 weiter. Dieses Signal wird seinerseits an das
Zeitsteuer-Flip-Flop 519 übergeben. Das Zeitsteuer-Flip-Flop 519 arbeitet ähnlich wie das
Zeitsteuer-Flip-Flop 518. Bei Beginn eines neuen Taktzyklus gibt das Zeitsteuer-Flip-Flop
519 den Wert des Signals scr_sync1 als das Signal src_sync2 weiter. Dieses Signal wird sei
nerseits an das Zeitsteuer-Flip-Flop 520 und das XOR-Gatter 522 weitergegeben. Das
Zeitsteuer-Flip-Flop 520 arbeitet ähnlich wie das Zeitsteuer-Flip-Flop 518. Bei Beginn eines
neuen Taktzyklus gibt das Zeitsteuer-Flip-Flop 520 den Wert des Signals src_sync2 als das
Signal src_out weiter. Wenn daher das Signal src_sync2 umschaltet (Übergang), stimmt der
Wert des Signals src_out während einer Taktperiode nicht überein. Da beide Signale an das
XOR-Gatter 522 übergeben werden, erzeugt dieses während dieser Taktperiode ein Signal mit
hohem Pegel.
Das Ausgangssignal des XOR-Gatters 522 wird an den Steuereingang eines Multiplexers 524
übergeben. Der Multiplexer 524 empfängt auch den Wert des Zeigers, der von Halte-Flip-
Flops 526 gehalten wird (addr_held), sowie das Signal addr_ptr 523, das den momentanen
Zeigerwert angibt. Wenn der Multiplexer 524 ein Signal mit hohem Pegel von dem XOR-
Gatter 522 empfängt, liefert er den Wert des Signals addr_ptr an Halte-Flip-Flops 526. Ande
renfalls liefert er den Zeigerwert vom Ausgang der Halt-Flip-Flops 526 an den Eingang der
Halte-Flip-Flops 526. Der Zeigerwert vom Ausgang der Halte-Flip-Flops 526 wird über die
Taktgrenze hinweg an den Multiplexer 538 übergeben.
Wiederum empfängt das Zeitsteuer-Flip-Flop 530 das Signal src_out vom Zeitsteuer-Flip-
Flop 520. Bei Beginn eines neuen Taktzyklus innerhalb des Taktbereichs des Blocks 514 gibt
das Zeitsteuer-Flip-Flop 530 den Wert des Signals src_out als das Signal dest_sync1 weiter.
Dieses Signal wird seinerseits an das Zeitsteuer-Flip-Flop 531 übergeben, das ähnlich wie das
Zeitsteuer-Flip-Flop 530 arbeitet. Bei Beginn eines neuen Taktzyklus gibt das Zeitsteuer-Flip-
Flop 531 den Wert des Signals dest_sync1 als das Signal dest_sync2 weiter. Das Signal
dest_sync2 wird an den Invertierer 532 und das XNOR-Gatter 536 übergeben. Das invertierte
Signal dest_sync2 wird an das Zeitsteuer-Flip-Flop 534 übergeben. Das Zeitsteuer-Flip-Flop
534 arbeitet ähnlich wie das Zeitsteuer-Flip-Flop 530. Bei Beginn eines neuen Taktzyklus
gibt das Zeitsteuer-Flip-Flop 534 den Wert des invertierten Signals dest_sync2 als das Signal
dest_out weiter. Wenn sich also das invertierte Signal dest_sync1 ändert (Übergang), wird der
Wert des Signals dest_out während einer Taktperiode auf einem Pegel sein, der äquivalent zu
dest_sync2 ist. Da diese Signale beide an das XNOR-Gatter 536 geliefert werden, erzeugt dies
während dieser Taktperiode ein Signal mit hohem Pegel.
Das Ausgangssignal des XNOR-Gatters 536 wird an den Steuereingang des Multiplexers 538
geliefert. Der Multiplexer 538 empfängt auch den Zeigerwert, der momentan von den Abtast-
Flip-Flops 540 gehalten wird, sowie das Ausgangssignal der Halt-Flip-Flops 526. Wenn der
Multiplexer 538 von dem XOR-Gatter 536 ein Signal mit hohem Pegel empfängt, liefert er
den Zeigerwert von den Halte-Flip-Flops 526. Anderenfalls liefert er den Zeigerwert vom
Ausgang der Abtast-Flip-Flops 540 an den Eingang der Abtast-Flip-Flops 540. Der Zeiger
wert vom Ausgang der Abtast-Flip-Flops 540 ist das Signal addr_ptr_sync 539. Dieses Signal
folgt somit dem Signal addr_ptr 523. Das Signal addr_ptr_sync 539 ist jedoch im Taktbereich
des Blocks 514 gültig.
Die Synchronisierschaltung 510 kann mit Schaltkreiselementen einer im Handel erhältlichen
Standard-CMOS-Zellenbibliothek realisiert werden. Alle Gatter, Flip-Flops und Multiplexer
sind allgemein erhältlich.
Mit Bezug auf Fig. 6 wird ein Zeitablaufdiagramm der Signale in Fig. 5 beschrieben. Das
Zeitablaufdiagramm umfaßt das Signal clock_src (Ursprungstakt) und das Signal clock_dest
(Zieltakt). Dies sind Taktsignale, die asynchron und mit verschiedenen Frequenzen arbeiten.
Die Signale src_sync1, src_sync2, src_out sel_src und addr_held arbeiten auf der Basis des
Signals clock_src. Die Signale dest_sync1, dest_sync2, dest_out, sel_dest und addr_prt_sync
arbeiten auf der Basis des Signals clock_dest.
Das Signal reset_z beginnt bei einem niedrigen Zustand und geht dann auf einen hohen Zu
stand über. Dieser Übergang wird zum Auslösen des normalen Betriebs der Synchronisier
schaltung verwendet. Nachdem das Signal reset_z während einer Taktperiode des Signals
clock_src in dem hohen Zustand war, geht das Signal src_sync1 auf einen hohen Zustand.
Dann, nach einer Taktperiode des Signals clock_src, geht das Signal src_sync2 auf einen ho
hen Zustand. Da das Signal src_sync2 nicht mit dem Signal src_out übereinstimmt, geht das
Signal sel_src auf einen hohen Zustand. Nach einer Taktperiode des Signals clock_src bewirkt
das Signal sel_src, daß addr_held das Signal des nächsten Adreßzeigers liest. Das erste
Adreßzeigersignal ist mit A1 bezeichnet. Nachfolgende Adreßzeigersignale sind mit A2 und
A3 bezeichnet.
Nachdem das Signal src_sync2 während einer Taktperiode auf einem hohen Zustand war,
geht das Signal src_out auf einen hohen Zustand über. Da das Signal src_out nun mit dem
Signal src_sync2 übereinstimmt, wird das Signal sel_src deaktiviert. Somit wird der Adreß
zeiger A1 von dem Signal addr_held gehalten.
Der Übergang des Signals src_out wird an das Signal dest_sync1 weitergegeben. Insbesonde
re macht bei der nächsten steigenden Flanke des Signals clock_dest das Signal dest_sync1
denselben Übergang. Nach einer Periode des Signals clock_dest folgt das Signal dest_sync2
dem Signal dest_ync1 und geht auf einen hohen Zustand über.
Da das Signal dest_sync2 mit dem Signal dest_out übereinstimmt, geht das Signal sel_dest
auf einen hohen Zustand. Nach einer Taktperiode des Signals clock_dest bewirkt das Signal
sel_dest, daß addr_prt_sync das nächste Adreßzeigersignal liest. Das erste Adreßzeigersignal
wird als A1_sync identifiziert. Dieses Signal stimmt mit dem Signal addr_held A1 überein, ist
jedoch im Taktbereich des Signals clock_dest gültig. Nachfolgende Adreßzeigersignale im
Taktbereich des Signals clock_dest werden als A2_sync und A3_sync bezeichnet. Diese Si
gnale folgen A2 bzw. A3.
Eine Taktperiode nach dem Übergang des Signals dest_sync2 macht das Signal dest_out den
entgegengesetzten Übergang. Da das Signal dest_out nicht mehr mit dem Signal dest_sync2
übereinstimmt, wird das Signal sel_dest deaktiviert, und das Signal addr_ptr_sync hält den
Adreßzeiger A1_sync.
Wie durch das Zeitablaufdiagramm dargestellt, bewirken nachfolgende Übergänge der
Zeitsteuersignale, daß die Adreßzeigersignale A2 und A3 über die Taktbereiche hinweg an die
synchronisierten Adreßsignale A2_sync und A3_sync übergeben werden.
Die Übergänge des Signals src_out lösen das Lesen eines neuen Adreßzeigers aus. Diese
Übergänge werden von dem Taktbereich clock_src an den Taktbereich clock_dest übergeben.
Gestützt auf das Signal src_out macht das Signal dest_out einen verzögerten Übergang. Die
ser verzögerte Übergang wird dazu verwendet, die Übertragung eines neuen Adreßzeigers
über die Taktbereiche hinweg auszulösen. Dieser verzögerte Übergang wird auch über die
Taktbereiche hinweg zurückgegeben, um einen weiteren Übergang des Signals src_sync1
auszulösen. Dadurch wird wiederum das Lesen eines neuen Adreßzeigers ausgelöst.
Anders gesagt, die Übergänge des Signals src_out und des Signals dest_out arbeiten wie To
ken. Dieser Token wird fortlaufend von dem Ursprungstaktbereich 512 an den Zieltaktbereich
514 und wieder zurück übergeben. Der Token wird durch die Aktivierung des Signals reset_z
(Setzen auf logisch wahr) ausgelöst und beginnt als ein Übergang des Signals dest_out. Der
Token wird dann als Übergänge der Signale src_sync1, src_sync2, src_out, dest_sync1 und
dest_sync2 weitergegeben. Der Token wird an dest_out durch einen Übergang in dem Signal
dest_sync2 zurückgegeben.
Ein Token src_out (d. h. ein Übergang des Signals src_out) zeigt an, daß ein neuer Adreßzei
ger in die Halte-Flip-Flops geschrieben wurde. Wenn dieser Token über Taktbereiche hinweg
weitergegeben wird, löst er die Synchronisierung des neuen Adreßzeigers aus.
Ähnlich zeigt der Token dest_out an, daß der neue Adreßzeiger über die Taktbereiche hinweg
synchronisiert wurde und in den Abtast-Flip-Flops gehalten wird. Wenn dieser Token über
die Taktbereich hinweg zurückgegeben wird, löst er das Lesen eines neuen Adreßzeigers aus.
Auf diese Art werden Adreßzeiger über Taktbereich hinweg übergeben.
Die Synchronisierschaltung 510 (Fig. 5) kann weiter optimiert werden, indem weitere logi
sche Gatter zum Steuern des Anfangs und der Beendigung dieser Tokenübertragung einge
führt werden. Für diesen Zweck kann z. B. ein zusätzlicher Eingang eines UND-Gatters 516
verwendet werden.
Obwohl die Ausführungsformen der Erfindung hier in bezug auf einen FIFO-Speicher be
schrieben wurden, ist die Erfindung auf andere Schaltungen anwendbar, die die Synchronisie
rung von Daten über Taktbereiche hinweg erfordern. Obwohl die Ausführungsformen hier mit
Bezug auf bestimmte Schaltungen und Blockdiagramme beschrieben wurden, eignen sich
auch andere Konfigurationen für die Realisierung der beschriebenen Funktionen. Der Fach
mann wird aus den hier offenbarten Ausführungsformen sicher verstehen, daß viele Modifi
kationen möglich sind, ohne die Lehre der Erfindung zu verlassen. All diese Modifikationen
sollen im Bereich der folgenden Ansprüche liegen.
Claims (10)
1. FIFO-Speicher mit folgenden Merkmalen:
ein Speicher (110), der einen FIFO-Stapel speichern kann;
ein Schreibkanal (112, 114), der gestützt auf einen Schreibadreßzeiger dem FIFO Stapel Elemente hinzufügen kann, wobei der Schreibkanal (112, 114) in einem ersten Taktbe reich arbeitet;
ein Lesekanal (116, 118), der gestützt auf einen Leseadreßzeiger Elemente von dem FIFO-Stapel lesen kann, wobei der Lesekanal (116, 118) in einem zweiten Taktbereich arbeitet, der sich von dem ersten Taktbereich unterscheidet;
eine erste Synchronisierschaltung (120), die mit dem Schreibkanal (112, 114) betrieblich gekoppelt und so konfiguriert ist, daß sie den Schreibadreßzeiger empfangt und den Schreibadreßzeiger zu dem zweiten Taktbereich synchronisiert; und
eine zweite Synchronisierschaltung (114), die mit dem Lesekanal (116, 118) betrieblich gekoppelt und so konfiguriert ist, daß sie den Leseadreßzeiger empfangt und den Lesea dreßzeiger zu dem ersten Taktbereich synchronisiert.
ein Speicher (110), der einen FIFO-Stapel speichern kann;
ein Schreibkanal (112, 114), der gestützt auf einen Schreibadreßzeiger dem FIFO Stapel Elemente hinzufügen kann, wobei der Schreibkanal (112, 114) in einem ersten Taktbe reich arbeitet;
ein Lesekanal (116, 118), der gestützt auf einen Leseadreßzeiger Elemente von dem FIFO-Stapel lesen kann, wobei der Lesekanal (116, 118) in einem zweiten Taktbereich arbeitet, der sich von dem ersten Taktbereich unterscheidet;
eine erste Synchronisierschaltung (120), die mit dem Schreibkanal (112, 114) betrieblich gekoppelt und so konfiguriert ist, daß sie den Schreibadreßzeiger empfangt und den Schreibadreßzeiger zu dem zweiten Taktbereich synchronisiert; und
eine zweite Synchronisierschaltung (114), die mit dem Lesekanal (116, 118) betrieblich gekoppelt und so konfiguriert ist, daß sie den Leseadreßzeiger empfangt und den Lesea dreßzeiger zu dem ersten Taktbereich synchronisiert.
2. FIFO-Speicher nach Anspruch 1, bei dem der Speicher (110) ein DPRAM umfaßt.
3. FIFO-Speicher nach Anspruch 1 oder 2, bei dem der Schreibkanal folgende Merkmale
aufweist:
einen Adreßport (114), der so konfiguriert ist, daß er eine Schreibadreßstelle in dem Spei cher (110) auswählt; und
einen Datenport (112), der so konfiguriert ist, daß er Daten an die Schreibadreßstelle lie fert.
einen Adreßport (114), der so konfiguriert ist, daß er eine Schreibadreßstelle in dem Spei cher (110) auswählt; und
einen Datenport (112), der so konfiguriert ist, daß er Daten an die Schreibadreßstelle lie fert.
4. FIFO-Speicher nach einem der vorangehenden Ansprüche, bei dem der Lesekanal folgen
de Merkmale aufweist:
einen Adreßport (118), der so konfiguriert ist, daß er eine Leseadreßstelle in dem Speicher auswählt; und
einen Datenport (116), der so konfiguriert ist, daß er Daten von der Leseadreßstelle emp fängt.
einen Adreßport (118), der so konfiguriert ist, daß er eine Leseadreßstelle in dem Speicher auswählt; und
einen Datenport (116), der so konfiguriert ist, daß er Daten von der Leseadreßstelle emp fängt.
5. FIFO-Speicher nach einem der vorangehenden Ansprüche, bei dem die erste und die
zweite Synchronisierschaltung (120, 124) jeweils folgende Merkmale aufweisen:
eine Halteschaltung (426; 526), die so konfiguriert ist, daß sie einen Adreßzeiger emp fängt, wobei die Haltschaltung in dem ersten Taktbereich arbeitet; und
eine Abtastschaltung (440; 540), die mit der Halteschaltung (426; 526) betrieblich gekop pelt und so konfiguriert ist, daß sie den Adreßzeiger empfängt, wobei die Abtastschaltung (440; 540) in dem zweiten Taktbereich arbeitet.
eine Halteschaltung (426; 526), die so konfiguriert ist, daß sie einen Adreßzeiger emp fängt, wobei die Haltschaltung in dem ersten Taktbereich arbeitet; und
eine Abtastschaltung (440; 540), die mit der Halteschaltung (426; 526) betrieblich gekop pelt und so konfiguriert ist, daß sie den Adreßzeiger empfängt, wobei die Abtastschaltung (440; 540) in dem zweiten Taktbereich arbeitet.
6. FIFO-Speicher nach Anspruch 5, bei dem die erste und die zweite Synchronisierschaltung
(120, 124) folgende weitere Merkmale aufweisen:
ein Zeitsteuer-Flip-Flop (418, 420; 518, 520), das so konfiguriert ist, daß es ein Zeitsteu ersignal erzeugt, wobei das Zeitsteuer-Flip-Flop in dem ersten Taktbereich arbeitet;
ein XOR-Gatter (422, 522), das mit dem Zeitsteuer-Flip-Flop (418, 420; 518, 520) be trieblich gekoppelt und so konfiguriert ist, daß es ein Steuersignal erzeugt, wenn das Zeitsteuersignal einen Übergang macht; und
ein Multiplexer (424; 524), der mit der Haltschaltung (426; 526) und dem XOR-Gatter (422; 522) betrieblich gekoppelt ist, einen Adreßzeigereingang aufweist und so konfigu riert ist, daß er den Adreßzeigereingang auswählt, wenn das XOR-Gatter (422; 522) das Steuersignal erzeugt.
ein Zeitsteuer-Flip-Flop (418, 420; 518, 520), das so konfiguriert ist, daß es ein Zeitsteu ersignal erzeugt, wobei das Zeitsteuer-Flip-Flop in dem ersten Taktbereich arbeitet;
ein XOR-Gatter (422, 522), das mit dem Zeitsteuer-Flip-Flop (418, 420; 518, 520) be trieblich gekoppelt und so konfiguriert ist, daß es ein Steuersignal erzeugt, wenn das Zeitsteuersignal einen Übergang macht; und
ein Multiplexer (424; 524), der mit der Haltschaltung (426; 526) und dem XOR-Gatter (422; 522) betrieblich gekoppelt ist, einen Adreßzeigereingang aufweist und so konfigu riert ist, daß er den Adreßzeigereingang auswählt, wenn das XOR-Gatter (422; 522) das Steuersignal erzeugt.
7. FIFO-Speicher nach einem der vorangehenden Ansprüche, mit folgenden weiteren Merk
malen:
eine Leselogikschaltung (126), die mit der ersten Synchronisierschaltung (120) und dem Lesekanal (116, 118) betrieblich gekoppelt ist, wobei die Leselogikschaltung (126) ein FIFO-Leer-Signal erzeugen kann; und
eine Schreiblogikschaltung (122), die mit dem Schreibkanal (112, 114) und dem Leseka nal (116, 118) betrieblich gekoppelt ist, wobei die Schreiblogikschaltung (122) ein FIFO- Voll-Signal erzeugen kann.
eine Leselogikschaltung (126), die mit der ersten Synchronisierschaltung (120) und dem Lesekanal (116, 118) betrieblich gekoppelt ist, wobei die Leselogikschaltung (126) ein FIFO-Leer-Signal erzeugen kann; und
eine Schreiblogikschaltung (122), die mit dem Schreibkanal (112, 114) und dem Leseka nal (116, 118) betrieblich gekoppelt ist, wobei die Schreiblogikschaltung (122) ein FIFO- Voll-Signal erzeugen kann.
8. Synchronisierschaltung zum Koordinieren von Adreßzeigern über Taktbereiche hinweg,
mit folgenden Merkmalen:
ein erstes Zeitsteuer-Flip-Flop (420; 520), das so konfiguriert ist, daß es erste Zeitsteuer signale erzeugt, wobei das erste Zeitsteuer-Flip-Flop (420; 520) in einem ersten Taktbe reich arbeitet;
eine Inversionsschaltung (432; 532), die mit dem ersten Zeitsteuer-Flip-Flop (420; 520) betrieblich gekoppelt und so konfiguriert ist, daß es gestützt auf die ersten Zeitsteuersi gnale invertierte Zeitsteuersignale erzeugt; und
ein zweites Zeitsteuer-Flip-Flop (434; 534), das mit der Inversionsschaltung (432; 532) betrieblich gekoppelt und so konfiguriert ist, daß es gestützt auf die invertierten Zeitsteu ersignale zweiter Zeitsteuersignale erzeugt, wobei das zweite Zeitsteuer-Flip-Flop (434; 534) in einem zweiten Taktbereich arbeitet, der sich von dem ersten Taktbereich unter scheidet.
ein erstes Zeitsteuer-Flip-Flop (420; 520), das so konfiguriert ist, daß es erste Zeitsteuer signale erzeugt, wobei das erste Zeitsteuer-Flip-Flop (420; 520) in einem ersten Taktbe reich arbeitet;
eine Inversionsschaltung (432; 532), die mit dem ersten Zeitsteuer-Flip-Flop (420; 520) betrieblich gekoppelt und so konfiguriert ist, daß es gestützt auf die ersten Zeitsteuersi gnale invertierte Zeitsteuersignale erzeugt; und
ein zweites Zeitsteuer-Flip-Flop (434; 534), das mit der Inversionsschaltung (432; 532) betrieblich gekoppelt und so konfiguriert ist, daß es gestützt auf die invertierten Zeitsteu ersignale zweiter Zeitsteuersignale erzeugt, wobei das zweite Zeitsteuer-Flip-Flop (434; 534) in einem zweiten Taktbereich arbeitet, der sich von dem ersten Taktbereich unter scheidet.
9. Synchronisierschaltung nach Anspruch 8, mit folgenden weiteren Merkmalen:
ein erstes Gatter (422; 522), das mit dem ersten Zeitsteuer-Flip-Flop (420; 520) betrieblich gekoppelt und so konfiguriert ist, daß es ein erstes Steuersignal erzeugt, wenn die ersten Zeitsteuersignale einen Übergang machen;
ein erster Multiplexer (424; 524), das mit dem ersten Gatter (422; 522) betrieblich gekop pelt ist und mehrere Eingänge sowie einen Ausgang für Adreßzeiger aufweist, wobei der erste Multiplexer (424; 524) gestützt auf das erste Steuersignal einen der mehreren Ein gange auswählt; und
ein Halte-Flip-Flop (426; 526), das mit dem Ausgang des ersten Multiplexers (424; 524) betrieblich gekoppelt und so konfiguriert ist, daß es die Adreßzeiger hält.
ein erstes Gatter (422; 522), das mit dem ersten Zeitsteuer-Flip-Flop (420; 520) betrieblich gekoppelt und so konfiguriert ist, daß es ein erstes Steuersignal erzeugt, wenn die ersten Zeitsteuersignale einen Übergang machen;
ein erster Multiplexer (424; 524), das mit dem ersten Gatter (422; 522) betrieblich gekop pelt ist und mehrere Eingänge sowie einen Ausgang für Adreßzeiger aufweist, wobei der erste Multiplexer (424; 524) gestützt auf das erste Steuersignal einen der mehreren Ein gange auswählt; und
ein Halte-Flip-Flop (426; 526), das mit dem Ausgang des ersten Multiplexers (424; 524) betrieblich gekoppelt und so konfiguriert ist, daß es die Adreßzeiger hält.
10. Synchronisierschaltung nach Anspruch 9, mit folgenden weiteren Merkmalen:
ein zweites Gatter (436; 536), das mit dem zweiten Zeitsteuer-Flip-Flop (430; 530) be trieblich gekoppelt und so konfiguriert ist, daß es ein zweites Steuersignal erzeugt, wenn die zweiten Zeitsteuersignale einen Übergang machen;
ein zweiter Multiplexer (438; 538), der mit dem zweiten Gatter (436; 536) betrieblich ge koppelt ist und mehrere Eingänge sowie einen Ausgang für die Adreßzeiger aufweist, wo bei der zweite Multiplexer (438; 538) gestützt auf das zweite Steuersignal einen der meh reren Eingänge auswählt; und
ein Abtast-Flip-Flop (440; 540), das mit dem Ausgang des zweiten Multiplexers (438; 538) betrieblich gekoppelt und so konfiguriert ist, daß es die Adreßzeiger hält.
ein zweites Gatter (436; 536), das mit dem zweiten Zeitsteuer-Flip-Flop (430; 530) be trieblich gekoppelt und so konfiguriert ist, daß es ein zweites Steuersignal erzeugt, wenn die zweiten Zeitsteuersignale einen Übergang machen;
ein zweiter Multiplexer (438; 538), der mit dem zweiten Gatter (436; 536) betrieblich ge koppelt ist und mehrere Eingänge sowie einen Ausgang für die Adreßzeiger aufweist, wo bei der zweite Multiplexer (438; 538) gestützt auf das zweite Steuersignal einen der meh reren Eingänge auswählt; und
ein Abtast-Flip-Flop (440; 540), das mit dem Ausgang des zweiten Multiplexers (438; 538) betrieblich gekoppelt und so konfiguriert ist, daß es die Adreßzeiger hält.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/156,516 US6166963A (en) | 1998-09-17 | 1998-09-17 | Dual port memory with synchronized read and write pointers |
| US09/156,516 | 1998-09-17 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE19941196A1 true DE19941196A1 (de) | 2000-03-23 |
| DE19941196B4 DE19941196B4 (de) | 2006-09-28 |
Family
ID=22559893
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19941196A Expired - Fee Related DE19941196B4 (de) | 1998-09-17 | 1999-08-30 | Zweikanal-FIFO mit synchronisierten Lese- und Schreibzeigern |
Country Status (3)
| Country | Link |
|---|---|
| US (4) | US6166963A (de) |
| KR (1) | KR100337052B1 (de) |
| DE (1) | DE19941196B4 (de) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE10050980A1 (de) * | 2000-10-13 | 2002-05-02 | Systemonic Ag | Speicherkonfiguration mit I/O-Unterstützung |
Families Citing this family (38)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6166963A (en) * | 1998-09-17 | 2000-12-26 | National Semiconductor Corporation | Dual port memory with synchronized read and write pointers |
| US6367027B1 (en) * | 1999-03-22 | 2002-04-02 | Infineon Technologies Ag | Skew pointer generation |
| US6604179B2 (en) * | 2000-03-23 | 2003-08-05 | Intel Corporation | Reading a FIFO in dual clock domains |
| US6686920B1 (en) * | 2000-05-10 | 2004-02-03 | Advanced Micro Devices, Inc. | Optimizing the translation of virtual addresses into physical addresses using a pipeline implementation for least recently used pointer |
| US6816979B1 (en) | 2001-02-01 | 2004-11-09 | Cypress Semiconductor Corp. | Configurable fast clock detection logic with programmable resolution |
| US6826110B2 (en) * | 2002-10-17 | 2004-11-30 | International Business Machines Corporation | Cell circuit for multiport memory using decoder |
| ATE331353T1 (de) * | 2002-12-18 | 2006-07-15 | Cit Alcatel | Verfahren und system zum bearbeiten von daten zwischen einer schaltungsanordnung zur rückgewinnung einestaktsignals und eins datensignals und einer datenverarbeitungseinheit in asynchronen netzwerken |
| US6654308B1 (en) | 2002-12-23 | 2003-11-25 | Hewlett-Packard Development Company, Lp. | Memory having multiple write ports and multiple control memory units, and method of operation |
| US6754130B1 (en) | 2002-12-23 | 2004-06-22 | Hewlett-Packard Development Company, Lp. | Memory having multiple write ports and write insert unit, and method of operation |
| US6813215B2 (en) * | 2002-12-23 | 2004-11-02 | Hewlett-Packard Development Company, L.P. | Memory having multiple write ports and method of operation |
| US7149916B1 (en) * | 2003-03-17 | 2006-12-12 | Network Equipment Technologies, Inc. | Method for time-domain synchronization across a bit-sliced data path design |
| US6809983B2 (en) * | 2003-03-25 | 2004-10-26 | Lsi Logic Corporation | Clock generator for pseudo dual port memory |
| US7194650B2 (en) * | 2003-05-09 | 2007-03-20 | Hewlett-Packard Development Company, L.P. | System and method for synchronizing multiple synchronizer controllers |
| US7219251B2 (en) * | 2003-05-09 | 2007-05-15 | Hewlett-Packard Development Company, L.P. | Programmable clock synchronizer |
| US7239681B2 (en) * | 2003-05-09 | 2007-07-03 | Hewlett-Packard Development Company, L.P. | System and method for maintaining a stable synchronization state in a programmable clock synchronizer |
| US7100065B2 (en) * | 2003-05-09 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Controller arrangement for synchronizer data transfer between a core clock domain and bus clock domain each having its own individual synchronizing controller |
| US7623482B2 (en) * | 2003-05-10 | 2009-11-24 | Hewlett-Packard Development Company, L.P. | System and method for effectuating the transfer of data blocks including a header block across a clock boundary |
| US7480357B2 (en) * | 2003-05-10 | 2009-01-20 | Hewlett-Packard Development Company, L.P. | System and method for effectuating the transfer of data blocks across a clock boundary |
| US6829196B1 (en) * | 2003-07-30 | 2004-12-07 | Sun Microsystems, Inc. | Method and apparatus for prevention of read corruption in rotated-read register files and content addressable memory arrays |
| US7454537B1 (en) * | 2004-04-22 | 2008-11-18 | Altera Corporation | Synchronization and channel deskewing circuitry for multi-channel serial links |
| US7382847B2 (en) * | 2004-07-23 | 2008-06-03 | Hewlett-Packard Development Company, L.P. | Programmable sync pulse generator |
| US7119582B2 (en) * | 2004-07-23 | 2006-10-10 | Hewlett-Packard Development Company, Lp. | Phase detection in a sync pulse generator |
| US7340631B2 (en) * | 2004-07-23 | 2008-03-04 | Hewlett-Packard Development Company, L.P. | Drift-tolerant sync pulse circuit in a sync pulse generator |
| US20060023819A1 (en) * | 2004-07-29 | 2006-02-02 | Adkisson Richard W | Clock synchronizer |
| US7436917B2 (en) * | 2004-07-29 | 2008-10-14 | Hewlett-Packard Development Company, L.P. | Controller for clock synchronizer |
| US8260982B2 (en) * | 2005-06-07 | 2012-09-04 | Lsi Corporation | Method for reducing latency |
| TW200717246A (en) * | 2005-06-24 | 2007-05-01 | Koninkl Philips Electronics Nv | Self-synchronizing data streaming between address-based producer and consumer circuits |
| US7568118B2 (en) * | 2005-09-20 | 2009-07-28 | Intel Corporation | Deterministic operation of an input/output interface |
| JP5016880B2 (ja) * | 2006-09-21 | 2012-09-05 | 富士通株式会社 | 優先クラスに応じたメモリ管理方法及び装置 |
| US8001409B2 (en) * | 2007-05-18 | 2011-08-16 | Globalfoundries Inc. | Synchronization device and methods thereof |
| US7958285B1 (en) * | 2007-07-12 | 2011-06-07 | Oracle America, Inc. | System and method to facilitate deterministic testing of data transfers between independent clock domains on a chip |
| DE102007051839B4 (de) * | 2007-10-30 | 2015-12-10 | Polaris Innovations Ltd. | Kontrollschaltung, Speichervorrichtung mit einer Kontrollschaltung und Verfahren zum Durchführen eines Schreibkommandos bzw. zum Betrieb einer Speichervorrichtung mit einer Kontrollschaltung |
| US8209470B2 (en) * | 2009-04-10 | 2012-06-26 | Honeywell International Inc. | CPU data bus PLD/FPGA interface using dual port RAM structure built in PLD |
| IT1399916B1 (it) * | 2010-04-30 | 2013-05-09 | Balluchi | Dispositivo di memoria ad accesso di registro indicizzato |
| US20120250877A1 (en) * | 2011-03-31 | 2012-10-04 | Taiyi Cheng | Method and system for processing audio signals in a central audio hub |
| US8832393B2 (en) | 2012-04-18 | 2014-09-09 | Lsi Corporation | Alignment for multiple FIFO pointers |
| FR2990283A1 (fr) * | 2012-05-04 | 2013-11-08 | Commissariat Energie Atomique | Bibliotheque de cellules et procede de conception d'un circuit integre asynchrone |
| CN113259271B (zh) * | 2021-07-15 | 2021-09-24 | 武汉绿色网络信息服务有限责任公司 | 报文交换方法和报文交换系统 |
Family Cites Families (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4873703A (en) * | 1985-09-27 | 1989-10-10 | Hewlett-Packard Company | Synchronizing system |
| US4891788A (en) * | 1988-05-09 | 1990-01-02 | Kreifels Gerard A | FIFO with almost full/almost empty flag |
| US5294983A (en) * | 1990-06-01 | 1994-03-15 | Thomson Consumer Electronics, Inc. | Field synchronization system with write/read pointer control |
| US5426756A (en) * | 1992-08-11 | 1995-06-20 | S3, Incorporated | Memory controller and method determining empty/full status of a FIFO memory using gray code counters |
| FR2717591B1 (fr) * | 1994-03-15 | 1996-06-21 | Texas Instruments France | Mémoire virtuelle d'interconnexion notamment pour la mise en communication de terminaux de télécommunication fonctionnant à des fréquences différentes. |
| US5644604A (en) * | 1994-11-14 | 1997-07-01 | Hal Computer Systems, Inc. | Digital phase selector system and method |
| US5555524A (en) * | 1995-02-13 | 1996-09-10 | Standard Microsystems Corporation | Semi-synchronous dual port FIFO |
| US5630096A (en) * | 1995-05-10 | 1997-05-13 | Microunity Systems Engineering, Inc. | Controller for a synchronous DRAM that maximizes throughput by allowing memory requests and commands to be issued out of order |
| DE69615471T2 (de) * | 1995-07-07 | 2002-05-08 | Sun Microsystems, Inc. | Verfahren und Vorrichtung zur dynamischen Berechnung von Füllungsgraden eines synchronen Fifo-Puffer |
| US5857005A (en) * | 1995-07-10 | 1999-01-05 | Vlsi Technology, Inc. | Method and apparatus for synchronizing transfer of data between memory cells |
| US5748551A (en) * | 1995-12-29 | 1998-05-05 | Micron Technology, Inc. | Memory device with multiple internal banks and staggered command execution |
| US5905766A (en) * | 1996-03-29 | 1999-05-18 | Fore Systems, Inc. | Synchronizer, method and system for transferring data |
| US5852608A (en) * | 1996-06-06 | 1998-12-22 | Sun Microsystems, Inc. | Structure and method for bi-directional data transfer between asynchronous clock domains |
| US5884100A (en) * | 1996-06-06 | 1999-03-16 | Sun Microsystems, Inc. | Low-latency, high-throughput, integrated cache coherent I/O system for a single-chip processor |
| US5811995A (en) * | 1996-08-02 | 1998-09-22 | Advanced Micro Devices, Inc. | Circuit for switching between different frequency clock domains that are out of phase |
| US5835752A (en) * | 1996-10-18 | 1998-11-10 | Samsung Electronics Co. Ltd. | PCI interface synchronization |
| US5787457A (en) * | 1996-10-18 | 1998-07-28 | International Business Machines Corporation | Cached synchronous DRAM architecture allowing concurrent DRAM operations |
| US5784582A (en) * | 1996-10-28 | 1998-07-21 | 3Com Corporation | Data processing system having memory controller for supplying current request and next request for access to the shared memory pipeline |
| US5850556A (en) * | 1996-12-26 | 1998-12-15 | Cypress Semiconductor Corp. | Interruptible state machine |
| US6000037A (en) * | 1997-12-23 | 1999-12-07 | Lsi Logic Corporation | Method and apparatus for synchronizing data transfer |
| US6006340A (en) * | 1998-03-27 | 1999-12-21 | Phoenix Technologies Ltd. | Communication interface between two finite state machines operating at different clock domains |
| US6166963A (en) * | 1998-09-17 | 2000-12-26 | National Semiconductor Corporation | Dual port memory with synchronized read and write pointers |
-
1998
- 1998-09-17 US US09/156,516 patent/US6166963A/en not_active Expired - Lifetime
-
1999
- 1999-08-11 KR KR1019990032932A patent/KR100337052B1/ko not_active Expired - Fee Related
- 1999-08-30 DE DE19941196A patent/DE19941196B4/de not_active Expired - Fee Related
- 1999-09-28 US US09/407,156 patent/US6134155A/en not_active Expired - Lifetime
-
2000
- 2000-08-31 US US09/653,418 patent/US6212122B1/en not_active Expired - Lifetime
- 2000-08-31 US US09/652,475 patent/US6259650B1/en not_active Expired - Lifetime
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE10050980A1 (de) * | 2000-10-13 | 2002-05-02 | Systemonic Ag | Speicherkonfiguration mit I/O-Unterstützung |
| US7143211B2 (en) | 2000-10-13 | 2006-11-28 | Systemonic Ag | Memory configuration with I/O support |
Also Published As
| Publication number | Publication date |
|---|---|
| US6166963A (en) | 2000-12-26 |
| US6134155A (en) | 2000-10-17 |
| KR20000022699A (ko) | 2000-04-25 |
| US6259650B1 (en) | 2001-07-10 |
| KR100337052B1 (ko) | 2002-05-16 |
| US6212122B1 (en) | 2001-04-03 |
| DE19941196B4 (de) | 2006-09-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE19941196A1 (de) | Zweikanal-FIFO mit synchronisierten Lese- und Schreibzeigern | |
| DE2703578C2 (de) | Videodatenspeicher | |
| DE69906793T2 (de) | Verfahren und anordnung für hochgeschwindigkeitsdatenerfassung mit korrektur der bit-zu-bit-zeitgebung und speicheranordnung unter verwendung derselben | |
| DE60034788T2 (de) | Verfahren und schaltung zur zeitlichen anpassung der steuersignale in einem speicherbaustein | |
| DE2828698C2 (de) | Monolithische integrierte Schaltungsvorrichtung mit einem Speicher | |
| DE2311034C2 (de) | Verfahren zum Prüfen eines integrierte logische Verknüpfungs- und Speicherglieder enthaltenden Halbleiterchips | |
| DE69838852T2 (de) | Verfahren und vorrichtung zur kopplung von signalen zwischen zwei schaltungen, in verschiedenen taktbereichen arbeitend | |
| DE3688933T2 (de) | Speichervorrichtung. | |
| DE19914986B4 (de) | Vorrichtung zum Verzögern eines Taktsignals | |
| DE3742514C2 (de) | ||
| DE2853239A1 (de) | Datenpufferspeicher vom typ first-in, first-out mit variablem eingang und festem ausgang | |
| DE2719531B2 (de) | Digitale Logikschaltung zur Synchronisierung der Datenübertragung zwischen asynchrongesteuerten Datensystemen | |
| DE19813743A1 (de) | Taktschiebeschaltungsvorrichtung und Synchron-Halbleiterspeichervorrichtung, die dieselbe verwendet | |
| DE69032035T2 (de) | FIFO-Speicher | |
| DE102007004713B4 (de) | Datenübergabeeinheit zum Übertragen von Daten zwischen unterschiedlichen Taktbereichen | |
| DE2630197A1 (de) | Datenwiedergewinnungssystem | |
| DE19653114A1 (de) | Synchron-Halbleiterspeichervorrichtung, bei der ein Burstzähler gemeinsam für ein Datenschreiben und für ein Datenlesen verwendet wird | |
| DE69129889T2 (de) | Pipelineschaltung und Verfahren zum Vergleich der relativen Differenz zwischen zwei asynchronen Zeigern und einem programmierbaren Wert | |
| DE2630950A1 (de) | Magnetblasenspeicheranordnung | |
| DE69126514T2 (de) | Serieller Speicher | |
| EP0217122B1 (de) | Schaltungsanordung mit einer matrixförmigen Speicheranordnung zur variabel einstellbaren Verzögerung digitaler Signale | |
| DE3788783T2 (de) | Multiplexer für Taktsignale. | |
| DE3789928T2 (de) | "Fifo"-Schieberegister mit direkter Dateneingabe. | |
| DE19934500C2 (de) | Synchroner integrierter Speicher | |
| DE69524837T2 (de) | Asynchrone Speicheranordnung mit seriellem Zugriff und entsprechendes Speicher- und Leseverfahren |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8110 | Request for examination paragraph 44 | ||
| 8364 | No opposition during term of opposition | ||
| R082 | Change of representative |
Representative=s name: , |
|
| R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |