mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP SHARC ADSP 2106x Zahlen miteinander dividieren??


Autor: LK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich bin neu in dem Gebiet DSP-Programmierung.Mein Problem ist es ein 
Programm zu schreiben, welches das Gaußsche Eliminationverfahren 
ausführen soll.Bei diesem Algorithmus komm ich leider nicht drum herum 
Zahlen miteinander zu Dividieren.Ich programmiere den ADSP 21060 in 
Assembler und laut dem Datenblatt gibt es nicht wirklich ein Operator 
zur Division.Zumindest weiß ich es nicht, wie man eine Division in 
Assembler für den ADSP realisieren kann.
Könnte mir jemand einen Tipp geben,wo ich nachlesen oder Hilfen finden 
könnte?Oder jemand weiß,wie man das machen könnte.

MfG
Lutz

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Eine Ganzzahl-Division mit Rest könnte man auch durch eine fortgesetzte 
Subtraktion erreichen.

Eine Division durch eine Zweierpotenz kann man durch einen Rechts-Shift 
um die entsprechende Anzahl Stellen realisieren.

Autor: LK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Danke für deine Antwort!!
Mein Problem ist eher der Operator der Programmiersprache.Ein Beispiel

F8 = F3/F4;

Dann kommt immer Syntax Error "/" !!
Sprich den Operator "/" gibt es in dieser Sprache nicht.
Selbst wenn ich

F8 = F3 * 1.0/F4;

schreibe macht er den Syntax Error bei "1.0"!!

Bin gerade etwas überfragt.Kann mir jemand Helfen?

MfG
Lutz

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt's nicht. Siehe ADSP-2106x SHARC® Processor User’s Manual:

http://www.analog.com/static/imported-files/proces...

Autor: Anonym (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es sehr wohl, nur nicht direkt.
Schau mal auf Seite B-39 in dem PDF nach.

Autor: LK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das hab ich heut nach dem Mittag dann auch gefunden. Ich hab einfach 
mal in C eine Division programmiert und mir den Assemblercode 
angeschaut.

Fn = RECIPS Fx;

ist da wirklich brauchbar!Jedoch muss man beachten,dass ein Fehler dabei 
entsteht und der ausgeglichen werden muss.
Nur die REPCIPS Funktion verwenden klappt so nicht.Am besten man schaut 
sich die Compilierung an und benutzt die,wenn man es in Assembler 
Programmieren muss.
Trotzdem Danke für eure Tipps!

Lutz

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LK schrieb:
> Am besten man schaut sich die Compilierung an und benutzt die, wenn man es
> in Assembler Programmieren muss.

Hm, für Filter, FFT und so weiter braucht man auch keine Division. Für 
nicht-DSP-relevante Aufgaben vom Prof vielleicht schon ;-)

Autor: Anonym (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Subroutine zum Dividieren stand doch auf der gleichen Seite, da wäre 
abschreiben völlig ausreichend.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meine die Divisionsroutine für float kann über math.h eingebunden 
werden.

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Assembler? :-)

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.