Forum: FPGA, VHDL & Co. Mittelwert berechnen in VHDL


von Smile N. (smile_n)


Angehängte Dateien:

Lesenswert?

Hallo! Ich habe hier eine schöne Aufgabe, die ich in VHDL machen soll. 
Kann mir jemand einen Tipp geben, wie ich dabei vorgehen soll. Ich weiß 
zwar wie ein Mittelwert berechnet wird, jedoch nicht genau wie es in 
VHDL gemacht wird.

Der IP-Core FILT_IP stellt einen Hardware Beschleuniger dar, der über 
ein AXI4-Lite Slave-Interface Daten einer Größe von insgesamt 256 Bit 
vom Prozessor bekommt, über die der Mittelwert (bezogen auf jeweils 8 
Bit) berechnet und anschließend per Slave-Register zurück gelesen werden 
soll. Der Hardware Beschleuniger arbeitet vollsynchron auf die steigende 
Taktflanke des Clock-Signals getriggert und macht Gebrauch von einem 
low-active Reset Signal, um das Ergebnis zurückzusetzen. 
Vervollständigen Sie das auf der nächsten Seite gegebene VHDL-Gerüst 
gemäß der beschriebenen Funktionalität.

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

Wo ist die nächste Seite?
Das Gerüst steht doch bereits da?
mfg mf

von Burkhard K. (buks)


Lesenswert?

Smile N. schrieb:
> Ich weiß
> zwar wie ein Mittelwert berechnet wird, jedoch nicht genau wie es in
> VHDL gemacht wird.

Die Frage ist erstmal gar nicht, wie Du das in VHDL machst, sondern 
welche Hardware-Blöcke für den Algorithmus gebraucht werden. Das sind 
ganz offenbar:

  * eine Stufe zur Addition
  * eine Div-by-8 Stufe
  * ein Reset

Den Ablauf der einzelnen Schritte steuert man mittels Finite State 
Machine (FSM). Bei der Addition ist noch die benötigte Wortbreite zu 
beachten.

Dann hängt die zu wählende Implementierung noch von der max. zulässigen 
Ausführungsdauer (Anzahl Zyklen) ab. 8 Werte aufaddieren kann man immer 
in 7 aufeinanderfolgenden Einzelschritten - oder deutlich schneller 
mittels "Pipelining". (Wieviel Zeit Dir zur Verfügung steht, sagt Deine 
Anforderung nicht.)

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Ich frage mich, wo hier die "Beschleunigung" sein soll. Eine derartige 
"IP" per AXI-Slave anzubinden, ist wohl das umständlichste was man 
sich ausdenken kann, um einlaufende Daten zu filtern. Das ist eine 
Massive Bremse. Und so, wie das oben rechts vorgestellt wird, geht das 
schon mal gar nicht. Es würde ein Block benötigt, der linksseitig ein 
AXI-lite-IF hat.

von foobar (Gast)


Lesenswert?

Typische bescheuerte Schulaufgabe.  Die erste Seite ist nichtssagender 
Blah damit es beeindruckend aussieht.  Die zweite Seite mit dem Gerüst, 
was er wirklich machen soll und irgendwo im Text versteckt noch ein paar 
Details.  Ich vermute, er soll einfach 32 Bytes parallel entgegennehmen 
und den Mittelwert davon zurückliefern.  Fertig.  Ob man sowas je 
braucht ...

von Duke Scarring (Gast)


Lesenswert?

foobar schrieb:
> Ob man sowas je
> braucht ...
Ja, um zu zeigen, wie man mit der CPU interagiert.

Das ist wie die Geschichte, wo aus half adder und full addern ein 
größerer Addierer gebaut wird: steht in jedem Digitallehrbuch, aber wird 
in der Realität so nie gebraucht.

Duke

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
Noch kein Account? Hier anmelden.