Erst mal ein nettes Hallo an Alle hier ich besuche eure Seite schon fast regelmässig und finde die Foren absolut Klasse und auch für mich als absoluter Neuling auf dem FPGA/VHDL-Gebiet völlig verständlich. Nun zu meinem Problem: Ich schlage mich seit geraumer Zeit mit einer nicht mehr ganz so aktuellen Virtex2-PRO von Xilinx und dessen Programmierung herum. Wir bauen Laser-Messsysteme und haben in Zusammenarbeit mit einigen anderen Firmen ein Laser-Weg-Messsystem entwickelt. Nun stellt sich heraus, das dieses System bestehend aus HF-Baugruppe/Zählerkarte (mit FPGA) mit doch noch einigen unschönen Fehlern behafted ist. Wir haben nun auf eigene Faust das Layout der HF-Baugruppe geändert, und mit einigen Änderungen an der FPGA-Weichware das System auch wieder zum laufen bekommen. Allerdings könnte dieses noch etwas besser werden. Aber ich habe schon alle Möglichkeiten probiert die ich gesehen habe. Nun suche ich eine Möglichkeit über 2 oder drei Messwerte, die als 32Bit Signal vorliegen einen Mittelwert zu bilden, ohne das die Leistung zu stark beeinträchtigt wird. Ich könnte auch den Quellcode (ISE 7.1 Projekt) zur Verfügung stellen. Ich weiss im Moment echt nicht mehr weiter. Würde mich freuen wenn jemand mir als Anfänger etwas weiterhelfen könnte.
Dann addierst du die Messwerte in jedem Zyklus auf und dividierst anschließend durch 2. Also zuerst alten und neuen Messwert addieren und einem 33-Bit-Vector zuweisen. Von diesem sind dann die 32 oberen Bits dein gemittelter Messwert. Das kannst du dann sooft machen, wie du willst. An der Performance sollte das kaum etwas ändern, nur das du einen Zyklus länger brauchst...
Sven Herrmann schrieb: > Nun suche ich eine Möglichkeit über 2 oder drei Messwerte, die als 32Bit > Signal vorliegen einen Mittelwert zu bilden, ohne das die Leistung zu > stark beeinträchtigt wird. Du kannst einen gleitenden Mittelwert über n Werte nehmen. Sagen wir mal n=4, dann brauchst du einen Ringpuffer/Schieberegister, der z.B. 4 Integer speichern kann. Immer der erste wird auf den 34-Bit Mittelwert dazuaddiert, der letzte abgezogen. So hast du pro Takt einen Wert, der über die letzten 4 Messungen gemittelt ist. Es gibt auch noch andere Methoden, aber bis zu einer Speichertiefe von 16 Bits werden hier für das Schieberegister nur 32 LUTs benötigt.
Vielen Dank für die Antworten. Hat vieleicht jemand ein kleines Beispiel wie ich das machen kann?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.