mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik XC 167, Nutzung der DSP-Einheit unter C (Keil µVision)


Autor: Michael Steinacker (shesira)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ich hab mal eine Frage dazu, wie man die DSP-Einheit des XC167 mit 
C-Code (mittels Keil µVision) nutzen kann? Momentan ist mir nur bekannt, 
wie man sie mit Assembler-Code anspricht. Jedoch wäre es für die 
Programmierung deutlich einfacher, wenn man auch die Funktionen in 
C-Code schreiben kann.

Ich habe mit der Suchfunktion danach gesucht und leider nichts gefunden. 
Wenn doch schon ein Thread dazu existiert, dann verweist mich bitte 
darauf.

Vielen Dank im Vorraus.

Autor: Michael Steinacker (shesira)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte noch keiner ein ähnliches Problem oder hab ich meine Frage zu 
unkonkret oder ins falsche Forum gestellt?

Ich hoffe auf eure Antworten ;-)

Autor: pamuli78 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für eine DSP-Einheit soll der XC167 haben?

Autor: Jens Räthe (tmaniac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

Keil unterstützt meines Wissens nach leider nicht direkt die MAC-Unit. 
Hier muss man über inline-Assembler arbeiten.
Bei Tasking haben die das in der VX-Toolchain integriert (wie es dort 
geht müsste ich aber auch erst nachschauen). Zum Teil geht es auch in 
der Classic-Toolchain schon.

Noch habe ich die MAC-unit nicht selber gebraucht. Kannst du uns am 
Rande verraten für was du die nutzt?


@pamuli78
Das ist kein Standard DSP-Core, sondern nur eine kleine Recheneinheit 
ähnlich den alten Co-Prozessoren. Man hat halt eine handvoll Registern 
mit denen man die "Multiply and Accumulate Unit" füttern und steuern 
kann.

Gruß,
TManiac

Autor: pamuli78 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, die kenne ich. War nur ein wenig wegen "DSP" überrascht.

Wird die Unit nicht automatisch beim Multiplizieren und Dividieren vom 
Compiler aus unterstützt (ohne dass ich das explizit aktivieren müsste)?
Es handelt sich schließlich ja nur um eine Rechenbeschleunigungs-Unit.

Autor: Michael Steinacker (shesira)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jens und pamuli78,

ich hätte nie gedacht, dass ich zu dem Thema je noch eine Antwort 
bekomme. Die Frage habe ich ja vor fast 2 Jahren gestellt ;-)

Gebraucht habe ich das damals für meine Diplomarbeit. Weil ich mich 
momentan mit ganz anderen Dinge beschäftige, mußte ich da jetzt selbst 
erst einmal nachschauen. Und zwar hab ich nach der Möglichkeit gesucht, 
die MAC-Unit direkt mit C-Befehlen im KeilµVision anzusprechen, um nicht 
umständlich ein Programm in Assembler-Code schreiben zu müssen. Der 
Vorteil der Geschwindigkeitserhöhung durch Nutzung der MAC-Unit liegt 
klar auf der Hand. Den Leuten in meinem Fachgebiet war dazu auch keine 
Möglichkeit bekannt. Programmiert habe ich in Assembler-Code eine 
DT1-Funktion. Gebraucht habe ich das ganze wie schon gesagt für meine 
Diplomarbeit, in der es um die feldorientierte Regelung einer 
Asynchronmaschine mit Hilfe des erwähnten XC167 geht. Unter anderem hab 
ich die gleiche Regelung auch mit einem DSP von Texas Instruments 
(TMS320F2808) programmiert und im Falle der Realisierung mit Hilfe des 
XC167 die Ansteuerung des Wechselrichters von einem FPGA Spartan 3 
übernehmen lassen.

Ich hoffe, deine Frage soweit beantwortet zu haben. Wenn du was 
genaueres wissen willst, frag einfach :-)

Grüße
Michael

Autor: Jens Räthe (tmaniac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oha,

nun bin ich auch in ein Ausgrabungsloch gefallen. :-)

Ich habe mal nicht auf des Datum der Themeneröffnung geschaut. Aber 
trotzdem prima, dass man noch erfahren hat für was du es benutzt hast. 
Und deine Anwendung (DT1 für feldorientierte Regelung ) ist ja somit ein 
typischer Fall für was die MAC gedacht ist.

Aber das hier versteh ich nicht ganz:
> im Falle der Realisierung mit Hilfe des XC167 die Ansteuerung des
> Wechselrichters von einem FPGA Spartan 3 übernehmen lassen.

Was hat der Spartan da noch machen müssen? Reglung hast du geschrieben 
im XC (MAC-Unit) gemacht. Und für das Dreiphasen-Ansteuern haben die 
166er doch die CapCom2.

Gruß,
TManiac

Autor: Michael Steinacker (shesira)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jens,

ja, du hast vollkommen recht mit der CapCom2-Einheit. Dennoch sollte ich 
die Funktion dieser Einheit und die Erzeugung der Ausgabewerte im FPGA 
programmieren. Dabei war es auch notwendig, die Kommunikation zwischen 
dem FPGA und dem XC167 zu realisieren.
Das Board mit dem ich programmiert habe, ist für ein Praktikum 
ausgelegt, in dem Studenten lernen sollen, wie die feldorientierte 
Regelung in der Praxis funktioniert.

Grüße
Michael

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]
  • [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.