Saturday 14 January 2017

Fixpunkt Mittelwert Filter

Die Wissenschaftler und Ingenieure Leitfaden für digitale Signalverarbeitung Von Steven W. Smith, Ph. D. Kapitel 28: Digitale Signalprozessoren Feste und Gleitpunkt Digitale Signalverarbeitung kann in zwei Kategorien, Fixpunkt und Gleitpunkt unterteilt werden. Diese beziehen sich auf das Format zur Speicherung und Manipulation von Nummern innerhalb der Geräte. Fixpunkt-DSPs stellen üblicherweise jede Zahl mit mindestens 16 Bits dar, obwohl eine andere Länge verwendet werden kann. Zum Beispiel stellt Motorola eine Familie von Fixpunkt-DSPs her, die 24 Bits verwenden. Es gibt vier gängige Wege, dass diese 2 16 65536 möglichen Bitmuster eine Zahl darstellen können. In unsigned Integer. Kann die gespeicherte Zahl einen beliebigen Integer-Wert von 0 bis 65.535 annehmen. In ähnlicher Weise verwendet signierte Ganzzahl zwei Komplemente, um den Bereich negative Zahlen von -32.768 bis 32.767 anzugeben. Mit der nicht unterzeichneten Fraktionsnotation sind die 65536 Level gleichmäßig zwischen 0 und 1 verteilt. Schließlich erlaubt das signierte Fraktionsformat negative Zahlen, die gleichmäßig zwischen -1 und 1 beabstandet sind. Im Vergleich dazu verwenden Gleitkomma-DSPs typischerweise ein Minimum von 32 Bits, um jedes zu speichern Wert. Dies führt zu vielen weiteren Bitmustern als für festen Punkt, 2 32 4.294.967.296 genau zu sein. Ein wesentliches Merkmal der Gleitpunktnotation ist, dass die dargestellten Zahlen nicht gleichmäßig beabstandet sind. In dem am häufigsten verwendeten Format (ANSIIEEE Std. 754-1985) sind die grßten und kleinsten Zahlen plusmn3,4 × 10 38 und 1,210 -38. beziehungsweise. Die dargestellten Werte sind in ungleichem Abstand zwischen diesen beiden Extremen, so dass der Abstand zwischen zwei beliebigen Zahlen etwa zehn Millionen mal kleiner ist als der Wert der Zahlen. Dies ist wichtig, weil es große Lücken zwischen großen Zahlen, aber kleine Lücken zwischen kleinen Zahlen. Gleitkomma-Notation wird in Kapitel 4 näher erläutert. Alle Gleitkomma-DSPs können auch Festkommazahlen behandeln, eine Notwendigkeit, Zähler, Schleifen und Signale aus dem ADC zu implementieren und zum DAC zu gehen. Allerdings bedeutet dies nicht, dass Festkomma-Mathematik so schnell ausgeführt wird wie die Gleitkomma-Operationen es hängt von der internen Architektur. Beispielsweise sind die SHARC-DSPs für Fließkomma - und Fixpunktoperationen optimiert und führen sie mit gleicher Effizienz aus. Aus diesem Grund werden die SHARC-Geräte oft als 32-Bit-DSPs bezeichnet, anstatt nur Floating Point. Abbildung 28-6 zeigt die primären Kompromisse zwischen Fest - und Gleitpunkt-DSPs. In Kapitel 3 betonten wir, dass Fixpunktarithmetik viel schneller als Gleitpunkt in Allzweckcomputern ist. Jedoch mit DSPs ist die Geschwindigkeit ungefähr die selbe, ein Ergebnis der Hardware, die für Mathebetriebe stark optimiert wird. Die interne Architektur eines Gleitkomma-DSP ist komplizierter als bei einem Fixpunktgerät. Alle Register und Datenbusse müssen 32 Bits breit sein anstatt nur 16 der Multiplikator und ALU muss in der Lage sein, schnell eine Gleitpunktarithmetik durchzuführen, der Befehlssatz muss grßer sein (damit sowohl Floating - als auch Fixpunktnummern verarbeitet werden können) bald. Der Gleitpunkt (32 Bit) hat eine bessere Genauigkeit und einen höheren Dynamikbereich als der feste Punkt (16 Bit). Darüber hinaus haben Gleitkommaprogramme oft einen kürzeren Entwicklungszyklus, da der Programmierer generell keine Sorgen um Probleme wie Überlauf, Unterlauf und Rundungsfehler machen muss. Andererseits sind Festpunkt-DSPs herkömmlicherweise billiger als Gleitkomma-Vorrichtungen. Nichts ändert sich schneller als der Preis der Elektronik alles, was Sie in einem Buch finden wird veraltet sein, bevor es gedruckt wird. Dennoch sind die Kosten ein wichtiger Faktor für das Verständnis, wie DSPs entwickelt werden, und wir müssen Ihnen eine allgemeine Idee geben. Als dieses Buch 1999 fertiggestellt wurde, wurden Festpunkt-DSPs zwischen 5 und 100 verkauft, während Gleitkomma-Vorrichtungen im Bereich von 10 bis 300 liegen. Dieser Unterschied in den Kosten kann als ein Maß für die relative Komplexität zwischen den Vorrichtungen angesehen werden. Wenn Sie herausfinden möchten, was die Preise heute sind. Müssen Sie heute aussehen. Jetzt können wir unsere Aufmerksamkeit auf die Leistung, was kann ein 32-Bit-Gleitkomma-System tun, dass ein 16-Bit-Fixpunkt cant Die Antwort auf diese Frage ist Signal-Rausch-Verhältnis. Angenommen, wir speichern eine Zahl in einem 32-Bit-Gleitkommaformat. Wie bereits erwähnt, beträgt die Lücke zwischen dieser Zahl und ihrem benachbarten Nachbar etwa ein zehn Millionstel des Wertes der Zahl. Um die Zahl zu speichern, muss sie um die Hälfte der Spaltgröße auf - oder abgerundet sein. Mit anderen Worten, jedes Mal, wenn wir eine Zahl in Gleitkommazahlen speichern, addieren wir Rauschen zum Signal. Dasselbe geschieht, wenn eine Zahl als 16-Bit-Festkommawert gespeichert wird, mit der Ausnahme, dass das hinzugefügte Rauschen viel schlechter ist. Das ist, weil die Lücken zwischen benachbarten Zahlen sind viel größer. Angenommen, wir speichern die Zahl 10.000 als eine signierte Ganzzahl (von -32.768 bis 32.767). Der Abstand zwischen den Zahlen ist ein Zehntausendstel des Wertes der Zahl, die wir speichern. Wenn wir die Zahl 1000 speichern wollen, beträgt die Lücke zwischen den Zahlen nur ein Tausendstel des Wertes. Lärm in Signalen wird üblicherweise durch seine Standardabweichung dargestellt. Dies wurde ausführlich in Kapitel 2 diskutiert. Hier ist die wichtige Tatsache, dass die Standardabweichung dieses Quantisierungsrauschens etwa ein Drittel der Spaltgröße beträgt. Dies bedeutet, dass das Signal-Rausch-Verhältnis für die Speicherung einer Gleitkommazahl etwa 30 Millionen bis Eins beträgt, während für eine Festkommazahl nur etwa Zehntausend bis Eins beträgt. Mit anderen Worten, Gleitkomma hat etwa 30.000 Mal weniger Quantisierungsrauschen als Fixpunkt. Dies stellt eine wichtige Weise dar, dass DSPs von herkömmlichen Mikroprozessoren verschieden sind. Angenommen, wir implementieren einen FIR-Filter im festen Punkt. Dazu schleifen wir jeden Koeffizienten durch, multiplizieren ihn mit dem entsprechenden Sample aus dem Eingangssignal und addieren das Produkt zu einem Akkumulator. Heres das Problem. In herkömmlichen Mikroprozessoren ist dieser Akkumulator nur eine weitere 16-Bit-Fixpunktvariable. Um Überlauf zu vermeiden, müssen wir die zu addierenden Werte skalieren und entsprechend Quantisierungsrauschen bei jedem Schritt hinzufügen. Im schlimmsten Fall wird dieses Quantisierungsrauschen einfach addieren, was das Signal-Rausch-Verhältnis des Systems stark senkt. Beispielsweise kann bei einem FIR-Filter mit 500 Koeffizienten das Rauschen bei jeder Ausgangsabtastung das 500-fache des Rauschens auf jeder Eingangsabtastung sein. Das Signal-zu-Rauschen-Verhältnis von Zehntausend zu Einem ist zu einem schauerlichen Zwanzig auf Eins gefallen. Obwohl dies ein Extremfall ist, zeigt es den Hauptpunkt: Wenn viele Operationen an jeder Probe durchgeführt werden, ist es schlecht, wirklich schlecht. Siehe Kapitel 3 für weitere Details. DSPs behandeln dieses Problem mit einem erweiterten Präzisionsakkumulator. Dies ist ein spezielles Register, das 2-3 mal so viele Bits hat wie die anderen Speicherplätze. Beispielsweise kann sie in einem 16-Bit-DSP 32 bis 40 Bits aufweisen, während sie in den SHARC-DSPs 80 Bits für die Festkomma-Verwendung enthält. Dieser erweiterte Bereich eliminiert während der Akkumulation praktisch kein Rundungsgeräusch. Der einzige abgerundete Fehler ist, wenn der Akkumulator skaliert und im 16-Bit-Speicher gespeichert wird. Diese Strategie funktioniert sehr gut, obwohl sie begrenzt, wie einige Algorithmen durchgeführt werden müssen. Im Vergleich dazu hat der Gleitkommawert ein derart geringes Quantisierungsrauschen, daß diese Techniken gewöhnlich nicht notwendig sind. Zusätzlich zu einem niedrigeren Quantisierungsrauschen sind auch Gleitkommasysteme einfacher, Algorithmen zu entwickeln. Die meisten DSP-Verfahren basieren auf wiederholten Multiplikationen und Hinzufügungen. Im Fixpunkt muss nach jedem Betrieb die Möglichkeit eines Überlaufs oder Unterlaufs berücksichtigt werden. Der Programmierer muss ständig die Amplitude der Zahlen verstehen, wie sich die Quantisierungsfehler akkumulieren und welche Skalierung stattfinden muss. Im Vergleich dazu treten diese Fragen nicht im Gleitkomma auf, die sich die Zahlen selbst versorgen (außer in seltenen Fällen). Um Ihnen ein besseres Verständnis dieses Problems zu vermitteln, 28-7 zeigt eine Tabelle aus dem SHARC-Benutzerhandbuch. Dies beschreibt die Art und Weise, wie die Multiplikation sowohl für Fest - als auch Gleitkommaformate durchgeführt werden kann. Zuerst schauen Sie, wie Gleitkommazahlen multipliziert werden können, es gibt nur einen Weg, Fn Fx Fy, wobei Fn, Fx und Fy eines der 16 Datenregister sind. Es könnte nicht einfacher sein. Vergleiche dazu alle möglichen Befehle zur Fixpunktvervielfachung. Dies sind die vielen Möglichkeiten, um die Probleme von Round-off, Skalierung und Format effizient zu behandeln. In Fig. 28-7, Rn, Rx und Ry beziehen sich auf jedes der 16 Datenregister, und MRF und MRB sind 80-Bit-Akkumulatoren. Die vertikalen Linien weisen auf Optionen hin. Beispielsweise bedeutet der Eintrag oben links in dieser Tabelle, dass alle folgenden gültigen Befehle sind: Rn Rx Ry, MRF Rx Ry und MRB Rx Ry. Mit anderen Worten, der Wert von zwei Registern kann multipliziert und in ein anderes Register oder in einen der erweiterten Präzisionsakkumulatoren gebracht werden. Diese Tabelle zeigt auch, dass die Zahlen entweder signiert oder unsigned (S oder U) sein können und können gebrochen oder ganzzahlig (F oder I) sein. Die Optionen RND und SAT sind Möglichkeiten zur Steuerung von Rundung und Registerüberlauf. Es gibt andere Details und Optionen in der Tabelle, aber sie sind nicht wichtig für unsere gegenwärtige Diskussion. Die wichtige Idee ist, dass die Fixpunkt-Programmierer müssen verstehen, Dutzende von Möglichkeiten zur Durchführung der grundlegenden Aufgabe der Multiplikation. Im Gegensatz dazu kann der Gleitkommaprogrammierer seine Zeit darauf konzentrieren, sich auf den Algorithmus zu konzentrieren. Angesichts dieser Kompromisse zwischen festen und gleitenden Punkt, wie wählen Sie, welche zu verwenden Hier sind einige Dinge zu beachten. Betrachten Sie zunächst, wie viele Bits im ADC und DAC verwendet werden. In vielen Anwendungen sind 12-14 Bits pro Probe der Crossover für die Verwendung von festem und fließendem Punkt. Zum Beispiel verwenden Fernseh - und andere Videosignale typischerweise 8-Bit-ADC und - DAC, und die Genauigkeit des festen Punktes ist akzeptabel. Im Vergleich dazu können professionelle Audioanwendungen mit bis zu 20 oder 24 Bits abgespielt werden, und fast sicher benötigen Gleitkomma, um den großen Dynamikbereich zu erfassen. Das nächste, was zu betrachten ist die Komplexität des Algorithmus, der ausgeführt wird. Wenn es relativ einfach ist, denken Sie festen Punkt, wenn es komplizierter ist, denke Fließkomma. Zum Beispiel erfordern FIR-Filterung und andere Operationen im Zeitbereich nur ein paar Dutzend Zeilen Code, wodurch sie für einen festen Punkt geeignet sind. Im Gegensatz dazu sind Frequenzdomänenalgorithmen, wie Spektralanalyse und FFT-Faltung, sehr detailliert und können viel schwieriger programmiert werden. Während sie in festen Punkt geschrieben werden können, wird die Entwicklungszeit stark reduziert werden, wenn Gleitkomma verwendet wird. Schließlich, über das Geld denken: wie wichtig sind die Kosten des Produkts, und wie wichtig sind die Kosten der Entwicklung Wenn Fixpunkt gewählt wird, werden die Kosten des Produkts reduziert werden, aber die Entwicklungskosten werden wahrscheinlich höher sein, aufgrund von Die schwierigeren Algorithmen. In umgekehrter Weise führt der Gleitkommawert im allgemeinen zu einem schnelleren und billigeren Entwicklungszyklus, jedoch zu einem teureren Endprodukt. Abbildung 28-8 zeigt einige der Haupttrends bei DSPs. Abbildung (a) zeigt die Auswirkungen, die digitale Signalprozessoren auf den Embedded-Markt hatten. Dies sind Anwendungen, die einen Mikroprozessor verwenden, um direkt ein größeres System, wie z. B. ein Mobiltelefon, einen Mikrowellenofen oder eine Automobilinstrumentanzeigetafel, zu betreiben und zu steuern. Der Name Mikrocontroller wird oft in Bezug auf diese Geräte verwendet, um sie von den Mikroprozessoren in Personalcomputern verwendet zu unterscheiden. Wie in (a) gezeigt, haben etwa 38 der eingebetteten Designer bereits mit der Verwendung von DSPs begonnen, und weitere 49 betrachten den Schalter. Der hohe Durchsatz und die Rechenleistung von DSPs machen sie oft zu einer idealen Wahl für eingebettete Designs. Wie in (b) dargestellt, verwenden etwa doppelt so viele Ingenieure Fixpunkt als Gleitkomma-DSPs. Dies hängt jedoch stark von der Anwendung ab. Festpunkt ist in wettbewerbsfähigen Konsumgütern populärer, wo die Kosten der Elektronik sehr niedrig gehalten werden müssen. Ein gutes Beispiel dafür sind Mobiltelefone. Wenn Sie im Wettbewerb sind, um Millionen von Ihrem Produkt zu verkaufen, kann ein Kostenunterschied von nur ein paar Dollar der Unterschied zwischen Erfolg und Misserfolg sein. Im Vergleich dazu ist der Gleitkommawert häufiger, wenn eine höhere Leistung erforderlich ist und die Kosten nicht wichtig sind. Angenommen, Sie entwerfen ein medizinisches Bildgebungssystem, einen solchen Computertomographen. Nur wenige hundert Modelle werden je zu einem Preis von mehreren hunderttausend Dollar verkauft. Für diese Anwendung sind die Kosten des DSP unwesentlich, aber die Leistung ist kritisch. Trotz der größeren Anzahl von Fixpunkt-DSPs ist der Gleitkommamarkt das am schnellsten wachsende Segment. Wie in (c) gezeigt, planen mehr als die Hälfte der Ingenieure, die 16-Bits-Geräte verwenden, in naher Zukunft auf einen Gleitkommawert zu migrieren. Bevor wir dieses Thema verlassen, sollten wir reemphasize, dass Gleitkomma und Fixpunkt normalerweise 32 Bits und 16 Bits, aber nicht immer verwenden. Beispielsweise kann die SHARC-Familie Zahlen im 32-Bit-Fixpunkt repräsentieren, was bei digitalen Audioanwendungen üblich ist. Dies macht die 2 32-Quantisierungsstufen gleichmäßig über einen relativ kleinen Bereich, beispielsweise zwischen -1 und 1, beabstandet. Im Vergleich dazu legt die Gleitpunktnotation die 2 32 Quantisierungspegel logarithmisch über einen großen Bereich, typischerweise plusmn3,4 × 10 38, fest - Bit Festpunkt bessere Präzision. Das heißt, der Quantisierungsfehler auf irgendeinem Abtastwert ist niedriger. Allerdings hat 32-Bit-Gleitkommazahl einen höheren Dynamikbereich. Dh es gibt einen größeren Unterschied zwischen der größten Zahl und der kleinsten Zahl, die dargestellt werden kann. Dokumentation dfilt. latticearma Am wichtigsten ist die Etikettenposition im Diagramm, die identifiziert, wo das Format zutrifft. Betrachten Sie als Beispiel das Label LatticeProdFormat, das immer einem Koeffizientenmultiplikationselement im Signalfluss folgt. Die Markierung zeigt an, daß Gitterkoeffizienten das Multiplikationselement mit der Wortlänge und Fraktionslänge verlassen, die mit Produktoperationen verbunden sind, die Koeffizienten enthalten. Aus der Überprüfung der Tabelle, sehen Sie, dass die LatticeProdFormat bezieht sich auf die Eigenschaften ProductWordLength. LatticeProdFracLength. Und ProductMode, die das Koeffizientenformat nach Multiplikations - (oder Produkt-) Operationen vollständig definieren. Eigenschaften In dieser Tabelle sehen Sie die mit der autoregressiven gleitenden Gitterimplementierung von dfilt-Objekten verknüpften Eigenschaften. Hinweis Die Tabelle listet alle Eigenschaften eines Filters auf. Viele der Eigenschaften sind dynamisch, dh sie existieren nur in Reaktion auf die Einstellungen anderer Eigenschaften. Möglicherweise sehen Sie nicht alle aufgelisteten Eigenschaften die ganze Zeit. Um alle Eigenschaften eines Filters jederzeit anzuzeigen, verwenden Sie wo hd ein Filter ist. Weitere Informationen zu den Eigenschaften dieses Filters oder eines beliebigen dfilt-Objekts finden Sie unter Fixed-Point-Filtereigenschaften. Setzt den Modus, der für die Reaktion auf Überlaufbedingungen in der Festkomma-Arithmetik verwendet wird. Wählen Sie entweder Sättigung (Begrenzung der Ausgabe auf den größten positiven oder negativen darstellbaren Wert) oder umwickeln (setzen Sie überlaufende Werte auf den nächsten darstellbaren Wert mittels modularer Arithmetik). Die Auswahl, die Sie treffen, wirkt sich nur auf die Akkumulator - und Ausgangsarithmetik aus. Koeffizient und Eingabearithmetik immer gesättigt. Schließlich werden Produkte nie überfließen8212they behalten volle Präzision. Für die Ausgabe von einer Produktoperation legt dies die Fraktionslänge fest, die für die Interpretation der Daten verwendet wird. Diese Eigenschaft wird schreibbar (Sie können den Wert ändern), wenn Sie ProductMode auf SpecifyPrecision festlegen. Legt fest, wie der Filter die Ausgabe von Produktoperationen verarbeitet. Wählen Sie aus der vollen Genauigkeit (FullPrecision), oder ob Sie das höchstwertige Bit (KeepMSB) oder das niedrigstwertige Bit (KeepLSB) im Ergebnis speichern, wenn Sie die Datenwörter verkürzen müssen. Damit Sie die Präzision (die Bruchlänge), die von den Ausgängen der Multiplikationen verwendet wird, einstellen können, setzen Sie ProductMode auf SpecifyPrecision. Gibt die Wortlänge an, die für Multiplikationsoperationsergebnisse verwendet werden soll. Diese Eigenschaft wird schreibbar (Sie können den Wert ändern), wenn Sie ProductMode auf SpecifyPrecision festlegen. Gibt an, ob die Filterzustände und der Speicher vor jedem Filtervorgang zurückgesetzt werden sollen. Sie können entscheiden, ob Ihr Filter Zustände aus früheren Filterläufen beibehält. False ist die Standardeinstellung. Legt den Modus fest, der verwendet wird, um numerische Werte zu quantisieren, wenn die Werte zwischen den darstellbaren Werten für das Datenformat (Wort - und Fraktionslängen) liegen. Ceil - Rund zur positiven Unendlichkeit. Konvergent - Runde auf die nächste darstellbare Integerzahl. Runden auf die nächste gerade gespeicherte Ganzzahl. Dies ist die am wenigsten voreingenommene Methode der in dieser Software verfügbaren Methoden. Fix - Rund gegen Null. Boden - Rund zur negativen Unendlichkeit. Nächstgelegene - Runde in Richtung nächste. Bindungen zu positiver Unendlichkeit. Runde - Runde in Richtung nächste. Bindungen in Richtung negativer Unendlichkeit für negative Zahlen und in Richtung positive Unendlichkeit für positive Zahlen. Die Auswahl, die Sie treffen, wirkt sich nur auf die Akkumulator - und Ausgangsarithmetik aus. Koeffizient und Eingabearithmetik immer rund. Schließlich werden Produkte nie überlaufen 8212 sie halten volle Präzision. Gibt an, ob der Filter signierte oder unsignierte Fixpunktkoeffizienten verwendet. Nur Koeffizienten geben diese Einstellung wieder. Wähle dein Land


No comments:

Post a Comment