Frage

Ich habe eine Frage zum Codieren eines Algorithmus für einen DSP von Texas Instruments TMS320C64xx in MATLAB:

Ich habe eine funktionierende, schlampige Implementierung meines Filters in MATLAB. Mein Ziel ist es, MATLAB Embedded Coder zu verwenden, um diesen Algorithmus in C zu konvertieren, das ich dann in Code Composer Studio importieren und auf den DSP laden kann.

Dazu weiß ich, dass ich bestimmte Dinge mit meinem MATLAB-Code tun muss. Zum Beispiel muss ich vorab Speicherplatz für Matrizen zuweisen, damit diese weiß, in welcher Größe sie erstellt werden sollen (es sei denn, ich möchte mich mit Daten variabler Größe beschäftigen). All das Massieren von MATLAB-Code in C'ish-Code, damit MATLAB-Codierer ihn konvertieren können, verstehe ich mehr oder weniger. Ich habe jedoch keine Ahnung, wie ich sicherstellen soll, dass meine Datentypen (z. B. die Koeffizienten meines Filters) Festkomma- und keine Gleitkommatypen sind, sodass MATLAB Embedded Coder meinen Code in C konvertiert, das nur Festkomma-Datentypen umfasst.

Ich denke also, meine allgemeinen Fragen sind:

1) Wenn der C64xx als 32-Bit-Festkomma-DSP angegeben ist, bedeutet dies, dass ein Compiler einen Fehler auslöst, wenn ich versuche, den Float-Datentyp zu verwenden?

2) Gibt es eine Möglichkeit, um sicherzustellen, dass MATLAB Embedded Coder keine Float-Datentypen erstellt?

3) Muss ich die MATLAB Fixed Point Toolbox verwenden?

Vielen Dank an alle, lassen Sie mich wissen, ob weitere Informationen zur Beantwortung meiner Frage erforderlich sind.

War es hilfreich?

Lösung

  1. Sie können Gleitkomma-Datentypen verwenden, aber wie die vorherige Antwort zeigt, emuliert der DSP Floats und die Ausführung ist viel langsamer. Diese Art der Ausführung ist für bestimmte numerische Operationen in Ordnung, bei denen a) Sie benötigen die Präzision von Schwimmern b) und / oder Umwandlung in einen Festpunkt ist typischerweise ein Schmerz (z. B. Quadratwurzeln) oder nicht immer machbar, c) und / oder diese Operationen treten in Ihrem Programm nicht so häufig auf, um die meisten CPU-Zyklen zu belasten.

  2. Ja. Im Dialogfeld mit den Konfigurationseinstellungen für MATLAB Coder befindet sich im Bereich "Schnittstelle" ein Kontrollkästchen mit der Aufschrift "Nur rein ganzzahlige Zahlen unterstützen". Wenn Sie dies überprüfen, wird sichergestellt, dass der generierte Code keine Gleitkomma-Datentypen enthält. Sie müssen jedoch zunächst sicherstellen, dass Sie in Ihrem Code nur ganzzahlige / Festkomma-Datentypen verwenden. Diese Option stellt nur sicher, dass keine Gleitkommazahlen generiert werden. Sie generiert nicht automatisch eine Festkomma- oder Ganzzahlversion des Codes aus Ihrem Gleitkomma-MATLAB-Code.

  3. Um wirklich einen Festkomma-C-Code zu erstellen, müssen Sie zuerst Ihren Gleitkomma-MATLAB-Code in einen Festkomma-Code konvertieren. Sie benötigen die Festkomma-Toolbox, mit der Sie Ihre Variablen als FI-Objekt angeben und die Festkomma-Betriebsregeln mithilfe der Einstellung FIMATH definieren können. Sobald Sie einen 16/32-Bit-Festkomma-Datentyp für alle Ihre Variablen und Operationen definiert haben, können Sie ihn simulieren, die Ergebnisse analysieren und iterieren, um Ihre Einstellungen zu optimieren und Überläufe und Rundungsfehler zu minimieren. Dann können Sie einen wirklich ganzzahligen C-Code generieren, der sich genauso (oder sehr nahe an) Ihrem Festkomma-MATLAB-Verhalten verhält. Alle Unterschiede, die Sie möglicherweise zwischen Ihrem Festkomma-MATLAB-Code und dem Festkomma-C-Code feststellen, sind hauptsächlich auf die von Ihrem Ziel-Compiler eingeführten Unterschiede zurückzuführen.

    Der folgende Link zu einem aufgezeichneten Webinar zu diesem Thema sollte eine gute Einführung in diesen Prozess der Verwendung der Fixed-Point-Toolbox bieten: http://www.mathworks.com/wbnr38838

    HTH.

Andere Tipps

Ich kann nur Ihre erste Frage beantworten:

Der C64xx ist ein 32-Bit-Festkomma-DSP, aber der Compiler beschwert sich nicht, wenn Sie Gleitkomma verwenden.Der resultierende Code läuft einwandfrei, ist jedoch (viel) langsamer, da die Gleitkommaoperationen emuliert werden.

Der C64xx-DSP kann auch 16-Bit-Festpunkte und gemischte 32x16-Bit-Festpunkte ausführen.Je kleiner die von Ihnen verwendeten Datentypen sind, desto schneller wird der resultierende Code ausgeführt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top