Ich habe eine Frage im Zusammenhang mit der kontinuierlichen Mittelung der ADC-Werte Der Ansatz, den ich verwendete, ist die kontinuierliche Mittelung von Beispiel 256 Samples Der Adcaout-Wert, der in dem Code angezeigt wird, den ich auf meinem GUI bekomme, erhöht sich langsam Als Beispiel, wenn ich den Wert 100mA erwarte, Meine GUI zeigt 4mA, 8mA, 15mA und dann endlich nach 2 Minuten bekomme ich stabil 100mA Wert Ich möchte die 100mA direkt auf meiner GUI von Adcaout anstelle von Inkrementwerten sehen und stabilisieren nach irgendwann Eine andere Frage ist das, kann ich irgendwie diesen Prozess machen Schnell, so dass ich nicht für 3 Minuten warten muss, um stabile 100 mA von adcaout zu erhalten. Die Uhr clk im digitalen Design unten ist 20 MHz Die Uhr für den Empfang von ADC-Werten auf der FPGA-Karte beträgt 15 KHz .-- Die Datei ist unten . Dein Code wird wie folgt modifiziert. Die endgültige Ausgabe, die ich auf meiner GUI betreibe, ist slvvalue1 und slvvalue2.How über diese bei Reset oder zu jeder anderen Zeit, wenn du willst, ordne den Datain-Wert allen Elementen in deinem Bühnen-Array zu. Dies sollte Sofort legen Sie Ihren Durchschnitt auf den aktuellen Wert. Das folgende Beispiel zeigt den vollständigen Code für einen gleitenden Durchschnitt Taschenrechner Mein Vorschlag ist, dass Sie es studieren, bis Sie es verstehen Dann versuchen, es in Ihrem Design verwenden Endlich, und nur nachdem Sie eine grundlegende haben Schaltung arbeiten, können Sie es ändern, um Ihre Design-Einschränkungen Datenbreite, Anzahl der Proben, Bereich der ganzen Zahlen, die Verwendung von signierten vs Integer etc. zu erfüllen. Finally, wenn Sie den oben genannten Code verwenden möchten, um zwei separate Mittelwerte für zwei verschiedene Signale zu halten, Einfach instanziieren Sie die Mittelung Entity zweimal. Edit Wie ich aus Ihren Kommentaren zu verstehen, können Sie eine zusätzliche Eingabe, um den Durchschnitt sofort auf den aktuellen Eingabewert einstellen In diesem Fall können Sie eine Lasteingabe wie unten gezeigt angewendet werden. answered Nov 26 13 at 15 45. Ich versuche, eine VHDL gleitenden Durchschnitt gleichmäßig gewichtetes Modul zu schreiben, das FSMD ata verwendet. Von dem, was ich verstehe, die nötigen Zustände wären etwas wie Abruf, teilen, Ausgabe Unten ist der Prozess, den ich geschrieben habe, aber ich fühle mich wie meine Logik ist Ein bisschen aus Hinweis, dass die Daten I m Mittelung ist nur eine konstante Array von 8-Bit-Zahlen, so dass ich dachte, es sollte gut sein, um eine nicht-kausalen Design verwenden. Die Daten haben 64 Einträge, und im Moment das Fenster für den Durchschnitt Ist 4.How falsch macht dieses aussehen. Ein paar Probleme, die ich sofort sehen kann. Sie don t neu initialisieren temp anywhere. You don t haben keine Limitschecks für count ist es ein Subtyp oder nur eine natürliche Ganzzahl Was passiert mit Muster zählen Ich, wenn du dich der Grenze nimmst. Wie gehst du über. Deine Schleife ist 0 bis len - Bist du sicher, dass du es nicht gemeint hast, wenn du den ganzen Zustand dekodiert hast, du bist nicht wirklich nstate Alle beachten Sie, dass Sie nicht einmal Initialisierung cstate, aber Sie re decodieren es entweder Entweder machen Sie Ihren Zustand decodieren einen separaten kombinatorischen Prozess oder einfach nur loszuwerden nstate und zuweisen, um cstate direkt. Otherwise, es hängt von Ihren Design-Ziele Wenn Sie don kümmern sich um Durchsatz, aber müssen mit einer sehr hohen Taktrate laufen, möchten Sie vielleicht Ihre Ergänzung nacheinander statt parallel zu machen, zum Beispiel. answered Sep 5 14 bei 13 32.thanks, dass definitiv macht die Dinge besser über die zählen Rollover, ich Ich bin mir nicht sicher, wie es zu tun ist, denn für jedes Muster zählen bis zu 63, ich möchte seinen Wert und den Durchschnitt des Fensters um ihn herum anzeigen, also wenn ich im Rennen rollover, sollte es nicht aus der Grenze gehen, aber es wird Nicht volle Daten zeigen, wenn ich eine kausale Umsetzung tat, würde ich irgendwann eine Verzögerung am Anfang haben, ist es eine ähnliche Sache, die ich hier brauche, aber am Ende user1710566 Sep 5 14 at 23 23.My Lösung war elsif clk Event dann wenn count 64 Dann zählen 0 sonst berechnen Ende, wenn in der for-Schleife habe ich einen Ausstieg, wenn count ich war größer als 63 user1710566 Sep 6 14 bei 0 05.Moving Avergare Filter MAF in VHDL 2008 für DE0-NANO mit FPGA Cyclone IV. This Filter arbeitet mit Fester Punkt, dass die Anzahl der Bits von der ADC. About der Moving Average Filter ist. Moving Average Filter ist ein digitaler Filter, der Durchschnitt der Eingabe s letzten M 1 Begriffe wie die folgende Expresion. Using die zweite direkte Form können wir Definiere hn wie diese hnxnh n-1.So yn kann in diesem waw ynhn - h nM M ausgedrückt werden. 1.Struktur des Filters. Die Top-Hierarchie ist, dass alle Filter s Struktur definieren. Um von h n-1 zu h zu generieren NM, Flip-Flops werden verwendet, um zu verzögern. Sie können diese Aktion zu diesem Zeitpunkt. Sie unterschrieben mit einem anderen Tab oder Fenster Reload, um Ihre Sitzung zu aktualisieren Sie unterzeichneten in einem anderen Tab oder Fenster Reload, um Ihre Sitzung zu aktualisieren.
No comments:
Post a Comment