-
TECHNISCHES
GEBIET
-
Die vorliegende Erfindung betrifft
Halbleiterspeicherbauelemente und insbesondere serielle Konfigurationsspeicher.
-
STAND DER TECHNIK
-
Serielle Konfigurationsspeicher sind
Bauelemente, die zum Initialisieren von programmierbaren Logikbauelementen,
wie z. B. anwenderprogrammierbaren Verknüpfungsfeldern (FPGAs), verwendet werden.
Wenn ein Bauelement wie z. B. ein FPGA eingeschaltet wird, muss
jeder seiner Logikblöcke
für eine
spezielle Logikoperation konfiguriert werden und seine programmierbaren
Verbindungen müssen konfiguriert
werden, um eine Leitwegführung
unter den Logikblöcken
vorzusehen, um die vorgesehene Logikfunktion zu implementieren.
Die Konfigurationsinformation nimmt die Form eines Bitstroms an,
der in das FPGA führt
und im Bauelement gespeichert wird, wobei die Bits eine Logik und
Leitwegführung
der FPGA-Elemente definieren.
-
Ein serieller Konfigurationsspeicher
ist das Bauelement, das den Konfigurationsbitstrom enthält. Ein
serieller Konfigurationsspeicher besteht aus einer Speichermatrix
wie z. B. einem PROM (programmierbarer Festwertspeicher) oder EEPROM
(elektrisch löschbarer,
programmierbarer Festwertspeicher), einem Adressenzähler und
einer Unterstützungslogik
zum Vorsehen einer Programmierungs- und Rücksetzsteuerung. Der Adressenzähler ist
an eine Takteingangsleitung angeschlossen und wird bei jeder steigenden
oder fallenden Flanke eines Taktsignals inkrementiert. Der Zählerausgang
dient zum Adressieren jedes Bits der Speichermatrix, was einen Bitstrom
erzeugt, der seriell an ein FPGA ausgegeben wird.
-
Viele von heutigen persönlichen
elektronischen Geräten
werden durch eine unabhängige Quelle,
nämlich
eine Batterie, gespeist und somit besteht immer eine Sorge über das
Sparen von Leistung, wo immer es möglich ist. Der Wunsch, den
Leistungsverbrauch zu minimieren, durchdringt jeden Aspekt des Entwurfs
dieser Geräte.
FPGAs finden in vielen solchen Geräten Anwendung, einschließlich Laptopcomputern,
Notizbuchcomputern und Mobiltelefonen. Konfigurationsspeicher stellen
daher eine Gelegenheit dar, wo Verbesserungen vorgenommen werden
können,
um den Leistungsverbrauch zu minimieren.
-
Ein Aspekt von modernen FPGAs ist
ihre Fähigkeit,
im System umkonfiguriert zu werden. Somit kann die Funktionalität eines
FPGA dynamisch verändert
werden, während
das System arbeitet. Diese Fähigkeit
stellt einen hohen Grad an Flexibilität für das System bereit, um seinen
Betrieb als Reaktion auf externe Bedingungen anzupassen. In einem
als digitales Filter konfigurierten FPGA können seine Filterparameter
beispielsweise einfach durch Einladen eines anderen Satzes von Filterkoeffizienten,
wenn der Bedarf dafür
erkannt wird, verändert
werden. Die Umkonfiguration eines FPGA in Echtzeit erfordert jedoch
die Fähigkeit, einen
neuen Konfigurationsbitstrom herunterzuladen, ohne eine Verzögerung aufzuerlegen,
die sich auf die Systemfunktionalität schädlich auswirken würde. Somit
ist der Hochgeschwindigkeitsbetrieb ein weiteres Gebiet für eine Verbesserung
an Konfigurationsspeicherbauelementen.
-
Konfigurationsspeicher des Standes
der Technik geben ihren gesamten Inhalt in Form eines Bitstroms
beginnend mit der ersten Speicherstelle aus. Die Umkonfiguration
eines FPGA im System erfordert jedoch einen Zugriff auf irgendeinen
von einer Anzahl von Konfigurationsbitströmen, die in einem Konfigurationsspeicher
enthalten sein könnten,
wobei jeder Bitstrom seine eigene Anfangsadresse innerhalb des Speichers
hat. Es ist daher ein Wunsch, einen Konfigurationsspeicher bereitzustellen,
bei dem eine willkürliche
Anfangsadresse festgelegt werden kann. Allgemeiner ist es wünschenswert,
die Fähigkeit
zu haben, das Speicherbauelement willkürlich zu adressieren.
-
Der Speicher mit zwei Anschlüssen von
US 5 042 014 umfasst Leseverstärker und
Transfergates zum Lesen von Daten aus Speicherzellen. Die Daten werden
zu einem Datenregister übertragen,
aus dem sie wieder zu einem Zwischenspeicher übertragen werden, nur wenn
Durchgangstransistoren in einen Durchlaflzustand gesetzt sind. Der
Zwischenspeicher überträgt ein zwischengespeichertes
Datenelement zu einem Multiplexer zur Parallel/Seriell-Datenumwandlung
unter den auf mehreren Steuerleitungen eingegebenen Steuersignalen.
Die Steuersignale müssen
separat in einem LSB-Decodierer erzeugt werden, der selbst ein Taktsignal
empfängt.
-
EP
0 383 080 offenbart einen Speicher mit Leseverstärkern, die
eine verringerte Lesezeit aufweisen, und dadurch wird der Leistungsverbrauch verringert.
Eine Scheinbitleitung, eine Scheinleseschaltung und eine Scheinzelle
sind vorgesehen, um eine Potentialänderung auf einen vorbestimmten Wert
zu lesen. Dann wird der Leseverstärkerbetrieb aktiviert, um das
gelesene Signal zu erfassen.
-
US
4 330 852 , die die Basis für den Oberbegriff von Anspruch
1 bildet, offenbart eine Halbleiter-Lese/Schreib-Speichermatrix mit einem seriellen Eingabe/Ausgabe-System.
Unter der Steuerung eines Übertragungssignals
werden Daten, die von Leseverstärkern
ausgelesen werden, zu symmetrisch angeordneten Transfergates übertragen,
die zwei parallele Schieberegisterstufen darstellen. Aus den zwei
Schieberegisterstufen werden die Daten bitweise abwechselnd und
seriell an eine serielle Ausgangsleitung ausgegeben. Mehrere Taktimpulse
sind erforderlich, bis ein nächstes
Datenelement zur seriellen Ausgabe zur Verfügung steht.
-
Es ist die Aufgabe der Erfindung,
ein Speicherzellenbauelement und ein Verfahren zum Ausgeben von
Daten aus einem Speicherzellenbauelement bereitzustellen, die einen
kontinuierlichen Ausgangsstrom von seriellen Daten mit hoher Rate
unter Verwendung einer vereinfachten Ausgabeschaltung ermöglichen.
-
Die Erfindung ist in den Ansprüchen 1 bzw. 13
definiert.
-
Spezielle Ausführungsbeispiele sind in den abhängigen Ansprüchen dargelegt.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Das Konfigurationsspeicherbauelement
der vorliegenden Erfindung umfasst eine Speichermatrix, die als
N-Bit-Daten, typischerweise Bytes aus acht Bits oder Worte aus sechzehn
Bits, organisiert ist. Ein externes Taktsignal führt in eine Division-Durch-N-Schaltung,
um einen Auslöser
zum Einleiten eines Speicherzugriffs und zum Lesen des Inhalts einer
Speicherstelle, auf die zugegriffen wird, bereitzustellen. Eine
Leseschaltung sorgt für
paralleles Lesen der N Bits der Speicherstelle, auf die zugegriffen
wird. Im bevorzugten Ausführungsbeispiel
umfasst die Leseschaltung N Leseverstärker, einen für jedes
gelesene Bit.
-
Die Leseschaltung wird aktiviert,
wenn auf eine Speicherstelle zugegriffen wird. Die Leseschaltung
bleibt für
die Zeit, die es dauert, eine Speicheradresse zu decodieren und
die N Bits in der adressierten Speicherstelle zu lesen, aktiviert.
Da die Leseschaltung alle N Bits auf einmal verarbeitet, basiert die
Lesezeit auf der Geschwindigkeit von einem Leseverstärker. Die
Leseschaltung umfasst einen Zwischenspeicher, um die gelesenen Daten
während des
Zeitraums, zwischen dem die Leseverstärker deaktiviert werden und
die Daten in die Datenregister geladen werden, zu halten.
-
Die Leseschaltung ist mit einem Datenregister
gekoppelt, das die gelesenen Bits empfängt. Die Bits werden dann synchron
mit einem externen Takt seriell herausgeschoben. Gemäß der Erfindung
werden die gelesenen Bits in das Datenregister geladen, wenn das
letzte Bit eines vorher gespeicherten Datenelements aus dem Datenregister
herausgeschoben wird. Folglich ist das erste Bit des gelesenen Datenelements
beim nächsten
Takt zum Herausschieben bereit. Unterdessen wird auf die nächste Speicherstelle
zugegriffen und ihre Bits werden gelesen. Dies führt zur kontinuierlichen Ausgabe
eines Stroms von Bits mit einer Rate gleich der Frequenz des externen
Takts. Bedeutender koppelt diese Methode die Operation der Leseschaltung,
die gewöhnlich langsamer
ist als die Taktgeschwindigkeit, vom Vorgang der Erzeugung des ausgegebenen
Bitstroms ab.
-
Das Bauelement umfasst ferner ein
Mittel zum Vorladen des Datenregisters mit einem ersten Datenelement
aus dem Speicher während
der Einschaltsequenz. Dies initialisiert das Datenregister, so dass
Daten zum Herausschieben vorhanden sind, während auf das nächste Datenelement
zugegriffen und dieses gelesen wird. Im bevorzugten Ausführungsbeispiel
wird ein Cache-Register mit einem Datenelement aus dem Speicher
während
des Einschaltzyklus geladen und von dort werden die Daten anschließend in
das Datenregister geladen.
-
In einem bevorzugten Ausführungsbeispiel der
Erfindung ist ein Adressenzähler
mit der Division-Durch-N-Schaltung gekoppelt, um bei jedem N-ten
Takt eine Adresse zu liefern. Der Adressenzähler führt in einen Decodierer, um
auf den Speicher Zugriff zu erlangen, wobei somit ein sequentieller
Zugriff auf den Speicher bereitgestellt wird. In einer Variation des
bevorzugten Ausführungsbeispiels
ist ein Mittel zum Initialisieren des Adressenzählers eingeschlossen, so dass
das Lesen der Speichermatrix irgendwo in der Matrix beginnen kann.
Dieses Merkmal ermöglicht
das Auslesen des Bitstroms beginnend von einer beliebigen Stelle
in der Speichermatrix. In noch einer weiteren Variation ist der
Adressenzähler
gegen ein Mittel zum Empfangen von extern gelieferten Adressen ausgetauscht.
Dies ermöglicht,
dass eine externe Vorrichtung einen Bitstrom erzeugt, der aus einer willkürliche Folge
von Speicherstellen besteht.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Systemblockdiagramm des erfindungsgemäßen Speicherbauelements.
-
2A–2C und 3 stellen das Datencacheschema der Erfindung
dar.
-
4 ist
ein Blockdiagramm, das die Speichermatrix der vorliegenden Erfindung
zeigt.
-
5 ist
ein Diagramm eines erfindungsgemäßen Leseverstärkers.
-
6 ist
ein Ablaufdiagramm, das die Operation des Leseverstärkers der
vorliegenden Erfindung zeigt.
-
7 stellt
eine Verzögerungsschaltung
dar, die in Verbindung mit den Leseverstärkern verwendet wird.
-
8 ist
ein Ablaufdiagramm der hauptsächlichen
Signale, die an der Operation der Erfindung teilnehmen.
-
BESTE ART ZUR
AUSFÜHRUNG
DER ERFINDUNG
-
Mit Bezug auf 1 umfasst ein erfindungsgemäßes serielles
Konfigurationsspeicherbauelement 100 eine Speichermatrix 20,
die typischerweise in eine Matrix von Bytes aus acht Bits organisiert
ist. Alternative Datengrößen für die Matrix
können
statt dessen verwendet werden, z. B. Worte aus sechzehn Bits. Im
Allgemeinen ist die vorliegende Erfindung in der Lage, mit N-Bit-Datengrößen zu arbeiten,
wobei N vorzugsweise eine Potenz von 2 ist.
-
Ein Adressenzähler 40 führt in die
Speichermatrix 20, der einen Decodierer zum Decodieren
der Adresse einer Speicherstelle umfasst. Der Adressenzähler 40 wird
durch das Ausgangssignal einer Division-Durch-Acht- (÷8) Schaltung 60 getaktet.
Die ÷8-Schaltung
wird durch ein extern geliefertes Taktsignal angesteuert, um bei
jedem achten Zyklus eines EXTERNEN TAKTS einen Impuls zu liefern. 1 zeigt eine Serie von Taktimpulsen,
die vom EXTERNEN TAKT geliefert werden, und die durch die ÷8-Schaltung
erzeugten resultierenden Impulse. Somit führt ein Strom von Adressen
in die Speichermatrix 20 mit einer Rate von einer Adresse
bei jedem achten Takt. Wiederum ist im allgemeinen Fall die Schaltung
eine Division-Durch-N-Schaltung für N- Bit-Datengrößen, wobei bei jedem N-ten
Takt eine Adresse erzeugt wird. Ein Schreibsteuermodul 32, das
auch durch die 8-Schaltung angesteuert wird, stellt eine Signalisierung
für die
Speichermatrix für Lese-
und Schreiboperationen bereit. Außerdem signalisiert das Schreibsteuermodul
einer Datenregister-Steuereinheit 36, Daten, die aus der
Matrix 20 ausgelesen werden, in einem Datenregister 42 zwischenzuspeichern.
-
Die Speichermatrix 20 gibt
die acht Bits eines Bytes, auf das zugegriffen wird, an das Datenregister 42 über einen
parallelen Acht-Bit-Datenweg 21 aus. Wie vorstehend erwähnt, bearbeitet
die Datenregister-Steuereinheit 36 das Datenregister zum
parallelen Laden eines Bytes (oder eines N-Bit-Datenelements), das
aus dem Speicher 20 ausgelesen wird, in das Datenregister 42;
und zum seriellen Verschieben seiner acht Bits aus der SERIELLEN
DATENAUSGANGS-Leitung, wobei der Inhalt des Speichers 20 als
Strom von Bits ausgegeben wird. Die SERIELLE DATENAUSGANGS-Leitung
führt in
einen seriellen Datenpuffer 50, der den Bitstrom in ein
externes Bauelement, z. B. FPGA (nicht dargestellt), bringt. Der serielle
Datenpuffer 50 empfängt
auch in die Speichermatrix 20 zu schreibende Daten, um
eine Programmierung des Konfigurationsspeicherbauelements zu bewirken.
Das Schreibsteuermodul 32 und die Datenregister-Steuereinheit 36 bearbeiten
zusammen das Datenregister 42, um Daten vom SERIELLEN DATENEINGANG
seriell hineinzuschieben und die eingeschobenen Daten parallel in
den Speicher 20 zu schreiben.
-
Das Konfigurationsspeicherbauelement
der vorliegenden Erfindung umfasst ferner ein Cache-Register 44,
das zum Empfangen eines Datenbytes während der Einschaltsequenz
und zum Laden eines vorher im Cache-Register 44 gespeicherten Bytes
in das Datenregister 42 während einer Rücksetzsequenz
gekoppelt ist. Eine Cache-Register-Steuereinheit 34 steuert das
Cache-Register, um diese Operationen durchzuführen, wie nachstehend erläutert wird.
-
Mit Bezug auf 2A umfassen das Datenregister 42 und
das Cache-Register 44 eine Reihe von Ein-Bit-Stufen 45.
Jede Stufe 45 umfasst ein Ein-Bit-Register 42n und
einen Ein-Bit-Cache-Zwischenspeicher 44n.
Der Cache-Zwischenspeicher 44n empfängt sein Eingangssignal von
einem Ausgang des Registers 42n. Ein Steuersignal CACHE LADEN
aktiviert den Cache-Zwischenspeicher, um die Daten zu speichern,
die an seiner Eingangsleitung erscheinen. Das Ausgangssignal des
Cache-Zwischenspeichers führt
in einen Eingang des Schalters 43. 2B zeigt eine typische Schaltung für den Cache-Zwischenspeicher 44n mit
einem Zwischenspeicher-Schaltungszugang,
der durch ein vom Signal CACHE LADEN gesteuertes Übertragungsgatter
torgesteuert wird.
-
Das Register 42n empfängt ein
Eingangssignal vom Schalter 41 und Schalter 43 und
umfasst einen VORGABE-Steuereingang. Der Schalter 41 empfängt Daten
von der DATENLEITUNG 21n und vom SERIELLEN DATENEINGANG
und wird durch die SER/PAR-Steuerleitung
geschaltet. Der Ausgang des Schalters 41 führt in den
DATENEINGANG des Registers 42n. Der Schalter 43 empfängt Daten
vom Lache-Zwischenspeicher 44n und von der DATENLEITUNG 21n und
wird durch die Steuerleitung CACHE LESEN geschaltet. Der Ausgang
des Schalters 43 führt
in den VORGABEEINGANG des Registers 42n. Das Register 42n wird
durch den EXTERNEN TAKT (nicht dargestellt) getaktet. Der Ausgang
des Registers 42n speist eine Leitung SERIELLER DATENAUSGANG
und führt,
wie vorstehend angegeben, in den Lache-Zwischenspeicher 44n.
Außerdem wird
das Ausgangssignal des Registers 42n über den Durchgangstransistor 48,
der durch die WRT/RD-Steuerleitung gesteuert wird, zur DATENLEITUNG 21n zurückgeführt.
-
Der VORGABE-Steuereingang wird durch das
Ausgangssignal des ODER-Gatters 46 angesteuert, das ein
Signal STIFTRÜCKSETZUNG
und ein Signal CACHE LADEN empfängt,
die beide von der Cache-Steuereinheit 34 stammen. Die VORGABE-Steuerung bewirkt,
dass das Register 42n Daten vielmehr vom Eingang VORGABEEINGANG
als vom Eingang DATENEINGANG zwischenspeichert. Zusätzlich zum
Zwischenspeichern im Register 42n leitet die VORGABE-Steuerung
das Eingangssignal VORGABEEINGANG direkt an den Ausgang des Registers
weiter. Der Grund für
dieses Verhalten wird in der nachstehenden Erläuterung ersichtlich. Eine typische
Schaltung für
das Register 42n ist in 2C dargestellt.
-
Das Datenregister 42 und
das Cache-Register 44 (1)
werden durch das Zusammenkoppeln von acht der Ein-Bit-Stufen 45 in
der in 3 gezeigten Weise
zusammengefasst. Das Datenregister 42 wird beispielsweise
durch Koppeln des SERIELLEN DATENAUSGANGS von einem Register 42n mit dem
SERIELLEN DATENEINGANG des nachfolgenden Registers aufgebaut. Der
Acht-Bit-Datenweg 21 von der Speichermatrix 20 (1) umfasst die DATENLEITUNG 21n der
Stufen 45. Der SERIELLE DATENAUSGANG (1) des Datenregisters 42 zweigt
von der SERIELLEN DATENAUSGANGS-Leitung der Stufe, die das niedrigstwertige
Bit hält,
ab, während
der SERIELLE DATENEINGANG des Datenregisters der SERIELLE EINGANG
der Stufe, die das höchstwertige
Bit enthält,
ist. Alle Steuerleitungen sind für
jede der Stufen gemeinsam.
-
Das Datenregister 42 und
das Cache-Register 44 erfüllen zusammen vier grundlegende
Aufgaben: das Datenregister nimmt Daten in paralleler Weise von
einer Speicherstelle an, auf die zugegriffen wird; im Datenregister
gespeicherte Daten werden seriell auf der SERIELLEN AUSGANGS-Leitung herausgeschoben;
in der Speichermatrix 20 zu speichernde Daten werden seriell
von der SERIELLEN EINGANGS-Leitung eingeschoben; und Daten werden
in paralleler Weise an acht Dateneingangspuffer (nicht dargestellt)
in der Speichermatrix 20 übergeben, wenn in eine Speicherstelle
geschrieben wird.
-
Aufgabe 1: Das Laden von Daten von
einer Speicherstelle, auf die zugegriffen wird, beinhaltet eine
parallele Leseoperation. Diese wird durch Aktvieren der Steuerleitungen
WRT/RD und SER/PAR von jeder der Ein-Bit-Stufen 45, die das Datenregister 42 bilden,
auf LO durchgeführt.
Ein LO auf WR/RD sperrt einen Durchgangstransistor 48,
so dass das Ausgangssignal aus dem Speicher 20 über die
DATENLEITUNG 21n in den Schalter 41 und 43 führt. Ein
LO auf SER/PAR schaltet auch die DATENLEITUNG 21n zum DATENEINGANG
des Registers 42n. Die Leitungen STIFTRÜCKSETZUNG und CACHE LADEN sind
LO, so dass das Register seine Daten vielmehr vom DATENEINGANG als
vom VORGABEEINGANG taktet.
-
Aufgabe 2: Das serielle Verschieben
von im Datenregister 42 enthaltenen Daten wird durch Aktivieren
eines logischen LO auf WRT/RD und eines HI auf SER/PAR durchgeführt. WRT/RD
sperrt den Durchgangstransistor 48, um den SERIELLEN DATENAUSGANG
von der DATENLEITUNG 21n zu isolieren. SER/PAR schaltet
den SERIELLEN DATENEINGANG von einem vorangehenden Register 42n,
so dass jedes Ticken des EXTERNEN TAKTS eine Verschiebungsfortpflanzung
der Daten von einem Register 42n zum nächsten bewirkt.
-
Aufgabe 3: Das seriell verschobene
Eingangssignal vom SERIELLEN DATENEINGANG (1) erfordert das Aktivieren eines HI
auf SER/PAR, um Daten seriell in das Datenregister zu takten. WRT/RD
wird auf LO aktiviert, um den Durchgangstransistor 48 zu
sperren, so dass der Ausgang des Registers 42n von der
DATENLEITUNG 21n isoliert wird.
-
Aufgabe 4: In das Datenregister
verschobene Daten werden durch Aktivieren eines HI auf WRT/R in
den Speicher 20 geschrieben. Da die zu schreibenden Daten
am Ausgang jedes Registers 42n sitzen, übergibt das Durchsteuern des
Durchgangstransistors 48 die Daten in paralleler Weise
an die Dateneingangspuffer (nicht dargestellt) der Speichermatrix 20.
-
Während
der Einschalt- (Einschaltrücksetz-) Sequenz
und der extern gesteuerten Rücksetzsequenz
des Speicherbauelements gehen die Operation der Daten- und Cache-Register 42, 44 in
unterschiedlicher Weise vor. Unter erneuter Bezugnahme auf 2 wird während eines Einschaltrücksetz- (POR)
Zyklus CACHE LESEN auf LO aktiviert und CACHE LADEN wird auf HI
aktiviert. CACHE LESEN schaltet die DATENLEITUNG 21n zum
VORGABEEINGANG des Registers 42n. CACHE LADEN lädt VORGABEEINGANG
in das Register 42n. Wie vorstehend mit Bezug auf 2C erläutert, koppelt das Aktiveren
von VORGABE den VORGABEEINGANG direkt mit dem Ausgang des Registers 42n.
Im Fall, in dem CACHE LADEN auf HI aktiviert wird, wird überdies
VORGABEEINGANG ebenso in den Cache-Zwischenspeicher 44n geladen
(siehe 2A und 2B). Wenn ein erstes Datenbyte
(gewöhnlich
das in der Speicherstelle 0 enthaltene Byte) während des POR-Zyklus
gelesen wird, wird es folglich auf dem Acht-Bit-Datenweg 21 (1) übergeben, der in jede DATENLEITUNG 21n führt, und
wird in die Register 42n und die Lache-Zwischenspeicher 44n geladen, die
das Datenregister 42 bzw. das Lache-Register 44 bilden.
Diese Operation ist asynchron, und wenn CACHE LADEN auf LO schaltet,
enthält
das Datenregister 42 (sowie das Lache-Register) das erste
Byte. Wenn der erste Takt ankommt, ist das Datenregister 42 mit
einem Byte vorgeladen worden und ist bereit, das Herausschieben
von Daten zu beginnen.
-
Während
eines extern gesteuerten Rücksetzzyklus
ist nicht genügend
Zeit, um das erste Byte zu lesen und in das Datenregister 42 zu
laden. Typischerweise beendet ein Rücksetzzyklus in einigen zehn
Nanosekunden (z. B. 20 Nanosekunden) im Vergleich zu einem POR-Zyklus,
der in der Größenordnung
von Mikrosekunden zum Beenden braucht, bevor das Bauelement zum
Ausgeben seines Bitstroms bereit ist.
-
Man erinnere sich jedoch, dass das
Cache-Register 44 während
des POR-Zyklus bereits mit dem ersten Byte vorgeladen wurde. Somit
wird CACHE LESEN auf HI aktiviert, so dass der VORGABEEINGANG geschaltet
wird, um das Ausgangssignal des Lache-Zwischenspeichers 44n zu
empfangen. STIFTRÜCKSETZUNG
(über die
Lache-Steuereinheit 34) wird auf HI aktiviert, so dass
das Register 42n sein Eingangssignal vielmehr vom VORGABEEINGANG
als vom DATENEINGANG lädt.
Anstelle des Zugriffs auf eine Speicherstelle und des Lesens des
in das Datenregister 42 zu ladenden Bytes wird das erste
Byte während
eines Rücksetzzyklus
direkt vom Lache-Register 44 geladen, eine Operation, die innerhalb
der Zeit zum Beenden des Rücksetzzyklus durchgeführt werden
kann. Wiederum ist dies eine asynchrone Operation, und sobald die
Bedingung STIFTRÜCKSETZUNG
aufgehoben wird, hält
das Datenregister 42 das im Lache gespeicherte Byte und
ist zum Austakten bereit.
-
Mit Bezug auf 4 ist die Speichermatrix 20 gezeigt,
die eine Zellenmatrix 20' mit einer Vielzahl von programmierbaren
Speicherzellen, wie z. B. eine Matrix von Bauelementen mit schwebenden Gate,
umfasst. X- und Y-Decodierer 60, 62 empfangen
eine Adresse und sehen die erforderliche Decodierlogik zum Zugreifen
auf eine Speicherzelle innerhalb der Zellenmatrix 20' vor.
Das Ausgangssignal des Y-Decodierers führt in eine Leseverstärkerschaltung 66,
die eine Reihe von acht Leseverstärkern (5) umfasst, die parallel arbeiten. Gemäß der vorliegenden
Erfindung speist der Y-Decodierer alle N Bits (z. B. 8 Bits) einer
Speicherstelle, auf die zugegriffen wird, in paralleler Weise in
die Leseverstärkerschaltung 66,
wobei somit für
paralleles Lesen der Bits gesorgt wird. Der Ausgang der Leseschaltung
ist über
die Datenleitungen 21 mit dem Datenregister 42 gekoppelt.
Ein Zeitgeber 64 liefert ein Freigabesignal SREN, um die
Leseschaltung durchzusteuern und zu sperren, und wird durch den ÷8-Takt
angesteuert. SER/PAR speichert die ausgelesenen Daten aus den Leseverstärkern 66 im
Datenregister 42.
-
5 zeigt
jeden derartigen Verstärker 200 mit
Leseverstärkern 66 genauer.
Transistoren T13–T17 bilden
eine Differenzverstärkerstufe 230. Auf
der Speicherzellenseite des Differenzverstärkers 230 befindet
sich ein Spannungsreferenzabschnitt 210 und eine Strom-Spannungs-Stufe mit
Transistoren T1 und T2. Ebenso befindet sich auf
der Referenzzellenseite eine Spannungsreferenz 220 und eine
Strom-Spannungs-Stufe mit Transistoren T7 und T8.
Das Ausgangssignal 231 des Differenzverstärkers (d.
h. das gelesene Bit) führt
durch den Durchgangstransistor 256, damit es im Zwischenspeicher 250 gespeichert
wird. Der Ausgang des Zwischenspeichers ist mit der Leseverstärker-Ausgangsleitung 21n über das Übertragungsgatter 254 gekoppelt,
das durch die SER/PAR-Leitung durchgesteuert wird.
-
Der Leseverstärker 200 umfasst gemäß der vorliegenden
Erfindung ferner eine Leseverstärker-Freigabeschaltung 270.
Die Freigabeschaltung wird durch ein Leseverstärker-Freigabesignal SAEN angesteuert, das
vom Zeitgeber 64, der in 4 gezeigt
ist, abgeleitet wird. Die Freigabeschaltung umfasst eine Kette von
Invertern I1–I4,
zwischen die Paare von Verzögerungskondensatoren C1/C2 und C3/C4 eingeschoben
sind. Das Ausgangssignal 271 der Freigabeschaltung 270 betätigt ein Übertragungsgatter
(das aus dem Transistorpaar 252 und dem Inverter I5 besteht),
welches in einer Leitung mit dem Zwischenspeicher 250 in
der in 5 gezeigten Weise
gekoppelt ist. Das Ausgangssignal 271 steuert auch (über den
Inverter I5) das Gate des Durchgangstransistors 256 an.
-
Bezüglich der Freigabeschaltung 270 führt das
SAEN-Signal direkt in den Eingang B des NICHT-UND-Gatters G1 und
in den Inverter I1. Das Ausgangssignal des Inverters I1 führt in das
Gate eines P-Kanal-Transistors 246 und in den Inverter 242. Der
Inverter I1 steuert den Transistor 246 und den
Inverter 242 gleichzeitig durch und sperrt diese. Das Ausgangssignal
des Inverters I2 schaltet die N-Kanal-Transistoren T4 und T10.
Das Ausgangssignal des Inverters I4 führt in den Eingang A des NICHT-UND-Gatters G1.
Aufgrund der Verzögerungskondensatoren
wird das am Eingang A ankommende Signal relativ zum Signal
am Eingang B um ein Zeitausmaß auf der Basis der Kapazitätswerte der
Verzögerungskondensatoren
und in einem gewissen Grad der Verzögerung der Inverter I1–I4 verzögert.
-
Die Operation des Leseverstärkers 200 wird nun
mit Bezug auf 5 und
den Ablaufplan von 6 beschrieben.
Mit Bezug zunächst
auf 5 schaltet, wenn
SAEN während
einer Einschaltsequenz von LO auf HI übergeht, das Signal aus dem Inverter I1 auf
LO, wobei somit der Transistor 246 durchgesteuert wird,
wodurch VCC zu den Transistoren T1, T6, T7 und T12 geliefert
wird. Der Inverter I1 steuert auch den Transistor T17 über den
Inverter 242 durch, wobei somit der Differenzverstärker 230 durch
Vorsehen eines Weges zur Erdung freigegeben wird. Eine kurze Verzögerung danach
schaltet das Ausgangssignal des Inverters I2 auf HI. Dies steuert
die Transistoren T4 und T10 durch, wodurch die
Spannungsreferenzstufen 210, 220 durchgesteuert
werden. Zu diesem Zeitpunkt wurde die Einschaltsequenz für den Leseverstärker beendet.
Diese Einschaltsequenz garantiert ein sauberes Überschalten des Leseverstärkers von
einem ungespeisten Zustand in einen gespeisten Zustand, was jegliche
instabile Zustände,
die am Leseverstärkerausgang 21 auftreten
könnten,
vermeidet.
-
Man wende sich nun der Zeitsteuerung
der Eingangssignale an den Eingängen A und B des NICHT-UND-Gatters G1 während des
Einschaltens, die in 6 gezeigt
ist, zu. Vor dem Zeitpunkt t0 und für eine Zeitdauer Δt nach t0 liegt das NICHT-UND-Gatter G1 auf
HI, da A und B beide auf LO liegen. Der Zwischenspeicher 250 kann
daher seinen Zustand dadurch, dass das Übertragungsgatter 252 durchgesteuert
ist, beibehalten. Gleichzeitig wird der Zwischenspeicher 250 vom
Ausgang 231 des Differenzverstärkers isoliert, da der Durchgangstransistor 256 gesperrt
ist. Aufgrund der Verzögerungskondensatoren C1–C4 kommt
das Signal am Eingang A nach dem Signal am Eingang B an
und somit bleibt das Gatter G1 bis zum Zeitpunkt t1, Δt Einheiten,
nachdem SAEN auf HI schaltet, auf HI. Bei t1 schaltet
das Gatter G1 auf LO, was das Übertragungsgatter 252 sperrt,
wobei somit der Zwischenspeicher gelöscht und deaktiviert wird.
Der Durchgangstransistor 256 wird auch durchgesteuert,
wobei somit der Ausgang des Differenzverstärkers 230 mit dem
Zwischenspeicher verbunden wird. Der Verzögerungsweg stellt sicher, dass
der Zustand des Zwischenspeichers (und daher die vorher gelesenen
Daten) gehalten werden, bis nachdem der Leseverstärker vollständig gespeist
wird.
-
Weiterhin betrachte man, dass der
Leseverstärker
seine Abschaltsequenz beginnt, wenn SAEN von HI auf LO übergeht.
Unter Rückbezug
auf 5 schaltet das Ausgangssignal
des Inverters I1 auf HI, was den Transistor 246 sperrt,
wobei somit VCC von den Transistoren T1, T6, T7 und T12 entfernt
wird. Außerdem
wird der Transistor T17 (über den Inverter 242)
gesperrt, wobei somit der Differenzverstärker 230 deaktiviert
wird. Das Ausgangssignal des Inverters I2 schaltet als
nächstes
auf LO, was die Transistoren T4 und T10 sperrt,
wodurch die Spannungsreferenzstufen 210, 220 abgeschaltet
werden. Zu diesem Zeitpunkt ist die Abschaltsequenz für den Leseverstärker beendet.
-
Mit Bezug auf 6 folgt zum Zeitpunkt t2 das
Signal am B-Eingang, das direkt mit dem NICHT-UND-Gatter G1 gekoppelt
ist, SAEN ohne Verzögerung.
Dies bewirkt, dass G1 auf HI übergeht, sobald SAEN auf LO
schaltet. Das Differenzverstärker-Ausgangssignal 231 wird
dadurch, dass das Übertragungsgatter
durchsteuert, im Zwischenspeicher 250 zwischengespeichert.
Gleichzeitig wird der Durchgangstransistor 256 gesperrt,
so dass der Zwischenspeicher 250 vom Rest der Leseverstärkerschaltung
isoliert wird, wenn sie wie vorstehend beschrieben abgeschaltet
wird. Somit werden die gelesenen Daten gespeichert, bevor das Abschalten
des Leseverstärkers
beendet ist. Durch das Abkoppeln des Leseverstärkerausgangs 231 vom
Zwischenspeicher zerstören
außerdem
irgendwelche instabilen Zustände,
die während
der Abschaltsequenz auftreten könnten,
den Zustand des Zwischenspeichers nicht.
-
Man nehme nun auf 7 für
ein zusätzliches
Detail der Zeitgeberschaltung 64, die in 4 gezeigt ist, Bezug. Das SAEN-Signal
geht als Ausgangssignal des NICHT-ODER-Gatters 303 von der in 7 gezeigten Schaltung aus.
Das NICHT-UND-Gatter 301 aktiviert die Zeitgeberschaltung,
wenn das Freigabesignal EN auf HI schaltet. Ein eingehendes ÷8-Taktsignal, das am NICHT-UND-Gatter 301 empfangen
wird, wird durch eine Decodiererverzögerungsschaltung 302 für eine Zeit Δta verzögert.
Die Decodiererverzögerung 302 sieht
eine Zeitverzögerung
vor, die ausreicht, um das Inkrementieren des Adressenregisters 40 (1) zu ermöglichen,
und damit die Adressendecodierer 60, 62 ( 4) auf eine Speicherstelle
zugreifen, bevor tatsächlich
die Leseverstärker 200 aktiviert
werden. Eine Inverterkette 306 stellt eine minimale Verzögerung sicher,
um das Inkrementieren und Decodieren der nächsten Adresse zu ermöglichen,
indem die Vorspannung des Durchgangstransistors 310 verzögert wird,
und zwar in einer Situation, in der die Impulsbreite des ÷8-Takts
zu kurz ist.
-
Nach einer Verzögerung Δta bewirkt
der ÷8-Takt,
dass das Ausgangssignal (SAEN) des NICHT-ODER-Gatters 303 auf
HI schaltet, wobei somit die Leseverstärker 200 durchgesteuert
werden. Eine Leseverzögerungsschaltung 304 verzögert den 8-Takt,
um sicherzustellen, dass der SAEN-Impuls für eine Zeitdauer Δts aktiviert bleibt, die ausreicht, damit
die Leseverstärker
den Zustand einer Speicherzelle lesen.
-
Die relative Zeitsteuerung zwischen
dem ÷8-Takt
und den SAEN-Impulsen ist in 7 gezeigt. Zum
Zeitpunkt t0 kommt der Takt an und wird
durch die Schaltung 302 für eine Zeitdauer Δt1 verzögert. Zum
Zeitpunkt t1 schaltet SAEN für eine Zeitdauer Δts auf HI, was die Leseverstärker 200 aktiviert.
Zum Zeitpunkt t2 schaltet SAEN auf LO, wobei
die Leseverstärker
somit gesperrt werden.
-
Die Operation des seriellen Konfigurationsspeichers
wird nun mit Bezug auf den Ablaufplan von 8 erörtert.
Wie im Plan angegeben, wird bei jedem achten Takt (über den ÷8-Takt 60,
Fig. 1) eine Adresse erzeugt. Bei einem bestimmten Takt (man nenne
ihn Takt 1) beginnt somit ein Adressenübergang. Wie vorstehend erläutert, wird
kurz nach dem Takt 1 (Δta, 7)
SAEN über
den Zeitgeber 64 auf HI aktiviert, um die Leseverstärkerschaltung 66 durchzusteuern.
SAEN liegt für
eine Zeitdauer (Δts, 7)
auf HI, die lang genug ist, um zu ermöglichen, dass die acht Bits
der adressierten Speicherstelle gelesen werden. SAEN schaltet dann
auf LO und die acht gelesenen Bits werden intern in den Leseverstärker-Zwischenspeichern 250 zurückgehalten,
wobei die zurückgehaltenen
Daten in 8 als INT DATA
dargestellt sind.
-
Unterdessen werden Datenbits von
einer vorher ausgelesenen Speicherstelle Dn–1 aus
dem Datenregister 42 herausgeschoben, was in 8 als EXT DATA angegeben
ist. Tatsächlich
wird beim Takt 0 das Bit Eins von Dn–1 herausgeschoben.
Man beachte, dass für
die meiste Zeit, in der Daten aus dem Datenregister 42 herausgeschoben
werden, SER/PAR auf HI liegt, wobei aus 2A und 3 zu
erinnern ist, dass dies eine Verschiebung der gespeicherten Bits
bei jedem Takt nach rechts bewirkt.
-
Für
die Takte 1–7
werden die Bits 2–8
von Dn–1 aus
dem Datenregister herausgeschoben. Beim Takt 7 wird das Bit 8 von
Dn–1 herausgeschoben.
Beim Takt 7 wird auch SER/PAR für
eine Zeitdauer, die sich in den Takt 8 erstreckt, auf LO aktiviert.
Unter erneuter Bezugnahme auf 2A und 3 bewirkt ein LO auf SER/PAR,
dass der Schalter 41 die gelesenen Daten von den DATENLEITUNGEN 21n in
die Registerzwischenspeicher 42n lädt. In dem in 8 gezeigten Fall sind die Daten beim
Takt 8 Dn. Wenn der Takt 8 ankommt, ist
folglich das nächste
Bit, das aus dem Datenregister herausgeschoben wird, das erste Bit von
Dn, der Speicherstelle, die während
der Takte 1–7
ausgelesen wurde (während
Dn–1 herausgeschoben
wurde) und in den Zwischenspeichern 250 der Leseverstärker 200 gespeichert
wurde.
-
Während
der Takte 1'–7'
werden die Bits, die Dn bilden, aus dem
Datenregister herausgeschoben. Wie der Ablaufplan zeigt, wiederholt
sich der Prozess. Die nächste
Adresse An+1 wird beim Takt 1' übergeben,
die Leseverstärker
werden durchgesteuert, um die acht Bits von Dn+1 auszulesen,
und in den Zwischenspeichern 250 direkt vor dem Sperren
der Leseverstärker
zwischengespeichert. Die Dn+1-Bits bleiben
in den Zwischenspeichern 250 bis zum Takt 7', zu welchem
Zeitpunkt das Bit 8 von Dn herausgeschoben
wird und die Dn+1-Bits in das Datenregister (darüber, dass
SER/PAR auf LO aktiviert wird) geladen werden, so dass beim Takt
8' das nächste
aus dem Datenregister 42 herausgeschobene Bit das erste
Bit von Dn+1 ist.
-
Einige Punkte sind erwähnenswert:
Erstens wird jeder der acht Leseverstärker 200 bei jedem achten
Takt durchgesteuert und bleibt nur für eine Zeitdauer durchgesteuert,
die ausreicht, um das Decodieren einer Adresse und das Lesen eines
Bits zu ermöglichen.
Wie der Ablaufplan darstellt, ermöglicht dies, dass die Leseverstärker die
meiste Zeit während
der acht Takte, die erforderlich sind, um ein vorher ausgelesenes
Byte herauszuschieben, gesperrt sind. Dies verringert den von den
Leseverstärkern entnommenen
stationären
Strom erheblich, was eine signifikante Verringerung des Leistungsverbrauchs darstellt.
-
Zweitens ist der resultierende ausgegebene Bitstrom
mit dem externen Takt synchron. Bedeutender ist die Ausgangsrate
des Bitstroms von der Operationsgeschwindigkeit der Leseverstärker unabhängig. Dies
liegt an dem bei der vorliegenden Erfindung verwendeten Pipelineverarbeitungsverfahren.
Wie der Ablaufplan zeigt, liegt die Speicherstelle, die zu irgendeinem
Zeitpunkt ausgelesen wird, immer eine Stelle vor der Speicherstelle,
deren Bits ausgegeben werden. Eine Speicherstelle wird immer "im
voraus abgerufen", während
eine vorher "abgerufene" Stelle ausgegeben wird. Diese Überlappung
der Ausleseoperation und der Bitstrom-Ausgabeoperation koppelt die
Bitstromrate von der Geschwindigkeit der Leseverstärker ab.
Somit wird die Rate des Bitstroms nicht mehr durch die Geschwindigkeit
des Leseverstärkers begrenzt,
wie bei Konstruktionen des Standes der Technik. Vielmehr ist die
Bitrate nur eine Funktion der externen Taktfrequenz.
-
Drittens lässt sich diese Architektur
leicht für größere Datengrößen als
Acht-Bit-Daten maßstäblich vergrößern. Ein
Sechzehn-Bit-Datenweg kann beispielsweise einfach durch Vorsehen
von zusätzlichen
Leseverstärkern
untergebracht werden. Die relative Zeitsteuerung würde gegenüber der
in 8 gezeigten unverändert bleiben.
Für höhere Taktfrequenzen,
bei denen sich die Lesezeit denkbar der Zeit nähern könnte, die es dauert, um acht
Bits seriell auszugeben, würde
die Erweiterung der Datengröße auf sechzehn
Bits folglich ein breiteres Zeitfenster vorsehen, während dessen
Daten gelesen werden können.
-
1 zeigt
auch eine Variation des Ausführungsbeispiels
der vorliegenden Erfindung. In dieser Variation umfasst der Adressenzähler 40 einen
Eingang, der in Durchsicht gezeigt ist, zum Empfangen einer Anfangsadresse
von einer externen Quelle. Dies ermöglicht das Voreinstellen des
Adressenzählers
auf eine andere Speicherstelle als die Speicherstelle Null, so dass
der Bitstrom irgendwo in der Speichermatrix 20 beginnen
kann. Dies ist bei umkonfigurierbaren FPGAs, bei denen mehrere Konfigurationsbitströme im Konfigurationsspeicher
gespeichert werden können,
nützlich,
so dass eine beliebige Konfiguration in der Ausführungszeit zum FPGA gesandt werden
kann.