Hallo, ich habe über den "Core Generator" der Xilinx ISE ein FIR-Filter mit 257 Koeffizienten und zwei Kanälen erstellt. Ich möchte also 2 x 8 Bit an Eingangsvariablen reingeben und ein quantisiertes Ausgangssignal von 2 x 16 Bit erhalten. Beim Aufruf der Verilogdatei aus dem "Top Level"-Modul und einer Simulation mittels iSim jedoch kriege ich egal was ich für Eingangsdaten sende als Ausgangsdaten nur einen Haufen 16 Bit voller 0en. Das ganze lasse ich mit einem Takt laufen und um die DSP48E Slices nicht zu überfordern arbeite ich mit dem 16fachen an Systemtakt als der den ich einspeise. Habe schon alle Kombinationen probiert und ursprünglich einen Dirac-Impuls gesendet um zu überprüfen ob ich die Filterkoeffizienten zurückkriege, aber es hilft nichts. Hat jemand einen Tipp für mich ob ich noch etwas mit dem Filtermodul machen muss? Eine andere Frage die ich mir noch gestellt habe ist ob die generierte Verilogdatei synthetisierbar ist. Ich weiß nur das ein Haufen anderer Dateien noch erstellt wurden, darunter auch die entscheidende .ngc-Datei, aber ich hab keine Ahnung wie man so eine Datei einbindet - ich weiß nur wie man mit HDL-Sprachen arbeitet. Kann man theoretisch auch über Verilog eine .ngc-Datei aufrufen und dort Eingangsdaten hineinsenden und auslesen? Ich bitte um einige Hilfe oder Referenzen dazu. Am besten ein Beispiel in der mein Fall einmal vorgeführt wird, so kann ich mir dann am besten ein Bild daraus machen.
Welche Ausgangs-Rundungsart hast du denn eingestellt? Ich hatte damit auch Probleme, hab mir dann aber die Ausgabe bei "Full precision" angeschaut und die passenden Bits selbst rausgesucht. Irgendwie geht das rounding nicht so, wie ich das mir vorgestellt habe. Die Verilog Datei ist nur der Wrapper. In ISE musst du einfach über Add Source die .xco Datei einbinden, dann findet der alles weitere und der Core ist direkt über ISE managebar.
Christian R. schrieb: > Welche Ausgangs-Rundungsart hast du denn eingestellt? Ich hatte damit > auch Probleme, hab mir dann aber die Ausgabe bei "Full precision" > angeschaut und die passenden Bits selbst rausgesucht. Irgendwie geht das > rounding nicht so, wie ich das mir vorgestellt habe. > > Die Verilog Datei ist nur der Wrapper. In ISE musst du einfach über Add > Source die .xco Datei einbinden, dann findet der alles weitere und der > Core ist direkt über ISE managebar. Hey Danke für die Tipps. Du hattest Recht, ich hatte nämlich eingestellt er solle bitte Runden, hat dann aber nichts mehr ausgegeben. Hab dann auch in meinem Top-Modul eine manuelle Rundung durchgeführt nachdem ich deutlich sichtbare Ergebnisse in der "Full precision"-Darstellung bekommen habe. Als ich die .xco-Datei eingebunden habe hat er mir das anscheinend auch fehlerlos angezeigt - danke dafür. Und ich hoffe richtig zu sehen, dass es die gleichen Ein- und Ausgangsvariablenaufrufe bzw. Modulaufrufe sind wie bei der .v-Datei auch. Er zeigt mir zumindest keine Fehler an.
Das komische am Runden da ist, dass er die Teilung des Ausgangssignals durch die Anzahl der Taps schon im Core macht und dann nochmals die Bits verschiebt (bei Trunkate). Und dann kommt nur noch was sehr kleines raus. Den genauen Grund hab ich noch nicht rausgefunden. Ich hab dann im Matlab FDA Tool eingestellt, er soll die Koeffizienten nicht auf den Maximalbereich skalieren und schiebe den Vektor nach dem Filter selbst zurecht, dann klappts. Muss man nur auf Übersteuerung aufpassen.
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.