-
Die Erfindung betrifft eine Vorrichtung zur Kompensation von Ausbreitungsverzögerungen, die bei einer Signalübertragung über Kabel auftreten.
-
Ein bekanntes Konzept für eine Erstprogrammierung von FLASH-Speichern bei einer Serienfertigung ist das sogenannte In-System-Programming (ISP). Unter einem In-System-Programming versteht man eine Programmierung der Speicherbausteine, nachdem sie auf eine Platine eines Zielgerätes gelötet wurden. Diese Programmierung erfordert eine Kommunikationsschnittstelle zwischen einem Programmiergerät und dem Zielgerät, um Programmierdaten an das Zielgerät übertragen zu können und Daten vom Zielgerät zur Überprüfung zurückzusenden und im Programmiergerät auslesen und auswerten zu können.
-
In diesem Zusammenhang verwendete Protokolle sind beispielsweise:
- - JTAG (Joint Test Expert Group),
- - SPI (Serielle Peripherieschnittstelle) und
- - SWD (Serial Wire Debug).
-
Gemeinsame Eigenschaften dieser Protokolle sind:
- - Ein synchrones Bit-Timing von Takt- und Datensignalen; bei welchem sich die Datenausgangssignale nach einem Taktübergang ändern und die Dateneingangssignale mit einem Taktübergang abgetastet werden.
- - Ein Vorliegen eines Master/Slave-Schemas, bei welchem das Programmiergerät die Masterfunktion hat und das Taktsignal steuert und bei welchem das Zielgerät der Slave ist.
- - Ein synchrones Frame/Packet-Timing, bei welchem die Empfangsdaten vom Master in vordefinierten Taktzyklen erwartet werden und bei welchem die Empfangsdaten nicht über einen Taktzyklus hinaus verzögert werden.
-
Aufgrund des mechanischen Aufbaus von Programmiergerät und Zielgerät liegt die typische Länge des Kabels der Kommunikationsverbindung, über welches die Daten übertragen werden, im Bereich von 1 Meter bis 1,5 Meter.
-
Bei einer Serienproduktion von elektronischen Geräten ist die für eine FLASH-Programmierung benötigte Zeit pro Einheit ein kritischer Parameter, der einen starken Einfluss auf den Durchsatz der jeweiligen Produktionslinie hat. Die Programmierzeit hängt von der Geschwindigkeit des Kommunikationsprotokolls ab. Es ist daher wünschenswert, so hohe Taktraten wie möglich zu verwenden.
-
Ein Problem besteht darin, dass bei synchronen Kommunikationsprotokollen mit einem einzigen Taktsignal, das sowohl vom Sender als auch vom Empfänger zur Datenabtastung verwendet wird, die Taktfrequenz durch die Signallaufzeit zwischen dem Sender und dem Empfänger begrenzt ist. Werden derartige Protokolle zwischen zwei integrierten Schaltungen auf einer Leiterplatte verwendet, dann wird die Ausbreitungsverzögerung vom Signalsender zum Signalempfänger durch die interne Verzögerung der ICs, beispielsweise der IO-Treiber oder der Verzögerung zwischen Takt und Daten, dominiert. Der Beitrag der Drähte, d.h. der Leiterbahnen auf der Leiterplatte, ist nur gering. Je nach IO-Spannung und der Ansteuerungsmöglichkeiten sind Frequenzen bis zu 200 MHz möglich.
-
Wenn jedoch dieselben Protokolle über längere Kabel und Steckverbinder zwischen Leiterplatten verwendet werden, dann wird der Beitrag der Drähte an den Verzögerungen dominant und begrenzt die maximale Taktfrequenz auf deutlich niedrigere Werte. Dies wird deutlich, wenn man bedenkt, dass SPI-Takte zwischen beispielsweise MCUs und seriellen FLASH-Bausteinen auf Leiterplatten typischerweise größer sind als 100 MHz, dass JTAG-Takte auf der IC-Seite selten höher als 50 MHz spezifiziert sind und dass in praktischen Anwendungsfällen wie Debug-Kabelverbindungen die Taktfrequenzen typischerweise zwischen 1 MHz und 10 MHz liegen.
-
Die 1 zeigt ein Beispiel, bei welchem Datenausgangsänderungen mit der fallenden Flanke des Takts erfolgen und Dateneingangssignale mit der steigenden Flanke des Takts abgetastet werden. Bei diesem Taktkonzept, welches beispielsweise von den Protokollen JTAG und SPI verwendet wird, steht von der fallenden bis zur ansteigenden Flanke unter Annahme eines symmetrischen Taktes nur die Hälfte der Taktperiode zur Verfügung.
-
In der 1 ist in der Zeile a der Taktausgang am Master; in der Zeile b der Datenausgang am Master, in der Zeile c die Kabelverzögerung zwischen Master und Slave, in der Zeile d der Takteingang am Slave, in der Zeile e der Dateneingang am Slave, in der Zeile f der Datenausgang am Slave, in der Zeile g die Kabelverzögerung zwischen Slave und Master und in der Zeile h der Dateneingang am Master bezeichnet. Die Darstellung gemäß 1 umfasst jeweils 3 Taktperioden Pn, Pn+1 und Pn+2. Mit S ist der verwendete Abtastpunkt bezeichnet.
-
Wie aus der 1 ersichtlich ist, ist der Empfang von Ausgangsdaten D0_M vom Master durch den Slave kein Problem, da sowohl die Takt- als auch die Datensignale vom Master die gleiche Kabelverzögerung haben und das zeitliche Verhältnis zwischen Takt und Eingangsdaten am Slave-Eingang dasselbe ist wie am Ausgang des Masters.
-
Der begrenzende Faktor ist die Abtastung der Slave-Ausgangsdaten D0_S durch den Master. Diese Daten sind um das Doppelte der Kabelverzögerung verzögert. Zunächst wird das Taktsignal vom Master auf seinem Weg zum Slave verzögert. Der Slave nutzt dieses Taktsignal, um Daten auszugeben. Diese Daten werden dann auf ihrem Rückweg zum Master erneut verzögert.
-
Die 1 zeigt ein Beispiel, bei welchem eine Taktperiode lang genug ist, damit die vom Slave ausgegebenen Daten stabil sind, wenn sie vom Master mit der nächsten steigenden Flanke abgetastet werden. Die 1 zeigt auch, dass die minimale Zykluszeit des Taktes und damit die maximale Taktfrequenz durch die Kabelverzögerung begrenzt sind.
-
Bei Protokollen wie beispielsweise dem SWD, bei denen dieselbe Taktflanke für die Ausgabe von Sendedaten und die Abtastung von Eingangsdaten verwendet wird, steht eine volle Taktperiode zur Verfügung, so dass höhere Taktfrequenzen möglich sind. Ansonsten gibt es aber keinen prinzipiellen Unterschied, so dass auch hier die Kabelverzögerung die maximale Taktfrequenz begrenzt.
-
Eine bekannte Technik zur Abtastung von Eingangsdaten, die über längere Kabel übertragen werden, ist eine Verwendung von verzögerten Takten mit programmierbaren Abtastpunkten. In Fällen, in denen die Kabelverzögerung nicht bekannt ist, können Testdatenmuster verwendet werden, um die Verzögerung zu messen und einen geeigneten Abtastpunkt zu finden.
-
Die 2 zeigt ein Beispiel, bei welchem Datenausgangsänderungen mit der fallenden Flanke des Takts erfolgen und Dateneingangssignale mit der steigenden Flanke des Takts abgetastet werden. Bei diesem Taktkonzept, welches beispielsweise von den Protokollen JTAG und SPI verwendet wird, steht von der fallenden bis zur ansteigenden Flanke unter Annahme eines symmetrischen Taktes nur die Hälfte der Taktperiode zur Verfügung.
-
Dabei ist in der 2 in der Zeile a der Taktausgang am Master; in der Zeile b der Datenausgang am Master, in der Zeile c die Kabelverzögerung zwischen Master und Slave, in der Zeile d der Takteingang am Slave, in der Zeile e der Dateneingang am Slave, in der Zeile f der Datenausgang am Slave, in der Zeile g die Kabelverzögerung zwischen Slave und Master, in der Zeile h der Dateneingang am Master, in der Zeile i die Taktverzögerung und in der Zeile j der verzögerte Takt dargestellt. Die Darstellung gemäß 2 umfasst jeweils 3 Taktperioden Pn, Pn+1 und Pn+2. Mit S ist der verwendete Abtastpunkt bezeichnet.
-
Die 2 veranschaulicht, dass die auftretende Kabelverzögerung zu lang ist, um die vom Slave gesendeten Daten mit der steigenden Flanke des Master-Taktes abzutasten. Der Master-Controller erzeugt einen verzögerten Takt, der zum Abtasten der vom Slave gesendeten Daten verwendet wird. Dieser verzögerte Takt ist in der Zeile j der 2 gezeigt. Wenn die Taktverzögerung programmierbar ist, kann die Lösung für unterschiedliche Kabelverzögerungen angepasst werden. Die 2 veranschaulicht einen Fall, in welchem die Taktverzögerung noch innerhalb des aktuellen Taktzyklus liegt. Dies bedeutet, dass die Master-Steuerung die Verarbeitungslogik für empfangene Daten nicht ändern muss.
-
Die 3 zeigt ein Beispiel für den schwierigeren Fall, dass hohe Haupttaktfrequenzen zu Kabelverzögerungen führen, die mehrere Taktzyklen umfassen.
-
In der 3 ist in der Zeile a der Taktausgang am Master; in der Zeile b der Datenausgang am Master, in der Zeile c die Kabelverzögerung zwischen Master und Slave, in der Zeile d der Takteingang am Slave, in der Zeile e der Dateneingang am Slave, in der Zeile f der Datenausgang am Slave, in der Zeile g die Kabelverzögerung zwischen Slave und Master, in der Zeile h der Dateneingang am Master und in der Zeile i die Verzögerung des Abtastpunktes S bezeichnet. Die Darstellung gemäß 3 umfasst jeweils 5 Taktperioden Pn, Pn+1, Pn+2, Pn+3 und Pn+4. Mit S ist der verwendete Abtastpunkt bezeichnet.
-
Ein verzögerter Takt wird nicht gezeigt, da es mehrere Techniken für programmierbare Abtastpunkte gibt. Dazu gehören beispielsweise
- - eine Verwendung eines höheren Takts als des Haupttakts für die Abtastung, insbesondere ein Vielfaches der Haupttaktfrequenz;
- - eine Verwendung sowohl der steigenden als auch der fallenden Flanke eines Takts für die Abtastung und
- - eine Verwendung einer PLL mit programmierbarer Taktphase.
-
Ein zusätzliches Problem, das bei dem in der 3 gezeigten Beispiel gelöst werden muss, besteht darin, dass der Master-Controller die Daten mehrere Taktzyklen später erhält. Wenn beispielsweise die von der übergeordneten Steuerung gesendeten Ausgangsdaten von Entscheidungen abhängen, die auf vom Zielgerät empfangenen Eingangsdaten beruhen, dann müssen diese Entscheidungen verzögert werden, bis die entsprechenden Daten empfangen wurden. Folglich ist eine komplexere übergeordnete Steuerung erforderlich, die eine Pipeline für empfangene Daten implementiert und Verzögerungszyklen einfügt, wenn die empfangenen Daten erst ausgewertet werden müssen, bevor das Kommunikationsprotokoll fortgesetzt werden kann.
-
Die vorstehend beschriebenen bekannten Techniken sind in handelsüblichen integrierten Schaltungen und in Protokoll-Controllern nur für komplexe Hochgeschwindigkeitsprotokolle verfügbar. Für einfache Protokolle wie sie beispielsweise für ISP verwendet werden, gibt es keine handelsüblichen IC-Produkte wie beispielsweise MCUs mit ISP-Peripheriecontrollern, die derartige Techniken implementieren. Die ISP-Programmierung ist eine industrielle Anwendung. Das Produktionsvolumen von ISP-Programmierern ist derart gering, dass die hohen Kosten einer vollständigen kundenspezifischen IC-Entwicklung wegen des damit verbundenen Aufwandes nicht zu rechtfertigen sind.
-
Die Aufgabe der Erfindung besteht darin, eine Lösung für das vorstehend beschriebene Problem anzugeben.
-
Diese Aufgabe wird durch eine Vorrichtung mit den im Anspruch 1 angegebenen Merkmalen gelöst. Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen angegeben.
-
Gemäß der vorliegenden Erfindung wird eine Vorrichtung zur Kompensation von Ausbreitungsverzögerungen, die bei einer über ein Kabel erfolgenden Datenübertragung zwischen einem Master und einem Slave auftreten, bereitgestellt, bei welcher der Master einen in einem FPGA implementierten Master-Controller aufweist, der zur Kompensation der Ausbreitungsverzögerungen ausgebildet ist.
-
Die Vorteile der Erfindung bestehen insbesondere darin, dass bei einer Datenübertragung mit hoher Frequenz über ein längeres Kabel ein einfaches Kommunikationsprotokoll verwendet werden kann, das als solches nicht für eine derartige Datenübertragung ausgebildet ist. Dadurch wird eine preisgünstige Möglichkeit geschaffen, eine derartige Datenübertragung durchzuführen. Weitere vorteilhafte Eigenschaften der Erfindung ergeben sich aus deren beispielhafter Erläuterung anhand der 4.
-
Die 4 zeigt eine Blockdarstellung einer Vorrichtung zur Kompensation von Ausbreitungsverzögerungen, die bei einer über ein Kabel 1 erfolgenden Datenübertragung zwischen einem Master 2 und einem Slave 3 auftreten. Diese Datenübertragung erfolgt mit einer hohen Frequenz, die größer ist als 15 MHz. Die Datenübertragung kann aber auch mit einer sehr hohen Frequenz erfolgen, die größer ist als 50 MHz. Die Datenübertragung erfolgt über ein Kabel, dessen Länge vergleichsweise groß ist, insbesondere größer ist als 1,50 Meter.
-
Zu dieser Datenübertragung wird ein einfaches Kommunikationsprotokoll verwendet, welches in einem im Master 2 angeordneten FPGA 4 hinterlegt ist, das als Master-Controller dient. Des Weiteren weist der Master 2 eine Steuereinheit 5 auf, die mit dem FPGA 4 über eine bidirektionale Verbindung verbunden ist, über welche ein Informationsaustausch zwischen der Steuereinheit 5 und dem FPGA 4 erfolgt.
-
Diese Daten umfassen:
- - Einstellung der programmierbaren Abtastzeitpunkte
- - Einstellung der Taktraten
- - Auswahl des zu verwendenden Protokolls bzw. Codes der Protokollimplementierung zur Ausführung im FPGA
- - Zu programmierende Daten
-
Das Kabel 1 weist eine Taktleitung 8 und eine bidirektionale Datenleitung 9 auf. Über diese Datenleitung 9 erfolgt eine bidirektionale Datenübertragung zwischen dem Master 2 und dem Slave 3.
-
Der Slave 3 weist eine Steuereinheit 6 auf, zu welcher ein Flash-Speicher 7 gehört. Dieser Flash-Speicher 7 soll beim gezeigten Ausführungsbeispiel im Sinne einer Erstprogrammierung im Rahmen einer In-System-Programmierung mit Daten versorgt werden.
-
Bei dem dazu verwendeten Kommunikationsprotokoll handelt es sich um ein einfaches Kommunikationsprotokoll, das ein einziges Taktsignal verwendet, das sowohl vom Master als auch vom Slave zur Datenabtastung verwendet wird.
-
Dieses Kommunikationsprotokoll ist -wie bereits ausgeführt wurde- im FPGA 4 hinterlegt. Es kann dort entweder einzeln hinterlegt sein oder zusammen mit weiteren Kommunikationsprotokollen, wobei im letztgenannten Fall eine Auswahl des im Programmierbetrieb verwendeten Kommunikationsprotokolls durch die Steuereinheit 5 des Masters 2 erfolgt.
-
Zu diesen Kommunikationsprotokollen gehören beispielsweise folgende Protokolle:
- - JTAG (Joint Test Expert Group),
- - SPI (Serielle Peripherieschnittstelle),
- - DAP (Device Access Port) und
- - SWD (Serial Wire Debug).
-
Diese Protokolle sind als solche nicht für eine Datenübertragung mit hoher Übertragungsfrequenz über lange Kabel ausgelegt.
-
Um auch bei einer Verwendung eines der vorgenannten Protokolle eine Datenübertragung mit hoher Frequenz über ein langes Kabel zu ermöglichen, ist das FPGA 4 mit einer programmierbaren Abtastpunkt-Logik ausgestattet. Diese Abtastpunkt-Logik weist eine Granularität von ¼ Taktzyklen auf. Dies bedeutet, dass innerhalb eines Abtastzyklus vier Möglichkeiten für die Wahl eines geeigneten Abtastpunktes bestehen.
-
Die Wahl eines geeigneten Abtastpunktes erfolgt in Abhängigkeit von der Länge des Kabels 1.
-
Die Länge des Kabels 1 kann gemessen werden, indem vom FPGA 4 Testsignale vorgegebener Frequenz an den Slave 3 ausgesendet und als Reaktion darauf vom Slave 3 an den Master 2 zurückgesendete Signale vom FPGA 4 empfangen werden. Aus der Gesamtlaufzeit dieser Signale kann die Länge des Kabels 1 ermittelt werden.
-
Alternativ dazu können von der Steuereinheit 5 auch Informationen über die Länge des Kabels 1 an das FPGA 4 gemeldet werden.
-
Der Befehlssatz des FPGA 4 kann Befehle enthalten, die Entscheidungen auf der Grundlage von empfangenen Daten treffen. Weist das Kabel 1 eine große Länge auf, dann kann der Fall auftreten, dass ein auszuführender Befehl von empfangenen Daten vorangegangener Taktzyklen abhängt, die noch nicht empfangen und ausgewertet wurden. Deshalb ist das FPGA 4 dazu ausgebildet, zu erkennen, ob ein auszuführender Befehl von empfangenen Daten vorangegangener Taktzyklen abhängt, die noch nicht empfangen und ausgewertet wurden. Erkennt das FPGA 4, dass ein auszuführender Befehl von empfangenen Daten vorangegangener Taktzyklen abhängt, die noch nicht empfangen und ausgewertet wurden, dann fügt es einen Wartezyklus in die Datenübertragung ein, so dass vor der Aussendung des genannten Befehls eine Auswertung der empfangenen Daten erfolgen kann. Die Erkennung und Ausführung der Wartezyklen erfolgt mittels FIFO-Strukturen im FPGA 4. Die FIFO-Strukturen enthalten dabei die empfangene Information sowie den Zeitpunkt ihrer Gültigkeit. Die Inhalte der FIFO-Struktur werden verschoben, wobei jede Schiebeoperation ¼ Taktzyklen entspricht.
-
Bezugszeichenliste
-
- 1
- Kabel
- 2
- Master
- 3
- Slave
- 4
- FPGA
- 5
- Steuereinheit des Masters
- 6
- Steuereinheit des Slaves
- 7
- Flash-Speicher
- 8
- Taktleitung
- 9
- Datenleitung