Hallo allerseits Ich plage mich gerade etwas mit dem Xilinx FFT Core 9.0 herum. Die Ausgabe kann normal oder bit reversed erfolgen (Pipelined streaming architektur). Weil ich hinterher noch einen FFT-Shift Block habe, möchte ich den unnötigen Speicher zum Reordering des FFT outputs vermeiden. Wenn ich jetzt beim Index die Bits vertausche (der Index wird wieder eine normale Rampe von 0 bis NFFT-1), kommt nur noch unsinn raus. Sind entgegen dem Datenblatt die Datenwerte Im und Re auch anders codiert?
Eigentlich nicht. Ich kenne die aktuelle Version nicht, habe aber den xilinx core schon mehrfach verwendet. Es kommt immer ein index_k raus, der die Nummer anbietet, so kann man die Daten per hand in Speicherzellen schieben. Egal, wie man den Core paramteriert, stimmen die werte immer mit k überein.
Ich habe mal ein paar Screenshots gemacht: Gemäss dem Index (einmal vor und einmal nach meinem Reverse-Block) würde die korrekte Addresse ausgegeben. Nur bei den Real- oder Imaginärwerten (umgerechnet in dB) ist das ganze sehr komisch (einmal mit Bit reversed ouput, einal normal). Aber ich werde dem noch etwas nachgehen.
Ich habe den ersten Fehler gefunden: Die Indexe habe ich wieder zurück-getausch. Wobei diese natürlich gleich der RAM-Adresse entsprechen würden... Nur scheint irgendwie die Ausgabe noch nicht zu stimmen: Der Peak bei ~500 sollte ganz am Anfang sein. Die Indexe habe ich überprüft (0, 512, 256, 768, 128, 640...) entspricht der korrekten Reihenfolge über das ganze Frame hinweg.
Ich komme mit Deiner Beschreibung des Problems nicht klar. Bit-reversed order heißt, daß die Daten im Ausgabe-Vektor nicht bei #0 anfangenden fortlaufend gelisted sind, sondern daß der Ausgabe-Index "bit-reversed *verwürfelt*" ist. Also wenn Du 8 Werte in einem Eingangsvektor hast, dann ergibt sich die Reihenfolge der Ausgangsdaten so: Eingangsdaten Ausgansgdaten (dec bin) (dec bin) ---------------------------------- 0 %000 0 %000 1 %001 4 %100 2 %010 2 %010 3 %011 6 %110 4 %100 1 %001 5 %101 5 %101 6 %110 3 %011 7 %111 7 %111 Kann es sein, daß Du beim bit-reveral noch einen Fehler drin hast? Nimm doch mal besser einen Rechteck-Impuls und schau Dir die Si-Funktion als Ergebnis an.
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.