-
TECHNISCHES GEBIET
-
Die Erfindung bezieht sich allgemein auf ein Verfahren zur Berechnung eines Arkustangens und spezieller auf die Vorverarbeitung und Nachverarbeitung von Daten für schnelle Arkustangensberechnungen.
-
HINTERGRUND
-
Fahrzeugcontroller müssen oftmals während der Steuerung verschiedener Fahrzeugsysteme einen Arkustangens berechnen. Beispielsweise muss ein Fahrzeugcontroller möglicherweise einen Arkustangens berechnen, um einen Elektromotor eines Hybridfahrzeugs korrekt zu steuern.
-
Ein Arkustangens kann nur über ein 45°-Segment eines 360°-Kreises berechnet werden. Dementsprechend muss jede x-Werteingabe und y-Werteingabe, die verwendet werden, um einen Arkustangenswert zu berechnen, von einem anfänglichen Oktanten (d. h. einem anfänglichen 45°-Segment) an das Segment des Kreises, das dem 45°-Segment entspricht, in dem der Arkustangens berechnet werden kann, angepasst werden. Nachdem der numerische Wert des Arkustangens berechnet wurde, muss er zurück in den anfänglichen Oktanten des Kreises angepasst werden.
-
ZUSAMMENFASSUNG
-
Es wird ein Verfahren zum Berechnen eines Arkustangens für einen Punkt bereitgestellt, der sich an einer Ebene durch einen y-Wert und einen x-Wert eines kartesischen Koordinatensystems befindet. Das Verfahren umfasst, dass ein y-Bit eines Index codiert wird, um ein Vorzeichen des y-Werts anzugeben, und ein x-Bit des Index codiert wird, um ein Vorzeichen des x-Werts anzugeben. Ein Vorzeichen-Bit eines binären Werts, der den y-Wert darstellt, wird entfernt, um einen bereinigten y-Wert zu definieren, und ein Vorzeichen-Bit eines binären Werts, der den x-Wert darstellt, wird entfernt, um einen bereinigten x-Wert zu definieren. Wenn der bereinigte x-Wert gleich dem bereinigten oder kleiner als der bereinigte y-Wert ist, wird ein Arkustangensberechnungseingangsargument berechnet, indem der bereinigte x-Wert durch den bereinigten y-Wert dividiert wird. Dann wird der Arkustangens des Eingangsarguments berechnet, um einen berechneten Arkustangensausgangswert zu definieren. Wenn der bereinigte x-Wert größer als der bereinigte y-Wert ist, wird der bereinigte x-Wert gegen den bereinigten y-Wert getauscht, um einen getauschten x-Wert zu definieren, und wird der bereinigte y-Wert gegen den bereinigten x-Wert getauscht, um einen getauschten y-Wert zu definieren. Es wird ein Tausch-Bit des Index codiert, um anzugeben, dass der bereinigte x-Wert und der bereinigte y-Wert getauscht wurden, um den getauschten x-Wert bzw. den getauschten y-Wert zu definieren. Wenn der bereinigte x-Wert größer als der bereinigte y-Wert ist, wird ein Arkustangensberechnungseingangsargument berechnet, indem der getauschte x-Wert durch den getauschten y-Wert dividiert wird. Dann wird der Arkustangens des Eingangsarguments berechnet, um einen berechneten Arkustangensausgangswert zu definieren. Es wird ein Segmentbasiswinkel aus einer Winkelanpassungstabelle basierend auf dem codierten x-Bit, dem codierten y-Bit und dem codierten Tausch-Bit des Index nachgeschlagen. Es wird ein numerisches Vorzeichen aus einem Umkehr-Bit extrahiert, welches in den extrahierten Segmentbasiswinkel codiert wird. Das numerische Vorzeichen des Umkehr-Bits von dem Segmentbasiswinkel wird auf den berechneten Arkustangensausgangswert angewandt, um einen korrigierten Arkustangenswert zu definieren, und das Umkehr-Bit des Segmentbasiswinkels wird bereinigt, um einen bereinigten Segmentbasiswinkel zu definieren. Der korrigierte Arkustangenswert wird zu dem bereinigten Segmentbasiswinkel addiert, um den Arkustangens des Punkts zu definieren.
-
Dementsprechend werden die drei Booleschen Bits, die in den Index codiert werden, d. h. das y-Bit, das x-Bit und das Tausch-Bit, verwendet, um einen codierten Wert von einer Nachschlagetabelle, d. h. der Winkelanpassungstabelle, abzurufen, welcher verwendet wird, um den berechneten numerischen Ausgang von der Arkustangensberechnung umzukehren und anzupassen. Dies minimiert die Vorverarbeitungs- und Nachverarbeitungszeit, die mit der Arkustangensberechnung in Verbindung steht, wodurch die Verarbeitungsgeschwindigkeit verbessert wird.
-
Die obigen Merkmale und Vorteile und andere Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung der geeignetsten Ausführungsformen zum Ausführen der Erfindung in Verbindung mit den begleitenden Zeichnungen leicht ersichtlich.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Graph, der die verschiedenen Oktanten eines Kreises an einem kartesischen Koordinatensystem zeigt.
-
2 ist ein Diagramm, das alle möglichen Werte für einen Segmentbasiswinkel und ihr jeweiliges 32-Bit-Gleitkommabinärspeicherformat zeigt.
-
3 ist ein Diagramm, das eine Winkelanpassungstabelle darstellt, um einen Index mit jedem der Oktanten des in 1 gezeigten Kreises in Beziehung zu bringen.
-
DETAILLIERTE BESCHREIBUNG
-
Fachleute werden erkennen, dass Begriffe wie beispielsweise ”oberhalb”, ”unterhalb”, ”aufwärts”, ”abwärts”, ”obere(r/s)”, ”untere(r/s)” etc. für die Figuren beschreibend verwendet werden und keine Einschränkungen des Schutzumfangs der Erfindung, wie er durch die beigefügten Ansprüche definiert ist, darstellen. Ferner kann die Erfindung hierin hinsichtlich funktionaler und/oder logischer Blockkomponenten und/oder verschiedener Verarbeitungsschritte beschrieben sein. Es sei angemerkt, dass derartige Blockkomponenten aus einer beliebigen Anzahl von Hardware-, Software- und/oder Firmwarekomponenten bestehen können, die ausgestaltet sind, um die spezifizierten Funktionen durchzuführen.
-
Bezug nehmend auf die Figuren, in denen in den verschiedenen Ansichten gleiche Bezugszeichen gleiche Teile angeben, wird ein Verfahren zum Berechnen eines Arkustangens für einen Punkt bereitgestellt. Das Verfahren kann durch einen Controller, wie beispielsweise, jedoch ohne Einschränkung, einen Computer oder ein Steuermodul, durchgeführt werden. Der Controller dient dazu, die verschiedenen Prozesse durchzuführen, die notwendig sind, um den Arkustangens gemäß dem nachstehend beschriebenen Verfahren zu berechnen. Der Controller umfasst die gesamte(n) Software, Hardware, Speicher, Prozessoren, Algorithmen, Codierung etc., die notwendig sind, um den Arkustangens wie nachstehend beschrieben zu berechnen.
-
Bezug nehmend auf 1 befindet sich der Punkt, für den der Arkustangens berechnet wird, an einer Ebene durch einen y-Wert und einen x-Wert eines kartesischen Koordinatensystems. In 1 ist eine x-Achse des kartesischen Koordinatensystems bei 20 gezeigt und ist eine y-Achse bei 22 gezeigt. Das kartesische Koordinatensystem ist in acht verschiedene Oktanten aufgeteilt. Jeder Oktant überspannt ein 45°-Segment. Ein erster Oktant ist allgemein bei 24 gezeigt, ein zweiter Oktant ist allgemein bei 26 gezeigt, ein dritter Oktant ist allgemein bei 28 gezeigt, ein vierter Oktant ist allgemein bei 30 gezeigt, ein fünfter Oktant ist allgemein bei 32 gezeigt, ein sechster Oktant ist allgemein bei 34 gezeigt, ein siebter Oktant ist allgemein bei 36 gezeigt und ein achter Oktant ist allgemein bei 38 gezeigt. Die Winkel des Koordinatensystems sind im Uhrzeigersinn aufsteigend gezeigt, wobei ein Null-Winkel als der Abschnitt der y-Achse, der über der x-Achse liegt, wie es auf der Seite zu sehen ist, definiert ist. Der erste Oktant erstreckt sich zwischen 0° und 45°. Der zweite Oktant erstreckt sich zwischen 45° und 90°. Der dritte Oktant erstreckt sich zwischen 90° und 135°. Der vierte Oktant erstreckt sich zwischen 135° und 180° (was auch als –180° dargestellt sein kann). Der fünfte Oktant erstreckt sich zwischen 180° und 225° (was auch als –135° dargestellt sein kann). Der sechste Oktant erstreckt sich zwischen 225° und 270° (was auch als –90° dargestellt sein kann). Der siebte Oktant erstreckt sich zwischen 270° und 315° (was auch als –45° dargestellt sein kann). Der achte Oktant erstreckt sich zwischen 315° und 0° (was auch als 360° dargestellt sein kann). Obwohl die verschiedenen Oktanten mit Graden beschrieben sind, sei angemerkt, dass die verschiedenen Oktanten alternativ im Bogenmaß beschrieben werden können. Ferner können die Oktanten auch mit Vorzeichen oder ohne Vorzeichen beschrieben werden. Dementsprechend können die verschiedenen Oktanten auf vier verschiedene Arten beschrieben werden: Grade mit Vorzeichen, Grade ohne Vorzeichen, Radianten mit Vorzeichen oder Radianten ohne Vorzeichen. 1 zeigt die verschiedenen Arten, auf die die Winkelposition der Oktanten beschrieben werden kann.
-
Ein erster Punkt 40 ist in dem ersten Oktanten gezeigt. Der Arkustangens des ersten Punkts 40 wird in Beispiel 1 nachstehend berechnet. Ein zweiter Punkt 42 ist in dem sechsten Oktanten gezeigt. Der Arkustangens des zweiten Punkts 42 wird in Beispiel 2 nachstehend berechnet.
-
Das Verfahren umfasst, dass ein Index in dem Speicher des Controllers festgelegt wird. Der Index ist ein 3-Bit-Binärwert, der verwendet wird, um eine Boolesche Information von drei verschiedenen Eingangsparametern (der y-Wert, der x-Wert und ein Tausch-Bit) zu speichern. Der Index wird später verwendet, um einen Wert von einer Nachschlagetabelle abzurufen, der verwendet wird, um einen berechneten Arkustangensausgangswert umzukehren und/oder anzupassen. Obwohl der Index nur 3 Bits verwendet, um die Boolesche Information der Eingangsparameter zu speichern, wird der Index in der Anzahl von Bits, die durch den Controller verwendet werden, codiert, wie beispielsweise, jedoch nicht eingeschränkt auf, ein 32-Bit-, IEEE-754-Standardgleitkommazahlenformat, wie es hierin gezeigt und beschrieben ist. Diese drei Bits des Index umfassen ein y-Bit, ein x-Bit und das Tausch-Bit. Beispielsweise kann der Index durch syx00 dargestellt werden, wobei ”s” das Tausch-Bit darstellt, ”y” das y-Bit darstellt und ”x” das x-Bit darstellt. Das x-Bit, das y-Bit und das Tausch-Bit werden zur Verwendung als Tabellennachschlageindex für eine Tabelle, die 32-Bit-Daten enthält, vorab verschoben. Vorzugsweise und wie oben dargestellt werden das x-Bit, das y-Bit und das Tausch-Bit in ein zweites Bit, ein drittes Bit bzw. ein viertes Bit des Index codiert.
-
Wie es bekannt ist, weist eine Gleitkommazahl mit einfacher Genauigkeit eine Größe von 32 Bits auf. In den meisten Prozessoren beträgt die Grundeinheit des Speichers 8 Bits (1 Byte). In den meisten Prozessoren, die ein 32-Bit-System verwenden, nimmt der 32-Bit-Wert 4 Byte Speicher ein, so dass, um auf eine zusammenhängende Gruppe einer 32-Bit-Zahl zu zeigen, die Adresse in Schritten von 4 inkrementiert werden muss. Das Vorabverschieben des Index um zwei Bits nach links multipliziert ihn mit 4. Da die Bits einzeln in den Index eingesetzt werden, ist das Verschieben frei, d. h., erfordert es keine Verarbeitungszeit. Wenn der Index rechtsbündig wäre, d. h. nicht vorab verschoben werden würde, müsste der Prozessor/Controller den Index vor dem Verwenden des Index bei einer Bezugnahme auf eine Nachschlagetabelle um zwei Bits nach links verschieben. Dementsprechend wird durch das Vorabverschieben des Index die Geschwindigkeit des Nachschlagens erhöht.
-
Um den Arkustangens für einen beliebigen gegebenen Punkt zu berechnen, wird das Vorzeichen des y-Werts in das y-Bit des Index codiert, welcher verwendet wird, um das Vorzeichen des y-Werts anzugeben. Das Vorzeichen ist entweder ein positives (+) Vorzeichen oder ein negatives (–) Vorzeichen. Wie es allgemein bekannt ist, wird ein positives Vorzeichen im Binärcode allgemein durch eine ”0” dargestellt und wird ein negatives Vorzeichen im Binärcode allgemein durch eine ”1” dargestellt. Dementsprechend kann, wenn der y-Wert ein negatives Vorzeichen umfasst, d. h. wenn der y-Wert eine negative Zahl ist, das y-Bit mit einer ”1” codiert werden, wohingegen, wenn der y-Wert eine positive Zahl umfasst, d. h. wenn der y-Wert eine positive Zahl ist, das y-Bit mit einer ”0” codiert werden kann. Das Vorzeichen des x-Werts wird in das x-Bit des index codiert, welches verwendet wird, um das Vorzeichen des x-Werts anzugeben. Das Vorzeichen ist entweder ein positives (+) Vorzeichen oder ein negatives (–) Vorzeichen. Dementsprechend kann, wenn der x-Wert ein negatives Vorzeichen umfasst, d. h. wenn der x-Wert eine negative Zahl ist, das x-Bit mit einer ”1” codiert werden, wohingegen, wenn der x-Wert eine positive Zahl umfasst, d. h. wenn der x-Wert eine positive Zahl ist, das x-Bit mit einer ”0” codiert werden kann.
-
Sobald die Vorzeichen des y-Werts und des x-Werts des Punkts in das y-Bit und das x-Bit des Index codiert wurden, werden die Vorzeichen von dem x-Wert und dem y-Wert bereinigt oder maskiert, um einen bereinigten x-Wert bzw. einen bereinigten y-Wert zu definieren. Der bereinigte x-Wert und der bereinigte y-Wert definieren effektiv einen Absolutwert des x-Werts bzw. des y-Werts. Die Vorzeichen des y-Werts und des x-Werts werden unter Verwendung von ganzzahligen Operationen anstatt von Gleitkommaoperationen bereinigt oder maskiert. Ganzzahlige Operationen umfassen mathematische und logische Operationen, die an ganzen Zahlen durchgeführt werden, wie es Fachleute verstehen werden. Der x-Wert und der y-Wert können in dem Speicher des Controllers in einem 32-Bit-Binärgleitkommaformat gespeichert werden und durch eine 32-Bit-Gleitkommazahl dargestellt werden. Dementsprechend kann das Bereinigen oder Maskieren des Vorzeichens von dem x-Wert und des Vorzeichens von dem y-Wert, um den Absolutwert des x-Werts und den Absolutwert des y-Werts zu definieren, das Bereinigen eines Vorzeichen-Bits in der 32-Bit-Gleitkommazahl des x-Werts bzw. des y-Werts umfassen, um den y-Wert und den x-Wert als positive Zahl zu definieren. Wie es allgemein bekannt ist, wird das Vorzeichen einer Zahl, die durch eine 32-Bit-Gleitkommazahl dargestellt ist, durch das Vorzeichen-Bit angegeben, das das höchstwertige Bit, typischerweise ganz links, der 32-Bit-Gleitkommazahl ist. Wie es allgemein bekannt ist, wird ein positives Vorzeichen im Binärcode allgemein durch eine ”0” dargestellt und wird ein negatives Vorzeichen im Binärcode allgemein durch eine ”1” dargestellt. Somit umfasst das Bereinigen des Vorzeichen-Bits das Ändern des Vorzeichen-Bits auf ”0”.
-
Nachdem das Vorzeichen des y-Werts und des x-Werts bereinigt wurden, um den bereinigten x-Wert bzw. den bereinigten y-Wert zu definieren, was effektiv den Absolutwert des x-Werts bzw. des y-Werts definiert, wird der bereinigte x-Wert (der effektive Absolutwert des x-Werts) mit dem bereinigten y-Wert (dem effektiven Absolutwert des y-Werts) verglichen, um zu ermitteln, ob der bereinigte x-Wert größer als der bereinigte y-Wert ist, oder ob der bereinigte x-Wert gleich dem bereinigten oder kleiner als der bereinigte y-Wert ist. Der bereinigte x-Wert wird mit dem bereinigten y-Wert unter Verwendung von ganzzahligen Operationen anstatt von Gleitkommaoperationen verglichen. Dementsprechend wird der bereinigte x-Wert mit dem bereinigten y-Wert unter Verwendung eines ganzzahligen Vergleichs anstatt eines Gleitkommavergleichs verglichen. Da der Arkustangens eines Winkels aus einem Quotienten eines x-Werts dividiert durch einen y-Wert berechnet wird, muss der y-Wert, der der Nenner ist, eine Zahl, die nicht Null ist, umfassen. Daher wird, wenn der bereinigte y-Wert (der effektive Absolutwert des y-Werts) gleich Null ist, ein Wert gleich Null als der berechnete Arkustangensausgangswert des Punkts zurückgegeben. Wenn der bereinigte x-Wert (der effektive Absolutwert des x-Werts) gleich dem bereinigten oder kleiner als der bereinigte y-Wert (der effektive Absolutwert des y-Werts) ist, wird ein Arkustangensberechnungseingangsargument berechnet, indem der bereinigte x-Wert durch den bereinigten y-Wert dividiert wird. Der Arkustangens des Eingangsarguments wird dann berechnet, um den berechneten Arkustangensausgangswert zu definieren. Somit wird der Arkustangens des Quotienten des bereinigten x-Werts dividiert durch den bereinigten y-Wert berechnet, um den berechneten Arkustangensausgangswert zu definieren.
-
Wenn der bereinigte x-Wert (der effektive Absolutwert des x-Werts) größer als der bereinigte y-Wert (der effektive Absolutwert des y-Werts) ist, wird der bereinigte x-Wert gegen den bereinigten y-Wert getauscht, um einen getauschten x-Wert zu definieren, und der bereinigte y-Wert wird gegen den bereinigten x-Wert getauscht, um einen getauschten y-Wert zu definieren. Dementsprechend ist der getauschte x-Wert gleich dem bereinigten y-Wert (dem effektiven Absolutwert des y-Werts) und ist der getauschte y-Wert gleich dem bereinigten x-Wert (dem effektiven Absolutwert des x-Werts). Wenn der Punkt in den zweiten Oktanten 26, den vierten Oktanten 30, den sechsten Oktanten 34 oder den achten Oktanten 38 fällt, werden die bereinigten Werte des x-Werts und des y-Werts getauscht.
-
Wenn der bereinigte x-Wert und der bereinigte y-Wert getauscht werden, wird das Tausch-Bit des Index codiert, um anzugeben, dass der bereinigte x-Wert und der bereinigte y-Wert getauscht wurden, um den getauschten x-Wert bzw. den getauschten y-Wert zu definieren. Bei der beispielhaften Ausführungsform wird das Tausch-Bit mit einer ”0” codiert, um anzugeben, dass der bereinigte x-Wert und der bereinigte y-Wert nicht getauscht wurden. Im Gegensatz dazu wird bei der beispielhaften Ausführungsform das Tausch-Bit mit einer ”1” codiert, um anzugeben, dass der bereinigte x-Wert und der bereinigte y-Wert getauscht wurden. Wenn beispielsweise der Punkt einen x-Wert gleich –4 und einen y-Wert gleich –3 umfasst, ist der bereinigte x-Wert (4) größer als der bereinigte y-Wert (3) und werden die bereinigten Werte des x-Werts und des y-Werts getauscht. Somit wird das Tausch-Bit mit ”1” codiert. Da sowohl der x-Wert als auch der y-Wert ein negatives Vorzeichen umfassen, werden sowohl das x-Bit als auch das y-Bit mit ”1” codiert. Dementsprechend wird bei der beispielhaften Ausführungsform der codierte Index für einen Punkt mit einem x-Wert gleich –4 und einem y-Wert gleich –3 in Binärform in dem vorab verschobenen Index durch 11100 dargestellt. Wenn der bereinigte x-Wert größer als der bereinigte y-Wert ist, und nachdem das Tausch-Bit in den Index codiert wurde, wird ein Arkustangensberechnungseingangsargument berechnet, indem der getauschte x-Wert durch den getauschten y-Wert dividiert wird. Dann wird der Arkustangens des Eingangsarguments berechnet, um den berechneten Arkustangensausgangswert zu definieren. Somit wird der Arkustangens des Quotienten des getauschten x-Werts dividiert durch den getauschten y-Wert berechnet, um den berechneten Arkustangensausgangswert zu definieren.
-
Bei der vorstehenden beispielhaften Ausführungsform wird das Tausch-Bit mit einer ”1” codiert, um anzugeben, dass der bereinigte x-Wert und der bereinigte y-Wert getauscht wurden, und wird es mit einer ”0” codiert, um anzugeben, dass der bereinigte x-Wert und der bereinigte y-Wert nicht getauscht wurden. Es sei jedoch angemerkt, dass die Polarität des Tausch-Bits umgekehrt werden kann, wobei das Tausch-Bit mit einer ”0” codiert wird, um anzugeben, dass der bereinigte x-Wert und der bereinigte y-Wert getauscht wurden, und mit einer ”1” codiert wird, um anzugeben, dass der bereinigte x-Wert und der bereinigte y-Wert nicht getauscht wurden. Wenn die Polarität des Tausch-Bits bei der oben beschriebenen beispielhaften Ausführungsform umgekehrt wird, ist zu verstehen, dass die verschiedenen nachstehend ausführlich beschriebenen Nachschlagetabellen dementsprechend umgeordnet werden müssen.
-
Der codierte Index, der die codierten Werte für das x-Bit, das y-Bit und das Tausch-Bit umfasst, wird verwendet, um einen Segmentbasiswinkel aus einer Winkelanpassungstabelle nachzuschlagen. Insbesondere durch das Kombinieren aller Informationen, die für die Nachverarbeitung des berechneten Arkustangensausgangswerts erforderlich sind, zu einem einzelnen Element der Winkelanpassungstabelle ist nur ein Zugriff auf eine einzelne Nachschlagetabelle (die Winkelanpassungstabelle) erforderlich, um den Arkustangens des Punkts zu berechnen, wodurch die Speichernutzung reduziert wird und die Verarbeitungsgeschwindigkeit erhöht wird.
-
Der Segmentbasiswinkel kann in dem Speicher des Controllers in einer 32-Bit-Binärgleitkommaform gespeichert und durch eine 32-Bit-Gleitkommazahl dargestellt werden. Bezug nehmend auf 2 werden alle möglichen Werte des Segmentbasiswinkels, die in der Winkelanpassungstabelle verwendet werden können, in Spalte 44 bereitgestellt und wird die 32-Bit-Gleitkommazahl für jeden Segmentbasiswinkel in Spalte 46 bereitgestellt. Spalte 48 von 3 zeigt eine hexadezimale Darstellung der Gleitkommazahl für jeden möglichen Wert des Segmentbasiswinkels.
-
Vorzugsweise wird das Umkehr-Bit in Bit 12 oder Bit 13 der 32-Bit-Gleitkommazahl codiert, die den Segmentbasiswinkel darstellt. Bit 12 ist in Spalte 50 von 2 gezeigt, und Bit 13 ist in Spalte 52 von 2 gezeigt. 2 zeigt, dass Bit 12 und Bit 13 für alle möglichen Werte des Segmentbasiswinkels beide Null sind. Dementsprechend wird Bit 12 oder Bit 13 verwendet, um das Umkehr-Bit in die 32-Bit-Gleitkommazahl zu codieren, die den Segmentbasiswinkel darstellt, da Bit 12 und Bit 13 ansonsten für alle möglichen Werte des Segmentbasiswinkels immer Null sind.
-
Die Winkelanpassungstabelle der beispielhaften Ausführungsform ist in 3 gezeigt. Die in 3 gezeigte Winkelanpassungstabelle ist zur Verwendung mit Graden ohne Vorzeichen ausgestaltet. Es sei angemerkt, dass, wenn die Arkustangensberechnungen unter Verwendung einer anderen Winkeleinheit durchgeführt werden würden, wie beispielsweise mit Graden mit Vorzeichen, Radianten ohne Vorzeichen oder Radianten mit Vorzeichen, die Winkelanpassungstabelle anders ausgestaltet wäre, um die gewünschte Winkeleinheit zu verwenden.
-
In 3 listet Spalte 56 alle 8 möglichen Kombinationen für das Tausch-Bit, das y-Bit und das x-Bit auf, wobei s das Tausch-Bit darstellt, y das y-Bit darstellt und x das x-Bit darstellt. Der Segmentbasiswinkel für jede mögliche codierte Kombination des Index wird in Spalte 58 bereitgestellt. Jede Zeile von Spalte 58 umfasst eine Gleitkommazahl oder eine Gleitkommazahl ver”ODER”t mit einer ganzen Zahl, was ein Umkehr-Bit setzt (nachstehend ausführlicher beschrieben). In Spalte 60 wird ein Ausgangswinkelanpassungsvorzeichenwert für jede mögliche codierte Kombination des Index bereitgestellt. Der spezifische Oktant für jede mögliche codierte Kombination des Index wird in Spalte 62 bereitgestellt.
-
Der Segmentbasiswinkel und der codierte Ausgangswinkelanpassungsvorzeichenwert für jede mögliche codierte Kombination des Index werden in Spalte 64 in Hexadezimalform bereitgestellt. Der Segmentbasiswinkel und der codierte Ausgangswinkelanpassungsvorzeichenwert für jede mögliche codierte Kombination des Index werden in Spalte 66 in 32-Bit-Binärgleitkommaform bereitgestellt. Der Segmentbasiswinkel und der codierte Ausgangswinkelanpassungsvorzeichenwert für jede mögliche codierte Kombination des Index werden in Spalte 68 in Gleitkommadezimalform bereitgestellt.
-
Sobald der Segmentbasiswinkel aus der Winkelanpassungstabelle auf der Grundlage der spezifischen Codierung des Index nachgeschlagen wird, wird ein numerisches Vorzeichen für den berechneten Arkustangensausgangswert aus einem in dem Segmentbasiswinkel codierten Umkehr-Bit extrahiert. Das numerische Vorzeichen kann entweder ein positives (+) Vorzeichen für eine positive Zahl oder ein negatives (–) Vorzeichen für eine negative Zahl umfassen. Wie es allgemein bekannt ist, wird ein positives Vorzeichen allgemein in eine 32-Bit-Gleitkommazahl als ”0” codiert und wird ein negatives Vorzeichen allgemein in eine 32-Bit-Gleitkommazahl als ”1” codiert. Dementsprechend kann das Umkehr-Bit mit einer ”0” für ein positives Vorzeichen oder mit einer ”1” für ein negatives Vorzeichen codiert werden. Wie oben erwähnt, wird das Umkehr-Bit in Bit 12 oder Bit 13 der 32-Bit-Gleitkommazahl codiert, die den Segmentbasiswinkel darstellt, da Bit 12 und Bit 13 ansonsten für alle Werte des Segmentbasiswinkels immer Null sind [engl.: ”all”]. Bit 12 ist in Spalte 70 von 3 gezeigt, und Bit 13 ist in Spalte 72 von 3 gezeigt. Wie es in 3 gezeigt ist, wird Bit 12 verwendet, um das Umkehr-Bit in die 32-Bit-Gleitkommazahl zu codieren, die den Segmentbasiswinkel darstellt.
-
Das numerische Vorzeichen, das aus dem Umkehr-Bit extrahiert wird, wird auf den berechneten Arkustangensausgangswert, der oben berechnet wurde, angewandt, um einen korrigierten Arkustangenswert zu definieren. Dementsprechend kann der korrigierte Arkustangenswert entweder eine negative Zahl oder eine positive Zahl umfassen. Das numerische Vorzeichen wird auf den berechneten Arkustangensausgangswert unter Verwendung von ganzzahligen Operationen anstatt von Gleitkommaoperationen angewandt. Das Umkehr-Bit des Segmentbasiswinkels wird dann maskiert oder bereinigt, um einen bereinigten Segmentbasiswinkel zu definieren. Der bereinigte Segmentbasiswinkel ist der wahre oder tatsächliche Wert des Segmentbasiswinkels. Dementsprechend kann der bereinigte Segmentbasiswinkel entweder eine positive Zahl oder eine negative Zahl umfassen.
-
Das Bereinigen des Umkehr-Bits des Segmentbasiswinkels zum Definieren des bereinigten Segmentbasiswinkels umfasst das Bereinigen des Umkehr-Bits in der 32-Bit-Gleitkommazahl, die den Segmentbasiswinkel darstellt. Das Umkehr-Bit wird unter Verwendung einer Basis-Ganzzahl-”Bereinigungs”-Operation bereinigt, wie es Fachleute verstehen werden.
-
Der korrigierte Arkustangenswert wird dann zu dem bereinigten Segmentbasiswinkel (d. h. dem wahren oder tatsächlichen Wert des Segmentbasiswinkels) addiert, um den Arkustangens des Punkts zu definieren. Es sei angemerkt, dass der korrigierte Arkustangenswert entweder eine positive oder eine negative Zahl umfassen kann, und dass der bereinigte Segmentbasiswinkel auch entweder eine positive oder eine negative Zahl umfassen kann. Dementsprechend kann das Addieren des korrigierten Arkustangenswerts zu dem bereinigten Segmentbasiswinkel das Addieren einer positiven Zahl zu einer positiven Zahl, einer negativen Zahl zu einer positiven Zahl oder einer negativen Zahl zu einer negativen Zahl umfassen.
-
Der oben beschriebene Prozess entfernt alle Zweige von der Vorverarbeitung und der Nachverarbeitung der Eingangsdaten, die verwendet werden, um den Arkustangens des Punkts zu berechnen. Wie es Fachleute verstehen werden, ist ein Zweig eine Anweisung in einem Computerprogramm, die bei einer Ausführung durch den Controller bewirken kann, dass der Controller mit einer Ausführung einer anderen Anweisungssequenz beginnt. Jedes Mal, wenn der lineare Fluss des Prozessors durch einen Zweig unterbrochen wird, verlangsamt sich der Prozessor. Das oben beschriebene Verfahren entfernt alle Zweige von der Vorverarbeitung und der Nachverarbeitung der Eingangsdaten, wodurch die zum Berechnen des Arkustangens des Punkts erforderliche Geschwindigkeit erhöht wird.
-
Beispiel 1
-
Der Prozess zum Berechnen des Arkustangens für den ersten Punkt 40 wird hierin nachstehend beschrieben. Der erste Punkt 40 umfasst einen y-Wert 80, der gleich 4 ist, und einen x-Wert 82, der gleich 3 ist. Da sowohl der y-Wert 80 als auch der x-Wert 82 positiv sind, werden sowohl das y-Bit als auch das x-Bit des Index mit einer ”0” codiert. Die Vorzeichen-Bits der 32-Bit-Gleitkommazahlen, die den x-Wert bzw. den y-Wert darstellen, werden dann maskiert oder bereinigt, um den bereinigten x-Wert bzw. den bereinigten y-Wert darzustellen. Wie oben erwähnt, definiert der bereinigte x-Wert effektiv den Absolutwert des x-Werts und definiert der bereinigte y-Wert effektiv den Absolutwert des y-Werts. Der bereinigte x-Wert ist gleich 3, und der bereinigte y-Wert ist gleich 4. Da der bereinigte x-Wert kleiner als der bereinigte y-Wert ist, werden der bereinigte x-Wert und der bereinigte y-Wert nicht getauscht, und das Tausch-Bit wird in den Index mit einem Wert von ”0” codiert. Dementsprechend wird das Tausch-Bit mit einer ”0” codiert, wird das y-Bit mit einer ”0” codiert und wird das x-Bit mit einer ”0” codiert. Daher kann der verschobene Index durch einen binären Wert mit 00000 dargestellt werden. Der Arkustangens des Quotienten des bereinigten x-Werts dividiert durch den bereinigten y-Wert wird dann berechnet, um den berechneten Arkustangensausgangswert zu definieren. Genauer gesagt wird ein Arkustangensberechnungseingangsargument berechnet, indem der bereinigte x-Wert durch den bereinigten y-Wert dividiert wird. Dann wird der Arkustangens des Eingangsarguments, d. h. der Quotient des bereinigten x-Werts dividiert durch den bereinigten y-Wert, berechnet, um den berechneten Arkustangensausgangswert zu definieren. Dementsprechend ist das Arkustangensberechnungseingangsargument gleich dem Quotienten von 3 dividiert durch 4. Der berechnete Arkustangensausgangswert ist gleich dem Arkustangens des [engl.: ”if”] Eingangswerts, d. h. der Arkustangens des Quotienten von 3 dividiert durch 4 (arctan 3/4), was gleich 36,87° ist. Bezug nehmend auf 3 wird der Segmentbasiswinkel für den codierten Index von der Winkelanpassungstabelle abgerufen. Der Segmentbasiswinkel für den Index, wobei das Tausch-Bit als ”0” definiert ist, das y-Bit als ”0” definiert ist und das x-Bit als ”0” definiert ist, wird in Zeile 84 von 3 bereitgestellt und umfasst einen Wert von 0°. Die 32-Bit-Gleitkommazahl für den Segmentbasiswinkel mit einem Wert von 0° wird in Spalte 66, Zeile 84 von 3 bereitgestellt. Spalte 70 von 3 stellt das Umkehr-Bit für den Segmentbasiswinkel bereit, das eine Codierung von ”0” umfasst, was ein positives Vorzeichen angibt. Das Umkehr-Bit wird dann bereinigt, um den bereinigten Segmentbasiswinkel zu definieren. Wie oben erwähnt definiert der bereinigte Segmentbasiswinkel den tatsächlichen oder wahren Wert des Segmentbasiswinkels, der entweder eine negative oder eine positive Zahl sein kann. Da das Umkehr-Bit bereits mit ”0” codiert wurde, was ein positives Vorzeichen angibt, wird das Umkehr-Bit bei diesem Beispiel nicht geändert und ist der bereinigte Segmentbasiswinkel gleich 0°. Das Umkehr-Bit, das aus dem Segmentbasiswinkel extrahiert wird (bei diesem Beispiel ein positives Vorzeichen), wird dann auf den berechneten Arkustangensausgangswert angewandt, um den korrigierten Arkustangenswert zu definieren. Wie oben erwähnt ist der berechnete Arkustangensausgangswert gleich 36,87° und ist das aus dem Segmentbasiswinkel extrahierte Umkehr-Bit positiv, und somit ist der korrigierte Arkustangenswert gleich +36,87°. Der korrigierte Arkustangenswert (+36,87°) wird dann zu dem bereinigten Segmentbasiswinkel (0°) addiert, um den Arkustangens des ersten Punkts 40 zu definieren. Dementsprechend wird der Arkustangens des ersten Punkts 40 al 36,87° und wie durch Winkel 86 angegeben, gezeigt in 1, berechnet.
-
Beispiel 2
-
Der Prozess zum Berechnen des Arkustangens für den zweiten Punkt 42 wird hierin nachstehend beschrieben. Der zweite Punkt 42 umfasst einen x-Wert 88, der gleich –4 ist, und einen y-Wert 90, der gleich –3 ist. Da sowohl der x-Wert 88 als auch der y-Wert 90 negativ sind, werden sowohl das x-Bit als auch das y-Bit des Index mit einer ”1” codiert. Die Vorzeichen-Bits der 32-Bit-Gleitkommazahlen, die den x-Wert 88 bzw. den y-Wert 90 darstellen, werden dann bereinigt, um den bereinigten x-Wert bzw. den bereinigten y-Wert zu definieren. Wie oben erwähnt, definieren der bereinigte x-Wert und der bereinigte y-Wert effektiv den Absolutwert des x-Werts bzw. des y-Werts. Der bereinigte x-Wert ist gleich 4, und der bereinigte y-Wert ist gleich 3. Da der bereinigte x-Wert größer als der bereinigte y-Wert ist (4 > 3), werden der bereinigte x-Wert und der bereinigte y-Wert getauscht, um den getauschten x-Wert und den getauschten y-Wert zu definieren. Somit ist der getauschte x-Wert gleich dem bereinigten y-Wert (getauschter x-Wert = 3), und ist der getauschte y-Wert gleich dem bereinigten x-Wert (getauschter y-Wert gleich 4). Da der bereinigte x-Wert und der bereinigte y-Wert getauscht werden, wird das Tausch-Bit in den Index mit einem Wert von ”1” codiert. Dementsprechend wird das Tausch-Bit mit einer ”1” codiert, wird das y-Bit mit einer ”1” codiert und wird das x-Bit mit einer ”1” codiert. Daher kann der verschobene Index durch einen binären Wert mit 11100 dargestellt werden. Dann wird der Arkustangens des Quotienten des getauschten x-Werts dividiert durch den getauschten y-Wert berechnet, um den berechneten Arkustangensausgangswert zu definieren. Genauer gesagt wird ein Arkustangensberechnungseingangsargument berechnet, indem der getauschte x-Wert durch den getauschten y-Wert dividiert wird. Dann wird der Arkustangens des Eingangsarguments, d. h. der Quotient des getauschten x-Werts dividiert durch den getauschten y-Wert, berechnet, um den berechneten Arkustangensausgangswert zu definieren. Dementsprechend ist das Arkustangensberechnungseingangsargument gleich dem Quotienten von 3 dividiert durch 4. Der berechnete Arkustangensausgangswert ist gleich dem Arkustangens des Eingangswerts, d. h. der Arkustangens des Quotienten von 3 dividiert durch 4 (arctan 3/4), was gleich 36,87° ist. Bezug nehmend auf 3 wird der Segmentbasiswinkel für den codierten Index von der Winkelanpassungstabelle abgerufen. Der Segmentbasiswinkel für den Index, wobei das Tausch-Bit mit ”1” definiert ist, das y-Bit mit ”1” definiert ist und das x-Bit mit ”1” definiert ist, wird in Zeile 92 von 3 bereitgestellt und umfasst einen Wert von ”270,0|0x1000”, ”0x43871000” in ganzzahliger Form oder ”270,125” in Gleitkommazahlform. Die 32-Bit-Gleitkommazahl für den Segmentbasiswinkel mit einem Wert von 0x43871000, was gleich 270,125 ist, wird in Spalte 66, Zeile 92 von 3 bereitgestellt. Spalte 70 von 3 stellt das Umkehr-Bit für den Segmentbasiswinkel bereit, das eine Codierung von ”1” umfasst, was ein negatives Vorzeichen angibt. Das Umkehr-Bit wird dann bereinigt, um den bereinigten Segmentbasiswinkel zu definieren, der der tatsächliche oder wahre Wert des Segmentbasiswinkels ist. Da das Umkehr-Bit mit ”1” codiert wurde, was ein negatives Vorzeichen angibt, wird das Umkehr-Bit bereinigt, um einen Wert von ”0” zu definieren, wodurch der Segmentbasiswinkel erneut mit seinem wahren oder tatsächlichen Wert von 270° gespeichert wird.
-
Das negative Vorzeichen, das durch das Umkehr-Bit angegeben wird, welches aus dem Segmentbasiswinkel extrahiert wurde, wird dann auf den berechneten Arkustangensausgangswert angewandt, um den korrigierten Arkustangenswert zu definieren. Wie oben erwähnt ist der berechnete Arkustangensausgangswert gleich 36,87° und ist das aus dem Segmentbasiswinkel extrahierte Umkehr-Bit negativ, so dass der korrigierte Arkustangenswert gleich –36,87° ist. Der korrigierte Arkustangenswert (–36,87°) wird dann zu dem bereinigten Segmentbasiswinkel (270°) addiert, um den Arkustangens des zweiten Punkts 42 zu definieren. Dementsprechend wird der Arkustangens des zweiten Punkts 42 mit 233,13° berechnet, wie es durch Winkel 94, gezeigt in 1, angegeben ist.
-
Die detaillierte Beschreibung und die Zeichnungen oder Figuren unterstützen und beschreiben die Erfindung, der Schutzumfang der Erfindung ist jedoch lediglich durch die Ansprüche definiert. Während einige der geeignetsten Ausführungsformen und andere Ausführungsformen zum Ausführen der beanspruchten Erfindung ausführlich beschrieben wurden, gibt es verschiedene alternative Entwürfe und Ausführungsformen zum Ausführen der Erfindung, die in den beigefügten Ansprüchen definiert ist.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- IEEE-754-Standardgleitkommazahlenformat [0014]