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?
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...
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.
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· 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.
> 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.
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..
>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).
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· 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.
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?
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.