Hallo. Ein Eingangsdatenstrom soll stufenweise um den Faktor zwei dezimiert werden (variabel bis zu 15 Stufen). Die Ausgänge aller Stufen sollen über einen MUX wahlweise verfügbar sein. Datenrate ist 4MS/s, ein synchroner Takt von 96MHz ist auch da. Eine entsprechende Reduzierungsstufe (inkl. FIR-Filter) kriege ich hin. Und die dann verketten, ist trivial... Worauf ich hinaus will und wo ich gerne Eure Meinung dazu hören würde, ist folgendes: Die erste Stufe kann so aufgebaut werden, dass sie bei dem gegebenen Takt die Ressourcen gut ausnützt, also die 24 Taktzyklen zwischen zwei Samples verbraucht. Daher sage ich jetzt mal, sie nützt 100% der Zeit zum Rechnen. Nun ist die Datenrate am Ausgang aber nur noch halb so schnell. Die nächste Stufe arbeitet infolgedessen entweder nur noch mit 50% Taktgeschwindigkeit oder sie dreht 50% der Zeit Däumchen. Und in jeder folgenden Stufen ist das noch extremer, bis in der 15. Stufe das Däumchendrehen auf über 99,99% eskaliert. Natürlich könnte ich jetzt alle Stufen so verkoppeln, dass die Ressourcennutzung besser ausfällt. Aber eigentlich hätte ich gerne das Design schön schlicht, d.h. lauter identische Stufen, und die nicht von Hand zusammengemixt. Welche Idee fehlt mir hier? Wie geht man in so einem Fall am besten an die Sache ran...? Ich freue mich über jede Anregung, auch wenn sie nicht bis ins Letzte durchdacht ist. Bernhard
Ich frage mich was Dich daran stört, dass einige Einheiten nicht voll (oder sehr wenig) ausgelastet sind? Der einzige plausible Grund der mir dazu einfällt ist, dass Du Ressourcen im FPGA sparen möchtest. Da müsstest Du mal abschätzen wie viel du an Ressourcen sparen könntest und ob der Aufwand dafür gerechtfertigt ist.
Korrekt. Im allgemeinen sind meine Denk-Ressourcen teurer als die des FPGA... Eigentlich ist das nur ein ästhetisches Problem, solange die Ressourcen ausreichen. Da es sich um einen binären Baum handelt, von dem jeweils nur ein Zweig genutzt ist, werden ca. 25% verschwendet. Das bleibt im Rahmen. Allerdings benötigt jede Stufe Multiplizierer bzw. DSP48-Slices. Und die sind in den kleineren Spartan-6, die ich verwenden möchte so knapp, dass diese Verschwendung nicht vernachlässigbar ist. (LX25 erforderlich statt LX4 oder LX9; und wir verwenden viele davon... ;-)
Hallo, scheinbar hast du den Filter selber programmiert. Dann wäre es sinnvoll, wenn du wenigstens noch einen zweiten für z.B. fs=4 Ms/s/(2^8) entwickelst. Xilinx hat im Core-Generator einen FIR-Compiler, damit ist es kein Problem für jede Samplingfrequnz einen speziellen FIR-Filter zu generieren. Die nutzen die Ressourcen dann in jeder Stufe gut aus. Tom
Danke für den Tipp, Thomas. Ich weiß, dass der Core-Generator da was hat, und hab mir das auch überlegt. Nur passt das in meinem Fall nicht so geschickt, weil ich weitere Ausgänge aus dem Filter nutze, die beim Core-Generator nicht zugänglich sind ... Das mit dem zweiten Filter ist eine gute Idee, weil es einen guten Kompromiss zwischen Aufwand und Nutzen ergibt. Bei der Suche nach "perfekten Lösungen" übersehe ich oft die pragmatischen. Bernhard
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.