Forum: Digitale Signalverarbeitung / DSP / Machine Learning Günstiger, stromsparender DSP gesucht


von Mike (Gast)


Lesenswert?

Hallo,

im Rahmen eines größeren Projekts möchte ich Daten per CPFSK über eine 
DC-Stromleitung übertragen. Mittenfrequenz soll bei Fc = 40kHz liegen, 
der Modulationshub bei 2 2/3 kHz, was dann eine Symbolrate von 5 1/3 kHz 
ergibt.

Für die Demodulation würde ich am liebsten das delay-Verfahren von 
Dennis Seguine nutzen, das die FSK in eine Amplitudenmodulation wandelt: 
https://dx.eng.uiowa.edu/eedesign/fskcorr.pdf.
Der große Vorteil dieses Verfahrens gegenüber der klassichen synchronen 
Demodulation ist, dass es keine aufwändige Synchronisierung benötigt.

Die Demodulation soll schematisch so ablaufen:

Sampling mit 160 kHz (4*Fc), Multiplikation des Signals mit einer um 
(2n-1, n=1,2,3,..) Abtastschritte verzögerten Kopie von sich selbst, 
Tiefpassfilterung mit Eckfrequenz knapp über der halben Signalrate. Das 
Ergebnis kann dann mit einem Komparator digitalisiert und als Bitfoge 
ausgewertet werden.

Ich habe das Verfahren in Matlab programmiert und mit diversen, real 
aufgenommenen Signalen getestet.

Ich würde jetzt gerne eine Schaltung entwickeln, die die Decodierung - 
und die Codierung - ohne PC erledigen kann. Dabei soll unter anderem auf 
die Hardwarekosten und den Stromverbrauch geachtet werden.

Ich habe mehrjährige Erfahrungen mit 8bit und 32bit Controllern aus der 
PIC-Familie und kenne mich in digitaler Signalverarbeitung gut aus, habe 
allerdings noch nie mit DSPs gearbeitet.

Eine erste Schätzung ergab, dass ein 8bit Controller mit der Aufgabe 
höchstwahrscheinlich überfordert sein wird, vor allem wegen der 
langsamen Multiplikation und dem fehlenden DMA.

Meiner Meinung nach wäre ein dsPIC für diese Aufgabe prädestiniert. 
Zudem gibt es hier Modelle mit DAC und PGA, Bauteile, die sonst extern 
angeschlossen werden müssten.

Gibt es noch andere DSPs, die für ein derartiges Aufgabenspektrum 
geeignet sind, und auch preislich in einem ähnlichen Rahmen liegen?

Und noch eine grundlegende Frage:

Wie werden DSPs programmiert? Ist das wie gewohnt in C möglich oder muss 
ich dazu Assembler lernen?

von Schreiber (Gast)


Lesenswert?

Mike schrieb:
> Wie werden DSPs programmiert? Ist das wie gewohnt in C möglich oder muss
> ich dazu Assembler lernen?

DSPs sind schwierig zu programmieren. Ich würde mir mal die ARMs 
anschauen, die sind schnell und günstig.

Mike schrieb:
> Ich habe das Verfahren in Matlab programmiert und mit diversen, real
> aufgenommenen Signalen getestet.

Einen µC oder einen FPGA, der zum Matlab-Codegenerator kompatibel ist?! 
Würde mir wirklich mal die ARM-µCs anschauen, bevor ich an DSPs denke...

von Pandur S. (jetztnicht)


Lesenswert?

ein dsPIC ist sicher die richtige Wahl. Und ja genau, es muss eine DMA 
Maschine sein. Nein, die sind nicht so schwierig.

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

dsPICs sind alles andere als sparsam beim Verheizen von Leistung.

Da wuerde ich eher einen von TIs DSPs empfehlen (TMS320C5000).

Davon gibt es einige auch in QFP falls BGA einem nicht so liegt.

Solange die Algorithmen nicht allzu zeitkritsch sind, wird Mann
sicher auch in C klarkommen.
Richtig juckig macht Mann den DSP aber eher in Assembler,
wenn Mann an so DSP-Features wie parallele Instruktionen und
spezielle Adressierungsarten denkt.

von Schreiber (Gast)


Lesenswert?

