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


von Michael S. (shesira)


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.

von Michael S. (shesira)


Lesenswert?

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

Ich hoffe auf eure Antworten ;-)

von pamuli78 (Gast)


Lesenswert?

Was für eine DSP-Einheit soll der XC167 haben?

von Jens R. (tmaniac)


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

von pamuli78 (Gast)


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.

von Michael S. (shesira)


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

von Jens R. (tmaniac)


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

von Michael S. (shesira)


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

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.