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


von Eren ö. (estar)


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!



von Timo (Gast)


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.

von Studi (Gast)


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/

von Gast (Gast)


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.

von Gast (Gast)


Angehängte Dateien:

Lesenswert?

hier noch der Ablaufplan

von Timo (Gast)


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?

von Timo (Gast)


Lesenswert?

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

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.