DSP mit 8051?

Hallo, ist ein normaler 8051 mit 12Mhz für einfache DSP Aufgaben geeignet? Er hat ja zumindest eingebaute Multiplikations- und Divisionsbefehle. Konkret dachte ich an die Echtzeitberechnung eines Tiefpassfilters für einen monophonen Tongenerator (einfacher Synthesizer). Hat jemand diesbezügliche Algorithmen bzw. Links parat?

Danke schon mal

Reply to
Peter Heitzer
Loading thread data ...

monophonen

Denkbar ungeeignet. Mul und Div gibts nur in 8x8=16Bit bzw. 8/8=16 Bit. Für 16x16=16 Bit brauchst du gute 40 Takte, selbst wenn alles in Registern läuft. Für'n kleines FIR mit 4 Taps bist du bei

4 Muls, also 160 Takten, das ergibt eine max. Samplefrequenz von 1MIPS/160=6,9kHz

Hendrik vdH

Reply to
Hendrik van der Heijden

monophonen

Das wird leider sehr schwierig auf einem normalen 8051. Die mul und div befehle sind nur 8 bit. Wenn du wirklich einen 8051 verwenden willst such einen chip mit zusätzlicher 16 bit ALU. Mit einem standard8051 schaffst du zwischen 500000 und einer Million Befehle pro sekunde. Bei 8 bit reicht das wahrscheinlich nicht mal bis 1 khz auflösung.

Einen Tongenerator aus einer Tabelle heraus schafft der 8051 aber leicht.

--
MFG Gernot
Reply to
Gernot Fink

Peter Heitzer schrieb:

Hallo,

na ja, wenn die Abtastfrequenz gen=FCgend klein ist geht sogar das. Ob es= =20 aber f=FCr Telefonqualit=E4t mit 8 kHz reicht?

Bye

Reply to
Uwe Hercksen

  • Auf den meisten Controllern nur vorzeichenlos. D.h. für 2er-Komplement muß man erst Vorzeichen extrahieren, Daten auf Absolutwert wandeln, Daten multiplizieren, Vorzeichen berechnen, dann Vorzeichen in Daten einfügen.
  • DSPs haben höhere Wortbreite. Mit den 8 Bit von Controllern kommt man besser hin, wenn das Signal nach dem Filter ohnehin auf 1 Bit quantisiert wird ( FSK, DTMF-Empfänger ). Es gibt natürlich low end 16 Bit Controller ( 166er, MPS430 )
  • DSPs haben Sättigungslogik statt Moduloüberlauf.
  • neuere 8 Bit Controller haben wenigstens höheren Takt ( AVR ). Selbst 68HC908 gibts mit 8 bzw. 20 MHz ( braucht aber mehr Zyklen/ Befehl als AVR ). Man kann Signale unterhalb Sprachband mit Controllern verarbeiten ( Überwachung mechanischer Systeme, Regelungstechnik, EKG in Medizin ). Im Sprachband wirds mühsam.

Auf Controllern Algorithmen aus DSP-Lehrbuch vermeiden.

  • es gibt einfache "multiplikationsfreie Filter" a la FIR-Averager, dito FIR/IIR ( = CIC ), Kammfilter usw.
  • wenn man nur 1 Bit Signal hat wirds sehr einfach vgl.
    formatting link
    Heft 7 S. 16
  • auf 8 Bit CPU ist FIR meist günstiger als IIR

Es gibt die Trickschaltung auf ein 1 Bit Rechecksignal mit 50%/50% Tastverhältnis ein FIR-Filter zu legen dessen Nullstellen die

  1. 5. usw. Oberwelle raushauen, sodaß am Ende Sinus rauskommt. Taucht auch in Modem-Eingangsschaltungen manchmal auf. An dem Artikel habe ich gestern abend noch gearbeitet, aber genaue wie die Artikel zu Averager, Kammfilter in noch recht unfertigem Zustand.

MfG JRD

Reply to
Rafael Deliano

Hendrik van der Heijden wrote: : Peter Heitzer wrote: :> Hallo, :> ist ein normaler 8051 mit 12Mhz für einfache DSP Aufgaben geeignet? :> Er hat ja zumindest eingebaute Multiplikations- und Divisionsbefehle. : Denkbar ungeeignet. Mul und Div gibts nur in 8x8=16Bit bzw. 8/8=16 Bit. : Für 16x16=16 Bit brauchst du gute 40 Takte, selbst wenn alles : in Registern läuft. Für'n kleines FIR mit 4 Taps bist du bei : 4 Muls, also 160 Takten, das ergibt eine max. Samplefrequenz von : 1MIPS/160=6,9kHz Das würde u.U. schon reichen, evtl. reichte ja auch die 8Bit für den Dynamikumfang. Das gäbe vielleicht viel "Schmutz", was bei dieser Anwendung nicht einmal unerwünscht ist.

Reply to
Peter Heitzer

:> Tiefpassfilters : Auf Controllern Algorithmen aus DSP-Lehrbuch vermeiden. : * es gibt einfache "multiplikationsfreie Filter" : a la FIR-Averager, dito FIR/IIR ( = CIC ), : Kammfilter usw. : * wenn man nur 1 Bit Signal hat wirds sehr einfach : vgl.

formatting link
Heft 7 S. 16 Schaut nicht schlecht aus. Werde ich mal ausprobieren, wie sowas klingt.

Reply to
Peter Heitzer

Hallo Rafael, Hallo Peter.

Von den MSP430 gibt es Versionen mit HW Multiplier on chip.

Gruesse, Joerg

formatting link

Reply to
Joerg

Joerg schrieb:

ATmega hat das auch, einschließlich Vorzeichen. Zwar nur 8 bit * 8 bit, aber dafür in zwei Taktzyklen ausgeführt.

--
Jörg Wunsch

"Verwende Perl. Shell will man können, dann aber nicht verwenden."
				Kristian Köhntopp, de.comp.os.unix.misc
Reply to
Joerg Wunsch

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.