(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#5034391:
> Solange die Algorithmen nicht allzu zeitkritsch sind, wird Mann
> sicher auch in C klarkommen.
> Richtig juckig macht Mann den DSP aber eher in Assembler,
> wenn Mann an so DSP-Features wie parallele Instruktionen und
> spezielle Adressierungsarten denkt.

Alles richtig, aber für sowas einfaches reicht auch ein normaler ARM-µC
Einfacher zu programmieren, günstiger in der Anschaffung und immer noch 
schnell genug.

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

> für sowas einfaches reicht auch ein normaler ARM-µC

Fuer

> Sampling mit 160 kHz (4*Fc)
> Multiplikation des Signals mit einer um
> (2n-1, n=1,2,3,..) Abtastschritte verzögerten Kopie von sich selbst
+ Filter

wird sich der TO schon Muehe geben muessen. Das N hat er ja
gekonnt hinter einem .. versteckt.

Vieles von dem, worum Mann sich in C auf einem ARM selber
kuemmern muss, uebernimmt auf einem DSP die flexible
Adressierungslogik die obendrein noch parallel zur
Befehlsausfuehrung vor sich hinwerkelt.

Vielleicht haelt uns ja der TO ueber seine Anstrengungen
auf dem laufenden.

von Strubi (Gast)


Lesenswert?

Moin,

schau dir doch mal die Blackfin (ADSP-BF5xx) an. Bisher die IMHO 
pfiffigste Architektur in dem Bereich und was DMA und Stromsparen angeht 
immer noch sehr gut im Rennen im vgl. mit STM-Cortexen. Den BF529 gibt's 
ab 2 Dollar..

von Pandur S. (jetztnicht)


Lesenswert?

Der Nachteil der Blackfin ist der hohe Preis der Entwicklungsumgebung. 
Sonst sind sie super, was die Spezifikationen betrifft...

von Mike (Gast)


Lesenswert?

>schau dir doch mal die Blackfin (ADSP-BF5xx) an. Bisher die IMHO pfiffigste 
Architektur in dem Bereich und was DMA und Stromsparen angeht immer noch sehr gut 
im Rennen im vgl. mit STM-Cortexen. Den BF529 gibt's ab 2 Dollar..

Ja, Leistung und Features sind schon erstaunlich zu diesem Preis, für 
meine Zwecke aber schon eine Spatzen beschiessende Kanone. Die 2$ 
relativieren sich aber etwas, da der Blackfin weder DAC noch ADC 
enthält. Da dürften ca. 1-2$ für externe Bauteile hinzukommen.

Ich werde mal mit der dsPIC33EPXXGS50X-Familie beginnen. Da ist so 
ziemlich alles drin wass ich brauche, u.a. auch ein PGA. Leider fehlt 
die DMA, bei 160 kS pro Sekunde müsste es aber auch noch per Interrupt 
gehen. Der Energieverbrauch ist mit 40 mA bei 70 MIPS erträglich, 
schliesslich ist die Kommunikation nicht permanent aktiv. Eventuell 
komme ich auch mit der halben Taktfrequenz hin.

Als Alternative hätte ich noch die 56800er-Serie von NXP im Visier 
(stammt wohl noch von Motorola), von der Leistung her mit den dsPICs 
vergleichbar (eher etwas darunter).

von Chris K. (Gast)


Lesenswert?

Ich würde auch einen ARM vorschlagen. Gibt es auch mit eingebaueter 
Floating Point Einheit.

von Mark W. (kram) Benutzerseite


Lesenswert?

Wenn das nicht auch einen Blick auf die PSoCs wert ist.? PSoC 5 LP zum 
Beispiel.

von Schreiber (Gast)


Lesenswert?

(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#5034499:
>> Sampling mit 160 kHz (4*Fc)
>> Multiplikation des Signals mit einer um
>> (2n-1, n=1,2,3,..) Abtastschritte verzögerten Kopie von sich selbst
> + Filter
>
> wird sich der TO schon Muehe geben muessen. Das N hat er ja
> gekonnt hinter einem .. versteckt.

Ammenmärchen. Die Zauberworte heißen "FPU" und "ausreichende 
Taktfrequenz". So einen Arm-µC kann man auch mit >100MHz laufen lassen, 
ohne dass der Stromverbrauch übermäßig hoch ist.

von Bernd K. (prof7bit)


Lesenswert?

Chris K. schrieb:
> Ich würde auch einen ARM vorschlagen. Gibt es auch mit eingebaueter
> Floating Point Einheit.

Wo braucht man denn bei dem was der OP vorhat Fließkommaberechnungen?

von Fitzebutze (Gast)


Lesenswert?

Sapperlot W. schrieb:
> Der Nachteil der Blackfin ist der hohe Preis der
> Entwicklungsumgebung.
> Sonst sind sie super, was die Spezifikationen betrifft...

GCC hat m.W. keinen hohen Preis und von VDSP++ sollte man wegen der 
verstümmelten ELF-Formats sowieso absehen.

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.