Sunday 22 January 2017

Moving Average Filter Fpga

Ich habe eine Frage im Zusammenhang mit kontinuierlichen Mittelung von ADCs Wert. Der Ansatz, den ich verwendete, ist die kontinuierliche Mittelung von Beispiel 256 Proben. Der Adcaout-Wert (angezeigt im Code unten), den ich auf meiner GUI empfange, schritt langsam. Als Beispiel, wenn ich erwarte Wert 100mA, Meine GUI zeigt 4mA, 8mA, 15mA. Und dann endlich nach 2 Minuten bekomme ich einen stabilen 100mA Wert. Ich möchte sehen, die 100mA direkt auf meiner GUI von adcaout statt Inkrement Werte und Stabilisierung nach einiger Zeit. Eine andere Frage ist, dass, kann ich irgendwie machen diesen Prozess schnell, so dass ich nicht für 3 Minuten für den Empfang stabil 100 mA von adcaout warten müssen. Die Clock im digitalen Design unten ist 20 MHz. Die Uhr zum Empfangen der ADC-Werte auf der FPGA-Platine beträgt 15 KHz. - die adc. vhd-Datei ist unten: Ihr Code wird wie folgt geändert: Die endgültige Ausgabe, die ich auf meiner GUI sehe, ist slvvalue1 und slvvalue2 Wie über dieses: am Rücksetzen (oder zu jeder anderen Zeit, wenn Sie wollen), weisen Sie die Datain-Wert für alle Elemente in Ihrem Array. Dies sollte sofort den Durchschnitt auf den aktuellen Wert einstellen: Das folgende Beispiel zeigt den kompletten Code für einen gleitenden Durchschnittsrechner. Mein Vorschlag ist, dass Sie es studieren, bis Sie es verstehen. Dann versuchen Sie es in Ihrem Design verwenden. Schließlich, und nur nachdem Sie eine grundlegende Schaltung arbeiten, können Sie es ändern, um Ihre Design-Einschränkungen (Datenbreite, Anzahl der Proben, Bereich der Ganzzahlen, die Verwendung von signierten vs Integer etc.) Endlich, wenn Sie verwenden möchten Den obigen Code, um zwei separate Mittelwerte für zwei verschiedene Signale zu halten, einfach Instanziieren der Mittelung Einheit zweimal: Edit: Wie ich aus Ihren Kommentaren zu verstehen, müssen Sie möglicherweise eine zusätzliche Eingabe, um den Durchschnitt sofort auf den aktuellen Eingangswert. In diesem Fall können Sie eine Lasteingabe verwenden, wie unten gezeigt: beantwortet Nov 26 13 um 15: 45Calculating Moving Average Dieses VI berechnet und zeigt den gleitenden Durchschnitt, mit einer vorgewählten Zahl. Zunächst initialisiert das VI zwei Schieberegister. Das obere Schieberegister wird mit einem Element initialisiert und fügt dann kontinuierlich den vorherigen Wert mit dem neuen Wert hinzu. Dieses Schieberegister hält die Summe der letzten x Messungen. Nach dem Teilen der Ergebnisse der Add-Funktion mit dem vorgewählten Wert berechnet das VI den gleitenden Mittelwert. Das untere Schieberegister enthält ein Array mit der Dimension Average. Dieses Schieberegister hält alle Werte der Messung. Die Ersatzfunktion ersetzt nach jeder Schleife den neuen Wert. Dieses VI ist sehr effizient und schnell, weil es die replace-Element-Funktion innerhalb der while-Schleife verwendet, und es initialisiert das Array, bevor es die Schleife eintritt. Dieses VI wurde in LabVIEW 6.1 erstellt. Lesezeichen amp Share


No comments:

Post a Comment