-
Die Erfindung betrifft eine FIFO-Speichervorrichtung und ein Verfahren zum Speichern und Auslesen von Daten unter Verwendung eines FIFO-Speichers.
-
Stand der Technik
-
Zur Einhaltung von Normen der elektromagnetischen Verträglichkeit (EMV) werden in digitalen Schaltungen vermehrt Spreizspektrum-Oszillatoren oder – Wandler – häufig auch als spread spectrum oscillators oder spread spectrum generators bezeichnet – eingesetzt (siehe z. B.
US 2007 029 0894 A1 ). Dabei wird die Frequenz des Systemstaktes einer Schaltung langsam moduliert. Durch die langsame Variation der Frequenz des Systemtaktes werden Spitzen im Frequenzspektrum des abgestrahlten elektromagnetischen Feldes, welches beim betrieb der Schaltung entsteht, ebenfalls frequenzmäßig langsam variiert. Im zeitlichen Mittel verteilen sich dadurch die Spitzen im Frequenzspektrum auf einen weiteren Frequenzbereich, so dass die Amplitude der Spitzen insgesamt abnimmt. Man spricht dabei häufig auch von einem ”Verschmieren” der spektralen Energie. Die Frequenzmodulation des Systemtaktes erfolgt dabei derart, dass der entstehende Spreizspektrum-Takt mit Frequenz und Phasenlage um den ursprünglichen Systemtakt schwankt.
-
Offenbarung der Erfindung
-
Die vorliegende Erfindung stellt eine FIFO(Fist In First Out)-Speichervorrichtung bereit, mit Hilfe derer kontinuierliche digitale Datenströme von einer normalen Taktumgebung mit einem frequenzstabilen Taktsignal auf eine Spreizspektrum-Taktumgebung mit einem frequenzmodulierten Taktsignal ohne Datenverlust übertragen werden kann. Dabei werden mit jedem Takt Daten übertragen, welche bei einer herkömmlichen Datensynchronisierung aufgrund der schwankenden Phasenlage nicht synchronisiert werden könnten. Die erfindungsgemäße FIFO-Speichervorrichtung weist dazu einen FIFO-Speicher auf, in welchen digitale Daten mit einer Eingangsdatenrate zu schreiben und aus dem digitale Daten mit einer Ausgangsdatenrate auszulesen sind. Derartige FIFO-Speicher, welche mit unterschiedlichen Taktsignalen und damit unterschiedlichen Taktraten zum Ein- bzw. Auslesen von Daten betrieben werden, werden häufig auch als Dual-Clock-FIFOs oder Dual-Port-FIFOs bezeichnet. Der FIFO-Speicher weist dabei einen eingangsseitigen Takteingang zum Zuführen eines ersten frequenzstabilen Taktsignals zur Festlegung der Eingangsdatenrate, einen ausgangsseitigen Takteingang zum Zuführen eines zweiten frequenzmodulierten Taktsignals zur Festlegung der Ausgangsdatenrate, einen Statusausgang zur Ausgabe eines Füllstandes des FIFO-Speichers und einen ausgangsseitigen Lesefreigabe-Anschluss zur Freigabe des Auslesens von Daten aus dem FIFO-Speicher auf. Das das zweite Taktsignal stellt dabei den Spreizspektrum-Takt dar und ist durch Frequenzspreizung aus dem ersten Taktsignal abgeleitet. Die FIFO-Speichervorrichtung ist darüber hinaus mit einem Register ausgestattet, welches einen Dateneingang, welcher mit dem Statusausgang des FIFO-Speichers elektrisch verbunden ist, einen Takteingang zum Zuführen des zweiten Taktsignals und einen Datenausgang, welcher mit dem Lesefreigabe-Anschluss des FIFO-Speichers elektrisch verbunden ist aufweist.
-
Gemäß dem erfindungsgemäßen Verfahren zum Speichern und Auslesen von Daten unter Verwendung eines FIFO-Speichers werden digitale Daten unter Verwendung eines ersten frequenzstabilen Taktsignals mit einer Eingangsdatenrate in den FIFO-Speicher geschrieben und unter Verwendung eines zweiten frequenzmodulierten Taktsignals mit einer Ausgangsdatenrate aus dem FIFO-Speicher ausgelesen. Das das zweite Taktsignal stellt auch dabei den Spreizspektrum-Takt dar und ist durch Frequenzspreizung aus dem ersten Taktsignal abgeleitet. Ein Auslesen von Daten aus dem FIFO-Speicher wird erfindungsgemäß ab einem Zeitpunkt freigegeben, zu dem ein Füllstand des FIFO-Speichers einen vorgegebenen Wert erreicht.
-
Dual-Clock-FIFOs können mit geringem Ressourceneinsatz beispielsweise in einem FPGA (Field Programmable Gate Array) oder einem ASIC (Application Specific Integrated Circuit) realisiert werden. Da darüber hinaus lediglich ein Register, welches beispielsweise als zustandsgesteuertes Flip-Flop, insbesondere als D-Flip-Flop, ausgestaltet ist, benötigt wird, ist der schaltungstechnische Aufwand für die erfindungsgemäße Speichervorrichtung äußerst gering. Durch die Nutzung eines Flags, welches den Füllstand des FIFOs wiedergibt, zur Freigabe des Auslesens von Daten aus dem FIFO-Speicher wird ein selbständiges Starten der Datenübertragung ohne jeglichen zusätzlichen Kontroll- oder Steuerungsaufwand erreicht. Derartige Füllstandsanzeiger sind bei vielen FIFOs, standardmäßig implementiert, so dass auch dadurch keinerlei zusätzlicher schaltungstechnischer Aufwand entsteht. Das verwendete Register stellt sicher, dass das einmalige Erreichen eines vorgegebenen Füllstandes des FIFO-Speichers zu einer dauerhaften Freigabe des Auslesens von Daten aus dem FIFO-Speicher führt. Dabei wird einem Takteingang des Registers das zweite Taktsignal, also der Spreizspektrum-Takt, zugeführt. Insgesamt kann somit durch das erfindungsgemäße Verfahren unter Verwendung der erfindungsgemäßen FIFO-Speichervorrichtung eine sichere und zuverlässige Übertragung digitaler Daten von einer normalen Taktumgebung auf eine Spreizspektrum-Taktumgebung ohne jeglichen Datenverlust mit sehr geringem schaltungstechnischen Aufwand realisiert werden. Dies wiederum führt letztendlich zu einer zuverlässigen Einhaltung von EMV-Normen.
-
Gemäß einer Ausführungsform der erfindungsgemäßen FIFO-Speichervorrichtung ist der Statusausgang des FIFO-Speichers derart ausgestaltet, dass ein Status-Flag, z. B. auf logisch ”1” oder ”High” gesetzt wird, wenn der FIFO-Speicher halb voll ist, die zur Verfügung stehenden Speicherplätze also zur Hälfte belegt sind. In alternativen Ausführungsformen kann der Statusausgang auch derart ausgestaltet sein, dass das Status-Flag gesetzt wird, wenn der FIFO-Speicher voll ist oder wenn der FIFO-Speicher leer, die zur Verfügung stehenden Speicherplätze also vollständig belegt sind bzw. keiner der Speicherplätze belegt ist.
-
Gemäß einer Ausführungsform des erfindungsgemäßen Verfahrens zum Speichern und Auslesen von Daten unter Verwendung eines FIFO-Speichers wird das Auslesen von Daten ab einem Zeitpunkt freigegeben, zu dem der FIFO-Speicher zur Hälfte gefüllt ist.
-
Da das das zweite Taktsignal einen frequenzmodulierten Spreizspektrum-Takt darstellt, welcher durch Frequenzspreizung aus dem ersten Taktsignal abgeleitet ist, schwanken der Auslesetakt und damit die Ausgangsdatenrate periodisch um den Schreibtakt bzw. die Eingangsdatenrate. Dieser Sachverhalt führt dazu, dass auch der Füllstand des FIFO-Speichers um denjenigen Wert schwanken wird, den der FIFO-Speicher zu Beginn des Auslesens von Daten aufwies. Wird das Auslesen von Daten ab einem Zeitpunkt freigegeben, zu dem der FIFO-Speicher halb gefüllt ist, und diese Freigabe dann mit Hilfe des Registers kontinuierlich aufrechterhalten, wird der Füllstand folglich um diesen halben Füllstand schwanken. Diese Ausführungsform hat den Vorteil, dass zum Zeitpunkt der Freigabe des Auslesens von Daten aus dem FIFO-Speicher keine Informationen über das aktuelle Verhältnis des frequenzmodulierten Ausgangstaktes zum frequenzstabilen Eingangstakt erforderlich sind. Es ist somit unerheblich, ob die Ausgangsdatenrate zum Startzeitpunkt des Auslesens kleiner oder größer oder gleich der eingangsseitigen Schreib-Datenrate ist. Je nach Startpunkt des Auslesens und damit der Datenübertragung kann der Füllstand aber folglich auch maximal nach oben (Lese-Datenrate hatte zum Startzeitpunkt einen maximalen Wert) oder maximal nach unten ((Lese-Datenrate hatte zum Startzeitpunkt einen minimalen Wert) schwanken. Diese maximale Schwankungsbreite ist bei der Auslegung des FIFO-Speichers zu berücksichtigen.
-
In einer alternativen Ausführungsform des erfindungsgemäßen Verfahrens wird das Auslesen von Daten ab einem Zeitpunkt freigegeben, zu dem der FIFO-Speicher vollständig gefüllt ist und die Frequenz des zweiten Taktsignals und damit die Lese-Datenrate einen maximalen Wert erreicht hat.
-
Ist der maximale Frequenzwert des Spreizspektrum-Taktes bekannt, so kann die Datenübertragung vorteilhaft zu einem Zeitpunkt begonnen werden, zu dem der FIFO-Speicher vollständig gefüllt ist und die Frequenz des zweiten Taktsignals und damit die Lese-Datenrate diesen maximalen Wert erreicht hat. Dabei wird vorteilhaft ausgenutzt, dass die Frequenzspreizung derart ausgeführt ist, dass die Frequenz periodisch zunächst von einem minimalen Wert stufenweise auf einen maximalen erhöht und anschließend stufenweise wieder auf den minimalen Wert abgesenkt wird. Der maximale Frequenzwert kann dabei beispielsweise durch eine Auswerteschaltung ermittelt werden, welche den Spreizspektrum-Takt über mehrere Modulationszyklen überwacht und daraus den Maximalwert bestimmt. Diese Ausführungsform hat den Vorteil, dass die Speicherkapazität des FIFOs optimal an die konkreten Einsatzbedingungen angepasst werden kann.
-
Ist der minimale Frequenzwert des Spreizspektrum-Taktes bekannt, welcher zum Beispiel ebenfalls mit Hilfe der erwähnten Auswerteschaltung ermittelt werden kann, so kann das Auslesen alternativ ab einem Zeitpunkt freigegeben, zu dem der FIFO-Speicher leer ist und die Frequenz des zweiten Taktsignals und damit die Lese-Datenrate diesen minimalen Wert erreicht hat. Auch diese Ausführungsform ermöglicht eine optimale Auslegung der Speicherkapazität des FIFOs.
-
Selbstverständlich kann die Freigabe der Datenübertragung in Abhängigkeit von der aktuellen Auslesedatenrate und vom Füllstand des FIFO-Speichers zum Zeitpunkt der Freigabe weiter variiert werden. So könnte das Auslesen zum Beispiel auch ab einem Zeitpunkt freigegeben werden, zu dem der FIFO-Speicher ”fast leer” ist und die Frequenz des zweiten Taktsignals und damit die Lese-Datenrate den minimalen Wert erreicht hat. Ebenso könnte das Auslesen ab einem Zeitpunkt freigegeben werden, zu dem der FIFO-Speicher ”fast voll” ist und die Frequenz des zweiten Taktsignals und damit die Lese-Datenrate den maximalen Wert erreicht hat. Entscheidend ist aber, dass die Speicherkapazität des FIFO-Speichers an die jeweils maximal noch mögliche Schwankungsbreite des Füllstandes bei der Auslegung des FIFO-Speichers berücksichtigt wird.
-
Weitere Merkmale und Vorteile von Ausführungsformen der Erfindung ergeben sich aus der nachfolgenden Beschreibung mit Bezug auf die beigefügte Figur, welche ein schematisches Blockschaltbild einer erfindungsgemäßen FIFO-Speichervorrichtung zeigt.
-
Beschreibung der Ausführungsbeispiele
-
Die in 1 schematisch dargestellte FIFO-Speichervorrichtung umfasst einen FIFO-Speicher 1, welcher als Dual-Clock-FIFO-Speicher ausgelegt ist. In diesen FIFO-Speicher werden digitale Eingangsdaten D_in geschrieben und gemäß dem FIFO-Prinzip (”First In First Out”) als Ausgangsdaten D_out ausgelesen. Der FIFO-Speicher weist dazu einen Dateneingang ”datain” auf, welchem die Eingangsdaten D_in zugeführt werden, und einen Datenausgang ”dataout”, an welchem die Ausgangsdaten D_out ausgelesen werden können. An einen eingangsseitigen Takteingang ”clk1” des FIFO Speichers 1 wird ein erstes frequenzstabiles Taktsignal ”clk” angelegt, welches eine Eingangsdatenrate festlegt. Eine eingangsseitige Schreibfreigabe kann, wie dargestellt, dauerhaft eingeschaltet werden, was durch Anlegen eines High-Pegels an einen Schreibfreigabe-Anschluss ”we” (”write enable”) erreicht wird. Alternativ dazu kann die Schreibfreigabe auch durch eine nicht dargestellte Kontroll-Logik, welche elektrisch mit dem Schreibfreigabe-Anschluss ”we” verbunden ist, angesteuert werden.
-
An einem ausgangsseitigen Takteingang ”clk2” wird ein zweites frequenzmoduliertes Taktsignal ”clk_sprd” angelegt, welches durch Frequenzspreizung aus dem ersten Taktsignal ”clk” abgeleitet wird und der Festlegung einer Ausgangsdatenrate dient. Die Frequenzspreizung des ersten Taktsignals ”clk” wird dabei mit Hilfe eines nicht dargestellten Spreizspektrum-Oszillators oder -Wandlers erreicht und hat zur Folge, dass die Frequenz und die Phasenlage des zweiten Taktsignals ”clk_sprd” um die Frequenz bzw. die Phasenlage des ersten Taktsignals ”clk” schwankt. Diese Schwankung erfolgt derart, dass sich ausgehend von einem minimalen Frequenzwert die Frequenz stufenweise bis zu einem maximalen Frequenzwert erhöht und anschließend wieder stufenweise bis zum minimalen Frequenzwert verringert und sich dieser Vorgang periodisch wiederholt.
-
Der FIFO-Speicher 1 weist außerdem einen Statusausgang ”HalfFull” auf, der derart ausgestaltet ist, dass ein Statusflag, zum Beispiel auf logisch ”1” oder ”High”, gesetzt wird, wenn der FIFO-Speicher 1 zur Hälfte gefüllt ist. Dieser Statusausgang ”HalfFull” ist elektrisch mit einem Dateneingang D eines Registers 2 verbunden, das zum Beispiel als zustandsgesteuertes Flip-Flop, insbesondere, wie in 1 dargestellt, als D-Flip-Flop, ausgestaltet ist. Einem Takteingang ”C” des Registers 2 wird das zweite Taktsignal ”clk_sprd”, also der Spreizspektrum-Takt, zugeführt. Auf diese Weise wird gewährleistet, dass an einem Datenausgang ”q” des Registers 2 dauerhaft ein ”High-Pegel” anliegt, sobald der FIFO-Speicher 1 zur Hälfte gefüllt ist. Der Datenausgang ”q” ist elektrisch mit einem ausgangsseitigen Lesefreigabe-Anschluss ”oe” (”output enable”) des FIFO-Speichers 1 verbunden, was dazu führt, dass ein Auslesen von digitalen Daten aus dem FIFO-Speicher 1 ab dem Zeitpunkt freigegeben wird, zu dem ein entsprechendes Flag am Statusausgang des FIFO-Speichers gesetzt wird, im dargestellten Beispiel also ab dem Zeitpunkt, zu dem der FIFO-Speicher zu Hälfte gefüllt ist. Das dauerhafte Anliegen des High-Pegels am Datenausgang q des Registers 2 garantiert nach dem Start des Auslesevorganges einen dauerhaften Datenfluss. Der Füllstand des FIFO-Speichers 2 schwankt dabei synchron mit dem Spreizspektrum-Takt.
-
In alternativen Ausführungsformen kann eine nicht dargestellte Auswerteschaltung vorgesehen sein, welche aus einer Beobachtung mehrerer Frequenzmodulationszyklen einen minimalen und/oder maximalen Frequenzwert des Spreizspektrum-Taktes ermittelt. Sind diese Werte bekannt, so kann der Statusausgang des FIFO-Speichers 1 auch derart ausgelegt sein, dass ein Status-Flag gesetzt wird, wenn der FIFO-Speicher leer bzw. voll ist. Die Freigabe des Auslesens von Daten aus dem FIFO-Speicher kann dann zu einem Zeitpunkt erfolgen, zu dem der FIFO-Speicher vollständig gefüllt ist und die Frequenz des zweiten Taktsignals einen maximalen Wert erreicht hat oder alternativ zu dem der FIFO-Speicher leer ist und die Frequenz des zweiten Taktsignals einen minimalen Wert erreicht hat. Viele handelsübliche FIFOs weisen mehrere Statusausgänge auf, welche jeweils einem Füllstand ”leer” (”Empty”), ”halb voll” (”HalfFull”) und ”voll” (”Full”) oder auch Zwischenwerten wie ”fast leer” (”AlmostEmpty”) oder ”fast voll” (”AlmostFull”) zugeordnet sind und an denen ein Statusflag gesetzt wird, sobald der entsprechende Füllstand erreicht wird. In diesem Fall ist schaltungstechnisch lediglich der gemäß der Ausführungsform der Erfindung benötigte Statusausgang des FIFO-Speichers 1 mit dem Dateneingang D des Registers 2 elektrisch zu verbinden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-