Mittelung XILINX Virtex2-Pro FPGA

OP #2342833
Lesenswert?
• ▲
▼
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.
Gast #2342915
Lesenswert?
• ▲
▼
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...
Moderator (Firma: Titel) Persönliche Seite #2343375
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.