Forum: FPGA, VHDL & Co. Mathlab-Modelle in VHDL implementieren


von Martin _. (martin__)


Lesenswert?

Hallo Leute!


Soweit ich gesehen habe, hat es so ein ähnliches Thema schon gegeben. 
Was mich jedoch interessiert, welche Tools es für diesen Zweck gibt und 
was sie taugen?

Wir haben vor eine FFT in VHDL zu realisieren. Zu diesem Zweck ist ein 
Mathlab-Modell einfach und schnell zusammengebaut.

Die Aufgabe besteht nun darin, dieses Mathlab-Modell (m-Files) in ein 
VHDL-Modell umzuwandeln.
Die Firma Xilinx bietet das Tool: System Generator for DSP an. Angeblich 
soll dieses Tool genau diese Konvertierungs-Funktion beherrschen.
Andererseits habe ich gehört, dass es das Tool "Simulink HDL Coder 1.6" 
geben soll, welcher dieselbe Funktion beherrscht.

Nun meine Frage: Hat jemand Erfahrungen mit den beiden Tools. Mir ist es 
wichtig, dass das Tool übersichtlich ist und auch einfach zu bedienen.

Vielen Dank.


Schöne Grüße

Martin

von Nephilim (Gast)


Lesenswert?

ich habe selber bisher nur mit den HDL Coder von The Mathworks und mit 
Synplify DSP von Synplicity/Synposis gearbeitet.

in sachen HDL Code aus m-Files generieren gibt es nur einen beschränkten 
Befehlssatz den man verwenden kann, da nur grundlegende Befehle 
unterstützt werden. gleiches gilt für den blockset, wenn man den HDL 
coder verwendet. dieser benutzt den originalen simulink blockset, kann 
aber nur eine fest definierte untermenge davon auch in HDL code 
umsetzen.

Synplify DSP dagegen bringt seinen eigenen blockset mit. dieser kann 
dann vollständig für die HDL Generierung verwendet werden.

für filtersachen haben beide tools aber spezielle Blöcke um FFTs, FIRs 
und einiges andere zu generieren. diese blöcke müssen dann nur noch 
paramteriert werden.

wenn man sich daran gewöhnt hat die algorithmen in simulink 
zusammenzuklickern ist das eigentlich ne garnichmal schlecht möglichkeit 
HDL Code zu kreiren. aber nicht alles lässt sich so gut erzeugen. 
Kommunikationsschnittstellen z.B. würde ich noch direkt in VHDL 
programmieren. das geht dort doch deutlich einfacher und schneller.

Gruß
Nephilim

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


Lesenswert?

Hallo,


der SystemGenerator stellt u.a. Funktionen zur Signalverarbeitung zur 
Verfügung. Damit kannst du dir in Matlab/Simulink ein Modell deines 
Algorithmus zusammen bauen, Zyklus-genau simulieren und den Code für 
einen Xilinx FPGA generieren.
Der HDL Coder macht ähnliches, nur auch für die FPGAs von anderen 
Herstellern, ist ja auch nicht von Xilinx und deutlich teuerer.
Ich kann mich noch dunkel daran erinnern, dass die Anwender des 
SystemGenerators nicht gerade von der Qualität des erzeugten Codes 
(viele Logic Level) begeistert waren.

Achso, es heißt Matlab, ohne h.

Tom

von Peter Oberhofer (Gast)


Lesenswert?

Schreibt man MATLAB jetzt mit "h"? :-)

von Martin _. (martin__)


Lesenswert?

Hallo Leute!

Danke für eure umfangreichen Antworten.
Matlab schreibt man ohne "H".

Was mich sehr interessiert, was kommt am Ende raus, bei diesen Tools 
nach der Codierung. Ein VHDL-File oder irgendein verschlüsseltes Modell?

Kann man mit dem SystemGenerator auch nur einen beschränkten 
M-File-Befehlssatz verwenden, so wie es beim HDL-Coder, wie oben 
beschrieben ist?

Ich tendiere eher zum HDL-Coder, weil man hier nicht auf einen 
bestimmten FPGA angewiesen ist. Ich denke, dass das Tool von Synopsys 
noch teurer sein wird.
Gibt es eine Liste, welche Befehle aus den M-Files vom HDL-Coder 
verarbeitet werden können?
Kann man z.B. in M-Files enthaltene Sin und Cos-Funktionen mit dem 
HDL-Coder in VHDL implementieren?

Vielen Dank im Voraus

Schönen Tag noch
Martin

von Gast (Gast)


Lesenswert?

>Kann man z.B. in M-Files enthaltene Sin und Cos-Funktionen mit dem
>HDL-Coder in VHDL implementieren?

nö, nicht dass ich wüsste. Vielleicht nochmal zum verdeutlichen 
bezüglich SystemGenerator.

Dieser kann (fast) auschließlich Simulink Modelle codieren. Man kann 
zwar m-files einbinden, die dann aber nur für Statemachines, 
Multiplikationen und Speicheroperationen verfünftig scheinen.
In Simulink kann man ausnahmslos die von Xilinx zur Verfügung gestellten 
Blocksets verwenden. Viele davon parametrisieren IP-Cores des ISE 
Core-Builders. Es gibt ein paar nette Referensdesign, ne FFT ist aber 
nciht dabei sondern wird als (sehr mächtiger) IP-Core bereitgestellt.

