Saturday 25 March 2017

Gleitender Durchschnittsfilter Vhdl Code

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 einen Load-Eingang verwenden, wie unten gezeigt: beantwortet Nov 26 13 bei 15: 45VHDL-Code für verschiedene Addierer targetblank VHDL-Code für verschiedene Addierer Ein Multiplikator ist einer der wichtigsten Hardware-Blöcke in den meisten digitalen und Hochleistungs-Systemen wie FIR-Filter, digitale Signalprozessoren und Mikroprozessoren etc. Mit Fortschritten in der Technologie haben viele Forscher versucht und versuchen, Multiplikatoren, die entweder der folgenden-hi bieten. VHDL-Code für verschiedene Addierern targetblank VHDL-Code für verschiedene Addierern targetblank VHDL-Code für latchffcomb für dcomb ckt in VHDL targetblank VHDL-Code für latchffcomb für dcomb ckt in VHDL-Bibliothek ieee Verwendung ieee. stdlogic1164.all Einheit dcomb ist Port (aktivieren: in stdlogic d: In stdlogic q: out stdlogic) end dcomb Architektur rtl von dcomb ist p beginnen. VHDL-Code für latchffcomb für dcomb ckt in VHDL targetblank VHDL-Code für latchffcomb für dcomb ckt in VHDL VHDL-Format Konvertierung Tool targetblank targetblank Blif2 VHDL-Format-Konvertierungs-Werkzeug A BLIF zu VHDL-Wandler (51K komprimierte tar, mit SunOS, Solaris und Linux-Binärdateien. Quelle Code (C) enthalten). VHDL-Format Konvertierung Tool targetblank VHDL-Format Konvertierung Tool targetblank VHDL-Code für Adder Subtractor VHDL-Code targetblank für Adder Subtractor BIBLIOTHEK ieee USE ieee. stdlogic1164.all USE ieee. stdlogicunsigned. all ENTITY Addierer PORT IS (Cin. IN STDLOGIC tragen. IN STDLOGIC X, Y. IN STDLOGICVE. VHDL-Code für Adder Subtractor targetblank VHDL-Code für Adder Subtractor targetblank VHDL-Design von 16 Radix 4-Punkt-FFT targetblank VHDL-Design von 16 Radix 4-Punkt-FFT-Aufbau und Funktions Implementierung eines 16-Punkt-Pipeline-FFT-Architektur präsentiert wird. Die Architektur basiert auf dem Radix-4-Algorithmus. Durch die Regelmäßigkeit der Algorithmus zu nutzen, butterfly-Operation und Multiplikator-Module entwickelt wurden. der Architekt. VHDL-Design von 16 Radix 4-Punkt-FFT targetblank VHDL-Design von 16 Radix 4-Punkt-FFT targetblank VHDL Frequenzmesser Targetblank VHDL-Frequenzmessgerät Verwenden Sie das Frequenzmessgerät VHDL write und die Module, die in klare Grundprinzipien für die Erfassung von Impulssignalen im Lebenszyklus einer Gatefrequenz unterteilt sind, verwenden Sie die vierteilige digitale Röhrenanzeige. VHDL-Frequenzmessgerät Zielblank VHDL-Frequenzmessgerät Zielblank VHDL-Code für 4 x 1 Multiplexer mit folgenden Methoden (1) If-else-Anweisung (2) Fallbehauptung (3) Mit Anweisung targetblank Schreiben Sie VHDL-Code für 4 x 1 Multiplexer mit folgenden Methoden (1) If-else-Anweisung (2) Fallbehauptung (3) Mit Anweisung VHDL-Code für 4 x 1 Multiplexer mit folgenden Methoden schreiben (1) If-else-Anweisung (2) Fallbehauptung (3) Mit Anweisung. VHDL-Code für 4 x 1 Multiplexer mit folgenden Methoden (1) If-else-Anweisung (2) Fallbehauptung (3) Mit Anweisung targetblank VHDL-Code für 4 x 1 Multiplexer mit folgenden Methoden (1) If-else-Anweisung (2) Fallbehauptung (3) Mit der Anweisung targetblank VHDL 100 Beispiele targetblank VHDL 100 Beispiele Share online für einige 100 Beispiele geeignet für FPGA Lernen für Anfänger. Im Inneren gibt es einige klassische Tricks. VHDL 100 Beispiele targetblank VHDL 100 Beispiele targetblank VHDL-Code targetblank rekonfigurierbarer FIR-Filter VHDL-Code Dies ist ein FIR-Filter Implementierungscode für einen rekonfigurierbaren FIR-Filter-Designcode d in VHDL-Sprache. VHDL-Code Zielblank VHDL-Code Zielblank VHDL Realisierung von 33 Matrix-Multiplikation Zielblank VHDL Realisierung von 33 Matrix-Multiplikation Matrix-Multiplikation VHDL-Implementierung, Dimension feste, sehr lehrreich. Focus auf das Verständnis der Schnittstelle, Timing-Einstellungen, Verzögerungssteuerung. Da die Struktur relativ klar ist, nicht hinzugefügt Stimuli-Datei, können Sie Ihre eigenen schreiben. VHDL Realisierung von 33 Matrixmultiplikation targetblank VHDL Realisierung von 33 Matrixmultiplikation targetblank Abgelaufene: 514.904ms - init: 0.9b: 1.8r: 514,3 5,199 CodeForge Chinesische Version CodeForge Deutsche Version Wo Sie CodeForge gehen gehen, um Ihr Profil Usercenter Vervollständigen Sie erhalten Punkte 8 Sec Bleiben Sie hier Hoppla! SorryThis Kerl ist geheimnisvoll, sein Blog wurde nicht geöffnet, versuchen Sie ein anderes, bitte OKIs es möglich, einen gleitenden Durchschnitt in C ohne die Notwendigkeit für ein Fenster von Proben zu implementieren Ive gefunden, dass ich ein bisschen optimieren kann, indem Sie eine Fenstergröße, die eine Macht ist Von zwei für Bit-Verschiebung statt zu teilen, aber nicht benötigen einen Puffer wäre schön. Gibt es eine Möglichkeit, ein neues gleitendes Durchschnittsergebnis nur als Funktion des alten Ergebnisses und des neuen Beispiels auszudrücken, definieren Sie einen beispielhaften gleitenden Durchschnitt in einem Fenster von 4 Proben: Add new sample e: Ein gleitender Durchschnitt kann rekursiv implementiert werden , Aber für eine exakte Berechnung des gleitenden Durchschnitts müssen Sie sich an die älteste Eingangsabfrage in der Summe (dh die in Ihrem Beispiel) erinnern. Für einen N-gleitenden Durchschnitt berechnen Sie: wobei yn das Ausgangssignal und xn das Eingangssignal ist. Gl. (1) können rekursiv geschrieben werden, also müssen Sie sich stets an die Stichprobe xn-N erinnern, um (2) zu berechnen. Wie von Conrad Turner angemerkt, können Sie stattdessen ein (unendlich langes) exponentielles Fenster verwenden, mit dem Sie die Ausgabe nur aus dem vergangenen Ausgang und dem aktuellen Eingang berechnen können. Dies ist jedoch kein normaler (ungewichteter) gleitender Durchschnitt, sondern ein exponentieller Wert Gewogenen gleitenden Durchschnitt, wo die Proben in der Vergangenheit ein geringeres Gewicht erhalten, aber (zumindest in der Theorie) man nie etwas vergessen (die Gewichte nur kleiner und kleiner für Proben weit in der Vergangenheit). Ich habe einen gleitenden Durchschnitt ohne einzelnen Element-Speicher für ein GPS-Tracking-Programm, das ich geschrieben habe. Ich beginne mit 1 Probe und dividiere durch 1, um die aktuelle Durchschn. Ich füge dann anothe Probe und dividiere durch 2 zu den aktuellen Durchschn. Das geht so lange weiter, bis ich auf die Länge des Durchschnitts komme. Jedes Mal danach, füge ich in der neuen Probe, erhalten Sie den Durchschnitt und entfernen Sie diesen Durchschnitt aus der Gesamtmenge. Ich bin kein Mathematiker, aber das schien ein guter Weg, es zu tun. Ich dachte, es würde den Magen eines echten Mathematik-Kerl, aber es stellt sich heraus, es ist eine der akzeptierten Möglichkeiten, es zu tun. Und es funktioniert gut. Denken Sie daran, dass je höher Ihre Länge, desto langsamer folgt es, was Sie folgen wollen. Das kann nicht die meiste Zeit, aber wenn folgende Satelliten, wenn Sie langsam sind, könnte die Spur weit von der tatsächlichen Position und es wird schlecht aussehen. Sie könnten eine Lücke zwischen dem Sat und den nachfolgenden Punkten haben. Ich wählte eine Länge von 15 aktualisiert 6 mal pro Minute, um eine ausreichende Glättung und nicht zu weit von der tatsächlichen Sat-Position mit den geglätteten Spur Punkte erhalten. Antwort # 2 am: November 16, 2010, um 23:03 Uhr Initialisierung insgesamt 0, count0 (jedes Mal, wenn ein neuer Wert dann ein Eingang (scanf), ein add totalnewValue, ein Inkrement (count), ein dividieren Durchschnitt (totalcount) Dies wäre ein gleitender Durchschnitt über Alle Eingänge Um den Durchschnitt über nur die letzten 4 Eingänge zu berechnen, benötigen Sie 4 Inputvariablen, vielleicht kopieren Sie jeden Eingang zu einem älteren inputvariable und berechnen dann den neuen gleitenden Durchschnitt als Summe der 4 Inputvariablen, geteilt durch 4 (Rechtsverschiebung 2 wäre Gut, wenn alle Eingänge waren positiv, um die durchschnittliche Berechnung beantwortet werden 3. Februar um 4:06 Das wird tatsächlich berechnen den Gesamtdurchschnitt und nicht den gleitenden Durchschnitt. Wenn Zähler größer wird der Einfluss eines neuen Eingangsprobe wird verschwindend kleiner ndash Hilmar Feb 3 15 um 13:53 Uhr Deine Antwort 2017 Stack Exchange, Inc


No comments:

Post a Comment