www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Probleme mit erstelltem FIR Filter aus Core Generator (Xilinx ISE)


Autor: Veribro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Veribro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.