mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Quellcode für Kreuzkorrelation in VisualDSP++ ADSP-21262


Autor: Eren ö. (estar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo forum,

brauche dringend Hilfe für unser Projekt.
Wir arbeiten zur Zeit am sharc ADSP-21262.

Die eigentliche Aufgabe lautet:

Zwei Mikrofone anschließen und anhand der Kreuzkorrelation beide signale 
bewerten, d.h. die Laufzeitunterschiede beider Signale messen.

Leider haben wir keine Ahnung wie wir das in Visual DSP++ implementieren 
sollen (als Assembler-code). Daher brauchen wir dringend eure Hilfe.
Ich bedanke mich schon mal im Voraus!



Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was erwartest du? Das jemand dir die fertige Lösung postet? Wenn du 
konkrete Fragen hast, stell diese, vielleicht kann sie ja jemand 
beantworten.

Autor: Studi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch im Grunde nichts anderes als eine Faltungssumme. Nur dass 
es eben 2 verschiedene Signale sind.

Das ist mit paar Schleifen erledigt.

Da könntest du fündig werden: http://dspguide.com/

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo nochmals,

ich hab mich etwas schlauer gemacht. Undzwar nutze ich für die 
Kreuzkorrelation die vorlage des FIR-Filters aus der Analog.com seite 
für den ADSP-21262-Sharc Prozessor.

Der folgende Code könnte doch für die Kreuzkorrelation verwendet werden?

Corr.algorithmus:

    f0=dm(i0,m0), f4=pm(i8,m8);    // Zwei Signale in Register f0 und f4
                                   // laden
    f8 =f0*f4, f0=dm(i0,m0), f4=pm(i8,m8); //werte miteinander
                                           //multiplizieren; 
gleichzeitig
                                           // 2 neue Signale laden
                                           // usw
    f12=f0*f4, f0=dm(i0,m0), f4=pm(i8,m8);
    lcntr=r6, do schleife until lce;

schleife:
    f12=f0*f4, f8=f8+f12, f0=dm(i0,m0), f4= pm(i8,m8);
    f12=f0*f4, f8=f8+f12;
    f13=f8+f12;
    dm(i1,m1)=f13;   //Endwert abspeichern


Meine weiter Frage lautet:
Ich möchte zwei Mikrofone anschließen, die Eingangssignale sollen ja 
dann in den Ringpuffer abgelegt werden.
Wie weiß mein Prozessor das die beiden Signale getrennt von einander 
gespeichert(gepuffert) werden sollen.

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier noch der Ablaufplan

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie weiß mein Prozessor das die beiden Signale getrennt von einander
>gespeichert(gepuffert) werden sollen.

Indem du das so programmierst?!

Möchtest du nicht vielleicht bei deinem Wissensstand lieber die in 
VDSP++ eingebaute C-Funktion für die Kreuzkorrelation nutzen?

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, Assembler als vorgegebene Programmiersprache. Dann erübrigt sich 
mein zweiter Hinweis wohl.

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.