-
Die
vorliegende Erfindung betrifft eine Teilnehmerschnittstelle zwischen
einem FlexRay-Kommunikationsbaustein, der an eine FlexRay-Kommunikationsverbindung
angeschlossen ist, über
welche Botschaften übertragen
werden, und der einen Botschaftsspeicher zum Zwischenspeichern von
Botschaften von der FlexRay-Kommunikationsverbindung oder für die FlexRay-Kommunikationsverbindung
umfasst, und einem dem FlexRay-Kommunikationsbaustein zugeordneten
Mikrocontroller, der einen Mikroprozessor und einen Direct-Memory-Access (DMA) Controller
für einen
Datenaustausch mit dem Botschaftsspeicher aufweist.
-
Die
Erfindung betrifft außerdem
einen FlexRay-Teilnehmer, der einen Mikrocontroller, einen FlexRay-Kommunikationsbaustein,
der an eine FlexRay-Kommunikationsverbindung angeschlossen ist, über welche
Botschaften übertragen
werden, und eine Teilnehmerschnittstelle zwischen dem Mikrocontroller
und dem Kommunikationsbaustein aufweist. Der Mikrocontroller umfasst
einen Mikroprozessor und einen Direct-Memory-Access (DMA) Controller.
Der Kommunikations baustein umfasst einen Botschaftsspeicher zum
Zwischenspeichern von Botschaften von der FlexRay-Kommunikationsverbindung
oder für
die FlexRay-Kommunikationsverbindung.
-
Schließlich betrifft
die vorliegende Erfindung auch ein Verfahren zur Datenübertragung
zwischen einem Botschaftsspeicher eines FlexRay-Kommunikationsbausteins,
der an eine FlexRay-Kommunikationsverbindung angeschlossen ist, über welche
Botschaften übertragen
werden, und einem Direct-Memory-Access
(DMA) Controller eines Mikrocontrollers.
-
Die
Vernetzung von Steuergeräten,
Sensorik und Aktuatorik mit Hilfe eines Kommunikationssystems und
einer als Bussystem ausgebildeten Kommunikationsverbindung hat in
den letzten Jahren bei modernen Kraftfahrzeugen aber auch im Maschinenbau,
insbesondere im Werkzeugmaschinenbereich, und im Bereich der Automatisierung,
drastisch zugenommen. Synergieeffekte durch Verteilung von Funktionen
auf mehrere Steuergeräte
können
dabei erzielt werden. Man spricht hierbei von verteilten Systemen.
Die Kommunikation zwischen verschiedenen Teilnehmern findet mehr
und mehr über
ein als Bussystem ausgebildetes Kommunikationssystem statt. Der
Kommunikationsverkehr auf dem Bussystem, Zugriffs- und Empfangsmechanismen
sowie Fehlerbehandlung werden über
ein Protokoll geregelt.
-
Ein
bekanntes Protokoll hierzu ist das FlexRay-Protokoll, wobei im Augenblick
die FlexRay-Protokollspezifikation v2.0 zugrunde liegt. Das FlexRay-Protokoll
definiert ein schnelles, deterministisches und fehlertolerantes
Bussystem, insbesondere für
den Einsatz in einem Kraftfahr zeug. Die Datenübertragung gemäß dem FlexRay-Protokoll
erfolgt nach einem Time Division Multiple Access (TDMA)-Verfahren. Die Datenübertragung über die
Kommunikationsverbindung erfolgt in sich regelmäßig wiederholenden Übertragungszyklen,
die jeweils in mehrere Datenrahmen, die auch als Zeitschlitze bezeichnet
werden, unterteilt ist. Den Teilnehmern bzw. den zu übertragenden
Botschaften sind feste Zeitschlitze zugewiesen, in denen sie einen
exklusiven Zugriff auf die Kommunikationsverbindung haben. Die Zeitschlitze
wiederholen sich in den festgelegten Übertragungszyklen, so dass
der Zeitpunkt, zu dem eine Botschaft über den Bus übertragen
wird, exakt vorausgesagt werden kann und der Buszugriff deterministisch
erfolgt.
-
Um
die Bandbreite für
die Botschaftsübertragung
auf dem Bussystem optimal zu nutzen, unterteilt FlexRay den Übertragungszyklus,
der auch als Zyklus oder Buszyklus bezeichnet werden kann, in einen
statischen und einen dynamischen Teil. Die festen Zeitschlitze befinden
sich dabei im statischen Teil am Anfang eines Buszyklusses. Im dynamischen Teil
werden die Zeitschlitze dynamisch vergeben. Darin wird nun der exklusive
Buszugriff jeweils nur für eine
kurze Zeit, für
einen oder mehrere sogenannte Minislots, ermöglicht. Nur wenn innerhalb
eines Minislots ein Buszugriff erfolgt, wird der Zeitschlitz um die
benötigte
Zeit verlängert.
Damit wird Bandbreite also nur verbraucht, wenn sie auch tatsächlich benötigt wird.
-
FlexRay
kommuniziert über
zwei physikalisch getrennte Leitungen der Kommunikationsverbindung
mit einer Datenrate von je maximal 10 MBit/s (10 MBaud). Dabei ist
alle 5 ms, bei manchen Kommunikationssystemen sogar alle 2,5 ms
ein Buszyklus abgeschlossen. Die beiden Kanäle entsprechen dabei der physikalischen
Schicht, insbesondere des OSI (Open System Architecture) Schichtenmodells. Die
beiden Kanäle
dienen hauptsächlich
der redundanten und damit fehlertoleranten Übertragung von Botschaften,
können
jedoch auch unterschiedliche Botschaften übertragen, wodurch sich dann
die Datenrate verdoppeln würde.
FlexRay kann aber auch mit niedrigeren Datenraten betrieben werden.
-
Um
synchrone Funktionen zu realisieren und die Bandbreite durch kleine
Abstände
zwischen zwei Botschaften zu optimieren benötigen die Teilnehmer bzw. die
verteilten Komponenten im Kommunikationsnetzwerk eine gemeinsame
Zeitbasis, die sogenannte globale Zeit. Für die Uhrsynchronisation werden
Synchronisationsnachrichten im statischen Teil des Zyklus übertragen,
wobei mit Hilfe eines speziellen Algorithmus entsprechend der FlexRay-Spezifikation die
lokale Uhrzeit eines Teilnehmers so korrigiert wird, dass alle lokalen
Uhren zu einer globalen Uhr synchron laufen.
-
Ein
FlexRay-Teilnehmer, der auch als FlexRay-Netzknoten oder Host bezeichnet
werden kann, enthält
einen Teilnehmer- oder
Host-Prozessor, einen FlexRay- oder Kommunikations-Controller sowie bei
einer Busüberwachung
einen sogenannten Busguardian. Dabei liefert und verarbeitet der
Teilnehmerprozessor die Daten, die über den FlexRay-Kommunikationscontroller
und die FlexRay-Kommunikationsverbindung übertragen werden. Für die Kommunikation
in einem FlexRay-Netzwerk
können
Botschaften bzw. Botschaftsobjekte mit z.B. bis zu 254 Datenbytes
konfiguriert werden.
-
Zur
Kopplung einer FlexRay-Kommunikationsverbindung, über die
Botschaften übertragen werden,
mit einem FlexRay-Teilnehmer
wird in der
DE 10 2005 034
744 , die zum Anmeldetag der vorliegenden Erfindung noch
nicht veröffentlich
war, ein FlexRay-Kommunikationsbaustein eingesetzt, der über eine
Teilnehmerschnittstelle an dem Teilnehmer und über eine andere Verbindung
an der Kommunikationsverbindung angeschlossen ist. Dabei ist zur Übertragung
der Botschaften zwischen dem Teilnehmer und der Kommunikationsverbindung
in dem Kommunikationsbaustein eine Anordnung zur Speicherung der
Botschaften vorgesehen. Die Übertragung
wird durch eine Zustandsmaschine gesteuert.
-
In
dem Kommunikationsbaustein ist ein Schnittstellenbaustein bestehend
aus zwei Teilen vorgesehen, wobei der eine Teilbaustein teilnehmerunabhängig und
der andere Teilbaustein teilnehmerspezifisch ist. Der teilnehmerspezifische
Teilbaustein, der auch als Customer CPU Interface (CIF) bezeichnet
wird, verbindet einen kundenspezifischen Teilnehmer in Form einer
teilnehmerspezifischen Host-CPU mit dem FlexRay-Kommunikationsbaustein.
Der teilnehmerunabhängige
Teilbaustein, der auch als Generic CPU Interface (GIF) bezeichnet wird,
stellt ein generisches, also allgemeines, CPU-Interface dar, über das
sich mittels entsprechender teilnehmerspezifischer Teilbausteine,
also Customer CPU Interfaces (CIFs), unterschiedliche kundenspezifische
Host-CPUs an den FlexRay-Kommunikationsbaustein anschließen lassen.
Dadurch ist eine problemlose Anpassung des Kommunikationsbausteins
an unterschiedliche Teilnehmer möglich,
da abhängig
vom Teilnehmer nur der teilnehmerspezifische Teilbaustein variiert
werden muss, während
der teilnehmerunabhängige
Teilbaustein und der restliche Kommunikationsbaustein stets gleich ausgebildet
werden kann. Mit Hilfe des Kommunikationsbausteins ergibt sich also
eine Standard-Schnittstelle zum Anschluss beliebiger FlexRay-Teilnehmer an
eine FlexRay-Kommunikationsverbindung, wobei sich die Schnittstelle
durch einfache Variation des teilnehmerspezifischen Teilbausteins
an beliebig ausgebildete oder geartete Teilnehmer flexibel anpassen
lässt.
Dabei können
die Teilbausteine auch innerhalb des einen Schnittstellenbausteins
jeweils in Software, also jeder Teilbaustein als Softwarefunktion,
realisiert werden.
-
Die
Zustandsmaschine in dem FlexRay-Kommunikationsbaustein kann fest
in Hardware verdrahtet sein. Die Sequenzen können ebenfalls fest in Hardware
verdrahtet sein. Alternativ kann die Zustandsmaschine im Kommunikationsbaustein über die
Teilnehmerschnittstelle durch den Teilnehmer auch frei programmierbar
sein.
-
Die
Informationen enthalten vorzugsweise den Zugriffstyp und/oder die
Zugriffsart und/oder die Zugriffsadresse und/oder die Datengröße und/oder Steuerinformationen
zu den Daten und/oder wenigstens eine Information zur Datenabsicherung.
-
Nach
dem Stand der Technik ist der Botschaftsspeicher des FlexRay-Kommunikationsbausteins
vorzugsweise als single-ported
RAM (Random Access Memory) ausgeführt. Dieser RAM-Speicher speichert
die Botschaften bzw. Botschaftsobjekte, also die eigentlichen Nutzdaten,
zusammen mit Konfigurations- und Statusdaten. Die genaue Struktur des
Botschaftsspeichers des bekannten Kommunikationsbausteins kann der
genannten Druckschrift
DE
10 2005 034 744 entnommen werden.
-
Es
hat sich gezeigt, dass die Übertragung der
Botschaften zwischen dem Botschaftsspeicher des FlexRay-Kommunikationsbausteins
und dem FlexRay-Teilnehmer nur relativ langsam und unter Beanspruchung
großer
Ressourcen seitens des Teilnehmers erfolgt, insbesondere hinsichtlich der
erforderlichen Rechenleistung der Host-CPU und des benötigten Speicherplatzes.
Bei der bekannten Teilnehmerschnittstelle zwischen FlexRay-Kommunikationsbaustein
und FlexRay-Teilnehmer ist eine ständige Aktivität der Host-CPU
(evtl. DMA, Direct Memory Access) gefordert, um neu eingegangene
Bufferinhalte des Botschaftsspeichers des Kommunikationsbausteins
in den Speicher der Host-CPU zu überführen. Mit
dem sogenannten Polling kann die Host-CPU regelmäßig prüfen, ob neue Botschaften im
Botschaftsspeicher der Teilnehmerschnittstelle abgelegt worden sind.
Ein direkter Zugriff der Host-CPU auf den Botschaftsspeicher des
Kommunikationsbausteins ist nicht möglich. Insbesondere wenn die
Datenrate der FlexRay-Kommunikationsverbindung voll ausgeschöpft wird,
erweist sich dies als nachteilig. Zudem müssen Wartezeiten der Host-CPU
für das Setzen
von Registern etc. in Kauf genommen werden.
-
Nach
dem Stand der Technik verfügt
ein FlexRay-Teilnehmer zur Koordination und Steuerung der Datenübertragung
zwischen dem Botschaftsspeicher des FlexRay-Kommunikationsbausteins und dem Teilnehmer über einen
Mikroprozessor und einen DMA-Controller. Problematisch ist jedoch,
dass die Botschaften in dem Botschaftsspeicher nicht sequentiell,
also aufeinander folgend, abgelegt sind, sondern gezielt auf bestimmte
Bereiche des Botschaftsspeichers verteilt sind. Der DMA-Controller kann
immer nur auf Daten aus zusammenhängenden Bereichen des Botschaftsspeichers
zugreifen. Das hat zur Konsequenz, dass der DMA-Controller zur Datenübertragung
zwischen Botschaftsspeicher und Teilnehmer beim Stand der Technik
mehrmals aufgesetzt und gestartet werden muss. Jedes Aufsetzen und
Starten des DMA-Controllers erfordert die Übertragung einer erheblichen
Datenmenge an Konfigurations-, Koordinations- und Steuerungsparametern.
-
Am
Ende eines jeden DMA-Controller-Aufrufs wird dem Mikroprozessor
das Ende der Datenübertragung
mitgeteilt, bspw. mittels Polling durch den Mikroprozessor oder
durch einen von dem DMA-Controller ausgelösten Interrupt-Befehl. Beides erfordert
erhebliche Ressourcen (Rechen- und Speicherkapazität) in dem
Mikroprozessor. Es lohnt sich somit im Stand der Technik kaum bzw.
nur in Ausnahmefällen,
den DMA-Controller zur Datenübertragung zu
programmieren. Zusammenfassend ist also die Anbindung des DMA-Controllers
an den FlexRay-Kommunikationsbaustein im Stand der Technik nicht
optimal.
-
Der
vorliegenden Erfindung liegt deshalb die Aufgabe zugrunde, eine
Möglichkeit
zu schaffen, den DMA-Controller des Mikrocontrollers besser an den FlexRay-Kommunikationsbaustein
anzubinden, um eine schnellere und vor allem ressourcenschonendere
Datenübertragung
zwischen dem Botschaftsspeicher des Kommunikationsbausteins und
dem DMA-Controller zu ermöglichen.
-
Zur
Lösung
dieser Aufgabe wird ausgehend von der Teilnehmerschnittstelle der
eingangs genannten Art vorgeschlagen, dass die Teilnehmerschnittstelle
eine Zustandsmaschine aufweist, welche nach Konfiguration durch
den Mikroprozessor des Mikrocontrollers eine Datenübertragung
zwischen dem Botschaftsspeicher des FlexRay-Kommunikationsbausteins
und dem DMA-Controller selbständig
koordiniert und steuert.
-
Vorteile der
Erfindung
-
Erfindungsgemäß wird also
die Zwischenschaltung einer Zustandsmaschine zwischen dem Mikrocontroller
eines FlexRay-Teilnehmers und einem FlexRay-Kommunikationsbaustein des Teilnehmers
vorgeschlagen, welche die Teilnehmerschnittstelle derart verändert, dass
sich das Aufsetzen und Starten des DMA-Controllers des Mikrocontrollers lohnt.
Mit anderen Worten sorgt die Zustandsmaschine dafür, dass
dem DMA-Controller die zu übertragenden
Daten bzw. Botschaften derart optimiert präsentiert werden, dass er auch
größere Datenmengen bzw.
mehrere Botschaften mit einem einzigen Aufruf des DMA-Controllers übertragen
kann. Erfindungsgemäß wird also
gewissermaßen
ein einziger Zugriff aus den bisher erforderlichen vielen kleinen
Zugriffen zusammengesetzt.
-
Der
Mikroprozessor des Mikrocontrollers des Teilnehmers konfiguriert
zunächst
die Zustandsmaschine und teilt ihr mit, ob sie lesen oder schreiben soll,
welche Botschaften (Botschaftsnummern) übertragen werden sollen, und
wie lang die zu übertragenden
Botschaften sind. Mit Hilfe dieser Informationen greift die Zustandsmaschine
dann derart auf den FlexRay-Kommunikationsbaustein zu, dass die
gewünschten
Daten bzw. Botschaften zwischen dem Botschaftsspeicher und dem DMA-Controller
lesend oder schreibend übertragen
werden. Die Zustandsmaschine liefert gewissermaßen die Intelligenz des DMA-Controllers,
die dieser für
komplexere Zugriffe auf größere Datenmengen,
insbesondere mehrere Botschaften, unter Umständen sogar in verteilten Adressbereichen
des Botschaftsspeichers benötigt. Mit
anderen Worten, erzeugt die Zustandsmaschine einen virtuellen zusammenhängenden
Adressbereich, wodurch der Einsatz des DMR-Controllers erst sinnvoll
wird, da die Anzahl der zu übertragenden
Daten (zum Aufsetzen des DMA-Controllers)
und die Anzahl der Interrupts (am Ende eines DMA-Controller-Zyklus)
deutlich verringert wird.
-
Vorzugsweise
liest der DMA-Controller von bzw. schreibt auf die gleiche Adresse
des Botschaftsspeichers oder von vorgeschalteten Pufferspeichern zum
Zwischenspeichern der zwischen Botschaftsspeicher und DMA-Controller
zu übertragenden
Daten. Vorteilhafterweise greift der DMA-Controller zum Lesen von Daten immer
auf einen Ausgangspuffer des FlexRay-Kommunikationsbausteins und
zum Schreiben von Daten immer auf einen Eingangspuffer zu.
-
Gemäß einer
vorteilhaften Weiterbildung der vorliegenden Erfindung wird vorgeschlagen,
dass die Teilnehmerschnittstelle Konfigurations- und Statusregister
aufweist, auf welche der Mikroprozessor des Mikrocontrollers zur
Konfiguration der Zustandsmaschine Zugriff hat. Der Mikroprozessor
konfiguriert die Zustandsmaschine also indem geeignete Konfigurationsparameter
in die Konfigurations- und Statusregister der Teilnehmerschnittstelle
geschrieben werden. Die Register können als Flip-Flops implementiert
oder Teil eines großen
Speichers, bspw. eines Random-Access-Memorys
(RAM), also RAM-implementiert sein. Die Konfigurationsparameter
betreffen bspw. die folgenden Informationen:
- – lesende
oder schreibende Datenübertragung;
- – Angaben
(Botschaftsnummern) der zu übertragenden
Botschaften; und
- – Länge der
zu übertragenden
Botschaften.
-
Gemäß einer
bevorzugten Ausführungsform der
Erfindung wird vorgeschlagen, dass die Teilnehmerschnittstelle einen
Sequenzspeicher aufweist, in dem Verweise auf bestimmte in dem Botschaftsspeicher
abgelegte Botschaften und Informationen über die Botschaften abgelegt
sind, wobei die Zustandsmaschine zur Koordination und Steuerung
der Datenübertragung
Einträge
des Sequenzspeichers aufruft. Der Sequenzspeicher ist vorzugsweise
als ein RAM ausgebildet und umfasst mehrere, vorzugsweise 128, Felder
mit Sequenzeinträgen.
Die Sequenzeinträge
umfassen bspw. eine Kennung (z.B. eine Nummer) des Sequenzeintrags,
eine Kennung bzw. einen Verweis (z.B. eine Buffernummer) auf einen oder
mehrere Botschaften (sog. Buffer) des Botschaftsspeichers bzw. des
Pufferspeichers, und die Größe der Botschaft
(des Buffers). Die verschiedenen Sequenzeinträge können von der Zustandsmaschine
nach Vorgaben von dem Mikroprozessor gezielt aufgerufen werden.
Die Sequenzeinträge
können
unverändert
in der gespeicherten Form oder in angepasster Form aufgerufen werden.
Zum Aufruf in angepasster Form umfasst der Aufruf des Sequenzeintrags
bestimmte Parameterwerte zum Anpassen variabler Parameter des Sequenzeintrags.
-
Die
Sequenzeinträge
in dem Sequenzspeicher betreffen vorzugsweise häufig auftretende Übertragungssequenzen,
die vorab abgespeichert werden und bei Bedarf aufgerufen werden.
Auf diese Weise kann durch den Aufruf einer einzigen Sequenz oder
Teilsequenz (eines oder mehrerer Sequenzeinträge) eine umfangreiche Datenübertragung
zwischen dem Botschaftsspeicher und dem DMA-Controller ausgelöst werden.
Beim Einsatz von Sequenzen können
die Konfigurationsparameter, die zu Beginn der Datenübertragung
von dem Mikroprozessor des Mikrocontrollers in die Konfigurations-
und Statusregister übertragen
werden, auch eine Kennung (z.B. die Nummern) eines oder mehrerer
Sequenzeinträge
umfassen, die von der Zustandsmaschine im Rahmen der Datenübertragung
aufgerufen werden sollen.
-
Vorteilhafterweise
umfassen die zwischen dem Botschaftsspeicher und dem Teilnehmer
zu übertragenden Botschaften
jeweils ein Kopfsegment, insbesondere mit Konfigurationsdaten und
Steuerungsdaten, und ein Datensegment mit Nutzdaten, wobei die Zustandsmaschine
die Datenübertragung zwischen
dem Botschaftsspeicher und dem DMA-Controller derart steuert, dass
für jede
Botschaft das Kopfsegment vor dem Datensegment eingelesen wird.
-
Vorzugsweise
steuert die Zustandsmaschine die Datenübertragung zwischen dem Botschaftsspeicher
und dem DMA-Controller derart, dass vor dem Einlesen des Datensegments
die im Kopfsegment enthaltenen Daten ausgewertet werden und das
Einlesen des Datensegments in Abhängigkeit von dem Ergebnis der
Auswertung der Daten des Kopfsegments gesteuert wird. Vor der Übertragung
der Nutzdaten wird also der Status eingelesen. Auf diese Weise kann
bei Leerdaten im Datensegment verhindert werden, dass das gesamte
Datensegment übertragen
wird. Vielmehr können
diejenigen Adressbereiche des Datensegments ausgewählt werden,
die Nutzdaten (sog. Payload) enthalten; die Adressbereiche mit Leerdaten
werden bei der Übertragung
nicht berücksichtigt
und einfach übersprungen.
Auf diese Weise kann die Übertragungsrate
erhöht
werden.
-
Gemäß einer
anderen vorteilhaften Weiterbildung der vorliegenden Erfindung wird
vorgeschlagen, dass der F1exRay-Kommunikationsbaustein mindestens
einen Pufferspeicher, vorzugsweise mindestens einen Eingangspufferspeicher
und mindestens einen Ausgangspufferspeicher, zum Zwischenspeichern
von zwischen dem Botschaftsspeicher des Kommunikationsbausteins
und dem DMA-Controller zu übertragenden
Daten, vorzugsweise zum Zwischenspeichern mindestens einer in dem
Botschaftsspeicher abgelegten Botschaft, aufweist, wobei die Zustandsmaschine
die Datenübertragung
zwischen dem Botschaftsspeicher und dem mindestens einen Puffer speicher
sowie zwischen dem mindestens einen Pufferspeicher und dem DMA-Controller
selbständig
koordiniert und steuert. Der mindestens eine Pufferspeicher ist
zwischen dem Botschaftsspeicher des FlexRay-Kommunikationsbausteins
und der Zustandsmaschine der Teilnehmerschnittstelle angeordnet.
Vorzugsweise ist jeweils ein Ausgangspufferspeicher für den lesenden
Zugriff auf den Botschaftsspeicher und ein Eingangspufferspeicher
für den schreibenden
Zugriff vorgesehen.
-
Gemäß einer
weiteren bevorzugten Ausführungsform
wird vorgeschlagen, dass der mindestens eine Pufferspeicher einen
Teilpufferspeicher und einem dem Teilpufferspeicher zugehörigen Schattenspeicher
umfasst, wobei die Zustandsmaschine die Datenübertragung derart koordiniert
und steuert, dass Schreiben bzw. Lesen auf den Teilpufferspeicher
und den Schattenspeicher wechselweise erfolgt. Durch das wechselweise
Schreiben bzw. Lesen auf Teilpufferspeicher und Schattenspeicher
kann eine deutlich höhere
Datenrate erzielt werden, da in den Teilpufferspeicher schon wieder
Daten geschrieben werden können,
während
aus dem Schattenspeicher noch Daten ausgelesen werden, und umgekehrt
in den Schattenspeicher schon wieder Daten geschrieben werden können, während aus
dem Teilpufferspeicher noch Daten ausgelesen werden.
-
Schließlich wird
vorgeschlagen, dass der FlexRay-Kommunikationsbaustein
dem mindestens einen Pufferspeicher zugehörige Kontrollregister aufweist,
auf welche die Zustandsmaschine zur Koordination und Steuerung der
Datenübertragung
zwischen dem Botschaftsspeicher und dem mindestens einen Pufferspeicher
Zugriff hat. Über
die Kontrollregister kann dem Kommunikationsbaustein mitgeteilt werden,
ob neue Daten zur Übertragung
anliegen (und übertragen
werden sollen) und an welche Adresse in dem Botschaftsspeicher sie
abgelegt bzw. von welcher Adresse sie abgeholt werden sollen.
-
Als
eine weitere Lösung
der Aufgabe der vorliegenden Erfindung wird ausgehend von dem FlexRay-Teilnehmer
der eingangs genannten Art vorgeschlagen, dass die Teilnehmerschnittstelle
eine Zustandsmaschine, aufweist, welche nach Konfiguration durch
den Mikroprozessor des Mikrocontrollers eine Datenübertragung
zwischen dem Botschaftsspeicher des FlexRay-Kommunikationsbausteins und
dem DMA-Controller selbständig
koordiniert und steuert.
-
Als
noch eine weitere Lösung
der Aufgabe der vorliegenden Erfindung wird ausgehend von dem Verfahren
der eingangs genannten Art vorgeschlagen, dass eine Zustandsmaschine,
die als Teil einer Teilnehmerschnittstelle zwischen dem Mikrocontroller
und dem FlexRay-Kommunikationsbaustein angeordnet wird, durch einen
Mikroprozessor des Mikrocontrollers konfiguriert wird und die Datenübertragung
nach der Konfiguration von der Zustandsmaschine selbständig koordiniert
und gesteuert wird.
-
Gemäß einer
vorteilhaften Weiterbildung der Erfindung wird vorgeschlagen, dass
zur Konfiguration der Zustandsmaschine von dem Mikroprozessor des
Mikrocontrollers Konfigurationsparameter in Konfigurations- und
Statusregister der Teilnehmerschnittstelle abgelegt werden.
-
Gemäß einer
bevorzugten Ausführungsform der
Erfindung wird vorgeschlagen, dass in einem Sequenzspeicher der
Teilnehmerschnittstelle Verweise auf bestimmte in dem Botschaftsspeicher
abgelegte Botschaften und Informationen über die Botschaften abgelegt
werden, wobei zur Koordination und Steuerung der Datenübertragung
von der Zustandsmaschine Einträge
des Sequenzspeichers aufgerufen werden.
-
Vorteilhafterweise
weist der FlexRay-Kommunikationsbaustein mindestens einen Pufferspeicher,
vorzugsweise mindestens einen Eingangspufferspeicher und mindestens
einen Ausgangspufferspeicher , zum Zwischenspeichern von zwischen dem
Botschaftsspeicher des Kommunikationsbausteins und dem DMA-Controller
zu übertragenden Daten,
vorzugsweise zum Zwischenspeichern mindestens einer in dem Botschaftsspeicher
abgelegten Botschaft, auf, wobei zur Steuerung und Koordination
der Datenübertragung
von der Zustandsmaschine in dem mindestens einen Pufferspeicher
zugehörigen Kontrollregistern
Koordinations- und Steuerungsparameter abgelegt werden.
-
Zeichnungen
-
Nachfolgend
werden anhand der Figuren weitere Merkmale und Vorteile der Erfindung
näher erläutert. Es
zeigen:
-
1 einen
Kommunikationsbaustein und dessen Anbindung an eine Kommunikationsverbindung
und einen Kommunikations- oder Host-Teilnehmer eines FlexRay-Kommunikationssystems
in schematischer Darstellung;
-
2 eine
spezielle Ausführungsform
des Kommunikationsbausteins aus 1 sowie
dessen Anbindung im Detail;
-
3 die
Struktur eines Botschaftsspeichers des Kommunikationsbausteins aus 2;
-
4 bis 6 die
Architektur und den Prozess eines Datenzugriffs in Richtung vom
Teilnehmer zum Botschaftsspeicher in schematischer Darstellung;
-
7 bis 9 die
Architektur und den Prozess eines Datenzugriffs in Richtung vom
Botschaftsspeicher zum Teilnehmer;
-
10 die
Struktur eines Botschaftsverwalters und von darin enthaltenen Finite-State-Machinen in
schematischer Darstellung;
-
11 Bauteile
des Kommunikationsbausteins aus 1 und 2 sowie
den Teilnehmer und die entsprechenden, durch den Botschaftsverwalter
gesteuerten Datenpfade in schematischer Darstellung;
-
12 die
Zugriffsverteilung auf den Botschaftsspeicher bezogen auf die Datenpfade
in 11;
-
13 eine
erfindungsgemäße Teilnehmerschnittstelle
mit einer Zustandsmaschine;
-
14 die
Zustandsmaschine zwischen dem FlexRay-Kommunikationsbaustein und dem FlexRay-Teilnehmer
im Detail;
-
15 die
Signalverläufe
im Rahmen eines Lesevorgangs über
die erfindungsgemäße Teilnehmerschnittstelle;
und
-
16 die
Signalverläufe
im Rahmen eines Lesevorgangs über
die erfindungsgemäße Teilnehmerschnittstelle.
-
Beschreibung
der Ausführungsbeispiele
-
1 zeigt
schematisch einen FlexRay-Kommunikationsbaustein 100 zur
Anbindung eines Teilnehmers oder Hosts 102 an eine FlexRay-Kommunikationsverbindung 101,
also die physikalische Schicht des FlexRay. Diese ist bspw. als
ein FlexRay-Datenbus, der vorzugsweise über zwei Übertragungsleitungen verfügt, ausgebildet.
Dazu ist der FlexRay-Kommunikationsbaustein 100 über eine Verbindung 107 mit
dem Teilnehmer bzw. Teilnehmerprozessor 102 und über eine
Verbindung 106 mit der Kommunikationsverbindung 101 verbunden.
Zur problemlosen Anbindung zum einen bezogen auf Übertragungszeiten
und zum anderen bezogen auf die Datenintegrität sind schematisch im Wesentlichen
drei Anordnungen im FlexRay-Kommunikationsbaustein unterschieden.
Dabei dient eine erste Anordnung 105 zur Speicherung, insbesondere
Zwischenablage, wenigstens eines Teils der zu übertragenden Botschaften. Zwischen
dem Teilnehmer 102 und dieser ersten Anordnung 105 ist über die
Verbindungen 107 und 108 eine zweite Anordnung 104 geschaltet.
Ebenso ist zwischen Kommunikationsverbindung 101 und die
erste Anordnung 105 eine dritte Anordnung 103 über die
Verbindungen 106 und 109 geschaltet, wodurch ein
sehr flexibles Eingeben und Ausgeben von Daten als Teil von Botschaften,
insbesondere FlexRay-Botschaften in bzw. aus der ersten Anordnung 105 mit
Gewährleistung
der Datenintegrität
bei optimaler Geschwindigkeit erzielbar ist.
-
In 2 ist
dieser Kommunikationsbaustein 100 in einer bevorzugten
Ausführungsform
noch einmal detaillierter dargestellt. Ebenso detaillierter dargestellt
sind die jeweiligen Verbindungen 106 bis 109. Zur
Anbindung des FlexRay-Kommunikationsbausteins 100 an den
F1exRay-Teilnehmer 102 bzw.
den Host-Prozessor enthält
die zweite Anordnung 104 einen Eingangspufferspeicher oder
Eingabepufferspeicher 201 (Input Buffer IBF), einen Ausgangspufferspeicher
oder Ausgabepufferspeicher 202 (Output Buffer OBF) sowie
einen Schnittstellenbaustein bestehend aus zwei Teilen 203 und 204,
wobei der eine Teilbaustein 203 teilnehmerunabhängig und
der zweite Teilbaustein 204 teilnehmerspezifisch ist. Der teilnehmerspezifische
Teilbaustein 204 (Customer CPU Interface CIF) verbindet
eine teilnehmerspezifische Host-CPU 102,
also einen kundenspezifischen Teilnehmer 102 mit dem FlexRay-Kommunikationsbaustein 100.
Dazu ist eine bidirektionale Datenleitung 216, eine Adressleitung 217 sowie
ein Steuereingang 218 vorgesehen. Ebenso vorgesehen ist
mit 219 ein Interrupt- oder Unterbrechungs-Ausgang. Der
teilnehmerspezifische Teilbaustein 204 steht in Verbindung
mit einem teilnehmerunabhängigen
Teilbaustein 203 (Generic CPU Interface, GIF), d. h. der F1exRay-Kommunikationsbaustein
oder das FlexRay-IP-Modul verfügt über ein
generisches, also allgemeines, CPU-Interface 203, an das
sich über
entsprechende teilnehmerspezifische Teilbausteine 204, also
Customer CPU Interfaces CIF eine große Anzahl von unterschiedlichen
kundenspezifischen Host CPUs 102 anschließen lassen.
Dadurch muss abhängig
vom Teilnehmer 102 nur der Teilbaustein 204 variiert
werden, was einen deutlich geringeren Aufwand bedeutet. Das CPU-Interface 203 und
der restliche Kommunikationsbaustein 100 kann unverändert übernommen
werden.
-
Der
Eingabepufferspeicher oder Eingangspufferspeicher 201 und
der Ausgangspufferspeicher oder Ausgabepufferspeicher 202 können in
einem gemeinsamen Speicherbaustein oder aber in getrennten Speicherbausteinen
ausgebildet sein. Dabei dient der Eingabepufferspeicher 201 für die Zwischenspeicherung
von Botschaften für
die Übertragung
zu einem Botschaftsspeicher 300. Dabei ist der Eingabepufferbaustein 201 vorzugsweise
so ausgebildet, dass er zwei vollständige Botschaften bestehend
aus jeweils einem Kopfsegment oder Headersegment, insbesondere mit
Konfigurationsdaten und ein Datensegment oder Payload Segment speichern kann.
Dabei ist der Eingabepufferspeicher 201 zweiteilig (Teilpufferspeicher
und Schattenspeicher) ausgebildet, wodurch sich durch wechselweises
Schreiben der beiden Teile des Eingabepufferspeichers bzw. durch
Zugriffswechsel die Übertragung
zwischen Teilnehmer-CPU 102 und Botschaftsspeicher 300 beschleunigen
lässt.
Ebenso dient der Ausgabepufferspeicher oder Ausgangspufferspeicher 202 (Output-Buffer
OBF) für
die Zwischenspeicherung von Botschaften für die Übertragung vom Botschaftsspeicher 300 zur
Teilnehmer-CPU 102. Dabei ist auch der Ausgabepuffer 202 so
gestaltet, dass zwei komplette Botschaften bestehend aus Kopfsegment, insbesondere
mit Konfigurationsdaten und Datensegment, also Payload Segment,
gespeichert werden können.
Auch hier ist der Ausgabepufferspeicher 202 in zwei Teile,
einen Teilpufferspeicher und einen Schattenspeicher aufgeteilt,
wodurch sich auch hier durch wechselweises Lesen der beiden Teile
die Übertragung
bzw. durch Zugriffswechsel die Übertragung
zwischen Teilnehmer- bzw. Host-CPU 102 und Botschaftsspeicher 300 beschleunigen
lässt.
Diese zweite Anordnung 104 bestehend aus den Blöcken 201 bis 204 ist
mit der ersten Anordnung 105 wie dargestellt verbunden.
-
Die
Anordnung 105 besteht aus einem Botschaftsverwalter 200 (Message
Handler MHD) und einem Botschaftsspeicher 300 (Message
RAM). Der Botschaftsverwalter 200 kontrolliert bzw. steuert
den Datentransfer zwischen dem Eingabepufferspeicher 201 sowie
Ausgabepufferspeicher 202 und dem Botschaftsspeicher 300.
Gleichermaßen
kontrolliert bzw. steuert er die Datenübertragung in der anderen Richtung über die
dritte Anordnung 103. Der Botschaftsspeicher 300 ist
vorzugsweise als single-ported RAM ausgeführt. Dieser RAM-Speicher speichert
die Botschaften bzw. Botschaftsobjekte, also die eigentlichen Daten,
zusammen mit Konfigurations- und Statusdaten. Die genaue Struktur
des Botschaftsspeichers 300 ist in 3 näher dargestellt.
-
Die
dritte Anordnung 103 besteht aus den Blöcken 205 bis 208.
Entsprechend den beiden Kanälen
des FlexRay Physical Layer ist diese Anordnung 103 in zwei
Datenpfade mit je zwei Datenrichtungen aufgeteilt. Dies wird durch
die Verbindungen 213 und 214 deutlich, worin die
beiden Datenrichtungen für
den Kanal A mit RxA und TxA für
Empfangen (RxA) und Senden (TxA) sowie für Kanal B mit RxB und TxB dargestellt
sind. Mit Verbindung 215 ist ein optionaler bidirektionaler
Steuereingang bezeichnet. Die Anbindung der dritten Anordnung 103 erfolgt über einen
ersten Pufferspeicher 205 für Kanal B und einen zweiten
Pufferspeicher 206 für
Kanal A. Diese beiden Pufferspeicher (Transient Buffer RAMs: RAM A
und RAM B) dienen als Zwischenspeicher für die Datenübertragung von bzw. zu der
ersten Anordnung 105. Entsprechend der beiden Kanäle sind
diese beiden Pufferspeicher 205 und 206 mit jeweils
einem Schnittstellenbaustein 207 und 208 verbunden,
die die FlexRay-Protokoll-Controller oder Busprotokoll-Controller bestehend
aus einem Sende-/Empfangs-Schieberegister und der FlexRay Protokoll
Finite State Maschine, enthalten. Die beiden Pufferspeicher 205 und 206 dienen
somit als Zwischenspeicher für
die Datenübertragung
zwischen den Schieberegistern der Schnittstellenbausteine oder FlexRay
Protokoll Controller 207 und 208 und dem Botschaftsspeicher 300.
Auch hier werden vorteilhafter Weise durch jeden Pufferspeicher 205 oder 206 die
Datenfelder, also das Payload Segment oder Datensegment zweier FlexRay-Botschaften gespeichert.
-
Weiterhin
dargestellt im Kommunikationsbaustein 100 ist mit 209 die
globale Zeiteinheit (Global Time Unit GTU), welche für die Darstellung
der globalen Zeitraster im FlexRay, also den Mikrotick μT und den
Makrotick MT, zuständig
ist. Ebenso wird über
die globale Zeiteinheit 209 die fehlertolerante Uhrensynchronisation
der Zykluszähler
(Cycle Counter) und die Kontrolle der zeitlichen Abläufe im statischen
und dynamischen Segment des FlexRay geregelt. Mit Block 210 ist
die allgemeine Systemsteuerung (System Universal Control SUC) dargestellt, durch
welche die Operationsmodi des FlexRay-Kommunikationscontrollers
kontrolliert und gesteuert werden. Dazu gehören der Wakeup, der Startup,
die Reintegration bzw. Integration, Normaloperation (normal operation)
und passive Operation (passive operation).
-
Block 211 zeigt
das Netzwerk und Fehlermanagement (Network- und Error Management NEM), wie in der
FlexRay-Protokollspezifikation v2.0 beschrieben. Block 212 schließlich zeigt
die Unterbrechungssteuerung (Interrupt Control INT), welche die Status-
und Fehlerunterbrechungsflaggen (status and error interrupt flags)
verwaltet und die Unterbrechungsausgänge 219 zur Teilnehmer-CPU 102 kontrolliert
bzw. steuert. Der Block 212 enthält außerdem einen absoluten und
einen relativen Timer bzw. Zeitgeber zur Erzeugung der Zeitunterbrechungen
oder Timerinterrupts.
-
Für die Kommunikation
in einem FlexRay-Netzwerk können
Botschaftsobjekte bzw. Botschaften (Message Buffer) mit bis zu 254
Datenbytes konfiguriert werden. Der Botschaftsspeicher 300 ist insbesondere
ein Botschafts-RAM-Speicher
(Message RAM), welcher z. B. bis zu maximal 128 Botschaftsobjekten
speichern kann. Alle Funktionen, die die Behandlung bzw. Verwaltung
der Botschaften selbst betreffen, sind dem Botschaftsverwalter oder Message
Handler 200 implementiert. Dies sind z.B. die Akzeptanzfilterung,
Transfer der Botschaften zwischen den beiden FlexRay-Protokoll-Controller-Blöcken 207 und 208 und
dem Botschaftsspeicher 300, also dem Message RAM sowie
die Kontrolle der Sendereihenfolge und das Bereitstellen von Konfigurationsdaten
bzw. Statusdaten.
-
Eine
externe CPU, also ein externer Prozessor der Teilnehmerprozessor 102,
kann über
die Teilnehmerschnittstelle 107 mit dem teilnehmerspezifischen
Teil 204 direkt auf die Register des FlexRay-Kommunikationsbausteins 100 zugreifen.
Dabei wird eine Vielzahl von Registern verwendet. Diese Register
werden eingesetzt, um die FlexRay Protokoll Controller, also die
Schnittstellenbausteine 207 und 208, den Botschaftsverwalter
(Message Handler MHD) 200, die globale Zeiteinheit (Global
Time Unit GTU) 209, den allgemeinen Systemcontroller (System
Universal Controller SUC) 210, die Netzwerk- und Fehlermanagementeinheit
(Network und Error Management Unit NEM) 211, den Unterbrechungscontroller
(Interrupt Controller INT) 212 sowie den Zugriff auf das
Message RAM, also den Botschaftsspeicher 300 zu konfigurieren
und zu steuern und ebenso den entsprechenden Status anzuzeigen.
Zumindest auf Teile dieser Register wird noch in den 4 bis 6 und 7 bis 9 näher eingegangen.
Ein solch beschriebener FlexRay-Kommunikationsbaustein 100 ermöglicht die
einfache Umsetzung der FlexRay-Spezifikation v2.0, wodurch einfach
ein ASIC oder ein Mikrocontroller mit entsprechender FlexRay-Funktionalität generiert
werden kann.
-
Durch
den beschriebenen FlexRay-Kommunikationsbaustein 100 kann
die FlexRay-Protokollspezifikation, insbesondere v2.0, vollständig unterstützt werden
und es sind damit z.B. bis zu 128 Botschaften bzw. Botschaftsobjekte
konfigurierbar. Dabei ergibt sich ein flexibel konfigurierbarer
Botschaftsspeicher für
die Speicherung einer unterschiedlichen Anzahl von Botschaftsobjekten
abhängig
von der Größe des jeweiligen
Datenfeldes bzw. Datenbereiches der Botschaft. Somit sind also vorteilhafterweise
Botschaften- oder Botschaftsobjekte zu konfigurieren, die unterschiedlich
lange Datenfelder besitzen. Der Botschaftsspeicher 300 ist
dabei vorteilhafter Weise als FIFO (first in-first out) ausgebildet,
so dass sich ein konfigurierbarer Empfangs-FIFO ergibt. Jede Botschaft bzw. jedes
Botschaftsobjekt im Speicher kann als Empfangsspeicherobjekt (Receive-Buffer),
Sendespeicherobjekt (Transmit-Buffer) oder als Teil des konfigurierbaren Empfangs-FIFOs
konfiguriert werden. Ebenso ist eine Akzeptanzfilterung auf Frame-ID,
Channel-ID und Cycle-Counter im FlexRay-Netzwerk möglich. Zweckmäßiger Weise
wird somit das Netzwerkmanagement unterstützt. Vorteilhafterweise sind
außerdem
maskierbare Modulinterrupts vorgesehen.
-
In 3 ist
detailliert die Aufteilung des Botschaftsspeichers 300 beschrieben.
Für die
nach der FlexRay-Protokollspezifikation geforderte Funktionalität eines
FlexRay-Kommunikationscontrollers wird ein Botschaftsspeicher für das Bereitstellen
von zu sendenden Botschaften (Transmit Buffer Tx) sowie das Abspeichern
von fehlerfrei empfangenen Botschaften (Receive Buffer Rx) benötigt. Ein
FlexRay-Protokoll erlaubt Botschaften mit einem Datenbereich, also
einem Payload-Bereich von 0 bis 254 Bytes. Wie in 2 dargestellt
ist der Botschaftsspeicher 300 Teil des FlexRay-Kommunikationsbausteins 100.
Das nachfolgend beschriebene Verfahren sowie der entsprechende Botschaftsspeicher 300 beschreiben
die Speicherung von zu sendenden Botschaften sowie von empfangenen
Botschaften, insbesondere unter Verwendung eines Random Access Memory (RAM),
wobei es durch den beschriebenen Mechanismus möglich ist in einem Botschaftsspeicher
vorgegebener Größe eine
variable Anzahl von Botschaften zu speichern. Dabei ist die Anzahl
der speicherbaren Botschaften abhängig von der Größe der Datenbereiche
der einzelnen Botschaften, wodurch zum einen die Größe des benötigten Speichers
minimiert werden kann ohne die Größe der Datenbereiche der Botschaften
einzuschränken
und zum anderen eine optimale Ausnutzung des Speichers erfolgt.
Im Folgenden nun soll diese variable Aufteilung eines insbesondere
RAM-basierten Botschaftsspeichers 300 für einen FlexRay Communication
Controller näher beschrieben
werden.
-
Zur
Implementierung wird nun beispielhaft ein Botschaftsspeicher mit
einer festgelegten Wortbreite von n Bit, beispielsweise 8, 16, 32
usw., sowie einer vorgegebenen Speichertiefe von m Worten vorgegeben
(m, n als natürliche
Zahlen). Dabei wird der Botschaftsspeicher 300 in zwei
Segmente aufgeteilt, ein Header Segment oder Kopfsegment HS und
ein Datensegment DS (Payload Section, Payload Segment). Pro Botschaft
wird somit ein Headerbereich HB und ein Datenbereich DB angelegt.
Für Botschaften
0, 1 bis k (k als natürliche
Zahl) werden somit Headerbereiche oder Kopfbereiche HB0, HB1 bis HBk
und Datenbereiche DB0, DB1 bis DBk angelegt. In einer Botschaft
wird also zwischen ersten und zweiten Daten unterschieden, wobei
die ersten Daten Konfigurationsdaten und/oder Statusdaten bezüglich der
FlexRay Botschaft entsprechen und jeweils in einem Headerbereich
HB (HB0, HB1, ..., HBk) abgelegt werden. Die zweiten Daten, die
den eigentlichen Nutzdaten entsprechen, die übertragen werden sollen, werden
entsprechend in Datenbereichen DB (DB0, DB1, ..., DBk) abgelegt.
Somit entsteht für
die ersten Daten pro Botschaft ein erster Datenumfang (in Bit, Byte
oder Speicherworten gemessen) und für die zweiten Daten einer Botschaft
ein zweiter Datenumfang (ebenfalls in Bit, Byte oder Speicherworten
gemessen), wobei der zweite Datenumfang pro Botschaft unterschiedlich
sein kann. Die Aufteilung zwischen Kopfsegment HS und Datensegment
DS ist nun im Botschaftsspeicher 300 variabel, d. h. es
existiert keine vorgegebene Grenze zwischen den Bereichen. Die Aufteilung
zwischen Kopfsegment HS und Datensegment DS ist abhängig von
der Anzahl k der Botschaften sowie dem zweiten Datenumfang, also
dem Umfang der eigentlichen Nutzdaten, einer Botschaft bzw. aller
k Botschaften zusammen. Den Konfigurationsdaten KD0, KD1 bis KDk
der jeweiligen Botschaft wird nun ein Zeigerelement oder Datapointer
DPO, DPI bis DPk jeweils direkt zugeordnet. In der speziellen Ausgestaltung
wird jedem Kopfbereich HB0, HB1 bis HBk eine feste Anzahl von Speicherworten,
hier zwei, zugeordnet, so dass immer ein Konfigurationsdatum KD
(KD0, KD1, ..., KDk) und ein Zeigerelement DP (DP0, DP1, ..., DPk)
zusammen in einem Headerbereich HB abgelegt sind. An diesem Kopfsegment
HS mit den Headerbereichen HB, dessen Größe bzw. erster Datenumfang abhängig von
der Anzahl k der zu speichernden Botschaften ist, schließt das Datensegment
DS zur Speicherung der eigentlichen Botschaftsdaten D0, D1 bis Dk
an. Dieses Datensegment (oder Datensection) DS hängt in seinem Datenumfang vom
jeweiligen Datenumfang der abgelegten Botschaftsdaten ab, hier z.B.
in DB0 sechs Worte, DB1 ein Wort und DBk zwei Worte. Die jeweiligen
Zeigerelemente DP0, DP1 bis DPk zeigen somit immer zum Beginn, also
auf die Anfangsadresse des jeweiligen Datenbereichs DB0, DB1 bis
DBk, in denen die Daten D0, D1 bis Dk der jeweiligen Botschaften
0, 1, bis k abgelegt sind. Damit ist die Aufteilung des Botschaftsspeichers 300 zwischen
Kopfsegment HS und Datensegment DS variabel und hängt von
der Anzahl k der Botschaften selbst sowie dem jeweiligen Datenumfang
einer Botschaft und damit dem gesamten zweiten Datenumfang ab. Werden
weniger Botschaften konfiguriert, wird das Kopfsegment HS kleiner
und der frei werdende Bereich im Botschaftsspeicher 300 kann
als Zusatz zum Datensegment DS für
die Speicherung von Daten verwendet werden. Durch diese Variabilität kann eine
optimale Speicherausnutzung gewährleistet
werden, womit auch die Verwendung kleinerer Speicher möglich ist.
Das freie Datensegment FDS, insbesondere dessen Größe, ebenfalls
abhängig
von der Kombination aus Anzahl k der gespeicherten Botschaften und
dem jeweiligen zweiten Datenumfang der Botschaften ist somit minimal
und kann sogar 0 werden.
-
Neben
der Verwendung von Zeigerelementen ist es auch möglich, die ersten und zweiten
Daten, also die Konfigurationsdaten KD (KD0, KD1, ..., KDk) und
die eigentlichen Daten D (D0, D1, ..., Dk) in einer vorgebbaren
Reihenfolge abzulegen, so dass die Reihenfolge der Kopfbereiche
HB0 bis HBk im Kopfsegment HS und die Reihenfolge der Datenbereiche
DB0 bis DBk im Datensegment DS jeweils identisch ist. Dann könnte unter
Umständen
sogar auf ein Zeigerelement verzichtet werden.
-
In
einer besonderen Ausgestaltung ist dem Botschaftsspeicher ein Fehlerkennungserzeuger, insbesondere
ein Parity-Bit-Generator-Element und ein Fehlerkennungsprüfer, insbesondere
ein Parity-Bit-Prüf-Element zugeordnet,
um die Korrektheit der gespeicherten Daten in HS und DS zu gewährleisten,
indem pro Speicherwort oder pro Bereich (HB und/oder DB) eine Prüfsumme eben
insbesondere als Parity-Bit mit abgelegt werden kann. Andere Kontrollkennungen,
z.B. ein CRC (Cyclic Redundancy Check) oder auch Kennungen höherer Mächtigkeit wie
ECC Error Code Correction) sind denkbar. Damit sind gegenüber einer
festgelegten Aufteilung des Botschaftsspeichers folgende Vorteile
gegeben:
Der Anwender kann bei der Programmierung entscheiden,
ob er eine größere Anzahl
von Botschaften mit kleinem Datenfeld oder ob er eine kleinere Anzahl von
Botschaften mit großem
Datenfeld verwenden möchte.
Bei der Konfiguration von Botschaften mit unterschiedlich großem Datenbereich
DB wird der vorhandene Speicherplatz optimal ausgenutzt. Der Anwender
hat die Möglichkeit
einen Datenspeicherbereich gemeinsam für unterschiedliche Botschaften zu
nutzen.
-
Bei
der Implementierung des Communication Controllers auf einer integrierten
Schaltung kann die Größe des Botschaftsspeichers 300 durch
Anpassung der Speichertiefe (Anzahl m der Worte) des verwendeten
Speichers an die Bedürfnisse
der Applikation angepasst werden, ohne die sonstigen Funktionen
des Communication Controllers zu ändern.
-
Im
Weiteren wird nun anhand der 4 bis 6 sowie 7 bis 9 der
Host-CPU-Zugriff, also Schreiben und Lesen von Konfigurationsdaten bzw.
Statusdaten und der eigentlichen Daten über die Pufferspeicheranordnung 201 und 202,
näher beschrieben.
Dabei ist es das Ziel, eine Entkopplung bezüglich der Datenübertragung
derart herzustellen, dass die Datenintegrität sichergestellt werden kann und
gleichzeitig eine hohe Übertragungsgeschwindigkeit
gewährleistet
ist. Die Steuerung dieser Vorgänge
erfolgt über
den Botschaftsverwalter 200, was später noch näher in den 10, 11 und 12 beschrieben
wird.
-
In
den 4, 5 und 6 werden
zunächst
die Schreibzugriffe auf den Botschaftsspeicher 300 durch
die Host-CPU der Teilnehmer-CPU 102 über den Eingangspufferspeicher 201 näher erläutert. Dazu
zeigt 4 noch einmal den Kommunikationsbaustein 100,
wobei aus Gründen
der Übersichtlichkeit
nur die hier relevanten Teile des Kommunikationsbausteins 100 gezeigt
sind. Dies ist zum einen der für
die Steuerung der Abläufe
verantwortliche Botschaftsverwalter 200 sowie zwei Kontrollregister 403 und 404,
die wie dargestellt außerhalb
des Botschaftsverwalters 200 im Kommunikationsbaustein 100 untergebracht
sein können,
aber auch im Botschaftsverwalter 200 selbst enthalten sein
können. 403 stellt
dabei das Eingangs-Anforderungsregister (Input
Buffer Command Request Register; IBCR) dar und 404 das
Eingangs-Maskierungsregister
(Input Buffer Command Mask Register; IBMR). Schreibzugriffe der
Host-CPU 102 auf den Botschaftsspeicher 300 (Message
RAM) erfolgen also über
einen zwischengeschalteten Eingangspufferspeicher 201 (Input
Buffer). Dieser Eingangspufferspeicher 201 ist nun geteilt
bzw. gedoppelt ausgelegt, und zwar als Teilpufferspeicher 400 und
einem zu dem Teilpufferspeicher zugehörigen Schattenspeicher 401.
Damit kann wie nachfolgend beschrieben ein kontinuierlicher Zugriff
der Host-CPU 102 auf die Botschaften bzw. Botschaftsobjekte
respektive Daten des Botschaftsspeichers 300 erfolgen und
damit Datenintegrität
und beschleunigte Übertragung
gewährleistet werden.
-
Die
Steuerung der Zugriffe erfolgt über
das Eingangs-Anforderungsregister 403 und über das Eingangs-Maskierungsregister 404.
Im Register 403 sind in 5 mit den
Zahlen von 0 bis 31 die jeweiligen Bitstellen in 403 hier
beispielhaft für
eine Breite von 32 Bit dargestellt. Gleiches gilt für das Register 404 und
die Bitstellen 0 bis 31 in dem Maskierungsregister 404 aus 6.
-
Es
erhalten nun beispielhaft die Bitstellen 0 bis 5, 15, 16 bis 21
und 31 des Registers 403 bezüglich der Ablaufsteuerung eine
besondere Funktion. So ist in die Bitstellen 0 bis 5 des Registers 403 eine Kennung
IBRH (Input Buffer Request Host) als Botschaftskennung eintragbar.
Ebenso ist in die Bitstellen 16 bis 21 des Registers 403 eine
Kennung IBRS (Input Buffer Request Shadow) eintragbar. Ebenso sind
in Registerstelle 15 von 403 IBSYH und in Registerstelle
31 von 403 IBSYS als Zugriffskennungen eingetragen. Ausgezeichnet
sind auch die Stellen 0 bis 2 des Registers 404, wobei
in 0 und 1 mit LHSH (Load Header Section Host) und LDSH (Load Data Section
Host) weitere Kennungen als Datenkennungen eingetragen sind. Diese
Datenkennungen sind hier in einfachster Form, nämlich jeweils als ein Bit ausgebildet.
In Bitstelle 2 von Register 404 ist mit STXRH (Set Transmission
X Request Host) eine Startkennung eingeschrieben. Im Weiteren wird
nun der Ablauf des Schreibzugriffs auf den Botschaftsspeicher 300 über den
Eingangspuffer 201 beschrieben.
-
Die
Host-CPU 102 schreibt die Daten der zu transferierenden
Botschaft in den Eingangspufferspeicher 201. Dabei kann
die Host-CPU 102 nur die Konfigurations- und Headerdaten
KD einer Botschaft für
das Headersegment HS des Botschaftsspeichers 300 oder nur
die eigentlichen, zu übertragenden
Daten D einer Botschaft für
das Datensegment DS des Botschaftsspeichers 300 oder beide
schreiben. Welcher Teil einer Botschaft, also Konfigurationsdaten und/oder
die eigentlichen Daten, übertragen
werden soll, wird durch die speziellen Datenkennungen LHSH und LDSH
im Eingangs-Markierungsregister 404 festgelegt. Dabei wird
durch LHSH (Load Header Section Host) festgelegt ob die Headerdaten,
also die Konfigurationsdaten KD, übertragen werden und durch
LDSH (Load Data Section Host) festgelegt, ob die Daten D übertragen
werden sollen. Dadurch, dass der Eingangspufferspeicher 201 zweiteilig
mit einem Teilpufferspeicher 400 und einem dazugehörigen Schattenspeicher 401 ausgebildet
ist und ein wechselseitiger Zugriff erfolgen soll sind als Gegenstück zu LHSH
und LDSH zwei weitere Datenkennungsbereiche vorgesehen, die nun
auf den Schattenspeicher 401 bezogen sind. Diese Datenkennungen
in den Bitstellen 16 und 17 des Registers 404 sind mit
LHSS (Load Header Section Shadow) und LDSS (Load Data Section Shadow)
bezeichnet. Durch diese wird somit der Übertragungsvorgang bezüglich des
Schattenspeichers 401 gesteuert.
-
Ist
nun das Startbit bzw. die Startkennung STXRH (Set Transmission X
Request Host) in Bitstelle 2 des Eingangs-Maskierungsregisters 404 gesetzt, so
wird nach erfolgtem Transfer der jeweils zu übertragenden Konfigurationsdaten
und/oder eigentlichen Daten in den Botschaftsspeicher 300 automatisch
eine Sendeanforderung (Transmission Request) für das entsprechende Botschaftsobjekt
gesetzt. D. h. durch diese Startkennung STXRH wird das automatische
Senden eines übertragenden
Botschaftsobjekts gesteuert, insbesondere gestartet.
-
Das
Gegenstück
hierzu entsprechend für den
Schattenspeicher 401 ist die Startkennung STXRS (Set Transmission
X Request Shadow) welches beispielhaft in Bitstelle 18 des Eingangs-Markierungsregisters 404 enthalten
ist und auch hier im einfachsten Fall eben als ein Bit ausgebildet
ist. Die Funktion von STXRS ist analog der Funktion von STXRH, lediglich
bezogen auf den Schattenspeicher 401.
-
Wenn
die Host-CPU 102 die Botschaftskennung, insbesondere die
Nummer des Botschaftsobjekts im Botschaftsspeicher 300,
in welches die Daten des Eingangspufferspeichers 201 transferiert werden
sollen, in die Bitstellen 0 bis 5 des Eingangsanforderungsregisters 403,
also nach IBRH, schreibt, werden der Teilpufferspeicher 400 des
Eingangspufferspeichers 201 und der zugehörige Schattenspeicher 401 vertauscht
bzw. es wird der jeweilige Zugriff von Host-CPU 102 und
Botschaftsspeicher 300 auf die beiden Teilspeicher 400 und 401 vertauscht,
wie durch die halbkreisförmigen
Pfeile angedeutet. Dabei wird z.B. auch der Datentransfer, also die
Datenübertragung
zum Botschaftsspeicher 300 gestartet. Die Datenübertragung
zum Botschaftsspeicher 300 selbst erfolgt aus dem Schattenspeicher 401.
Gleichzeitig werden die Registerbereiche IBRH und IBRS getauscht.
Ebenso getauscht werden LHSH und LDSH gegen LHSS und LDSS. Gleichermaßen getauscht
wird STXRH mit STXRS. IBRS zeigt somit die Kennung der Botschaft,
also die Nummer des Botschaftsobjektes für das eine Übertragung, also ein Transfer
aus dem Schattenspeicher 401 im Gange ist bzw. welches
Botschaftsobjekt, also welcher Bereich im Botschaftsspeicher 300 als
letztes Daten (KD und/oder D) aus dem Schattenspeicher 401 erhalten
hat. Durch die Kennung (hier wieder beispielsweise 1 Bit) IBSYS
(Input Buffer Busy Shadow) in Bitstelle 31 des Eingangs-Anforderungsregisters 403 wird
angezeigt ob gerade eine Übertragung
mit Beteiligung des Schattenspeichers 401 erfolgt. So wird
beispielsweise bei IBSYS = 1 gerade aus dem Schattenspeicher 401 übertragen
und bei IBSYS = 0 eben nicht. Dieses Bit IBSYS wird beispielsweise
durch das Schreiben von IBRH, also Bitstellen 0 bis 5, in Register 403 gesetzt,
um anzuzeigen, dass ein Transfer zwischen dem Schattenspeicher 401 und
dem Botschaftsspeicher 300 im Gange ist. Nach Beendigung
dieser Datenübertragung
zum Botschaftsspeicher 300 wird IBSYS wieder zurückgesetzt.
-
Während der
Datentransfer aus dem Schattenspeicher 401 gerade läuft kann
die Host-CPU 102 die nächste
zu transferierende Botschaft in den Eingangspufferspeicher 201 bzw.
in den Teilpufferspeicher 400 schreiben. Mit Hilfe einer
weiteren Zugriffskennung IBSYH (Input Buffer Busy Host) beispielsweise
in Bitstelle 15 von Register 403 kann die Kennung noch
weiter verfeinert werden. Schreibt die Host-CPU 102 gerade
IBRH, also die Bitstellen 0 bis 5 von Register 403, während eine Übertragung
zwischen dem Schattenspeicher 401 und dem Botschaftsspeicher 300 läuft, also
IBSYS = 1 ist, so wird IBSYH im Eingangsanforderungsregister 403 gesetzt.
Sobald der laufende Transfer, also die laufende Übertragung, abgeschlossen ist,
wird der angeforderte Transfer (Anforderung durch STXRH siehe oben)
gestartet und das Bit IBSYH zurückgesetzt. Das
Bit IBSYS bleibt während
der ganzen Zeit gesetzt, um anzuzeigen, dass Daten zum Botschaftsspeicher 300 transferiert
werden. Alle verwendeten Bits aller Ausführungsbeispiele können dabei
auch als Kennungen mit mehr als einem Bit ausgebildet sein. Vorteilhaft
ist die Ein-Bit Lösung
aus speicher- und verarbeitungsökonomischen
Gründen.
-
Der
so beschriebene Mechanismus erlaubt es der Host-CPU 102 kontinuierlich
Daten in die im Botschaftsspeicher 300 befindlichen Botschaftsobjekte
bestehend aus Headerbereich HB und Datenbereich DB zu transferieren,
vorrausgesetzt die Zugriffsgeschwindigkeit der Host-CPU 102 auf
den Eingangspufferspeicher 201 ist kleiner oder gleich
der internen Datentransferrate des FlexRay-IP-Moduls, also des Kommunikationsbausteins 100.
-
In
den 7, 8 und 9 werden
nun die Lesezugriffe auf den Botschaftsspeicher 300 durch
die Host-CPU oder Teilnehmer-CPU 102 über den Ausgangspufferspeicher
oder Ausgabepufferspeicher 202 näher erläutert. Dazu zeigt 7 noch einmal
den Kommunikationsbaustein 100, wobei aus Gründen der Übersichtlichkeit
auch hier nur die relevanten Teile des Kommunikationsbausteins 100 gezeigt
sind. Dies ist zum einen der für
die Steuerung der Abläufe
verantwortliche Botschaftsverwalter 200 sowie zwei Kontrollregister 703 und 704,
die wie dargestellt außerhalb
des Botschaftsverwalter 200 im Kommunikationsbaustein 100 untergebracht
sein können,
aber auch im Botschaftsverwalter 200 selbst enthalten sein
können. 703 stellt
dabei das Ausgangs-Anforderungsregister (Output Buffer Command Request
Register; OBCR) dar und 704 das Ausgangs- Maskierungsregister
(Output Buffer Command Mask Register; OBCM). Lesezugriffe der Host-CPU 102 auf
den Botschaftsspeicher 300 erfolgen also über den
zwischengeschalteten Ausgangspufferspeicher 202 (Output
Buffer). Dieser Ausgangspufferspeicher 202 ist nun ebenfalls
geteilt bzw. gedoppelt ausgelegt, und zwar als Teilpufferspeicher 701 und
einem zu dem Teilpufferspeicher zugehörigen Schattenspeicher 700.
Damit kann auch hier wie nachfolgend beschrieben ein kontinuierlicher Zugriff
der Host-CPU 102 auf die Botschaften bzw. Botschaftsobjekte
respektive Daten des Botschaftsspeichers 300 erfolgen und
damit Datenintegrität
und beschleunigte Übertragung
nun in der Gegenrichtung vom Botschaftsspeicher 300 zum
Host 102 gewährleistet
werden. Die Steuerung der Zugriffe erfolgt über das Ausgangs-Anforderungsregister 703 und über das
Ausgangs-Maskierungsregister 704. Auch im Register 703 sind
mit den Zahlen von 0 bis 31 die jeweiligen Bitstellen in 703 hier
beispielhaft für
eine Breite von 32 Bit dargestellt (vgl. 8). Gleiches
gilt für
das Register 704 und die Bitstellen 0 bis 31 in 704 (vgl. 9).
-
Es
erhalten nun beispielhaft die Bitstellen 0 bis 5, 8 und 9, 15 und
16 bis 21 des Registers 703 bezüglich der Ablaufsteuerung des
Lesezugriffs eine besondere Funktion. So ist in die Bitstellen 0
bis 5 des Registers 703 eine Kennung OBRS (Output Buffer
Request Shadow) als Botschaftskennung eintragbar. Ebenso ist in
die Bitstellen 16 bis 21 des Registers 703 eine Kennung
OBRH (Output Buffer Request Host) eintragbar. Als Zugriffskennung
ist in Bitstelle 15 von Register 703 eine Kennung OBSYS (Output
Buffer Busy Shadow) eintragbar. Ausgezeichnet sind auch die Stellen
0 und 1 des Ausgabe-Maskierungsregisters 704, wobei in
den Bitstellen 0 und 1 mit RDSS (Read Data Section Shadow) und RHSS
(Read Header Section Shadow) weitere Kennungen als Datenkennungen
eingetragen sind. Weitere Datenkennungen sind beispielsweise in
den Bitstellen 16 und 17 mit RDSH (Read Data Section Host) und RHSH
(Read Header Section Host) vorgesehen. Diese Datenkennungen sind
auch hier beispielhaft in einfachster Form, nämlich jeweils als ein Bit ausgebildet.
In Bitstelle 9 des Registers 703 ist eine Startkennung
REQ eingetragen. Weiterhin ist eine Umschaltkennung VIEW vorgesehen
die beispielhaft in Bitstelle 8 von Register 703 eingetragen ist.
-
Die
Host-CPU 102 fordert die Daten eines Botschaftsobjekts
aus dem Botschaftsspeicher 300 an, indem sie die Kennung
der gewünschten
Botschaft, also insbesondere die Nummer des gewünschten Botschaftsobjektes,
nach OBRS also in die Bitstellen 0 bis 5 des Registers 703 schreibt.
Auch hierbei kann die Host-CPU 102 wie in der Gegenrichtung
entweder nur die Status- bzw. Konfigurations- und Headerdaten KD
einer Botschaft also aus einem Headerbereich oder nur die eigentlich
zu übertragenden
Daten D einer Botschaft also aus dem Datenbereich oder auch beide
lesen. Welcher Teil der Daten also aus Headerbereich und/oder Datenbereich übertragen
werden soll wird hierbei vergleichbar mit der Gegenrichtung durch
RHSS und RDSS festgelegt. Das heißt RHSS gibt an, ob die Headerdaten
gelesen werden sollen und RDSS gibt an, ob die eigentlichen Daten
gelesen werden sollen.
-
Eine
Startkennung dient dazu die Übertragung
vom Botschaftsspeicher 300 zum Schattenspeicher 700 zu
starten. D.h. wird als Kennung wie im einfachsten Fall ein Bit verwendet,
wird durch Setzen von Bit REQ in Bitstelle 9 im Ausgabe-Anforderungsregister 703 die Übertragung
vom Botschaftsspeicher 300 zum Schattenspeicher 700 gestartet.
Die laufende Übertragung
wird wieder durch eine Zugriffskennung, hier wieder im einfachsten
Fall durch ein Bit OBSYS im Register 703, angezeigt. Um
Kollisionen zu vermeiden ist es vorteilhaft, wenn das Bit REQ nur
dann gesetzt werden kann, wenn OBSYS nicht gesetzt ist, also gerade
keine laufende Übertragung
erfolgt. Hier erfolgt dann auch der Botschaftstransfer zwischen
dem Botschaftsspeicher 300 und dem Schattenspeicher 700.
Der eigentliche Ablauf könnte
nun einerseits vergleichbar zur Gegenrichtung wie unter den 4, 5 und 6 beschrieben
gesteuert werden (komplementäre
Registerbelegung) und erfolgen oder aber in einer Variation durch eine
zusätzliche
Kennung, nämlich
eine Umschaltkennung VIEW in Bitstelle 8 des Registers 703.
D.h. nach Abschluss der Übertragung
wird das Bit OBSYS zurückgesetzt
und durch Setzen des Bits VIEW im Ausgabe-Anforderungsregister 703 werden
der Teilpufferspeicher 701 und der zugehörige Schattenspeicher 700 getauscht
bzw. es werden die Zugriffe darauf getauscht und die Host-CPU 102 kann
nun das vom Botschaftsspeicher 300 angeforderte Botschaftsobjekt,
also die entsprechende Botschaft, aus dem Teilpufferspeicher 701 auslesen.
Dabei werden auch hier vergleichbar mit der Gegenübertragungsrichtung
in den 4 bist 6 die Registerzellen OBRS und
OBRH getauscht. Gleichermaßen
werden RHSS und RDSS gegen RHSH und RDSH getauscht. Als Schutzmechanismus
kann auch hier vorgesehen werden, dass das Bit VIEW nur dann gesetzt
werden kann, wenn OBSYS nicht gesetzt ist, also keine laufende Übertragung
stattfindet.
-
Somit
erfolgen Lesezugriffe der Host-CPU 102 auf den Botschaftsspeicher 300 über den
zwischengeschalteten Ausgangspufferspeicher 202. Dieser
Ausgangspufferspeicher 202 ist ebenso wie der Eingangspufferspeicher 201 doppelt
bzw. zweiteilig ausgelegt, um einen kontinuierlichen Zugriff der Host-CPU 102 auf
die Botschaftsobjekte, die im Botschaftsspeicher 300 abgelegt
sind, zu gewährleisten.
-
Auch
hier werden die Vorteile der hohen Datenintegrität und der beschleunigten Übertragung
erzielt.
-
Durch
die Verwendung der beschriebenen Eingangs- und Ausgangspuffer 201, 202 wird
sichergestellt, dass eine Host-CPU 102 trotz der modulinternen
Latenzzeiten unterbrechungsfrei auf den Botschaftsspeicher 300 zugreifen
kann.
-
Zur
Sicherstellung dieser Datenintegrität wird die Datenübertragung,
insbesondere die Weiterleitung im Kommunikationsbaustein 100,
durch den Botschaftsverwalter 200 (Message Handler MHD) vorgenommen.
Dazu ist in 10 der Botschaftsverwalter 200 dargestellt.
Der Botschaftsverwalter 200 ist in seiner Funktionalität durch
mehrere Zustandsmaschinen oder Zustandsautomaten, also endliche Automaten,
sogenannte Finite-State-Machinen (FSM) darstellbar. Dabei sind wenigstens
drei Zustandsmaschinen und in einer besonderen Ausführungsform
vier Finite-State-Machinen
vorgesehen. Eine erste Finite-State-Machine ist die IOBF-FSM und
mit 501 bezeichnet (Input/Output Buffer State Machine).
Diese IOBF-FSM könnte
auch je Übertragungsrichtung
bezüglich
des Eingangspufferspeichers 201 oder des Ausgangspufferspeichers 202 in zwei
Finite-State-Machinen
aufgeteilt sein IBF-FSM (Input Buffer FSM) und OBF-FSM (Output Buffer FSM),
womit maximal fünf
Zustandsautomaten (IBF-FSM, OBF-FSM, TBF1-FSM, TBF2-FSM, AFSM) denkbar
wären.
Bevorzugt ist aber eine gemeinsame IOBF-FSM vorzusehen. Eine zweite
Finite-State-Machine ist hier im Zuge des bevorzugten Ausführungsbeispiels
in zwei Blöcke 502 und 503 aufgeteilt
und bedient die beiden Kanäle
A und B bezüglich
der Speicher 205 und 206, wie zu 2 beschrieben.
Dabei kann eine Finite-State-Machine vorgesehen sein, um beide Kanäle A und
B zu bedienen, oder aber wie in der bevorzugten Form eine Finite-State-Machine
TBF1-FSM mit 502 bezeichnet (Transient Buffer 1 (206,
RAM A) State Machine) für Kanal
A und für
Kanal B eine TBF2-FSM mit 503 bezeichnet (Transient Buffer
2 (205, RAM B) State Machine).
-
Zur
Steuerung des Zugriffs der drei Finite-State-Machinen 501-503 im
bevorzugten Ausführungsbeispiel
dient eine Arbiter-Finite-State-Machine, die sogenannte AFSM, die
mit 500 bezeichnet ist. Die Daten (KD und/oder D) werden
in einem durch ein Taktmittel, wie z.B. ein VCO (Voltage Controlled Oszillator),
einen Schwingquarz usw., generierten oder aus diesem angepassten
Takt im Kommunikationsbaustein 100 übertragen. Der Takt T kann
dabei im Baustein generiert werden oder von außen, z.B. als Bustakt, vorgegeben
sein. Diese Arbiter-Finite-State-Machine
AFSM 500 gibt abwechselnd einer der drei Finite-State-Machinen 501-503,
insbesondere jeweils für
eine Taktperiode T Zugriff auf den Botschaftsspeicher 300.
D.h. die zur Verfügung
stehende Zeit wird entsprechend den Zugriffsanforderungen der einzelnen
Zustandsautomaten 501, 502, 503 auf diese
anfordernden Zustandsautomaten aufgeteilt. Erfolgt eine Zugriffsanforderung
von nur einer Finite-State-Machine, so erhält diese 100 der Zugriffszeit,
also alle Takte T. Erfolgt eine Zugriffsanforderung von zwei Zustandsautomaten,
erhält
jede Finite-State-Machine 50% der Zugriffszeit. Erfolgt schließlich eine
Zugriffsanforderung von drei Zustandsautomaten so erhält jede
der Finite-State-Machinen 1/3 der Zugriffszeit. Dadurch wird die
jeweils zur Verfügung
stehende Bandbreite optimal genutzt.
-
Die
erste Finite-State-Machine 501, also IOBF-FSM, führt bei
Bedarf folgende Aktionen aus:
- – Datentransfer
vom Eingangspufferspeicher 201 zum ausgewählten Botschaftsobjekt
im Botschaftsspeicher 300.
- – Datentransfer
vom ausgewählten
Botschaftsobjekt im Botschaftsspeicher 300 zum Ausgangspufferspeicher 202.
-
Die
Zustandsmaschine 502 für
Kanal A, also TBF1-FSM, führt
folgende Aktionen aus:
- – Datentransfer vom ausgewählten Botschaftsobjekt
im Botschaftsspeicher 300 zum Pufferspeicher 206 von
Kanal A.
- – Datentransfer
vom Pufferspeicher 206 zum ausgewählten Botschaftsobjekt im Botschaftsspeicher 300.
- – Suche
nach dem passenden Botschaftsobjekt im Botschaftsspeicher 300,
wobei bei Empfang das Botschaftsobjekt (Receive Buffer) zum Abspeichern
einer auf Kanal A empfangenen Botschaft im Rahmen einer Akzeptanzfilterung
gesucht wird und beim Senden das nächste auf Kanal A zu sendende
Botschaftsobjekt (Transmit Buffer).
-
Analog
dazu ist die Aktion von TBF2-FSM, also der Finite-State-Machine für Kanal
B in Block 503. Diese führt
den Datentransfer vom ausgewählten
Botschaftsobjekt im Botschaftsspeicher 300 zum Pufferspeicher 205 von
Kanal B aus und den Datentransfer vom Pufferspeicher 205 zum
ausgewählten Botschaftsobjekt
im Botschaftsspeicher 300. Auch die Suchfunktion ist analog
zu TBF1-FSM nach einem passenden Botschaftsobjekt im Botschaftsspeicher 300,
wobei bei Empfang das Botschaftsobjekt (Receive Buffer) zum Abspeichern
einer auf Kanal B empfangenen Botschaft im Rahmen einer Akzeptanzfilterung
gesucht wird und beim Senden die nächste auf Kanal B zu sendende
Botschaft oder Botschaftsobjekt (Transmit Buffer).
-
In 11 sind
nun noch einmal die Abläufe und
die Übertragungswege
dargestellt. Die drei Zustandsmaschinen 501-503 steuern
die jeweiligen Datenübertragungen
zwischen den einzelnen Teilen. Dabei ist mit 102 wieder
die Host-CPU dargestellt, mit 201 der Eingangspufferspeicher
und mit 202 der Ausgangspufferspeicher. Mit 300 ist
der Botschaftsspeicher dargestellt und die beiden Pufferspeicher
für Kanal
A und Kanal B mit 206 und 205. Die Schnittstellenelemente 207 und 208 sind
ebenfalls dargestellt. Der erste Zustandsautomat IOBF-FSM, mit 501 bezeichnet
steuert den Datentransfer Z1A und Z1B, also vom Eingangspufferspeicher 201 zum
Botschaftsspeicher 300 und vom Botschaftsspeicher 300 zum
Ausgangspufferspeicher 202. Die Datenübertragung erfolgt dabei über Datenbusse
mit einer Wortbreite von beispielsweise 32 Bit wobei auch jede andere
Bitzahl möglich
ist. Gleiches gilt für
die Übertragung
Z2 zwischen dem Botschaftsspeicher und dem Pufferspeicher 206.
Diese Datenübertragung wird
durch TBFI-FSM,
also die Zustandsmaschine 502 für Kanal A, gesteuert. Die Übertragung
Z3 zwischen Botschaftsspeicher 300 und Pufferspeicher 205 wird
durch den Zustandsautomaten TBF2-FSM, also 503 gesteuert.
Auch hier erfolgt der Datentransfer Ober Datenbusse mit einer beispielhaften
Wordbreite von 32 Bit, wobei auch hier jede andere Bitzahl möglich ist.
Normalerweise benötigt
der Transfer eines kompletten Botschaftsobjektes über die
genannten Übertragungswege
mehrere Taktperioden T. Daher erfolgt eine Aufteilung der Übertragungszeit
bezogen auf die Taktperioden T durch den Arbiter, also die AFSM 500.
In 11 sind also die Datenpfade zwischen denen vom
Message Handler 200 kontrollierten Speicherkomponenten
dargestellt. Um die Datenintegrität der im Botschaftsspeicher 300 gespeicherten
Botschaftsobjekte sicherzustellen, sollten vorteilhafterweise zur
gleichen Zeit nur auf einem der dargestellten Pfade also Z1A und
Z1B sowie Z2 und Z3 gleichzeitig Daten ausgetauscht werden.
-
In 12 ist
an einem Beispiel gezeigt, wie die zur Verfügung stehenden Systemtakte
T vom Arbiter, also der AFSM 500, auf die drei anfordernden Zustandsautomaten
aufgeteilt werden. In Phase 1 (I) erfolgen Zugriffsanforderungen
von Zustandsautomat 501 und Zustandsautomat 502,
d.h., dass die gesamte Zeit jeweils zur Hälfte auf die beiden anfordernden
Zustandautomaten aufgeteilt wird. Bezogen auf die Taktperioden in
Phase 1 (I) bedeutet dies, dass Zustandsautomat 501 in
den Taktperioden T1 und T3 Zugriff erhält und Zustandsautomat 502 in den
Taktperioden T2 und T4. In Phase 2 (II) erfolgt der Zugriff nur
durch die Zustandsmaschine 501, sodass alle drei Taktperioden,
also 100a der Zugriffszeit von T5 bis T7 auf IOBF-FSM entfällt. In
Phase 3 (III) erfolgen Zugriffsanforderungen aller drei Zustandsautomaten 501 bis 503,
sodass eine Drittelung der Gesamtzugriffszeit erfolgt. Der Arbiter
AFSM 500 verteilt dann die Zugriffszeit beispielsweise
so, dass in den Taktperioden T8 und T11 die Finit-State-Machine 501,
in den Taktperioden T9 und T12 die Finite-State-Machine 502 und
in den Taktperioden T10 und T13 die Finite-State-Machine 503 Zugriff erhält. In Phase
4 (IV) schließlich
erfolgt der Zugriff durch zwei Zustandsautomaten, 502 und 503 auf
den beiden Kanälen
A und B des Kommunikationsbausteins 100, sodass eine Zugriffsverteilung
der Taktperioden T14 und T16 an Finite-State-Machine 502 und
in T15 und T17 an Finite-State-Machine 503 erfolgt.
-
Der
Arbiterzustandsautomat AFSM 500 sorgt also dafür, dass
falls mehr als eine der drei Zustandsmaschinen 501-503 eine
Anforderung für
einen Zugriff auf den Botschaftsspeicher 300 stellt, der Zugriff
taktweise und abwechselnd auf die anfordernden Zustandsmaschinen 501-503 aufgeteilt
wird. Diese Vorgehensweise stellt die Integrität der im Botschaftsspeicher 300 abgelegten
Botschaftsobjekte, also die Datenintegrität, sicher. Will zum Beispiel
die Host-CPU 102 über
den Ausgangspufferspeicher 202 ein Botschaftsobjekt auslesen
während
gerade eine empfangene Botschaft in dieses Botschaftsobjekt geschrieben
wird, so wird abhängig
davon welche Anforderung zuerst gestartet wurde entweder der alte
Stand oder der neue Stand ausgelesen, ohne dass die Zugriffe im
Botschaftsobjekt im Botschaftsspeicher 300 selbst kollidieren.
-
Das
beschriebene Verfahren ermöglicht
der Host-CPU 102 im laufenden Betrieb jedes beliebige Botschaftsobjekt
im Botschaftsspeicher 300 zu lesen oder zu schreiben, ohne
dass das ausgewählte
Botschaftsobjekt für
die Dauer des Zugriffs der Host-CPU 102 von der Teilnahme
am Datenaustausch auf beiden Kanälen
des FlexRay Busses 101 gesperrt wäre (Buffer Locking). Gleichzeitig
wird durch die taktweise Verschachtelung der Zugriffe die Integrität der im
Botschaftsspeicher 300 abgelegten Daten sichergestellt
und die Übertragungsgeschwindigkeit,
auch durch Ausnutzung der vollen Bandbreite erhöht.
-
In 13 ist
schematisch ein erfindungsgemäßer Kommunikationsteilnehmer
in seiner Gesamtheit mit dem Bezugszeichen 900 bezeichnet.
Der Teilnehmer 900 ist über
eine Verbindung 106 an eine Kommunikationsverbindung 101 angeschlossen,
die bspw. als ein FlexRay-Datenbus ausgebildet ist. Der Teilnehmer 900 kann über die
Kommunikationsverbindung 101 Informationen (oder Daten
oder Botschaften) mit anderen angeschlossenen Teilnehmern (nicht
dargestellt) austauschen. Der Teilnehmer 900 umfasst einen
Mikrocontroller 102 (Host-CPU), und einen Kommunikationscontroller 750 (sog.
Communication Controller; CC), der bspw. als ein FlexRay- Kommunikationscontroller
ausgebildet ist. Der Kommunikationscontroller 705 umfasst
einen FlexRay-Kommunikationsbaustein 100,
der weiter oben bereits ausführlich
beschrieben ist. Der Kommunikationsbaustein 100 kann integraler
Bestandteil des Kommunikationscontrollers 705 oder als
separates Bauteil ausgebildet sein. Zur Verbesserung der Anbindung
zwischen dem FlexRay-Kommunikationsbaustein 100 und dem
Mikrocontroller 102, genauer gesagt zur Verbesserung der
Anbindung zwischen einem Botschaftsspeicher 300 des Kommunikationsbausteins 100 und
einem DMA (Direct Memory Access) Controller 812 (vgl. 15)
des Mikrocontrollers 102, wird erfindungsgemäß vorgeschlagen,
in der Teilnehmerschnittstelle 107 (Customer Interface; CIF)
zwischen dem Kommunikationsbaustein 100 und dem Mikrocontroller 102 eine
Zustandsmaschine 800 anzuordnen. Die Zustandsmaschine 800 ist
vorzugsweise fest verdrahtet.
-
Die
Zustandsmaschine 800 verändert die Teilnehmerschnittstelle 107 derart,
dass sich das Aufsetzen und Starten des DMA-Controllers 812 des Mikrocontrollers 102 lohnt.
Mit anderen Worten sorgt die Zustandsmaschine 800 dafür, dass
dem DMA-Controller 812 die zu übertragenden Daten bzw. Botschaften
derart optimiert präsentiert
werden, dass er auch größere Datenmengen
bzw. mehrere Botschaften mit einem einzigen Aufruf des DMA-Controllers 812 übertragen
kann. Erfindungsgemäß wird also
gewissermaßen
ein einziger Zugriff aus den bisher erforderlichen vielen kleinen
Zugriffen zusammengesetzt bzw. werden aus vielen segmentierten Adressbereichen
mit Daten virtuell weniger zusammenhängende Adressbereiche generiert,
auf die der DMA-Controller 812 effektiv
zugreifen kann. Außerdem
können
durch den Einsatz der Zustandsmaschine 800 Latenzzeiten
des Mikroprozessors 811 des Mikrocontrollers 102 während der
Datenübertragung
vermieden werden.
-
In 14 ist
die Anbindung der Zustandsmaschine 800 an den Kommunikationsbaustein 100 und an
den Mikrocontroller 102 im Detail dargestellt. Insbesondere verbindet
der teilnehmerspezifische Teilbaustein 204 (Customer CPU
Interface; CIF) die Zustandsmaschine 800 mit dem FlexRay-Kommunikationsbaustein 100.
Dazu ist eine bidirektionale Datenleitung 216, eine Adressleitung 217 sowie
ein Steuereingang 218 vorgesehen. Ebenso vorgesehen ist
mit 219 ein Interrupt- oder Unterbrechungs-Ausgang. Der
teilnehmerspezifische Teilbaustein 204 steht in Verbindung
mit dem teilnehmerunabhängigen
Teilbaustein 203 (Generic CPU Interface, GIF), d. h. der FlexRay-Kommunikationsbaustein 100 verfügt über ein
generisches, also allgemeines, CPU-Interface 203, an das
sich über
entsprechende teilnehmerspezifische Teilbausteine 204 (CIF)
eine große
Anzahl von unterschiedlichen kundenspezifischen Teilnehmer 900 anschließen lassen.
Dadurch muss abhängig
vom Teilnehmer 900 nur der Teilbaustein 204 variiert
werden, was einen deutlich geringeren Aufwand bedeutet. Das CPU-Interface 203 und
der restliche Kommunikationsbaustein 100 können unverändert übernommen
werden.
-
Die
Zustandsmaschine 800 ist vorzugsweise Teil des teilnehmerspezifischen
Teilbausteins 204 (CIF). Selbstverständlich ist es jedoch denkbar,
dass die erfindungsgemäße intelligente
Teilnehmerschnittstelle 107 als ein separates Bauteil ausgebildet
ist.
-
Die
Teilnehmerschnittstelle 107 bzw. die Zustandsmaschine 800 ist über mehrere
Leitungen mit dem Mikrocontroller 102 verbunden. Insbesondere ist
eine bidirektionale Daten leitung 816, eine Adressleitung 817 sowie
ein Steuereingang 818 vorgesehen. Ebenso vorgesehen ist
mit 819 ein Interrupt- oder Unterbrechungs-Ausgang.
-
In 15 sind
die verschiedenen Signalverläufe
für einen
Lesevorgang (Read) im Sinne des erfindungsgemäßen Verfahrens dargestellt.
Zudem ist der Mikrocontroller 102 im Detail dargestellt.
Er umfasst einen Speicher 810, der bspw. als ein Random-Access-Memory
(RAM) ausgebildet sein kann. Der Speicher 810 dient zum
Speichern eingehender Botschaften vor einer Weiterverarbeitung und
ausgehender Botschaften vor einer Übertragung über die Kommunikationsverbindung 101.
Außerdem
umfasst der Mikrocontroller 102 einen Mikroprozessor 811, eine
sog. Host-CPU, einen DMA-Controller 812 und eine Schnittstelle 813 zu
Peripheriemodulen (z.B. ein sog. Expansion Bus Module). Eine interne
Arbitrierungseinheit ist mit dem Bezugszeichen 814 bezeichnet.
-
Die
erfindungsgemäße Teilnehmerschnittstelle 107 umfasst
die Zustandsmaschine 800. Außerdem umfasst die Schnittstelle 107 mindestens
ein Register 802, das bspw. 64 Bit groß ist und das zum Konfigurieren
der Zustandsmaschine 800 bzw. der von der Zustandsmaschine 800 gesteuerten
Datenübertragung
dient. Dazu werden in dem Konfigurationsregister 802 entsprechende
Bits gesetzt, um bspw. die Richtung der Datenübertragung (Lesen, Read oder
Schreiben, Write), Kennungen (z.B. Botschaftsnummern) der zu übertragenden
Botschaften, Übertragungsreihenfolge
der Botschaften, Länge
der Botschaften, oder eine von mehreren vorab gespeicherten Teilsequenzen
zur Datenübertragung
auszuwählen.
Die Konfigurationsparameter können
auch die Anzahl der zu übertragenden
Datenworte oder beliebig andere Informationen bezüglich der
bevorstehenden Datenübertragung
betreffen.
-
Außerdem weist
die Teilnehmerschnittstelle 107 einen Sequenzspeicher 804 auf,
der bspw. als ein Random-Access-Memory
(RAM) ausgebildet ist. In dem Sequenz-RAM 804 sind Verweise
auf bestimmte in dem Botschaftsspeicher 300 abgelegte Botschaften
sowie Informationen über
die Botschaften abgelegt. Die Zustandsmaschine 800 ruft
zur Koordination und Steuerung der Datenübertragung Einträge des Sequenzspeichers 804 auf.
Der Sequenzspeicher 804 umfasst mehrere, vorzugsweise 128, Felder
mit Sequenzeinträgen.
Die Sequenzeinträge betreffen
bspw. eine Kennung (z.B. eine Nummer) des Sequenzeintrags, eine
Kennung bzw. einen Verweis (z.B. eine Buffernummer) auf einen oder
mehrere Botschaften (sog. Buffer) des Botschaftsspeichers 300 bzw.
des Pufferspeichers 201 oder 202, und die Größe der Botschaft
(des Buffers). Die verschiedenen Sequenzeinträge können von der Zustandsmaschine
nach Vorgaben von dem Mikroprozessor gezielt aufgerufen werden.
Die Sequenzeinträge
können
unverändert
in der gespeicherten Form oder in angepasster Form aufgerufen werden.
Zum Aufruf in angepasster Form umfasst der Aufruf des Sequenzeintrags
bestimmte Parameterwerte zum Anpassen variabler Parameter des Sequenzeintrags.
-
Die
Sequenzeinträge
in dem Sequenzspeicher 804 betreffen vorzugsweise häufig auftretende Übertragungssequenzen,
die vorab abgespeichert werden und bei Bedarf aufgerufen werden.
Auf diese Weise kann durch den Aufruf einer einzigen Sequenz oder
Teilsequenz (eines oder mehrerer Sequenzeinträge) eine umfangreiche Datenübertragung
zwischen dem Botschaftsspeicher 300 und dem DMA-Controller 812 ausgelöst werden.
Beim Einsatz von Sequenzen oder Teilsequenzen können die Konfigurationsparameter,
die zu Beginn der Datenübertragung
von dem Mikroprozessor 811 des Mikrocontrollers 102 in
die Konfigurations- und Statusregister 802 übertragen
werden, auch eine Kennung (z.B. die Nummern) eines oder mehrerer
Sequenzeinträge umfassen,
die von der Zustandsmaschine 800 im Rahmen der Datenübertragung
aufgerufen werden sollen.
-
Der
Lese-Vorgang wird initiiert, sobald in dem Botschaftsspeicher 300 des
FlexRay-Kommunikationsbausteins 100 über den FlexRay-Datenbus 101 übertragene
Daten abgelegt werden. Nach Eingang der Daten im Botschaftsspeicher 300 kann
ein Interrupt ausgelöst
oder ein entsprechender Befehl an den Mikrocontroller 102 übermittelt
werden. Es ist aber auch denkbar, dass der Eingang der Daten im Botschaftsspeicher 300 von
dem Mikrocontroller 102 bspw. durch regelmäßiges Polling
erkannt wird.
-
Zu
Beginn des Lesevorgangs konfiguriert der Mikroprozessor 811 den
DMA-Controller 812 in einem Schritt 850. Der Mikroprozessor 811 weiß, wie viele
Daten zu übertragen
sind, kennt die Größe der Botschaften
und andere Informationen bzgl. der bevorstehenden Datenübertragung.
Diese Informationen übermittelt
der Mikroprozessor 811 im Schritt 850 zumindest
teilweise an den DMA-Controller 812. Anschließend konfiguriert
der Mikroprozessor 811 die Zustandsmaschine 800 in
einem Schritt 852, indem Konfigurationsparameter in das
Konfigurationsregister 802 geschrieben werden. Dann erhält die Zustandsmaschine 800 einen
Start-Befehl von dem Mikroprozessor 811 und beginnt daraufhin
mit dem eigentlichen Datentransfer.
-
Für den Datentransfer
werden verschiedene Programmschleifen durchlaufen. Eine äußere Schleife
fängt bei
dem ersten zu übertragenden
Datenbuffer an. Eine innere Schleife fängt bei dem ersten Datenwort
des ersten zu übertragenden
Datenbuffers an. Für
dieses Datenwort übermittelt
die Zustandsmaschine 800 einen Request/View-Befehl 854 and den
Ausgangspuffer 202 bzw. an die Konfigurationsregister 703, 704 des
Ausgangspuffer 202, um das Datenwort in dem Ausgangspuffer 202 sichtbar
zu machen. Anschließend
wird das Datenwort über
den Output-Buffer 202 aus dem Botschaftsspeicher 300 ausgelesen.
Die Zustandsmaschine 800 holt sich in einem Schritt 856 dieses
Datenwort von dem Ausgangspuffer 202 über das generische Interface 203 (GIF).
Dabei kann nur das Kopfsegment HS, nur das Datensegment DS oder
können
beide, sowohl Kopfsegment HS als auch Datensegment DS, übertragen werden.
Bei einer Übertragung
von Kopfsegment HS und Datensegment DS wird vorzugsweise zunächst das
Kopfsegment HS und danach das Datensegment DS übertragen, die umgekehrte Reihenfolge
ist jedoch auch möglich.
-
Über die
Konfigurationsregister 703, 704 erhält der Ausgangspuffer 202 bzw.
eine übergeordnete
Steuereinheit des FlexRay-Kommunikationsbausteins 100 Informationen
und Anweisungen darüber, welches
Datenwort als nächstes
aus dem Botschaftsspeicher 300 in den Ausgangspuffer 202 übertragen
werden soll.
-
Das
Datenwort aus dem Ausgangspuffer 202 steht nun in der Zustandsmaschine 800 zur
Abholung durch den DMA-Controller 812 bereit. Dies wird
dem DMA-Controller 812 durch einen Data-Ready-Befehl 858 mitgeteilt.
Daraufhin liest der DMA-Controller 812 das
bereitstehende Datenwort in einem Schritt 860 ein und leitet
es zur Weiterverarbeitung weiter. Anschließend wartet der DMA-Controller 812 auf
das nächste
Data-Ready-Signal 858.
-
Die
innere Schleife wird auf das nächste
Datenwort des ersten Datenbuffers inkrementiert, und die obigen
Schritte erneut durchlaufen bis das letzte einzulesende Datenwort
des ersten Datenbuffers erfolgreich eingelesen worden ist. Anschließend wird die äußere Schleife
auf den nächsten
zu übertragenden
Datenbuffer inkrementiert, und die obigen Schritte werden erneut
durchlaufen bis alle Datenworte des letzten einzulesenden Datenbuffers
erfolgreich eingelesen worden sind. Das Einlesen eines bestimmten
Datenbuffers kann bspw. durch Aufruf einer entsprechenden Teilsequenz
aus dem Sequenzspeicher 804 erfolgen. Anschließend teilt
der DMA-Controller 812 dem Mikroprozessor 811 das
Ende der Datenübertragung
mit. Dies kann bspw. durch einen geeigneten Befehl (Data-Transmission-Ready)
oder durch einen Interrupt-Befehl erfolgen.
-
Die
gesamte Datenübertragung
wird von der Zustandsmaschine 800 gesteuert und koordiniert. Die
Host-CPU 811 muss lediglich die Datenübertragung durch den Request-Befehl 850 auslösen, alles weitere
wird von der Zustandsmaschine 800 erledigt, so dass eine
größtmöglich Entlastung
der Host-CPU 811 des Mikrocontrollers 102 gegeben
ist.
-
Erfindungsgemäß wird also
eine herkömmliche
Teilnehmerschnittstelle 107 um eine Zustandsmaschine 800 erweitert.
Mindestens eine Sequenz von Message-Buffern mit zugehöriger Payloadlänge kann
in einen Speicher, bspw. ein RAM, programmiert werden. Der Speicher
ist vorzugsweise ebenfalls Teil der erfindungsgemäßen Teilnehmerschnittstelle 107.
Pro Abruf mindestens einer der Teil- oder Gesamtsequenzen muss ein
DMA-Controller 812 des Teilnehmers 102 nur einmal
getriggert werden. Die (Teil-)Sequenzen werden über Start-/End-Nummern definiert.
Durch maximal 128 Sequenzeinträge können verschiedene
Reihenfolgen, z.B. beim Lesen/Schreiben, verwendet werden. Ein gleichzeitiges Lesen
und Schreiben per DMA findet nicht statt. Eine DMA-Sequenz muss
immer komplett bearbeitet sein, bevor ein neuer Request-Befehl 850 gestartet
werden kann. Im Fehlerfall wird ein Interrupt gesendet oder ein
Flag gesetzt.
-
In 16 sind
die Signalverläufe
für das Schreiben
von Daten (Write) in den Botschaftsspeicher 300 des Kommunikationsbausteins 100 dargestellt.
Der Schreibvorgang läuft
ganz ähnlich
wie der Lesevorgang ab. Nachfolgend wird im wesentlichen nur auf
die Unterschiede zwischen Lese- und Schreibvorgang näher eingegangen.
Zu Beginn des Schreibvorgangs konfiguriert der Mikroprozessor 811 den
DMA-Controller 812 in einem Schritt 850. Anschließend konfiguriert
der Mikroprozessor 811 die Zustandsmaschine 800 in
einem Schritt 852, indem Konfigurationsparameter in das
Konfigurationsregister 802 geschrieben werden. Dann erhält die Zustandsmaschine 800 einen
Start-Befehl von dem Mikroprozessor 811 und beginnt daraufhin
mit dem eigentlichen Datentransfer.
-
Auch
für den
Schreibvorgang werden die äußere Schleife
für den
aktuell zu überragenden
Datenbuffer und die innere Schleife für das aktuell zu übertragende
Datenwort des aktuellen Datenbuffers durchlaufen. Im Gegensatz zum
Auslesen von Daten wird beim Schreiben erst der Eingangspufferspeicher 201 gefüllt (innere
Schleife) und dann das Kommando zum internen Abspeichern im Botschaftsspeicher 300 gegeben
(äußere Schleife).
-
Zunächst übermittelt
die Zustandsmaschine 800 ein Data-Ready-Signal 858 an den DMA-Controller 812,
um diesem zu signalisieren, dass sie für den Empfang des aktuellen
Datenworts von dem DMA-Controller 812 bereit ist. Dann überträgt der DMA-Controller 812 in
einem Schritt 862 das anstehende Datenwort an die Zustandsmaschine 800.
von dort wird das Datenwort dann in einem Schritt 864 an den
Eingangspuffer 201 des FlexRay-Kommunikationsbausteins 100 übermittelt.
-
Nach
dem Beenden der inneren Schleife wird dann als Teil der äußeren Schleife
folgendes ausgeführt.
Der Eingangspuffer 201 bzw. eine übergeordneten Steuereinheit
des FlexRay-Kommunikationsbausteins 100 erhält in einem
Schritt 866 Informationen und Anweisungen darüber, an
welcher Stelle des Botschaftsspeichers 300 das in dem Eingangspuffer 201 abgelegte
Datenwort gespeichert werden soll. Zu diesem Zweck werden geeignete
Informationen in einem oder mehreren der Konfigurationsregister 403, 404 abgelegt,
bspw. durch Setzen entsprechender Bits. Anschließend wird das Datenwort aus
dem Eingangspuffer 201 an der entsprechenden Stelle des
Botschaftsspeichers 300 abgelegt, von wo aus es dann alleine
oder zusammen mit anderen Datenworten aus dem Botschaftsspeicher 300 über die
FlexRay-Kommunikationsverbindung 101 übertragen wird.
-
Die
innere Schleife wird auf das nächste
Datenwort des ersten Datenbuffers inkrementiert, und die obigen
Schritte erneut durchlaufen bis das letzte Datenwort des ersten
Datenbuffers erfolgreich in den Eingangspuffer 201 geschrieben
worden ist. Anschließend
wird die äußere Schleife
auf den nächsten
zu übertragenden
Datenbuffer inkrementiert, und die obigen Schritte werden erneut
durchlaufen bis alle Datenworte des letzten zu schreibenden Datenbuffers
erfolgreich an den Kommunikationsbaustein 100 übertragen
worden sind. Das Schreiben eines bestimmten Datenbuffers kann bspw.
durch Aufruf einer entsprechenden Teilsequenz aus dem Sequenzspeicher 804 erfolgen.
Anschließend
teilt der DMA-Controller 812 dem Mikroprozessor 811 das Ende
der Datenübertragung
mit. Dies kann bspw. durch einen geeigneten Befehl (Data-Transmission-Ready)
oder durch einen Interrupt-Befehl erfolgen.
-
Zusammenfassend
kann gesagt werden: Die Erfindung betrifft nun im Rahmen des vorhergehend Beschriebenen
ein Verfahren und eine Vorrichtung zur Übertragung von Daten zwischen
einem Mikroprozessor (Host-CPU) und einer peripheren Einrichtung,
bspw. in Form eines Kommunikationscontrollers zur Kommunikation
insbesondere im FlexRay. Die periphere Einrichtung ist vorzugsweise
als ein FlexRay-Kommunikationscontroller 750 ausgebildet, der über eine
Verbindung 106 an eine FlexRay-Kommunikationsverbindung 101 angeschlossen
ist, die bspw. als ein FlexRay-Datenbus ausgebildet ist. Der Mikroprozessor 811 und
die periphere Einrichtung sind Teil eines Kommunikationsteilnehmers 900.
Für die
Datenübertragung
zwischen dem Mikroprozessor Host-CPU
und der peripheren Einrichtung 750 stehen in der Regel
nur begrenzte Ressourcen zur Verfügung, d.h. die Bandbreite ist
begrenzt. Das ist typischerweise bei der Verwendung einer seriellen Schnittstelle
der Fall.
-
Der
Vorteil der Programmierung beliebiger Sequenzen von Message-Buffern
in das Sequenz-RAM 804 in der Teilnehmerschnittstelle 107 bzw.
in dem F1exRay-Kommunikationsbaustein 100 besteht
unter anderem darin, dass der Zugriff schneller wird, weil die Kommandos
das Wissen über
die Anordnung der Daten, die Art der Zugriffe und die entsprechenden
Adressen in Form eines weiteren Zustandsautomaten aufweist. Auf
diese Weise können
die Anordnung der Daten, die Art der Zugriffe und/oder die entsprechenden
Adressen automatisch bereitgestellt werden, so dass diese nicht
mehr von der Host-CPU 811 geliefert und damit nicht mehr über die
Schnittstelle 107 bzw. detailliert über die Verbindungen 216 bis 218 übertragen
werden müssen. Des
weiteren kann auch die Zugriffsart (Lesen/Schreiben) schon fest
in diese Vorrichtung 107 eingebaut werden, wie bereits
erwähnt,
muss also ebenfalls nicht mehr übertragen
werden.
-
Anstelle
dessen werden nun einfach die vorgegebenen bzw. vorprogrammierten
Teilsequenzen bezüglich
der genannten Informationen über
die Datenübertragung
(z.B. Datenanordnung, Zugriffsart, und/oder Adressen) abgerufen
bzw. aktiviert und mit zusätzlichen
Werten ausgestattet. Durch den Aufruf einer oder mehrerer der Sequenzen
können
einfach und schnell mehrere Message-Buffer-Inhalte vom oder zum
Kommunikationsbaustein 100 übertragen werden.