Forum: FPGA, VHDL & Co. Wie setze ich ein FIR-Filter aus MATLAB um ?


von Hans-Werner (Gast)


Angehängte Dateien:

Lesenswert?

Habe mal ein Filter mit dem FDATool von MATLAB entworfen.
Verstehe jedoch nicht die Umsetzung in VHDL.
Wo benötige ich welche Bitbreite und welchen Datentype ?
Habe ausserdem ein Warning das Input zugewiesen aber nicht benutzt wird.
Wie kann ich die Wav-Datei die ich unter Simulink verwende auch in der 
Simulation mit Xilinx ISE verwenden ?

Danke

von Christian R. (supachris)


Lesenswert?

Recht einfach gehts mit dem FIR-Compiler IP-Core aus dem Core Generator. 
Das Datenblatt dazu ist auch sehr ausführlich.

von Hans-Werner (Gast)


Lesenswert?

Den gibt es, denke ich, nur bei der Vollversion.
Entfällt also.

von Günter -. (guenter)


Lesenswert?


von Hans-Werner (Gast)


Lesenswert?

Habe das Programm ausprobiert.
Ich erhalte 41 Warnings. Darunter viele Meldungen der Form "Signal is 
assigned but never used" und ein einzelnes Latch. Weitere 
Fehlermeldungen ergeben sich aus der Verwendung des Latches. Mit 21 
Koeffizienten mit je 8 Bit ergibt sich für einen Spartan 3E folgendes.

Selected Device : 3s100etq144-5

 Number of Slices:                      576  out of    960    60%
 Number of Slice Flip Flops:            975  out of   1920    50%
 Number of 4 input LUTs:                973  out of   1920    50%
 Number of IOs:                          43
 Number of bonded IOBs:                  43  out of    108    39%
 Number of GCLKs:                         1  out of     24     4%

Hat jemand schon Erfahrungen welche FIR-Filtergrösse sich auf welchem 
FPGA realisieren lässt ? So Pi mal Daumen würde ich sagen das vielleicht 
noch ein Filter 30 Ordnung mit 8 Bit Koeffzienten auf den Spartan 3E 
passt.
Trifft es zu das ich für einen IIR-Filter eine wesentlich grössere 
Bitbreite der Koeffizienten, bei gleicher Filterordnung, benötige ? 
(Durch die Rückkopplung des IIRs bedingt ist wahrscheinlich eine 
grössere Auflösung bzw. Rechengenauigkeit erforderlich). Ich habe den 
FIR-Filter 20 Ordnung (Least Squares) auch als IIR-Filter 20 Ordnung 
(Chebyshev Type II) mit dem FDATool "realisiert". Der Passbandbereich 
wird hier zwar sehr viel besser angenähert, bei der Umsetzung in Fixed 
Pont sind jedoch 20 Bit erforderlich.
Der FIR-Filter ist doch im Core Generator der freien Version enthalten. 
Natürlich erhält man dann kein VHDL-File. Werde mir erst mal die 
Beschreibung von Xilinx durchlesen, da ich einige Einstellungen noch 
nicht verstehe.

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Hans-Werner wrote:
> Den gibt es, denke ich, nur bei der Vollversion.
> Entfällt also.

Also im 10.1 Webpack ist ein coregen mit dabei.

In Matlab gibt es eine Funktion coewrite (welche Tollbox?) die erzeugt 
dir eine coe-File. Das musst du nur noch mit dem Coregen einlesen, der 
Rest passiert von allein. Dann ist nur noch der Core richtig 
anzusteuern.


Tom

von mcten (Gast)


Lesenswert?

Hallo,

ich habe mit dem FDATool meine Filterdesigned und mir dort die 
Filterkoeffizienten in ein Xilinx Coefficient File (*.coe) vom FDATool 
schreiben lassen. Den Filter selbst habe ich dann per "Hand" in VHDL 
umgesetzt.

Die Größe der Filter hängt auch von der Implementierung ab (Normalform, 
transponierte Form, Polyphasen Filter, ...).

Gute Literatur zur FIR-Filter Implementierung
- Meyer-Baese: Digital Signal Processing with Field Programmable Gate 
Arrays
- Reichardt/Schwarz: VHDL-Synthese, 4. Auflage.

McTen

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.