Thursday 22 June 2017

Moving Average Filter Hardware


Die Wissenschaftler und Ingenieure Leitfaden zur digitalen Signalverarbeitung Von Steven W. Smith, Ph. D. Kapitel 4: DSP Software Ausführungsgeschwindigkeit: Hardware Rechenleistung steigt so schnell, jedes Buch über das Thema wird veraltet sein, bevor es veröffentlicht wird. Es ist ein Autoren-Albtraum Der ursprüngliche IBM-PC wurde 1981 eingeführt und basiert auf dem 8088-Mikroprozessor mit einem 4,77-MHz-Takt und einem 8-Bit-Datenbus. Darauf folgte eine neue Generation von Personal Computern, die alle 3-4 Jahre eingeführt wurden: 8088 rarr 80286 8594 80386 8594 80486 8594 80586 (Pentium). Jedes dieser neuen Systeme erhöhte die Rechengeschwindigkeit um einen Faktor von etwa fünf über die bisherige Technologie. Bis 1996 hatte sich die Taktrate auf 200 MHz erhöht und der Datenbus auf 32 Bits. Mit anderen Verbesserungen führte dies zu einer Erhöhung der Rechenleistung von fast eintausend in nur 15 Jahren Sie sollten einen weiteren Faktor von tausend in den nächsten 15 Jahren erwarten. Der einzige Weg, um aktuelle Informationen in diesem sich schnell verändernden Bereich zu erhalten, ist direkt von den Herstellern: Anzeigen, Spezifikationsblätter, Preislisten usw. Vergessen Sie Bücher für Leistungsdaten, schauen Sie in Zeitschriften und Ihre Tageszeitung. Erwarten Sie, dass die rohe Rechengeschwindigkeit mehr als zwei Jahre verdoppeln wird. Lernen über den aktuellen Zustand der Computer-Power ist einfach nicht genug, müssen Sie verstehen und verfolgen, wie es sich entwickelt. In diesem Sinne können wir in einen Überblick über die Beschränkung der Ausführungsgeschwindigkeit durch Computerhardware springen. Da Computer aus vielen Subsystemen zusammengesetzt sind, hängt die Zeit, die zur Ausführung einer bestimmten Aufgabe erforderlich ist, von zwei Primärfaktoren ab: (1) der Geschwindigkeit der einzelnen Subsysteme und (2) der Zeit, die benötigt wird, um Daten zwischen diesen Blöcken zu übertragen. Abbildung 4-5 zeigt ein vereinfachtes Diagramm der wichtigsten Geschwindigkeitsbegrenzungskomponenten in einem typischen Personalcomputer. Die zentrale Verarbeitungseinheit (CPU) ist das Herz des Systems. Wie bereits beschrieben, besteht er aus einem Dutzend oder so Registern, die jeweils 32 Bits (in der heutigen Generation Personalcomputer) halten können. Auch in der CPU enthalten ist die digitale Elektronik, die für rudimentäre Operationen benötigt wird, wie z. B. bewegte Bits um und Fixpunkt-Arithmetik. Mehr beteiligte Mathematik wird durch die Übertragung der Daten auf eine spezielle Hardware-Schaltung namens Mathematik-Coprozessor (auch als Arithmetik-Logik-Einheit oder ALU genannt) behandelt. Der Mathematik-Coprozessor kann in demselben Chip wie die CPU enthalten sein, oder es kann ein separates elektronisches Gerät sein. Beispielsweise würde die Hinzufügung von zwei Gleitkommazahlen die CPU benötigen, um 8 Bytes (4 für jede Nummer) an den Mathematik-Coprozessor zu übertragen, und mehrere Bytes, die beschreiben, was mit den Daten zu tun ist. Nach einer kurzen Rechenzeit würde der Mathematik-Coprozessor vier Bytes zurück an die CPU zurückgeben, die die Gleitkommazahl enthält, die die Summe ist. Die preiswertesten Computersysteme haben keinen Mathematik-Coprozessor oder bieten es nur als Option. Zum Beispiel hat der 80486DX Mikroprozessor einen internen Mathematik-Coprozessor, während der 80486SX nicht. Diese Systeme mit niedrigerer Leistung ersetzen Hardware mit Software. Jede der mathematischen Funktionen ist in elementare binäre Operationen unterteilt, die direkt in der CPU behandelt werden können. Während dies das gleiche Ergebnis liefert, ist die Ausführungszeit viel langsamer, sagen wir, ein Faktor von 10 bis 20. Die meisten Personal Computer-Software kann mit oder ohne Mathe-Coprozessor verwendet werden. Dies wird erreicht, indem der Compiler einen Maschinencode erzeugt, um beide Fälle zu behandeln, die alle im abschließenden ausführbaren Programm gespeichert sind. Wenn ein Mathe-Coprozessor auf dem jeweiligen verwendeten Computer vorhanden ist, wird ein Abschnitt des Codes ausgeführt. Wenn ein Mathematik-Coprozessor nicht vorhanden ist, wird der andere Abschnitt des Codes verwendet. Der Compiler kann auch gerichtet werden, um Code für nur eine dieser Situationen zu generieren. Zum Beispiel finden Sie gelegentlich ein Programm, das erfordert, dass ein Mathe-Coprozessor anwesend sein wird, und wird abstürzen, wenn auf einem Computer ausgeführt, der keinen hat. Anwendungen wie Textverarbeitung profitieren in der Regel nicht von einem Mathematik-Coprozessor. Das ist, weil sie das Verschieben von Daten im Gedächtnis beinhalten, nicht die Berechnung der mathematischen Ausdrücke. Ebenso werden Berechnungen mit festen Punktvariablen (ganzen Zahlen) durch das Vorhandensein eines mathematischen Coprozessors nicht beeinflusst, da sie innerhalb der CPU gehandhabt werden. Auf der anderen Seite kann die Ausführungsgeschwindigkeit von DSP und anderen Rechenprogrammen, die Gleitkomma-Berechnungen verwenden, eine Größenordnung sein, die mit und ohne Mathematik-Coprozessor unterschiedlich ist. Die CPU und der Hauptspeicher sind in den meisten Computersystemen in separaten Chips enthalten. Aus offensichtlichen Gründen möchten Sie, dass der Hauptspeicher sehr groß und sehr schnell ist. Leider macht das das Gedächtnis sehr teuer. Die Übertragung von Daten zwischen dem Hauptspeicher und der CPU ist ein sehr häufiger Engpass für die Geschwindigkeit. Die CPU fragt den Hauptspeicher für die Binärinformation an einer bestimmten Speicheradresse und muss dann warten, um die Informationen zu empfangen. Eine gängige Technik, um dieses Problem zu umgehen, besteht darin, einen Speicher-Cache zu verwenden. Dies ist eine kleine Menge von sehr schnellem Speicher als Puffer zwischen der CPU und dem Hauptspeicher verwendet. Ein paar hundert Kilobyte sind typisch. Wenn die CPU den Hauptspeicher anfordert, die Binärdaten an einer bestimmten Adresse bereitzustellen, kopiert die Hochgeschwindigkeits-Digitalelektronik einen Abschnitt des Hauptspeichers um diese Adresse in den Speicher-Cache. Das nächste Mal, dass die CPU Speicherinformationen anfordert, ist es sehr wahrscheinlich, dass es bereits im Speicher-Cache enthalten ist, was den Abruf sehr schnell macht. Dies basiert auf der Tatsache, dass Programme dazu neigen, auf Speicherplätze zuzugreifen, die in der Nähe von Nachbarn von zuvor zugegriffenen Daten sind. Bei typischen Personalcomputeranwendungen kann der Zusatz eines Speicher-Cache die Gesamtgeschwindigkeit um mehrere Male verbessern. Der Speicher-Cache kann im selben Chip wie die CPU sein, oder es kann ein externes elektronisches Gerät sein. Die Rate, mit der Daten zwischen den Subsystemen übertragen werden können, hängt von der Anzahl der parallelen Datenleitungen und der maximalen Rate ab, die digitale Signale, die entlang jeder Zeile übergeben werden können. Digitale Daten können im Allgemeinen mit einer viel höheren Rate innerhalb eines einzelnen Chips übertragen werden, verglichen mit der Übertragung von Daten zwischen Chips. Ebenso werden Datenwege, die durch elektrische Verbinder zu anderen Leiterplatten führen müssen (d. h. eine Busstruktur), noch langsamer sein. Dies ist eine starke Motivation, so viel Elektronik wie möglich innerhalb der CPU zu füllen. Ein besonders böses Problem für die Computergeschwindigkeit ist die Rückwärtskompatibilität. Wenn ein Computer-Unternehmen ein neues Produkt einführt, sagen wir eine Datenerfassungskarte oder ein Software-Programm, wollen sie es in den größtmöglichen Markt verkaufen. Dies bedeutet, dass es mit den meisten der derzeit verwendeten Computer kompatibel sein muss, die sich über mehrere Generationen von Technologie erstrecken könnten. Dies begrenzt häufig die Leistung der Hardware oder Software auf die eines viel älteren Systems. Nehmen wir zum Beispiel an, dass Sie eine IO-Karte kaufen, die in den Bus Ihres 200 MHz Pentium Personal Computers steckt und Ihnen acht digitale Zeilen zur Verfügung stellt, die Daten jeweils ein Byte senden und empfangen können. Sie schreiben dann ein Montageprogramm, um schnell Daten zwischen Ihrem Computer und einem externen Gerät, wie einem wissenschaftlichen Experiment oder einem anderen Computer, zu übertragen. Viel zu Ihrer Überraschung ist die maximale Datenübertragungsrate nur etwa 100.000 Bytes pro Sekunde, mehr als eintausendmal langsamer als die Mikroprozessor-Taktrate Der Bösewicht ist der ISA-Bus, eine Technologie, die rückwärtskompatibel zu den Computern der frühen 1980er Jahre ist. Tabelle 4-6 bietet Ausführungszeiten für mehrere Generationen von Computern. Offensichtlich sollten Sie diese als sehr grobe Approximationen behandeln. Wenn Sie Ihr System verstehen wollen, nehmen Sie Messungen an Ihrem System vor. Es ist ganz einfach, eine Schleife zu schreiben, die eine Million von einer Operation ausführt, und benutze deine Uhr zu Zeit, wie lange es dauert Die ersten drei Systeme, die 80286, 80486 und Pentium, sind die Standard-Desktop-PCs von 1986, 1993 und 1996. Der Vorwärts ist ein 1994 Mikroprozessor, der speziell für DSP-Aufgaben entworfen wurde, die Texas Instruments TMS320C40. Der Pentium ist aus vier Gründen schneller als das 80286-System, (1) die größere Taktrate, (2) mehr Zeilen im Datenbus, (3) die Addition eines Speicher-Cache und (4) ein effizienteres internes Design, Erfordert weniger Taktzyklen pro Befehl. Wenn der Pentium ein Cadillac war, wäre der TMS320C40 ein Ferrari: weniger Komfort, aber blendende Geschwindigkeit. Dieser Chip ist repräsentativ für mehrere Mikroprozessoren, die speziell entwickelt wurden, um die Ausführungszeit von DSP-Algorithmen zu verringern. Andere in dieser Kategorie sind die Intel i860, ATampT DSP3210, Motorola DSP96002 und die Analog Devices ADSP-2171. Diese gehen oft unter dem Namen: DSP-Mikroprozessor. Oder RISC (Reduzierter Befehlssatzcomputer). Dieser Nachname spiegelt wider, dass die erhöhte Geschwindigkeit aus weniger Montageanweisungen resultiert, die dem Programmierer zur Verfügung gestellt werden. Im Vergleich dazu werden traditionellere Mikroprozessoren wie der Pentium CISC (Complex Instruction Set Computer) genannt. DSP-Mikroprozessoren werden auf zwei Arten eingesetzt: als Slave-Module unter der Steuerung eines herkömmlicheren Rechners oder als eingebetteter Prozessor in einer dedizierten Applikation wie zB einem Mobiltelefon. Einige Modelle behandeln nur Fixpunktnummern, während andere mit Gleitkomma arbeiten können. Die interne Architektur, die verwendet wird, um die erhöhte Geschwindigkeit zu erhalten, beinhaltet: (1) viele sehr schnelle Cache-Speicher, die in dem Chip enthalten sind, (2) getrennte Busse für das Programm und Daten, so dass die beiden gleichzeitig zugegriffen werden können (genannt Harvard Architecture), (3) schnelle Hardware für mathematische Berechnungen, die direkt im Mikroprozessor enthalten sind, und (4) eine Pipeline-Konstruktion. Eine Pipeline-Architektur bricht die benötigte Hardware für eine bestimmte Aufgabe in mehrere aufeinanderfolgende Stufen. Zum Beispiel kann die Addition von zwei Zahlen in drei Pipeline-Stufen erfolgen. Die erste Stufe der Pipeline tut nichts, aber die Nummern zu holen, die aus dem Gedächtnis hinzugefügt werden sollen. Die einzige Aufgabe der zweiten Stufe ist es, die beiden Zahlen zusammenzufügen. Die dritte Stufe tut nichts, sondern speichert das Ergebnis im Gedächtnis. Wenn jede Stufe ihre Aufgabe in einem einzigen Taktzyklus abschließen kann, dauert die gesamte Prozedur drei Taktzyklen, um sie auszuführen. Das Hauptmerkmal der Pipeline-Struktur ist, dass eine andere Aufgabe gestartet werden kann, bevor die vorherige Aufgabe abgeschlossen ist. In diesem Beispiel könnten wir mit dem Hinzufügen von zwei weiteren Zahlen beginnen, sobald die erste Stufe im Leerlauf ist, am Ende des ersten Taktzyklus. Für eine große Anzahl von Operationen wird die Geschwindigkeit des Systems als eine Addition pro Taktzyklus zitiert, obwohl die Addition von zwei beliebigen Zahlen drei Taktzyklen erfordert, um zu vervollständigen. Pipelines sind ideal für Geschwindigkeit, aber sie können schwierig zu programmieren. Der Algorithmus muss eine neue Berechnung beginnen lassen, auch wenn die Ergebnisse der bisherigen Berechnungen nicht verfügbar sind (weil sie noch in der Pipeline sind). Der Wissenschaftler und Ingenieur Leitfaden zur digitalen Signalverarbeitung Von Steven W. Smith, Ph. D. Kapitel 6: Faltung Lasst diese Art des Verstehens zusammenfassen, wie ein System ein Eingangssignal in ein Ausgangssignal umwandelt. Zuerst kann das Eingangssignal in einen Satz von Impulsen zerlegt werden, von denen jede als eine skalierte und verschobene Delta-Funktion betrachtet werden kann. Zweitens ist die aus jedem Impuls resultierende Ausgabe eine skalierte und verschobene Version der Impulsantwort. Drittens kann das Gesamtausgangssignal durch Hinzufügen dieser skalierten und verschobenen Impulsantworten gefunden werden. Mit anderen Worten, wenn wir eine Systemimpulsantwort kennen, können wir berechnen, was die Ausgabe für ein mögliches Eingangssignal sein wird. Das heißt, wir wissen alles über das System. Es gibt nichts mehr, was man über eine lineare Systemcharakteristik lernen kann. (In späteren Kapiteln zeigen wir jedoch, dass diese Informationen in verschiedenen Formen dargestellt werden können). Die Impulsantwort geht bei einigen Anwendungen um einen anderen Namen. Wenn das betrachtete System ein Filter ist, Die Impulsantwort heißt Filterkernel. Der Faltungskernel Oder einfach den Kernel. Bei der Bildverarbeitung wird die Impulsantwort als Punktspreizfunktion bezeichnet. Während diese Begriffe in etwas unterschiedlicher Weise verwendet werden, bedeuten sie alle dasselbe, das Signal, das von einem System erzeugt wird, wenn die Eingabe eine Delta-Funktion ist. Faltung ist eine formale mathematische Operation, genauso wie Multiplikation, Hinzufügung und Integration. Addition nimmt zwei Zahlen und erzeugt eine dritte Zahl. Während die Faltung zwei Signale annimmt und ein drittes Signal erzeugt. Die Faltung wird in der Mathematik vieler Felder wie Wahrscheinlichkeit und Statistik verwendet. In linearen Systemen wird die Faltung verwendet, um die Beziehung zwischen drei interessierenden Signalen zu beschreiben: das Eingangssignal, die Impulsantwort und das Ausgangssignal. Abbildung 6-2 zeigt die Notation, wenn die Faltung mit linearen Systemen verwendet wird. Ein Eingangssignal x n tritt in ein lineares System mit einer Impulsantwort h n ein, was zu einem Ausgangssignal y n führt. In Gleichungsform: x n h n y n In Worten ausgedrückt, ist das mit der Impulsantwort überlegte Eingangssignal gleich dem Ausgangssignal. So wie die Addition durch das Plus, und die Multiplikation durch das Kreuz dargestellt wird, wird die Faltung durch den Stern dargestellt. Es ist bedauerlich, dass die meisten Programmiersprachen auch den Stern verwenden, um Multiplikation anzuzeigen. Ein Stern in einem Computerprogramm bedeutet Multiplikation, während ein Stern in einer Gleichung Faltung bedeutet. Abbildung 6-3 zeigt die Faltung für Tiefpass - und Hochpaßfilterung. Das Beispiel-Eingangssignal ist die Summe zweier Komponenten: drei Zyklen einer Sinuswelle (die eine hohe Frequenz repräsentiert), plus eine langsam ansteigende Rampe (bestehend aus niedrigen Frequenzen). In (a) ist die Impulsantwort für den Tiefpassfilter ein glatter Bogen, was dazu führt, dass nur die sich langsam ändernde Rampenwellenform an den Ausgang weitergegeben wird. Ähnlich erlaubt das Hochpaßfilter (b) nur die sich schnell ändernde Sinuskurve. Abbildung 6-4 zeigt zwei weitere Beispiele, wie die Faltung zur Verarbeitung von Signalen verwendet wird. Der invertierende Dämpfungsglied (a), kippt das Signal nach oben und reduziert seine Amplitude. Die diskrete Ableitung (auch die erste Differenz genannt), die in (b) gezeigt ist, führt zu einem Ausgangssignal, das sich auf die Steigung des Eingangssignals bezieht. Beachten Sie die Längen der Signale in Abb. 6-3 und 6-4. Die Eingangssignale sind 81 Samples lang, während jede Impulsantwort aus 31 Samples besteht. In den meisten DSP-Anwendungen ist das Eingangssignal Hunderte, Tausende oder sogar Millionen von Proben in der Länge. Die Impulsantwort ist in der Regel viel kürzer, sagen wir, ein paar Punkte auf ein paar hundert Punkte. Die Mathematik hinter der Faltung beschränkt nicht, wie lange diese Signale sind. Es wird jedoch die Länge des Ausgangssignals angegeben. Die Länge des Ausgangssignals ist gleich der Länge des Eingangssignals, plus der Länge der Impulsantwort, minus eins. Für die Signale in den Fig. 6-3 und 6-4, jedes Ausgangssignal ist: 81 31 - 1 111 Samples lang. Das Eingangssignal läuft von Abtastwert 0 bis 80, die Impulsantwort von Abtastwert 0 bis 30 und das Ausgangssignal von Probe 0 bis 110. Nun kommen wir zur detaillierten Mathematik der Faltung. Wie in der digitalen Signalverarbeitung verwendet, kann die Faltung auf zwei getrennte Weise verstanden werden. Der erste Blick auf die Faltung aus der Sicht des Eingangssignals. Dabei wird untersucht, wie jede Abtastung im Eingangssignal zu vielen Punkten im Ausgangssignal beiträgt. Der zweite Weg sieht die Faltung aus der Sicht des Ausgangssignals an. Dies untersucht, wie jede Probe im Ausgangssignal Informationen von vielen Punkten im Eingangssignal erhalten hat. Denken Sie daran, dass diese beiden Perspektiven unterschiedliche Denkweisen über die gleiche mathematische Operation sind. Der erste Standpunkt ist wichtig, weil er ein begriffliches Verständnis dafür bietet, wie sich die Faltung auf DSP bezieht. Der zweite Blickwinkel beschreibt die Mathematik der Faltung. Dies ist eine der schwierigsten Aufgaben, die Sie in DSP begegnen werden: Ihr konzeptionelles Verständnis passen mit dem Durcheinander der Mathematik verwendet, um die Ideen zu kommunizieren. Exponential Moving Average (EMA) Explained Wie wir in der vorherigen Lektion gesagt haben, können einfache gleitende Durchschnitte sein Verzerrt durch spikes Wir beginnen mit einem Beispiel. Let8217s sagen, wir zeichnen eine 5-Periode SMA auf der Tages-Chart von EURUSD. Die Schlusskurse für die letzten 5 Tage sind wie folgt: Der einfache gleitende Durchschnitt würde wie folgt berechnet: (1.3172 1.3231 1.3164 1.3186 1.3293) 5 1.3209 Einfach genug, richtig Nun, was wäre, wenn es einen Nachrichtenreport am Tag 2 gab, der den Euro verursacht Auf die Bühne fallen. Das verursacht EURUSD, um bei 1.3000 zu stürzen und zu schließen. Let8217s sehen, welche Wirkung dies auf die 5 Periode SMA haben würde. Der einfache gleitende Durchschnitt würde wie folgt berechnet: Das Ergebnis des einfachen gleitenden Durchschnitts wäre viel niedriger und es würde Ihnen die Vorstellung geben, dass der Preis tatsächlich abging, als in Wirklichkeit Tag 2 war nur ein einmaliges Ereignis Verursacht durch die schlechten Ergebnisse eines Wirtschaftsberichts. Der Punkt, den wir machen wollen, ist, dass manchmal der einfache gleitende Durchschnitt zu einfach sein könnte. Wenn es nur so war, dass du diese Spikes herausfiltern kannst, damit du die falsche Idee bekommst. Hmm8230 Warten Sie eine Minute8230 Yep, gibt es einen Weg It8217s genannt Exponential Moving Average Exponential gleitende Durchschnitte (EMA) geben mehr Gewicht auf die jüngsten Perioden. In unserem obigen Beispiel würde die EMA mehr Gewicht auf die Preise der letzten Tage legen, was die Tage 3, 4 und 5 sein würde. Dies würde bedeuten, dass die Spitze am Tag 2 von geringerem Wert wäre und es nicht so groß wäre Ein Effekt auf den gleitenden Durchschnitt, wie es wäre, wenn wir für einen einfachen gleitenden Durchschnitt berechnet hätten. Wenn du darüber nachdenkst, das macht viel Sinn, denn was das tut, ist, dass es mehr Wert darauf legt, was Händler vor kurzem tun. Exponential Moving Average (EMA) und Simple Moving Average (SMA) Seite an Seite Let8217s werfen einen Blick auf die 4-Stunden-Chart von USDJPY, um zu markieren, wie ein einfacher gleitender Durchschnitt (SMA) und exponentieller gleitender Durchschnitt (EMA) nebeneinander aussehen würde Auf einem Diagramm. Beachten Sie, wie die rote Linie (die 30 EMA) scheint näher zu sein als die blaue Linie (die 30 SMA). Dies bedeutet, dass es genauer die aktuelle Preisaktion darstellt. Sie können wohl erraten, warum dies geschieht. It8217s weil der exponentielle gleitende Durchschnitt mehr Wert auf das, was in letzter Zeit geschehen ist, legt. Beim Handel ist es viel wichtiger zu sehen, was Händler tun JETZT eher was sie tun letzte Woche oder letzten Monat. Speichern Sie Ihre Fortschritte durch Unterzeichnen und Markieren der Lektion abgeschlossen

No comments:

Post a Comment