-
Die
Erfindung betrifft eine Schaltungsanordnung zur Umsetzung eines
parallelen Datenstroms in einen seriellen Datenstrom und zur Zwischenspeicherung
und getakteten Ausgabe des Datenstroms, sowie zur umgekehrten Umsetzung
eines seriellen Datenstroms in einen parallelen Datenstrom.
-
Bei
bekannten Schaltungsanordnungen zur Parallel/Seriell-Umsetzung ist
eine Speicherverwaltung in der Weise erforderlich, daß ein Pointer
auf den Stack zeigt, der als nächster
zu beschreiben ist und ein weiterer Pointer auf einen Stack, der
als nächster
auszulesen ist. Ein gleichzeitiger Zugriff auf beide Bereiche ist
dabei nicht möglich.
Ferner ist eine Anpassung einer derartigen Speicheranordnung an verschiedene
Bitrahmenbreiten nicht möglich
bzw. es wird der zur Verfügung
stehende Speicherplatz nicht vollständig genutzt. Durch das erforderliche
sequentielle Abarbeiten ist eine derartige Anordnung nicht sehr
schnell. Ferner erfordert sie einen häufigen Softwareeinsatz, d.h.
Prozessoreinsatz, der wiederum den Prozessor, der normalerweise
andere Aufgaben zu erledigen hat, belastet. US-A-475149 zeigt einen FIFO-Zwischenspeicher
mit programmierbarer Seriell/Parallel/ Seriell-Umsetzung.
-
Es
ist Aufgabe der Erfindung, eine Schaltungsanordnung zur Parallel/Seriell-Umsetzung sowie zur
Seriell/Parallel-Umsetzung anzugeben, welche möglichst schnell arbeitet, möglichst
wenig Softwaresteuerung erfordert und welche bezüglich der Bitrahmenbreite flexibel
einsetzbar ist.
-
Diese
Aufgabe wird für
eine Schaltungsanordnung zur Parallel/Seriell-Umsetzung dadurch gelöst, daß ein erstes
Schieberegister vorgesehen ist, in welchem der parallele Datenstrom
bitrahmenweise in Abhängigkeit
eines extern zugeführten
Prozessor-Taktes
gespeichert wird und welches mittels bitweiser Abtastung der gespeicherten
Daten einen seriellen Datenstrom liefert, der parallel allen Speicherstellen
eines zweiten, bitweise adressierbaren Schieberegisters zugeführt wird,
aus dem die in ihm gespeicherten Daten seriell in Abhängigkeit
eines seriellen Taktes ausgelesen werden und welches den seriellen
Datenstrom liefert,
daß dem
zweiten Schieberegister ein Lade-Schieberegister zugeordnet ist,
welches einen Füllstandszeiger
liefert, der laufend die Grenze zwischen Speicherzellen des zweiten
Schieberegisters mit gültigen, gespeicherten
Daten und Speicherzellen, welche neu mit Daten zu beschreiben sind,
markiert,
und daß das
Speichern der von dem ersten Schieberegister gelieferten Daten in
dem zweiten Schieberegister in Abhängigkeit des Füllstandszeigers
in der Weise erfolgt, daß ein
an allen Speicherzellen des zweiten Schiebergeisters anliegendes
von dem ersten Schieberegister geliefertes Bit in diejenige neu mit
Daten zu beschreibende Speicherzelle abgespeichert wird, die dem
Füllstandszeiger
am nächsten
ist und die an die mit gültigen
Daten beschriebenen Speicherzellen angrenzt.
-
Die
Schaltungsanordnung weist als zentrale Elemente ein erstes und ein
zweites Schieberegister auf. In das erste Schieberegister werden
die von einem Mikroprozessor in einem vorgegebenen Takt gelieferten
parallelen Daten parallel eingeschrieben.
-
Bei
Abhängigkeit
eines seriellen Taktes, der beispielsweise aus diesem Prozessortakt
abgeleitet sein kann, werden die in dem ersten Schieberegister gespeicherten
Bits bitweise seriell abgetastet, d.h. es werden beispielsweise
die Bits eines Rahmens nacheinander einzeln zu dem zweiten Schieberegister übertragen.
Das zweite Schieberegister weist Speicherzellen auf, die zum Beschreiben
einzeln adressierbar sind. Somit kann für jedes einzelne Bit frei entschieden
werden, welche Speicherzelle mit dem Bit beschrieben werden soll.
Um diese Entscheidung vorzunehmen, ist dem zweiten Schieberegister
ein Lade-Schieberegister
zugeordnet, welches ein Füllstandszeiger
beinhaltet. Hierbei kann es sich beispielsweise um ein Bit handeln,
das durch die Speicherzellen des Lade-Schieberegisters geschoben wird.
Dieser Füllstandszeiger
liefert laufend eine Information darüber, wo sich in dem zweiten
Schieberegister die (grenze zwischen denjenigen Speicherzellen befindet,
die bereits mit Bits von dem ersten Schieberegister gültig beschrieben
wurden, und solchen Speicherzellen, die zwar möglicherweise bereits beschrieben
wurden, deren Inhalt aber noch nicht gültig ist. Der Füllstandszeiger
markiert also auch jeweils diejenige Speicherzelle, die als nächstes mit
einem Bit, das von dem ersten Schieberegister kommt, zu beschreiben
ist. Es wird daher das Speichern der Bits, die von dem ersten Schieberegister
kommen, in Abhängigkeit
dieses Füllstandszeigers
vorgenommen.
-
Das
Auslesen der Daten aus dem zweiten Schieberegister kann in Abhängigkeit
eines seriellen Taktes vorgenommen werden, der grundsätzlich unabhängig von
dem Takt sein kann, mit dem das erste Schieberegister geladen wird.
-
Die
Anordnung weist vor allem den Vorteil auf, daß sie rein hardwareorientiert
arbeitet, da sie nur von den Taktsignalen und von dem Füllstandszeiger
abhängig
ist, welche sowieso zur Verfügung
stehen bzw. hardwaremäßig innerhalb
der Anordnung generiert werden. Die Anordnung benötigt daher
einen minimalen Prozessoreinsatz, so daß der Prozessor, von dem beispielsweise
die parallelen Daten stammen, entlastet wird. Ferner findet die
Parallel/Seriell-Umsetzung laufend ohne Unterbrechungen statt, da
Wartezeiten nicht anfallen, die bei bekannten Anordnungen dadurch
entstehen, daß in Speicherbereiche
eines Speichers nicht gleichzeitig geschrieben und gelesen werden
kann. Die Begrenzung der Arbeitsgeschwindigkeit der Anordnung ergibt
sich nicht durch die Anordnung selbst, sondern durch die Geschwindigkeit,
mit der die Daten geliefert und abgerufen werden.
-
In
Anspruch 2 ist eine vorteilhafte Ausgestaltung dieser Anordnung
angegeben, welche es gestattet, den Füllstandszeiger in dem Lade-Schieberegister
auf einfache Weise laufend zu aktualisieren. Dazu wird mittels eines
Zählers
ein Schiebesignal generiert, das dem Lade-Schieberegister und dem
ersten Schieberegister zugeführt
wird. Wird in Abhängigkeit
dieses Schiebesignals aus dem ersten Schieberegister ein neues Bit
ausgelesen und in die nächste
zu beschreibende Speicherzelle des zweiten Schieberegisters eingeschrieben,
so wird der Stand des Füllstandszeigers
in dem Lade-Schieberegister ebenfalls durch dieses Signal entsprechend
korrigiert. Nach dem Beschreiben einer Speicherzelle wird der Füllstandszeiger
auf die nächste
Speicherzelle zeigen, die zu beschreiben ist. Ferner wird der serielle
Takt, mit dem die Daten aus dem zweiten Schieberegister seriell
ausgelesen werden, ebenfalls dem Lade-Schieberegister zugeführt, um
umgekehrt eine entsprechende Korrektur des Füllstandszeigers vorzunehmen,
wenn ein Bit aus dem zweiten Schieberegister ausgelesen wurde. Auf
diese Weise findet eine laufende Korrektur des Füllstandszeigers abhängig davon
statt, ob ein neues Bit gelesen oder geschrieben wurde.
-
Die
oben beschriebenen Vorteile der erfindungsgemäßen Anordnung können noch
dadurch erweitert werden, daß die
Anordnung, wie gemäß Anspruch
3 definiert, so ausgelegt wird, daß sie auch variable Rahmenbreiten
der ihr zugeführten
parallelen Bits verarbeiten kann. Dazu weist das erste Schieberegister
so viele Speicherzellen auf, wie für eine maximale Bitrahmenbreite,
bezeichnet als physikalische Bitrahmenbreite, erforderlich sind.
Werden tatsächlich
parallele Bits einer geringeren, sogenannten logischen Rahmenbreite
angeliefert, so werden diese ebenfalls parallel in das erste Schieberegister eingeschrieben.
Dabei entstehen jedoch Lücken,
die zunächst
nicht durch Bits beschrieben werden. Es ist eine Rahmen-Logik vorgesehen,
welche bei einem Weiterschieben der Bits in dem ersten Schieberegister
jeweils dasjenige Bit verfolgt, das als nächstes auszulesen ist. Damit
dieses möglich
ist, sind die Speicherzellen so ausgelegt, daß aus jeder der Speicherzellen
einzeln das in ihr gespeicherte Bit ausgelesen werden kann. Erfolgt
also ein Takt des Schiebesignals, so wird das Schieberegister weitergeschoben
und auch die Rahmen-Logik wird entsprechend der neuen Position des
nächsten
auszulesenden Bits folgen. Das Auslesen dieses Bits wird von der
Rahmen-Logik gesteuert und wird parallel allen Speicherzellen des
zweiten Schieberegisters zugeführt,
wo eine Abspeicherung in Abhängigkeit
des Füllstandszeigers
erfolgt.
-
Eine
weitere Ausgestaltung der Erfindung gemäß Anspruch 5 sieht vor, daß die Anordnung
zwei Signale abgibt, welche jeweils eine vollständige Füllung des zweiten Schieberegisters
bzw. einen relativ geringen Füllstand
dieses Schieberegisters signalisieren. Damit kann eine Anordnung
angesteuert werden, die die parallelen Daten liefert.
-
Die
beschriebene Anordnung zur Parallel/Seriell-Umsetzung kann im Prinzip
in gleichem Aufbau auch für
eine Seriell/Parallel-Umsetzung eingesetzt werden. Hierzu werden
vorteilhaft die Maßnahmen
gemäß Anspruch
7 eingesetzt.
-
Es
ergeben sich auch bei dieser Arbeitsweise die gleichen Vorteile,
da auch hier eine weitgehend softwareunabhängige Arbeitsweise gewährleistet
ist und die Anordnung keinen Wartezustand oder Ähnliches erfordert.
-
Bei
dieser Arbeitsweise werden die seriell gelieferten Daten in dem
zweiten Schieberegister in Abhängigkeit
eines externen seriellen Taktes gespeichert. Sie werden aus den
Speicherzellen dieses Schieberegisters bitweise wieder ausgelesen,
wobei der Füllstandszeiger
nunmehr diejenige Speicherzelle signalisiert, aus der das nächste Bit
auszulesen ist. Dieses Bit wird in das erste Schieberegister eingeschrieben.
Dieser Vorgang wiederholt sich so lange, bis eine Bitrahmenbreite
abgespeicherter Bits in dem ersten Schieberegister vorliegt, die
sodann parallel ausgelesen werden können.
-
Nachfolgend
wird ein Ausführungsbeispiel der
Erfindung anhand der Zeichnung näher
erläutert.
-
Die
einzige Figur der Zeichnung zeigt in Form eines Blockschaltbildes
eine Anordnung zur Umsetzung eines parallelen Datenstroms in einen seriellen
Datenstrom.
-
Die
Anordnung weist ein erstes Schieberegister 1 auf, dem der
parallele Datenstrom DPin zugeführt
wird. Diese parallelen Daten können
eine maximale Rahmenbreite aufweisen, gemäß der die Anordnung physikalisch
ausgelegt ist, d.h. gemäß der entsprechend
viele parallele Bits geliefert werden können und gemäß der das
erste Schieberegister 1 in der Figur nicht näher angedeutete
Speicherzellen aufweist. Wie weiter unten noch zu erläutern sein wird,
ist die Anordnung jedoch auch so ausgelegt, daß sie mit einer geringeren
Bitrahmenbreite arbeiten kann. Diese geringere Bitrahmenbreite wird
im folgenden als logische Bitrahmenbreite bezeichnet und muß so dimensioniert
sein, daß die
physikalische Bitrahmenbreite ein ganzzahliges Vielfaches der logischen
Bitrahmenbreite beträgt.
-
Das
Einschreiben der parallelen Daten DPin in das erste Schieberegister
geschieht in Abhängigkeit
eines Taktes μPClk,
der beispielsweise von einem Rechner stammen kann, der die parallelen
Daten liefert.
-
Außer dem
ersten Schieberegister 1 ist ein zweites Schieberegister 2 vorgesehen,
welches dazu dient, die in dem ersten Schieberegister abgespeicherten
Daten einzeln bitweise zu übernehmen.
Die Position bzw. die Speicherzelle des zweiten Schieberegister,
in die ein Bit übernommen
wird, wird durch einen Füllstandszeiger
in einem Lade-Schieberegister 3 bestimmt.
Aus dem zweiten Schieberegister werden die Daten seriell ausgelesen
und bilden den seriellen Ausgangsstrom.
-
In
dem Ausführungsbeispiel
gemäß der Figur
weist das erste Schieberegister 1 16 Speicherzellen auf,
d.h. die physikalische Bitrahmenbreite beträgt 16. Das Schieberegister
ist so ausgelegt, daß mit
jedem Schiebesignal, das dem Schieberegister an einem Eingang SH
zugeführ
wird, ein Schiebetakt erfolgt und der Speicherinhalt der letzten
Speicherzelle 15 von einem Ausgang D15 auf eine erste Speicherzelle
0 bzw. deren Dateneingang Q0 rückgekoppelt
wird.
-
Dem
ersten Schieberegister 1 ist eine Rahmenlogik 4 zugeordnet,
der das gleiche Schiebesignal zugeführt wird, das in dem Schieberegister 1 zum Schieben
der Daten dient, und dem außerdem
ein Signal FR zugeführ
wird, das die logische Rahmenbreite signalisiert. Die Rahmenlogik 4 verfolgt
mit jedem Schiebevorgang in dem Schieberegister 1 dasjenige Bit,
das als nächstes
auszulesen ist. Diese Verfolgung wird in Abhängigkeit der logischen Bitrahmenbreite
FR vorgenommen, da in dem Falle, das die logische Bitrahmenbreite
kleiner als die physikalische Bitrahmenbreite ist, in dem ersten
Schieberegister leere Speicherzellen auftreten und nicht immer die letzte
Speicherzelle diejenige Speicherzelle ist, in der das nächste gültige auszulesende
Bit gespeichert ist.
-
Es
ist ein Zähler 5 vorgesehen,
dem der externe Prozessor-Takt μPClk
und das logische Bitrahmensignal FR, das die logische Bitrahmenbreite
angibt, zugeführt
wer den. Der Zähler
liefert ein Signal SHL, welches für das erste Schieberegister
verwendet wird und wie oben beschrieben als Schiebesignal dient.
Dieses Schiebesignal wird in entsprechender Weise auch der Rahmen-Logik 4 zugeführt.
-
Das
Signal SHL wird ferner dem Lade-Schieberegister 3 zugeführt. In
Abhängigkeit
dieses Signals SHL wird mit jedem Bit, das aus dem ersten Schieberegister
in das zweite Schieberegister übernommen
wurde, die Position des Füllstandszeigers
in dem Lade-Schieberegister 3 entsprechend korrigiert. Dabei
kann als Füllstandszeiger
beispielsweise ein einfaches Bit dienen, das durch die Speicherzellen des
Lade-Schieberegisters 3 geschoben wird. Der Füllstandszeiger
markiert laufend die Grenze zwischen den Speicherzellen des Schieberegisters 2, die
bereits mit gültigen
Bits von dem ersten Schieberegister 1 belegt sind und solchen
Speicherzellen, die noch nicht mit gültigen Daten von dem ersten
Schieberegister belegt sind. Somit signalisiert der Füllstandszeiger
des Lade-Schieberegisters 3 laufend diejenigen
Speicherzellen, die als nächstes
mit einem neuen Bit zu überschreiben
sind.
-
Dazu
muß in
entsprechender Weise eine Korrektur des Füllstandszeigers auch dann erfolgen, wenn
ein Bit aus dem zweiten Schieberegister 2 ausgelesen wird.
Zu diesem Zweck wird dem Lade-Schieberegister 3 ebenso
wie dem Schieberegister 2 ein serieller Clock SClk zugeführt, der
von einem Taktgenerator 6 stammt. Dem Taktgenerator 6 wird
einerseits der Prozessor-Takt μPClk
und andererseits ein Datenanforderungssignal zugeführt, das weiter
unten zu erläutern
sein wird.
-
Der
von dem Taktgenerator 6 gelieferte serielle Takt SClk dient
also dazu, einerseits die in dem zweiten Schieberegister abgespeicherten
Bits seriell auszulesen. Diese Bits bilden den seriellen Datenstrom
und werden in dem Ausführungsbeispiel
gemäß der Figur über einen
weiteren Zwischenspeicher 7 als serieller Datenstrom DSout
ausgegeben.
-
Ferner
dient der serielle Takt dazu, in dem Lade-Schieberegister 3 die
Position des Füllstandszeigers
entsprechend den ausgelesenen Bits zu korrigieren, da mit jedem
ausgelesenen Bit die übrigen Bits
in dem Schieberegister 2 entsprechend geschoben werden
und sich die Position der nächsten
neu zu beschreibenden Speicherzelle entsprechend ändert.
-
Im
Ergebnis wird erreicht, daß der
Füllstandszeiger
in dem Lade-Schieberegister 3 laufend diejenigen Speicherzellen
signalisiert, die als nächstes
mit neuen Daten von dem ersten Schieberegister zu beschreiben sind.
-
In
der Anordnung ist ferner eine Signalisierungslogik 8 vorgesehen,
welche ein „Speicher voll"-Signal RF dann abgibt,
wenn alle Speicherzellen des zweiten Schieberegisters 2 voll
sind. Dazu wird der Signalisierungslogik ein Zählsignal des Zählers 5 und
der serielle Takt SClk zugeführt.
Ferner muß hier
die logische Bitrahmenbreite bekannt sein, so daß der Signalisierungslogik
das Signal FR, das diese signalisiert, zugeführt wird. Da die genannten Signale
einerseits signalisieren, wie viele Bits aus dem zweiten Schieberegister
ausgelesen wurden und andererseits anzeigen, wie viele Bits in Abhängigkeit
der logischen Rahmenbreite von der Anordnung übernommen wurden, kann hieraus
der Speicherstand berechnet werden und bei zu geringem Speicherstand
das „Speicher
voll"-Signal RF
abgegeben werden. In entsprechender Weise kann das oben erwähnte Datenanforderungssignal
RR generiert werden, wenn der Füllstand
des zweiten Schieberegisters 2 einen vorgebbaren Wert unterschreitet, wenn
also neue parallele Daten DPin übernommen werden
können.
-
Die
Anordnung weist vor allem den Vorteil auf, daß sie keine externe Software-
bzw. Mikroprozessorsteuerung braucht und damit beispielsweise einen
Mikroprozessor, der die parallelen Daten DPin liefert, entlastet.
Dies wird dadurch erreicht, daß die Anordnung
weitgehend hardwaremäßig arbeitet.
Ferner kann die Umsetzung der parallelen Daten in serielle Daten
laufend vorgenommen werden, da in der Anordnung keine Probleme dadurch
entstehen, daß in
einen Speicher nicht gleichzeitig geschrieben und gelesen werden
kann.
-
Durch
die spezielle Auslegung des ersten Schieberegisters 1 kann
darüber
hinaus eine logische Bitrahmenbreite verarbeitet werden, die von
der physikalischen Bitrahmenbreite abweicht. Selbst wenn durch eine
logische Bitrahmenbreite, die kleiner ist als die physikalische
Bitrahmenbreite, nach Einlesen der parallelen Bits in das erste
Schieberegister in diesem leere bzw. ungültig beschriebene Speicherzellen
vorhanden sind, kann durch die Rückkopplung
der Daten der letzten Speicherzelle des ersten Schieberegisters
in dessen erste Speicherzelle sowie durch die Rahmenlogik, die laufend das
nächste
gültige
Bit verfolgt, erreicht werden, daß dennoch mit jedem Takt des
Schiebesignals SHL das nächste
gültige
Bit in das zweite Schieberegister eingelesen werden kann. Damit
wird erreicht, daß alle Speicherzellen
des zweiten Schieberegisters voll genutzt werden und in unveränderter
Reihenfolge und ohne Lücken
seriell wieder ausgelesen werden können.
-
Die
Größe der logischen
Bitrahmenbreite wird bei der Generierung des Schiebetaktes SHL und bei
der Verfolgung der gültigen
Speicherzelle mittels der Rahmen-Logik 4 berücksichtigt.
-
Die
Anordnung gemäß der Figur
kann grundsätzlich
auch zur Seriell/Parallel-Umsetzung eingesetzt werden; es kehren
sich dann die logischen Abläufe
weitgehend um. Die seriellen Daten werden dann aus dem Schieberegister 2 seriell
ausgelesen. Der Füllstandszeiger
in dem Lade-Schieberegister 3 dient dann dazu, daß nächste gültige Bit
zu signalisieren, das in das Schieberegister 1 eingeschrieben wird.
Mit jedem Takt sammeln sich die Bits in dem Schieberegister 1 an,
so lange, bis die logische oder physikalische Bitrahmenbreite erreicht
ist und die Bits parallel aus dem ersten Schieberegister auslesbar
sind. Auch bei dieser Arbeitsweise kann die logische Bitrahmenbreite,
mit der die Bits parallel von dem ersten Schieberegister 1 abgegeben
werden, von der physikalischen Bitrahmenbreite abweichen.