Wednesday 21 December 2016

Moving Average Filter Vhdl

Für mein Projekt muss ich ein Rauschen von einem ADC-Ausgang zu reduzieren und implementiert eine einfache gleitende durchschnittliche Filter in VHDL. Obwohl es funktioniert in der Simulation (siehe das Bild): es hat einige seltsame Verhalten, wenn ich es auf dem Chipscope, wenn das System läuft im FPGA (siehe das Bild): Der VHDL - Code, den ich für den gleitenden Durchschnitt ist wie folgt: I Verwenden Sie Xilinx Vivado Tool 2015.2 auf Ubuntu 14.04 x64 ausgeführt. Könnten Sie mir bitte helfen, das Problem zu identifizieren, so dass Ergebnisse in der Simulation entsprechen Ergebnisse nach der Synthese Ich habe eine Frage im Zusammenhang mit kontinuierlichen Mittelung der ADC-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 wie unten gezeigt: beantwortet Nov 26 13 bei 15: 45Moving Avergare Filter (MAF) in VHDL 2008 für DE0-NANO mit FPGA Cyclone IV. Dieser Filter arbeitet mit festem Punkt, dass die Anzahl der Bits vom ADC abhängt. Über den Moving Average Filter Ein Moving Average Filter ist ein digitales Filter, dass der Durchschnitt der Eingaben die letzten M 1 Begriffe wie die folgenden Ausdrücke enthält: Mit der zweiten direkten Form können wir hn wie folgt definieren: hn xn hn-1 So kann yn sein (Hn - hn - M) / (M 1) Struktur des Filters Die oberste Hierarchie ist maftop. vhd, die alle Filterstruktur definieren. Um von hn-1 bis hn-M zu erzeugen, werden Flipflops zu Verzögerungen verwendet. Sie können diese Aktion nicht zu diesem Zeitpunkt durchführen. Sie haben sich mit einem anderen Tab oder Fenster angemeldet. Aktualisieren Sie Ihre Sitzung neu. Sie haben sich in einem anderen Tab oder Fenster angemeldet. Aktualisieren Sie Ihre Sitzung neu.


No comments:

Post a Comment