Forum: FPGA, VHDL & Co. Cast/Convert und Reinterpret im Xilinx Systemgenerator


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, hat schon einmal jemand den Cast/Convert bzw reinterpret im 
Systemgenerator von Xilinx mit Matlab Simulink?

Ich habe folgendes problem:
Ich möchte einen einfachen Mittelwertfilter bauen, der mir aus 32 Werten 
den Mittelwert bestimmt und anschließend das Ergebnis ausgibt. Die Werte 
sind von einer DDS und gehen von >-1 bis < +1. Das Ergebnis soll wieder 
in diesem Wertebereich liegen.

Ich habe dies, wie im Bild 1 zu sehen ist, mit einem Reinterpret und 
einem Convert gemacht. In der Simulation (Bild 2) ist dies auch 
Wunderbar. Wenn ich jetzt mit meiner Software jeweils vor und nach dem 
Filter die Daten auslese, sehen die Daten vor dem Filter sehr gut aus, 
danach allerdings sehr komisch, als würde sich der Bitvektor häufig 
überschlagen. (Bild 3 und 4).
Hat jemand eine Ahnung was das sein könnte?   Ich bin irgendwie ratlos.

von Trundle T. (shaheed)


Lesenswert?

kannst du mal erklären wie deine Schaltung den Mittelwert berechnet. 
Wenn ich ehrlich bin ich seh da keine Mittelwertberechnung. Also was ich 
da sehe ist eine Art von Trigger aus Counter und Konstante, der Trigger 
steuert nen Mux der als Eingang den Ausgang vom Addierer und anscheinend 
deinen Momentanwert des Sinus hat. Obwohl ich das nicht genau sagen,kann 
weil ich den Takt von dem Register davor nicht kenne. Dann geht der 
Ausgang vom Mux auf nen Addierer/Sub, wobei noch unklar ist was wann am 
Ausgang vom Mux liegt. Tja und was macht der Addierer ... den Ausgang 
vom Mux und den Dateneingang verrechnen, aber wie mit/ohne Takt.. Danach 
haste noch nen Register was du durch den Trigger taktest, aber was da 
drin stehen soll keine Ahnung. Erklär mal bitte wie da ein Mittelwert 
ala Summe  i = 0  bis i = n von Ai / n = Mittelwert .. rauskommen soll.

von Thomas (Gast)


Lesenswert?

Der Addierer addiert immer den Eingangswert auf den Ausgangswert des 
Addierers, dies tut er 31x. Beim 32. mal, schaltet das Register durch, 
so dass das ergebniss aus 32 Werten ausgegeben wird. Gleichzeitig 
schaltet der Multiplexer den 2. Eingang des Addierers um auf den Z^-1 
Wert des Eingangs, So wird er quasi resetet.
Da 32 ein 2^n Wert ist, will ich die Divison durch Shiften des Kommas 
erreichen. Dies soll durch das Reinterpret geschehen.

von Trundle T. (shaheed)


Lesenswert?

Ok ist jetzt etwas klarer, d.h. wenn ich das richtig verstanden hab sind 
alle Register, Mux Adder von einem Takt gespeist?? und so bekommst du es 
hin das der Adder genau 32 Additionen vor dem Reset durchführt?? Das ist 
sicher kein asychroner Addierer der rückgekoppelt ist und darum frei 
läuft???

Zu dem Reinterpret-Modul kann ich dir nix sagen das kenn ich net. Sry

von Thomas (Gast)


Lesenswert?

Alles läuft mit dem gleichen Takt. Der Addierer hat eine Latncy von 
einem Takt.
Laut Simulation scheint ja auch alles in Ordnung zu sein.

von Edi M. (Gast)


Lesenswert?

Warum machst Du denn diesen Convert? Eine einfache Reinterpretation 
müsste doch reichen (?)

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.