Die IP-Cores erscheinen im HDL-File als Instantiierung, lassen sich 
folglich nur für Xilinx-FPGAs übersetzen.
Es gibt von Xilinx ein weiteres Werkzeug für Matlab m-files (Accel DSP), 
dessen Entwicklung wird aber mit Version 12 eingestellt.

http://www.xilinx.com/support/sw_manuals/sysgen_ref.pdf
dann unter mcode schauen.

von Gerrit B. (gbuhe)


Lesenswert?

Hallo,

MATLAB schreibt man übrigens deshalb nicht mit "h", weil die erste Silbe 
von Matrix kommt und nicht von Mathematics.

Gruß,

Gerrit, DL9GFA

von Nephilim (Gast)


Lesenswert?

also sin und cos gehen so an sich nicht. am einfachsten ist es diese als 
lookup table zu implementieren, aber man kann auch versuchen einen 
cordic-algorithmus zu bauen oder ähnliches.

um zu sehen welche einschränkungen man bei embedded matlab functions hat 
könnte man vielleicht hier mal:

http://www.mathworks.co.uk/access/helpdesk/help/pdf_doc/slhdlcoder/slhdlcoder_ug.pdf

dort einfach suchen nach "Generating HDL Code with the Embedded MATLAB 
Function Block"

naja und mal zum preis, so sehr unterscheiden sich da die HDL Coder von 
Mathworks und Synplify DSP von Synposis nich. der HDL Coder kost bei 
15k€ und Synplify DSP rund 20k€.

Gruß
Nephilim

von xxx (Gast)


Lesenswert?

>Mathworks und Synplify DSP von Synposis nich. der HDL Coder kost bei
>15k€ und Synplify DSP rund 20k€.

O je, lohnt sich denn eine solche Anschaffung überhaupt...

von Henk ten Bakker (Gast)


Lesenswert?

Es lohnt sich nur, wenn man ständig Algorithmen ändert und Prototyping 
macht. Für application engineering und design to cost ist das die 
falsche Richtung.

von TestX .. (xaos)


Lesenswert?

xxx schrieb:
>>Mathworks und Synplify DSP von Synposis nich. der HDL Coder kost bei
>>15k€ und Synplify DSP rund 20k€.
>
> O je, lohnt sich denn eine solche Anschaffung überhaupt...

ja tut sie für forschung & entwicklung mit prototyping. hört sich zwar 
fürn bastler viel an ist aber nur nen kleiner kleks an kosten nebenbei^^

von Christian R. (supachris)


Lesenswert?

xxx schrieb:
>>Mathworks und Synplify DSP von Synposis nich. der HDL Coder kost bei
>>15k€ und Synplify DSP rund 20k€.
>
> O je, lohnt sich denn eine solche Anschaffung überhaupt...

Naja, bei 17.000 US$, die beispielsweise der größte Virtex 5 SXT FPGA 
kostet, ist das dann auch nicht mehr so viel Geld. Prinzipiell kann man 
aber alle Matlab Geschichten mit Gehirnschmalz auch in VHDL Code und die 
Cores bringen. Ich bin ja auch in der Forschung, aber ich sehe in 
solchen Geschichten auch eher weniger Sinn. Wir hatten mal dieses Tool, 
was aus Simulink auf den TI DSP Code erzeugt hat. Naja....als für Rapid 
Prototyping, wo es nicht auf Geschwindigkeit ankommt, vielleicht 
brauchbar, aber am Ende musste dann doch alles selbst implementiert 
werden. Da waren die Libs von TI wesentlich besser. So ähnlich ist es 
beim Matlab -> FPGA wohl auch.

von Martin _. (martin__)


Lesenswert?

Vielen Dank, ich werde mir das Ganze entsprechend überlegen.

Schöne Grüße

Martin

von Robert (Gast)


Lesenswert?

Der System Generator hat eine FFT drin. Diese läuft mit einem bitgenauen 
C-modell. Für VHDL instanziiert er einfach die Xilinx FFT aus dem 
Coregen. Das kannst du aber auch per Hand machen.

Mehr zum Sysgen kann man hier lesen?

Beitrag "Re: FPGAs grafisch programmieren - eine Analyse"

von Bildverwursteler (Gast)


Lesenswert?

Besitzt jemand zufällig Erfahrung in der parallelen Nutzung von 
MATLAB-Modellen einerseit in Richtung C für DSPs und auch FPGA VHDL? Es 
geht um BV und die Simulation elektrischer Felder.

von Freddy (Gast)


Lesenswert?

Hallo,
den SystemGenerator kenne ich aus eigener Erfahrung.
Am Ende des Matlab/Simulink Modells bekommst Du eine Netzliste zum 
Einpflegen in Dein VHDL Konstrukt. Da ist nichts mit VHDL File o.Ä.

Man sollte beachten, dass jede SystemGenerator Version nur mit einer 
bestimmten Matlab UND einer bestimmten Xilinx Version funktioniert. Wir 
mussten aus diesem Grund Xilinx 11 auf Xilinx 13 upgraden damit wir mit 
unserem Matlab kompatibel sind. Andersherum ist es natürlich auch 
möglich. SystemGenerator gekauft -> Matlab muss aktualisiert werden

von Bildverwursteler (Gast)


Lesenswert?

Das habe ich auch schon von mehreren Seiten gehört, dass es viele 
Versionsprobleme gibt. Ein Kollege kann z.B. nicht auf die neueste 
FPGA-SW-Version upgraden. Ich würde mir sowas gerne ersparen und 
möglichs Mathematik und Verarbeitungsimplementierung getrennt halten.

Ich brauche gutes native C und gfs VHDL.

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.