Hallo Leute, ich bin hinsichtlich DSP und digitalen Filtern ein Anfänger und wäre für den ein oder anderen Tipp dankbar! Ich möchte eine Signalverarbeitung durchführen, welche folgende Schritte beinhaltet: 1. sampeln eines sinusförmigen Signals, welches zwischen ca. 150Hz und 1600Hz liegt. Als Samplefrequenz hab ich mal 5kHz festgesetzt. 2. Filtern des Signals mittels Bandpass 4. bis 8. Ordnung. Die Filterfrequenz und die Bandbreite sollen variabel sein. 3. Das Nutzsignal sind Sinuspakete, welche dann hinsichtlich der Anstiegszeit und der Packetlänge analysiert werden müssen. Der Aufbau der Hardware ist kein Problem! Leider hab ich keinen Schimmer, welche Leistung mein DSP haben muss, um diese Aufgabe zu bewältigen. Er sollte natürlich günstig sein und möglichst sehr wenig Leistung brauchen. Hat da jemand ne Idee, in welcher DSP oder uC Klasse ich suchen muss, bzw. kann mir aus Erfahrung sagen, was außreichend bzw. nötig ist? LG Marcus
Sollte nich allzu schwer sein. Hast Du schon den Algorithmus für so einen Filter? Damit kannst Du dann prinzipiell den Rechenaufwand (Additionen, Multiplationen, etc.) abschätzen und somit auch die ungefähre Taktfrequenz, die der DSP braucht. Ach ja, Float oder Integer Werte?
Integer. Float macht keinen Sinn. Wozu wuerde man den hohen dynamischen Bereich von 10^307 fuer single benoetigen ? Die Mantisse eines signle hat weniger Genauikeit wie ein longint, so ganz nebenbei.
nein, ich hab noch keinen Algorithmus... ist alles noch in der Anfangsplanung... es geht auch nicht um die genau benötigte Rechenleistung, sondern eher um eine grobe Hausnummer... Eine 16 oder 32 bit CPU wird wohl schon mal Pflicht sein, denke ich. Die Auflösung der AD-Werte sollten mit 12 Bit reichen. Wenn man mit reinen Integer-Werten operiert, dann braucht man ja wohl keine FPU. Damit dürfte die CPU wieder was preisgünstiger werden ...
Schon, es gibt halt DSPs die entweder auf Integer oder auf Gleitkommaarithmetik optimiert sind. Allerdings würde ich mir an deiner Stelle erstmal überlegen, wie der Algorithmus zur Lösung der Aufgabe aussehen soll. Dann kannste deine Hausnummer abschätzen. Andernfalls bräuchtest Du eine Glaskugel....
Deine zu analysierenden Frequenzen sind im Audiobereich. Kannst du dir eventuell eine Lösung mit einem PC und Soundkarte vorstellen? Da hättest du eine Samplingrate von 44100 Hz und eine Auflösung von mindestens 16 bit. Weiterhin hast du die Möglichkeit, alle eintreffenden Samples auf Festplatte zu speichern, kannst sie also auch nach der Analyse grafisch darstellen usw. Ein kleines Beispielprogramm kann ich dir gerne per email senden. Damit kann man aus einer wählbaren Soundkarte Samples einlesen und ausgeben. Du brauchst dafür nur das DirectX SDK und Microsoft Visual Studio. Grüße, Peter
> Ich möchte eine Signalverarbeitung durchführen, welche folgende Schritte > beinhaltet: > 1. sampeln eines sinusförmigen Signals, welches zwischen ca. 150Hz und > 1600Hz liegt. Als Samplefrequenz hab ich mal 5kHz festgesetzt. > 2. Filtern des Signals mittels Bandpass 4. bis 8. Ordnung. Die > Filterfrequenz und die Bandbreite sollen variabel sein. > 3. Das Nutzsignal sind Sinuspakete, welche dann hinsichtlich der > Anstiegszeit und der Packetlänge analysiert werden müssen. > Leider hab ich keinen Schimmer, welche Leistung mein DSP haben muss, um > diese Aufgabe zu bewältigen. > Er sollte natürlich günstig sein und möglichst sehr wenig Leistung > brauchen. Ich gehe mal davon aus, dass Du IIR-Filter verwenden willst (Achtung: nicht-lineare Phase, falls das für Deine Applikation wichtig sein sollte!). Die benötigen pro Biquad (Filter 2ter Ordnung) und Sample 5 multiply-accumulate, oder wahlweise 5 multiply und 4 adds. Wenn Du 5000 Samples die Sekunde verarbeiten willst, und höchstens 4 biquads brauchst (2*4 = 8. Ordnung), dann brauchst Du wohl 4*5*5000 = 100000 MAC/s oder 4*10*5000 = 200000 IPS (Instructions per Second). Das Ganze wird heutzutage in Millionen angegeben, also 0,1 MMACS oder 0,2 MIPS. Das ist im wesentlichen nix. Die Randbedingungen für die Filterfrequenzen sehen jetzt nicht so schlecht aus, 16Bit könnten schon reichen, möglicherweise solltest Du aber auch an einen 24- oder 32Bit DSP denken. [Anmerkung: habs eben getestet, es geht in der von Dir angegebenen Konfiguration auch bei 16 Bit, es wird aber möglicherweise kritisch sobald Du andere Filter implementierst]. Die Variabilität in Filterfrequenzen und Bandbreite musst Du durch verschiedene Filterkoeffizienten bereitstellen, wobei der Filter manchmal stabil ist, und manchmal nicht. Mehr Bitbreite ist natürlich besser.
@pdiener leider muss das ganze extern laufen @Rasfunk vielen Dank für die ausführliche Information... das ist wirklich schon mal ne Hausnummer :-) thanx!!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.