<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andyw</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andyw"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Andyw"/>
	<updated>2026-04-11T13:08:26Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Hilbert-Transformator_(Phasenschieber)_mit_ATmega&amp;diff=76130</id>
		<title>Hilbert-Transformator (Phasenschieber) mit ATmega</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Hilbert-Transformator_(Phasenschieber)_mit_ATmega&amp;diff=76130"/>
		<updated>2013-05-30T09:10:37Z</updated>

		<summary type="html">&lt;p&gt;Andyw: /* Der Hilbert-Transformator, ein Breitband-90 Grad-Phasenschieber */  Octave remez mit hilbert verlinkt, außerdem hilbert Transformation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist eine Fortsetzung von [[Digitalfilter mit ATmega]] und behandelt ein spezielles Digitalfilter namens Hilbert-Transformator.&lt;br /&gt;
&lt;br /&gt;
Neben den üblichen Filtern, Tiefpass, Hochpass, Bandpass und Bandsperre, gibt es einige weitere Typen. In der Literatur findet man u.a. noch den Allpass, Phasenschieber, Integrator und Differentiator.&lt;br /&gt;
&lt;br /&gt;
===Der Hilbert-Transformator, ein Breitband-90 Grad-Phasenschieber===&lt;br /&gt;
&lt;br /&gt;
In den Lehrbüchern wird er völlig zu Unrecht eher am Rande abgehandelt. Tatsächlich findet man ihn in allen Schaltungen zur Datenübertragung, zu Modulation oder Demodulation mit I/Q-Mischern, im „Software-defined-radio“.&lt;br /&gt;
&lt;br /&gt;
Auch ein Hilbert-Transformator kann mithilfe von Scilab berechnet werden. Allerdings gibt es keine fertige Software, man muß sich durch einige Literatur hindurchfressen, z.&amp;amp;nbsp;B. ISBN 0471619957 Sanjit Mitra, Handbook for DSP (1993), Kapitel „Special Filter Designs“ von [http://faculty.cua.edu/regalia/ Phillip Regalia].&lt;br /&gt;
&lt;br /&gt;
GNU Octave stellt die Hilbert-Transformation und den Parks-McClellan hilbert FIR Filterentwurf im [http://octave.sourceforge.net/signal/function/remez.html octave-forge Paket &amp;quot;signal&amp;quot;] zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Eine Fundgrube sind die Matlab-Texte von Prof. Schüssler, die vorab 1998 zum  zweiten Band seines Lehrbuchs auf seiner Webseite veröffentlicht wurden. Inzwischen ist der erste Band in der fünften Auflage erschienen [http://www.springer.com/engineering/signals/book/978-3-540-78250-6 ISBN 9783540782506] , der zweite Band ISBN 9783642011184 2010 erstmalig erschienen,  [http://www.lms.lnt.de/forschung/veroeffentlichungen/buecher/dsv.shtml Software-Download hier] aber die Webseite ist nach seinem Tod 2007 abgeschaltet. Zum Glück gibt es das  &lt;br /&gt;
[http://web.archive.org/web/20041206171820/www.nt.e-technik.uni-erlangen.de/~hws/dsv2programs/index.html  Webarchiv],wo die Texte noch zu finden sind.&lt;br /&gt;
&lt;br /&gt;
Zu dieser Zeit waren die Matlab-Programme noch nicht in „Toolboxen“ untergebracht, deren Funktion von außen nicht mehr sichtbar ist. Daher lassen sie sich relativ einfach in Scilab oder Octave übersetzen.&lt;br /&gt;
&lt;br /&gt;
Vier Versionen von Hilbert-Transformatoren werden hier berechnet: &lt;br /&gt;
* FIR-Hilbert, aufwändig, aber streng linearphasig, der bekannteste Typ, da schon lange mit dem Matlab-Befehl remez / firpm und Parameter &#039;hilbert&#039; berechenbar. Mit dem octave-forge Paket &amp;quot;signal&amp;quot; ist remez mit &amp;quot;hilbert&amp;quot; verfügbar. Scilab kennt diesen Parameter nicht.&lt;br /&gt;
* näherungsweise linearphasiger IIR-Hilbert, maximal flach,&lt;br /&gt;
* näherungsweise linearphasiger IIR-Hilbert, Tschebyscheff &lt;br /&gt;
* minimalphasiger IIR-Hilbert, kompakt, aber mit großen Gruppenlaufzeitschwankungen, eher für Audioanwendungen als Digitalsignale.&lt;br /&gt;
&lt;br /&gt;
Im Artikel von Schüßler/Steffen (siehe unten) sind in zwei vergleichenden Beispielen die Gruppenlaufzeitschwankungen des maximal flachen etwa halb so groß, des minimalphasigen etwa fünf mal größer als die Tschbyscheff-Version.&lt;br /&gt;
&lt;br /&gt;
Zumindest der kompakte IIR-Hilbert läßt sich auch in einem ATmega unterbringen. Er besteht aus einer Verzögerung und zwei Allpässen, die wieder aus SOS-Teilfiltern aufgebaut sind. Pro Teilfilter gibt es nur einen Koeffizienten, sodaß man mindestens acht Teilfilter verwenden kann.&lt;br /&gt;
&lt;br /&gt;
===Ein Hilbert-Kochrezept (noch unvollständig)===&lt;br /&gt;
&lt;br /&gt;
Folgen wir dem Zahlenbeispiel und Berechnungsweg im „Handbook for DSP“.&lt;br /&gt;
&lt;br /&gt;
Zuerst berechnen wir einen elliptischen &#039;&#039;Halbband&#039;&#039;-Tiefpass. Halbband besagt, dass die beiden Grenzfrequenzen symmetrisch zur halben Nyquist- Frequenz also 0,25 * Abtastfrequenz liegen, siehe Bild oben rechts. Die genauen Bedingungen lauten in der Schreibweise des Buches (&#039;&#039;p&#039;&#039;=passband, &#039;&#039;s&#039;&#039;=stopband):&lt;br /&gt;
* Omega&amp;lt;sub&amp;gt;s&amp;lt;/sub&amp;gt; + Omega&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; = Pi &amp;lt;br&amp;gt; (auf Omega&amp;lt;sub&amp;gt;sample&amp;lt;/sub&amp;gt; normierte Skala: Samplerate=2*Pi)&lt;br /&gt;
* (1-Delta&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; +Delta&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;=1&lt;br /&gt;
&lt;br /&gt;
Als Zahlenwerte werden Omega&amp;lt;sub&amp;gt;s&amp;lt;/sub&amp;gt; = 0,55*Pi und Delta&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;=0,01 gewählt, und damit ein elliptischer IIR-Tiefpass 7.Ordnung berechnet.&lt;br /&gt;
Damit erhält er folgende Zahlenwerte der Pole:&lt;br /&gt;
&lt;br /&gt;
 0  0,436688  0,743707 0,927758&lt;br /&gt;
&lt;br /&gt;
===Scilab-Berechnung des Halbbandfilters===&lt;br /&gt;
&lt;br /&gt;
Mit Scilab erhalten wir nach einigem Ausprobieren praktisch dieselben Zahlenwerte, siehe Bild. Die Pole müssten für ein ideales Halbbandfilter genau auf der imaginären Achse liegen, der Realteil genau Null sein (Der Fehler kommt daher, dass die Angabe von f&amp;lt;sub&amp;gt;stop&amp;lt;/sub&amp;gt; vom Programm nicht berücksichtigt wird, das Filter wäre überbestimmt).&lt;br /&gt;
Diese Zahlen werden noch quadriert (&#039;&#039;konjugiert komplexe&#039;&#039; Pole zusammengefasst) und bilden schließlich die Koeffizienten des Hilbert-Transformators.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Halbbandfilter.png|Mit Scilab berechnetes Halbbandfilter 7.Ordnung|640px]]&lt;br /&gt;
&lt;br /&gt;
Die Übertragungsfunktion des gesuchten Hilbert-Transformators soll wie bisher H(z) heißen. Zur Unterscheidung nennen wir die bis jetzt berechnete Tiefpassfunktion G(z). &lt;br /&gt;
&lt;br /&gt;
Wieder wird sie in SOS-Teilfilter aufgeteilt. Hier allerdings in die &amp;lt;u&amp;gt;Summe&amp;lt;/u&amp;gt; von zwei &amp;lt;u&amp;gt;parallel&amp;lt;/u&amp;gt; geschalteten &#039;&#039;Allpass&#039;&#039;-Funktionen A&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; und A&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; plus eine Verzögerung um einen Sampletakt, in der Übertragungsfunktion als „z&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;“ ausgedrückt.&lt;br /&gt;
&lt;br /&gt;
Ein Allpass läßt alle Signalfrequenzen mit unveränderter Amplitude durch, verändert nur die Phase. Seine SOS-Teilfunktion ist besonders einfach aufgebaut, zwei Koeffizienten sind Null, zwei sind gleich Eins und die beiden restlichen identisch. Damit benötigt man nur eine Multiplikation pro Teilfilter.&lt;br /&gt;
&lt;br /&gt;
Die Tiefpass-Übertragungsfunktion erhält so die Form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;G(z) = ½ * ( A&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; (z&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) + z&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; * A&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; (z&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;))&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A_{1}(z^{2})=\frac{z^{-2}+0,190696}{1+0,190696\ast z^{-2}}\ast&lt;br /&gt;
{\frac{z^{-2}+0,860735}{1+0,860735\ast z^{-2}}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A_{2}(z^{2})=\frac{z^{-2}+0,553100}{1+0,553100\ast z^{-2}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man die beiden Ausgänge nicht addiert, sondern subtrahiert, entsteht ein Hochpass gleicher Grenzfrequenz. Beides kombiniert ergibt eine digitale &#039;&#039;Frequenzweiche&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Zum Übergang auf den Hilbert-Transformator ersetzen (&#039;&#039;substituieren&#039;&#039;) wir das z durch -jz und multiplizieren das ganze mit 2:&lt;br /&gt;
&lt;br /&gt;
H(z)= 2*G(-jz)&lt;br /&gt;
  &lt;br /&gt;
&#039;&#039;&#039;H(z) = A&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; (-z&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) + j* z&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; * A&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; (-z&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A_{1}(-z^{2})=\frac{z^{-2}-0,190696}{1-0,190696\ast z^{-2}}\ast&lt;br /&gt;
{\frac{z^{-2}-0,860735}{1-0,860735\ast z^{-2}}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A_{2}(-z^{2})=\frac{z^{-2}-0,553100}{1-0,553100\ast z^{-2}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie man sieht, ändern sich nur die Vorzeichen. Die Pole liegen aber im Pol-Nullstellendiagramm auf der reellen Achse.&lt;br /&gt;
&lt;br /&gt;
Die Ausgänge der beiden Allpässe sind jetzt gegeneinander um 90 Grad phasenverschoben, und können auf einen I/Q-Modulator gegeben werden. Umgekehrt kann man auch die beiden Eingänge auftrennen, und zwei um 90 Grad versetzte Signale aus einem I/Q-Demodulator einspeisen und die Ausgangssignale addieren oder subtrahieren, je nach gewünschtem Seitenband.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Allpaesse.png]]&lt;br /&gt;
&lt;br /&gt;
Und weil das so gut funktionierte, hier noch die Berechnung des Hilbert-Transformators [http://www.mikrocontroller.net/topic/92630#new von Olli Niemitalo] mit einem Halbband-Tiefpass 17.Ordnung, was zu acht SOS-Teilfiltern führt, dazu folgt unten ein ATmega48-Programm.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Halbbandfilter2.png|Halbbandfilter 17.Ordnung|640px]]&lt;br /&gt;
&lt;br /&gt;
===Der näherungsweise linearphasige Hilbert-Transformator===&lt;br /&gt;
&lt;br /&gt;
Er wird im Handbook for DSP auf zwei Seiten sehr kurz abgehandelt. Statt aus zwei Allpässen besteht er aus einem einzigen, im anderen Zweig wird das Signal nur zeitverzögert, was mit einem Ringpuffer wenig Rechenzeit kostet. Eine Zeitverzögerung ist sozusagen die einfachste Form eines Allpasses, damit ist diese Bauform ein Spezialfall der oben gezeigten. Aus Schüsslers Texten erfahren wir noch, dass das Halbband-Tiefpassfilter zur Berechnung hier Tschebyscheff-Charakter haben muß.&lt;br /&gt;
&lt;br /&gt;
Das Zahlenbeispiel zitiert Regalia aus einer anderen Veröffentlichung [http://www.cs.tut.fi/~mr/MRJulk92.html (M. Renfors and T. Saramäki, A class of approximately linear phase digital filters composed of allpass subfilters 1986 ) ] Der Allpass hat neun Koeffizienten, die Zeitverzögerung beträgt 17 Sampletakte. Der Halbband-Tiefpass hat eine Sperrdämpfung von &amp;gt; 49 dB. Sein Frequenzgang und der Phasengang des berechneten Hilbert-Transformators sind als Bild gezeigt.&lt;br /&gt;
&lt;br /&gt;
Zum Allpass gibt es noch folgende Zahlenwerte:&lt;br /&gt;
&lt;br /&gt;
Pole location for A(z)&amp;lt;br&amp;gt;&lt;br /&gt;
z= 	-0.8699928078&amp;lt;br&amp;gt;&lt;br /&gt;
	 0.491194141 ± j0.183666529&amp;lt;br&amp;gt;&lt;br /&gt;
	 0.252724179 ± j0.463085544&amp;lt;br&amp;gt;&lt;br /&gt;
	-0.109950894 ± j0.548611467&amp;lt;br&amp;gt;&lt;br /&gt;
	-0.447326028 ± j0.356810323&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das könnte also ebenfalls noch in einen  ATmega passen.&lt;br /&gt;
&lt;br /&gt;
===Hilbert ohne Multiplizierer===&lt;br /&gt;
&lt;br /&gt;
Eine interessante Variante wird im Artikel [http://kondor.etf.bg.ac.yu/~lutovac/pdf/eusi98lm.pdf Design of multiplierless elliptic IIR halfband filters and Hilbert transformers] vorgestellt. Ähnlich wie im Cordic-Algorithmus für trigonometrische Funktionen werden Multiplikationen vermieden, durch geschickte Wahl der Koeffizienten als Zweierpotenzen.&lt;br /&gt;
&lt;br /&gt;
Die beiden Allpässe des Zahlenbeispiels haben folgende Übertragungsfunktionen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
A_1(z^{-2})&lt;br /&gt;
&amp;amp;=\frac{z^{-2}-0{,}12109375}{1-0{,}12109375 \cdot z^{-2}}&lt;br /&gt;
\cdot\frac{z^{-2}-0{,}6640625}{1-0{,}6640625 \cdot z^{-2}} \\&lt;br /&gt;
&amp;amp;=\frac{z^{-2}-(\frac18 - \frac1{256})}{1-(\frac18 - \frac1{256}) \cdot z^{-2}}&lt;br /&gt;
\cdot\frac{z^{-2}-(\frac12 + \frac18 + \frac1{32} + \frac1{128})}{1-(\frac12 + \frac18 + \frac1{32} + \frac1{128})\cdot z^{-2}}\\&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
A_2(z^{-2})\cdot{z^{-1}}&lt;br /&gt;
&amp;amp;=z^{-1}&lt;br /&gt;
\cdot\frac{z^{-2}-0{,}390625}{1-0{,}390625 \cdot z^{-2}}&lt;br /&gt;
\cdot\frac{z^{-2}-0{,}890625}{1-0{,}890625 \cdot z^{-2}}\\&lt;br /&gt;
&amp;amp;=z^{-1}&lt;br /&gt;
\cdot\frac{z^{-2}-(\frac14 + \frac18 + \frac1{64})}{1-(\frac14 + \frac18 + \frac1{64}) \cdot z^{-2}}&lt;br /&gt;
\cdot\frac{z^{-2}-(1 - \frac18 + \frac1{64})}{1-(1 - \frac18 + \frac1{64}) \cdot z^{-2}}&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Weitere Literatur zu Hilbert===&lt;br /&gt;
* Schüssler / [http://www.lnt.de/LMS/staff/index.php?lang=de&amp;amp;function=1&amp;amp;person=5 Steffen] &amp;quot;Halfband Filters and Hilbert Transformers&amp;quot; &amp;lt;br&amp;gt; Irgendwo im Web hatte ich den vollständigen Artikel als PDF gefunden, leider die Adresse nicht notiert, Google findet nur [http://www.springerlink.com/content/p5480n6p8t73t633/ kostenpflichtige Downloads].&lt;br /&gt;
* Dutta / Kumar [http://eprint.iitd.ac.in/dspace/bitstream/2074/1608/1/roydig1989.pdf On Digital Differentiators, Hilbert Transformers, and Half-Band Low-Pass Filters] &amp;lt;br&amp;gt; dank Schrifterkennungsprogramm leicht lädiert&lt;br /&gt;
* Miroslav Lutovac / Ljiljana Milic [http://www.telfor.rs/telfor2000/radovi/7-10.pdf Half-band IIR Filter Design Using Matlab],  [http://kondor.etf.bg.ac.yu/~lutovac/confer.htm weitere Artikel der Autoren]&lt;br /&gt;
* Göckler / Damjanovic [http://www.dsv.rub.de/imperia/md/content/public/wsr06_goecklerdamjanovic.pdf A Family of Efficient Complex Halfband Filters]&lt;br /&gt;
&lt;br /&gt;
===ATmega-Programm Hilbert-Transformer ( fast fertig, schwingt leider)===&lt;br /&gt;
Da der Adressenbereich des ATmega nicht groß genug ist, wird die Tabelle im SRAM in zwei Hälften geteilt.&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;* Hilbert transformer with ATmega48P, 90 degree broadband phase shifter   *&lt;br /&gt;
;* 15 MHz xtal, input ADC0, PWM-output OCR1a/b, test output PD0            *&lt;br /&gt;
;* Christoph Kessler 2008                         db1uq_at_t-online_dot_de *&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
.nolist&lt;br /&gt;
.include &amp;quot;m48pdef.inc&amp;quot;&lt;br /&gt;
.list&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;* register 0-15 (no &amp;quot;immediate&amp;quot;-operations possible):&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
.def	mult_l	= r0	; multiplier result&lt;br /&gt;
.def	mult_h	= r1	; multiplier result&lt;br /&gt;
.def	zero	= r2	; zero register (used to add carry flag)&lt;br /&gt;
.def	savsrg	= r3	; save status register during interrupt routine&lt;br /&gt;
.def	reg04	= r4	; free&lt;br /&gt;
.def	reg05	= r5	; free&lt;br /&gt;
.def	reg06	= r6	; free&lt;br /&gt;
.def	reg07	= r7	; free&lt;br /&gt;
.def	reg08	= r8	; free&lt;br /&gt;
.def	reg09	= r9	; free&lt;br /&gt;
.def	reg10	= r10	; free&lt;br /&gt;
.def	reg11	= r11	; free&lt;br /&gt;
.def	reg12	= r12	; free&lt;br /&gt;
.def	accu0	= r13	; Accumulator - 32bit for Interrupt routine&lt;br /&gt;
.def	accu1	= r14	; Accumulator - 32bit for Interrupt routine&lt;br /&gt;
.def	accu2	= r15	; Accumulator - 32bit for Interrupt routine&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;* register 16-23 (&amp;quot;immediate&amp;quot;-operations possible):&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
.def	accu3	= r16	; Accumulator - 32bit for Interrupt routine&lt;br /&gt;
.def	reg17	= r17	; free&lt;br /&gt;
.def	reg18	= r18	; free&lt;br /&gt;
.def	reg19	= r19	; free&lt;br /&gt;
.def	datal	= r20	; Data samples mul register&lt;br /&gt;
.def	datah	= r21	;  for Interrupt routine&lt;br /&gt;
.def	coefl	= r22	; Filter coefficient mul register&lt;br /&gt;
.def	coefh	= r23	;  for Interrupt routine&lt;br /&gt;
;***************************************************************************&lt;br /&gt;
;* register 24-31    (16Bit-registers) &lt;br /&gt;
;***************************************************************************&lt;br /&gt;
.def	tmp1	= r24	; general temporary register&lt;br /&gt;
.def	tmp2	= r25	; general temporary register&lt;br /&gt;
;	XL	= r26	; free&lt;br /&gt;
;	XH	= r27	; free&lt;br /&gt;
;	YL	= r28	; used by Interrupt routine&lt;br /&gt;
;	YH	= r29	; used by Interrupt routine&lt;br /&gt;
;	ZL	= r30	; init routine only, free for main program&lt;br /&gt;
;	ZH	= r31	; init routine only, free for main program&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
;* constants :&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
;1st table:&lt;br /&gt;
	;&amp;quot;allpass&amp;quot;0:&lt;br /&gt;
.equ	 x10	= 0&lt;br /&gt;
	; allpass 2:&lt;br /&gt;
.equ	 x12	= 2&lt;br /&gt;
.equ	 x22	= 4&lt;br /&gt;
.equ	 y02	= 6&lt;br /&gt;
.equ	 y12	= 8&lt;br /&gt;
.equ	 y22	= 10&lt;br /&gt;
	; allpass 4:&lt;br /&gt;
.equ	 x14	= 12&lt;br /&gt;
.equ	 x24	= 14&lt;br /&gt;
.equ	 y04	= 16&lt;br /&gt;
.equ	 y14	= 18&lt;br /&gt;
.equ	 y24	= 20&lt;br /&gt;
	; allpass 6:&lt;br /&gt;
.equ	 x16	= 22&lt;br /&gt;
.equ	 x26	= 24&lt;br /&gt;
.equ	 y06	= 26&lt;br /&gt;
.equ	 y16	= 28&lt;br /&gt;
.equ	 y26	= 30&lt;br /&gt;
	; allpass 8:&lt;br /&gt;
.equ	 x18	= 32&lt;br /&gt;
.equ	 x28	= 34&lt;br /&gt;
.equ	 y08	= 36&lt;br /&gt;
.equ	 y18	= 38&lt;br /&gt;
.equ	 y28	= 40&lt;br /&gt;
&lt;br /&gt;
.equ	 k2	= 42&lt;br /&gt;
.equ	 k4	= 44&lt;br /&gt;
.equ	 k6	= 46&lt;br /&gt;
.equ	 k8	= 48&lt;br /&gt;
;2nd table:&lt;br /&gt;
.equ	 k1	= 0&lt;br /&gt;
.equ	 k3	= 2&lt;br /&gt;
.equ	 k5	= 4&lt;br /&gt;
.equ	 k7	= 6&lt;br /&gt;
	; allpass 1:&lt;br /&gt;
.equ	 x11	= 8&lt;br /&gt;
.equ	 x21	= 10&lt;br /&gt;
.equ	 y01	= 12&lt;br /&gt;
.equ	 y11	= 14&lt;br /&gt;
.equ	 y21	= 16&lt;br /&gt;
	; allpass 3:&lt;br /&gt;
.equ	 x13	= 18&lt;br /&gt;
.equ	 x23	= 20&lt;br /&gt;
.equ	 y03	= 22&lt;br /&gt;
.equ	 y13	= 24&lt;br /&gt;
.equ	 y23	= 26&lt;br /&gt;
	; allpass 5:&lt;br /&gt;
.equ	 x15	= 28&lt;br /&gt;
.equ	 x25	= 30&lt;br /&gt;
.equ	 y05	= 32&lt;br /&gt;
.equ	 y15	= 34&lt;br /&gt;
.equ	 y25	= 36&lt;br /&gt;
	; allpass 7:&lt;br /&gt;
.equ	 x17	= 38&lt;br /&gt;
.equ	 x27	= 40&lt;br /&gt;
.equ	 y07	= 42&lt;br /&gt;
.equ	 y17	= 44&lt;br /&gt;
.equ	 y27	= 46&lt;br /&gt;
;*****************************************************&lt;br /&gt;
;* Macros&lt;br /&gt;
;*****************************************************&lt;br /&gt;
.MACRO load_node&lt;br /&gt;
	ldd	datal,Y+@0	; Load low byte of node &lt;br /&gt;
	ldd	datah,Y+@0+1	; Load high byte of node&lt;br /&gt;
.ENDMACRO&lt;br /&gt;
.MACRO update_node&lt;br /&gt;
	std	Y+@0,datal	; Store low byte of node &lt;br /&gt;
	std	Y+@0+1,datah	; Store high byte of node&lt;br /&gt;
.ENDMACRO&lt;br /&gt;
.MACRO add_node&lt;br /&gt;
	ldd	coefl,Y+@0	; Load 2nd node low&lt;br /&gt;
	ldd	coefh,Y+@0+1	; Load 2nd node high&lt;br /&gt;
	add	datal,coefl	; Add low bytes&lt;br /&gt;
	adc	datah,coefh	; Add with carry high bytes&lt;br /&gt;
.ENDMACRO&lt;br /&gt;
.MACRO mult_32&lt;br /&gt;
	ldd	coefl,Y+@0	; Load low byte of coefficient&lt;br /&gt;
	ldd	coefh,Y+@0+1	; Load high byte of coefficient&lt;br /&gt;
	muls	coefh,datah	; Signed multiply, coefficient high byte and data high byte&lt;br /&gt;
	mov     accu2,mult_l	; Copy result word into accumulator byte 2:3&lt;br /&gt;
	mov     accu3,mult_h	; Copy result word into accumulator byte 2:3&lt;br /&gt;
	mul	coefl,datal	; Unsigned multiply, coefficient low byte and data low byte&lt;br /&gt;
	mov	accu0,mult_l	; Copy result word into accumulator byte 2:3&lt;br /&gt;
	mov	accu1,mult_h	; Copy result word into accumulator byte 2:3&lt;br /&gt;
	mulsu	coefh,datal	; Signed-unsigned multiply, coefficient high byte and data low byte&lt;br /&gt;
	sbc	accu3,zero	; Sign extention&lt;br /&gt;
	add	accu1,mult_l	; Add low byte of result to accumulator byte 1&lt;br /&gt;
	adc	accu2,mult_h	; Add with carry high byte of result to accumulator byte 2&lt;br /&gt;
	adc	accu3,zero	; Add carry to accumulator byte 3&lt;br /&gt;
	mulsu	datah,coefl	; Signed-unsigned multiply, data high byte and coefficient low byte&lt;br /&gt;
	sbc	accu3,zero	; Sign extention&lt;br /&gt;
	add	accu1,mult_l	; Add low byte of result to accumulator byte 1&lt;br /&gt;
	adc	accu2,mult_h	; Add with carry high byte of result to accumulator byte 2&lt;br /&gt;
	adc	accu3,zero	; Add carry to accumulator byte 3&lt;br /&gt;
.ENDMACRO&lt;br /&gt;
.MACRO subtr_node&lt;br /&gt;
	ldd	datal,Y+@0	; Load 2nd node low&lt;br /&gt;
	ldd	datah,Y+@0+1	; Load 2nd node high&lt;br /&gt;
	sub	accu0,datal	; Subtract low byte&lt;br /&gt;
	sbc	accu1,datah	; Subtract with carry high byte&lt;br /&gt;
	sbc	accu2,zero	;&lt;br /&gt;
	sbc	accu3,zero	;&lt;br /&gt;
.ENDMACRO&lt;br /&gt;
.MACRO limit_store&lt;br /&gt;
	cpi	accu3,$40	; accu &amp;lt;   $40000000 ?&lt;br /&gt;
	brlo	NoLimit1	;&lt;br /&gt;
	cpi	accu3,-$40	; accu &amp;gt;= -$40000000 ?&lt;br /&gt;
	brsh	NoLimit1	;&lt;br /&gt;
	clr	accu2		; accu2 = $00&lt;br /&gt;
	cpi	accu3,0		;&lt;br /&gt;
	brge	PosLim1		; &lt;br /&gt;
	ldi	accu3,$80	; accu3 = $80&lt;br /&gt;
	rjmp	Limit1		; &lt;br /&gt;
PosLim1:&lt;br /&gt;
	ldi	accu3,$7F	; accu3 = $7F	&lt;br /&gt;
	com	accu2		; accu2 = $FF	&lt;br /&gt;
	rjmp	Limit1		; &lt;br /&gt;
NoLimit1:&lt;br /&gt;
	lsl	accu1		; Scaling to gain factor 2^16&lt;br /&gt;
	rol	accu2		; &lt;br /&gt;
	rol	accu3		; &lt;br /&gt;
Limit1:&lt;br /&gt;
	std	Y+@0,accu2	; &lt;br /&gt;
	std	Y+@0+1,accu3	; &lt;br /&gt;
.ENDMACRO&lt;br /&gt;
.LISTMAC&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
;* reset/interrupt-vectors:&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
.cseg&lt;br /&gt;
	rjmp	Initial		; after RESET to main program&lt;br /&gt;
	reti			; External Interrupt Request 0&lt;br /&gt;
	reti			; External Interrupt Request 1&lt;br /&gt;
	reti			; Pin Change Interrupt Request 0&lt;br /&gt;
	reti			; Pin Change Interrupt Request 1&lt;br /&gt;
	reti			; Pin Change Interrupt Request 2&lt;br /&gt;
	reti			; Watchdog Time-out Interrupt&lt;br /&gt;
	reti			; Timer/Counter2 Compare Match A&lt;br /&gt;
	reti			; Timer/Counter2 Compare Match B&lt;br /&gt;
	reti			; Timer/Counter2 Overflow&lt;br /&gt;
	reti			; Timer/Counter1 Capture Event&lt;br /&gt;
	reti			; Timer/Counter1 Compare Match A&lt;br /&gt;
	reti			; Timer/Counter1 Compare Match B&lt;br /&gt;
	reti			; Timer/Counter1 Overflow&lt;br /&gt;
	reti			; Timer/Counter0 Compare Match A&lt;br /&gt;
	reti			; Timer/Counter0 Compare Match B&lt;br /&gt;
	reti			; Timer/Counter0 Overflow&lt;br /&gt;
	reti			; SPI Serial Transfer Complete&lt;br /&gt;
	reti			; USART0, Rx Complete&lt;br /&gt;
	reti			; USART0 Data register Empty&lt;br /&gt;
	reti			; USART0, Tx Complete&lt;br /&gt;
	rjmp	ADCint		; ADC Conversion Complete&lt;br /&gt;
	reti			; EEPROM Ready   &lt;br /&gt;
	reti			; 2-wire Serial Interface&lt;br /&gt;
	reti			; Store Program Memory Read&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
;* after reset: initialise stack,ports&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
Initial: &lt;br /&gt;
	ldi	tmp1,Low(RAMEND)&lt;br /&gt;
	out	SPL,tmp1	;&lt;br /&gt;
	ldi	tmp1,High(RAMEND)&lt;br /&gt;
	out	SPH,tmp1	; stack initialised&lt;br /&gt;
	clr	zero		; always zero&lt;br /&gt;
	ldi	tmp1,$FF	; &lt;br /&gt;
	out	PortB,tmp1	; PortB = % 1111 1111&lt;br /&gt;
	out	PortC,zero	; PortC = % 0000 0000&lt;br /&gt;
	out	PortD,tmp1	; PortD = % 1111 1111&lt;br /&gt;
	out	DDRB,tmp1	; PortB direction = % 1111 1111&lt;br /&gt;
	out	DDRC,zero	; PortC direction = % 0000 0000&lt;br /&gt;
	out	DDRD,tmp1	; PortD direction = % 1111 1111&lt;br /&gt;
	ldi	tmp1,$A1	; pos. outputs, fast PWM 8Bit&lt;br /&gt;
	sts	TCCR1A,tmp1	;&lt;br /&gt;
	ldi	tmp1,$09	; fast PWM 8Bit, clk/1 (no prescaling)&lt;br /&gt;
	sts	TCCR1B,tmp1	;&lt;br /&gt;
	sts	OCR1AH,zero	;&lt;br /&gt;
	sts	OCR1AL,zero	;&lt;br /&gt;
	sts	OCR1BH,zero	;&lt;br /&gt;
	sts	OCR1BL,zero	;&lt;br /&gt;
	ldi	tmp1,$40	; Ref=Vcc, right-adj, ADC0=input&lt;br /&gt;
	sts	ADMUX,tmp1	;&lt;br /&gt;
	ldi	tmp1,$EE	; Start,Auto, enable Int, Clk/64&lt;br /&gt;
;	ldi	tmp1,$EF	; Start,Auto, enable Int, Clk/128&lt;br /&gt;
	sts	ADCSRA,tmp1	;&lt;br /&gt;
	ldi	tmp1,$00	; free running&lt;br /&gt;
	sts	ADCSRB,tmp1	;&lt;br /&gt;
	ldi	tmp1,$01	; disable ADC0 dig.inp (optional)&lt;br /&gt;
	sts	DIDR0,tmp1	;&lt;br /&gt;
	ldi	ZL,low(CoTblF&amp;lt;&amp;lt;1)	; move filter coefficents&lt;br /&gt;
	ldi	ZH,high(CoTblF&amp;lt;&amp;lt;1)	; from program-flash&lt;br /&gt;
	ldi	YL,low(CoTblS)	; to SRAM&lt;br /&gt;
	ldi	YH,high(CoTblS)	;&lt;br /&gt;
	ldi	tmp1,16		; count 8 * 2-Byte coefficients&lt;br /&gt;
TbLoop:&lt;br /&gt;
	lpm	tmp2,Z+		; fetch 1 byte from coefficient table&lt;br /&gt;
	st	Y+,tmp2		; copy coefficient to Sram, increment Y&lt;br /&gt;
	dec	tmp1&lt;br /&gt;
	brne	TbLoop&lt;br /&gt;
	ldi	YL,low(DatTbl1)	; load SRAM-Pointer for Interrupt routine&lt;br /&gt;
	ldi	YH,high(DatTbl1)	;&lt;br /&gt;
	sei			; enable interrupts&lt;br /&gt;
&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
;* Main program:&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
Endless:&lt;br /&gt;
	rjmp	Endless		; &lt;br /&gt;
&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
;* ADC-Interrupt routine: compute filter and update PWM output&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
ADCint:&lt;br /&gt;
	sbi	PortD,0		; just to measure INT-Time&lt;br /&gt;
	in	savsrg,SREG	; save status register&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
&lt;br /&gt;
; allpass 2&lt;br /&gt;
	load_node 	x10	;&lt;br /&gt;
	add_node 	y22	;         y22   +---+ y12 +---+&lt;br /&gt;
	mult_32		k2	;          o--&amp;lt;-|1/z|&amp;lt;-o--|1/z|&amp;lt;---+&lt;br /&gt;
	subtr_node	x22	;          |    +---+     +---+    |&lt;br /&gt;
	limit_store 	y02	;          v                       |&lt;br /&gt;
	load_node 	x12	;   x10  +---+   +---+    +---+    | &lt;br /&gt;
	update_node 	x22	;    o--&amp;gt;| + |--&amp;gt;|*K2|---&amp;gt;| - |---&amp;gt;o---&amp;gt; &lt;br /&gt;
	load_node 	x10	;    |   +---+   +---+  + +---+   y02&lt;br /&gt;
	update_node 	x12	;    |                    - A&lt;br /&gt;
	lds	datal,ADCL	;    |    +---+     +---+   |&lt;br /&gt;
	lds	datah,ADCH	;    +----|1/z|--o-&amp;gt;|1/z|-&amp;gt;-o&lt;br /&gt;
	dec	datah		;    |    +---+ x12 +---+  x22&lt;br /&gt;
	dec	datah		;    |&lt;br /&gt;
	lsl	datal		;    +-----------+&lt;br /&gt;
	rol	datah		;         +---+  |&lt;br /&gt;
	lsl	datal		;  ADC &amp;gt;--|1/z|--+&lt;br /&gt;
	rol	datah		;         +---+ &lt;br /&gt;
	lsl	datal		; &lt;br /&gt;
	rol	datah		; &lt;br /&gt;
	lsl	datal		; convert 10 bit unsigned &lt;br /&gt;
	rol	datah		; to 15 Bit signed&lt;br /&gt;
	lsl	datal		; $03FF -&amp;gt; $01FF -&amp;gt; $3FE0&lt;br /&gt;
	rol	datah		; $0000 -&amp;gt; $FE00 -&amp;gt; $C000&lt;br /&gt;
	lsl	datal		;  &lt;br /&gt;
	rol	datah		; &lt;br /&gt;
	update_node 	x10	; save new sample for 2nd allpass-chain&lt;br /&gt;
	load_node 	y12	; &lt;br /&gt;
	update_node 	y22	; &lt;br /&gt;
	load_node 	y02	;&lt;br /&gt;
	update_node 	y12	;&lt;br /&gt;
&lt;br /&gt;
; allpass 4&lt;br /&gt;
	add_node 	y24	;&lt;br /&gt;
	mult_32		k4	;         y24   +---+ y14 +---+&lt;br /&gt;
	subtr_node	x24	;          o--&amp;lt;-|1/z|&amp;lt;-o--|1/z|&amp;lt;---+&lt;br /&gt;
	limit_store 	y04	;          |    +---+     +---+    |&lt;br /&gt;
	load_node 	x14	;          v                       |&lt;br /&gt;
	update_node 	x24	;   y02  +---+   +---+    +---+    | &lt;br /&gt;
	load_node 	y02	;  -&amp;gt;o--&amp;gt;| + |--&amp;gt;|*K4|---&amp;gt;| - |---&amp;gt;o---&amp;gt; &lt;br /&gt;
	update_node 	x14	;    |   +---+   +---+  + +---+   y04&lt;br /&gt;
	load_node 	y14	;    |                    - A&lt;br /&gt;
	update_node 	y24	;    |    +---+     +---+   |&lt;br /&gt;
	load_node 	y04	;    +----|1/z|--o-&amp;gt;|1/z|-&amp;gt;-o&lt;br /&gt;
	update_node 	y14	;         +---+ x14 +---+  x24&lt;br /&gt;
&lt;br /&gt;
; allpass 6&lt;br /&gt;
	add_node 	y26	;&lt;br /&gt;
	mult_32		k6	;         y26   +---+ y16 +---+ &lt;br /&gt;
	subtr_node	x26	;          o--&amp;lt;-|1/z|&amp;lt;-o--|1/z|&amp;lt;---+ &lt;br /&gt;
	limit_store 	y06	;          |    +---+     +---+    | &lt;br /&gt;
	load_node 	x16	;          v                       |&lt;br /&gt;
	update_node 	x26	;   y04  +---+   +---+    +---+    | &lt;br /&gt;
	load_node 	y04	;  -&amp;gt;o--&amp;gt;| + |--&amp;gt;|*K6|---&amp;gt;| - |---&amp;gt;o---&amp;gt; &lt;br /&gt;
	update_node 	x16	;    |   +---+   +---+  + +---+   y06&lt;br /&gt;
	load_node 	y16	;    |                    - A&lt;br /&gt;
	update_node 	y26	;    |    +---+     +---+   |&lt;br /&gt;
	load_node 	y06	;    +----|1/z|--o-&amp;gt;|1/z|-&amp;gt;-o&lt;br /&gt;
	update_node 	y16	;         +---+ x16 +---+  x26&lt;br /&gt;
&lt;br /&gt;
; allpass 8&lt;br /&gt;
	add_node 	y28	;&lt;br /&gt;
	mult_32		k8	;         y28   +---+ y18 +---+ &lt;br /&gt;
	subtr_node	x28	;          o--&amp;lt;-|1/z|&amp;lt;-o--|1/z|&amp;lt;---+&lt;br /&gt;
	limit_store 	y08	;          |    +---+     +---+    |&lt;br /&gt;
	load_node 	x18	;          v                       |&lt;br /&gt;
	update_node 	x28	;   y06  +---+   +---+    +---+    | &lt;br /&gt;
	load_node 	y06	;  -&amp;gt;o--&amp;gt;| + |--&amp;gt;|*K8|---&amp;gt;| - |---&amp;gt;o---&amp;gt; &lt;br /&gt;
	update_node 	x18	;    |   +---+   +---+  + +---+   y08&lt;br /&gt;
	load_node 	y18	;    |                    - A&lt;br /&gt;
	update_node 	y28	;    |    +---+     +---+   |&lt;br /&gt;
	load_node 	y08	;    +----|1/z|--o-&amp;gt;|1/z|-&amp;gt;-o &lt;br /&gt;
	update_node 	y18	;         +---+ x18 +---+  x28 &lt;br /&gt;
	load_node 	x10	;&lt;br /&gt;
	ldi	YL,Low(DatTbl2)	;&lt;br /&gt;
&lt;br /&gt;
; allpass 1&lt;br /&gt;
	add_node 	y21	;&lt;br /&gt;
	mult_32		k1	;         y21   +---+ y11 +---+&lt;br /&gt;
	subtr_node	x21	;          o--&amp;lt;-|1/z|&amp;lt;-o--|1/z|&amp;lt;---+&lt;br /&gt;
	limit_store 	y01	;          |    +---+     +---+    |&lt;br /&gt;
	load_node 	x11	;          v                       |&lt;br /&gt;
	update_node 	x21	;   x10  +---+   +---+    +---+    | &lt;br /&gt;
	load_node 	x10	;  -&amp;gt;o--&amp;gt;| + |--&amp;gt;|*K1|---&amp;gt;| - |---&amp;gt;o---&amp;gt; &lt;br /&gt;
	update_node 	x11	;    |   +---+   +---+  + +---+   y01&lt;br /&gt;
	load_node 	y11	;    |                    - A&lt;br /&gt;
	update_node 	y21	;    |    +---+     +---+   |&lt;br /&gt;
	load_node 	y01	;    +----|1/z|--o-&amp;gt;|1/z|-&amp;gt;-o&lt;br /&gt;
	update_node 	y11	;         +---+ x11 +---+  x21&lt;br /&gt;
&lt;br /&gt;
; allpass 3&lt;br /&gt;
	add_node 	y23	;&lt;br /&gt;
	mult_32		k3	;         y23   +---+ y13 +---+&lt;br /&gt;
	subtr_node	x23	;          o--&amp;lt;-|1/z|&amp;lt;-o--|1/z|&amp;lt;---+&lt;br /&gt;
	limit_store 	y03	;          |    +---+     +---+    |&lt;br /&gt;
	load_node 	x13	;          v                       |&lt;br /&gt;
	update_node 	x23	;   y01  +---+   +---+    +---+    | &lt;br /&gt;
	load_node 	y01	;  -&amp;gt;o--&amp;gt;| + |--&amp;gt;|*K3|---&amp;gt;| - |---&amp;gt;o---&amp;gt; &lt;br /&gt;
	update_node 	x13	;    |   +---+   +---+  + +---+   y03&lt;br /&gt;
	load_node 	y13	;    |                    - A&lt;br /&gt;
	update_node 	y23	;    |    +---+     +---+   |&lt;br /&gt;
	load_node 	y03	;    +----|1/z|--o-&amp;gt;|1/z|-&amp;gt;-o&lt;br /&gt;
	update_node 	y13	;         +---+ x13 +---+  x23&lt;br /&gt;
&lt;br /&gt;
; allpass 5&lt;br /&gt;
	add_node 	y25	;&lt;br /&gt;
	mult_32		k5	;         y25   +---+ y15 +---+&lt;br /&gt;
	subtr_node	x25	;          o--&amp;lt;-|1/z|&amp;lt;-o--|1/z|&amp;lt;---+&lt;br /&gt;
	limit_store 	y05	;          |    +---+     +---+    |&lt;br /&gt;
	load_node 	x15	;          v                       |&lt;br /&gt;
	update_node 	x25	;   y03  +---+   +---+    +---+    | &lt;br /&gt;
	load_node 	y03	;  -&amp;gt;o--&amp;gt;| + |--&amp;gt;|*K5|---&amp;gt;| - |---&amp;gt;o---&amp;gt; &lt;br /&gt;
	update_node 	x15	;    |   +---+   +---+  + +---+   y05&lt;br /&gt;
	load_node 	y15	;    |                    - A&lt;br /&gt;
	update_node 	y25	;    |    +---+     +---+   |&lt;br /&gt;
	load_node 	y05	;    +----|1/z|--o-&amp;gt;|1/z|-&amp;gt;-o&lt;br /&gt;
	update_node 	y15	;         +---+ x15 +---+  x25&lt;br /&gt;
&lt;br /&gt;
; allpass 7&lt;br /&gt;
	add_node 	y27	;&lt;br /&gt;
	mult_32		k7	;         y27   +---+ y17 +---+&lt;br /&gt;
	subtr_node	x27	;          o--&amp;lt;-|1/z|&amp;lt;-o--|1/z|&amp;lt;---+&lt;br /&gt;
	limit_store 	y07	;          |    +---+     +---+    |&lt;br /&gt;
	load_node 	x17	;          v                       |&lt;br /&gt;
	update_node 	x27	;   y05  +---+   +---+    +---+    | &lt;br /&gt;
	load_node 	y05	;  -&amp;gt;o--&amp;gt;| + |--&amp;gt;|*K7|---&amp;gt;| - |---&amp;gt;o---&amp;gt; &lt;br /&gt;
	update_node 	x17	;    |   +---+   +---+  + +---+   y07&lt;br /&gt;
	load_node 	y17	;    |                    - A&lt;br /&gt;
	update_node 	y27	;    |    +---+     +---+   | &lt;br /&gt;
	load_node 	y07	;    +----|1/z|--o-&amp;gt;|1/z|-&amp;gt;-o &lt;br /&gt;
	update_node 	y17	;         +---+ x17 +---+  x27&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
;* PWM - D/A-output&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
; output y07 to PWM-DAC&lt;br /&gt;
&lt;br /&gt;
;test: output y01&lt;br /&gt;
	ldd	accu3, Y+y01+1	;&lt;br /&gt;
;&lt;br /&gt;
	subi	accu3,$80	; signed to unsigned  $8000 -&amp;gt;$0000, $7FFF -&amp;gt;$FFFF&lt;br /&gt;
	sts	OCR1AH,zero	; &lt;br /&gt;
	sts	OCR1AL,accu3	; fast PWM 8 bit y07 output to OCR1A&lt;br /&gt;
	ldi	YL,Low(DatTbl1)	; back to 1st data table&lt;br /&gt;
; output y08 to PWM-DAC&lt;br /&gt;
;	load_node 	y08	; load y08&lt;br /&gt;
&lt;br /&gt;
; test outpt y02&lt;br /&gt;
	load_node 	y02	; load y02&lt;br /&gt;
;&lt;br /&gt;
	subi	datah,$80	; signed to unsigned  $8000 -&amp;gt;$0000, $7FFF -&amp;gt;$FFFF&lt;br /&gt;
	sts	OCR1BH,zero	; &lt;br /&gt;
	sts	OCR1BL,accu3	; fast PWM 8 bit y08 output to OCR1B&lt;br /&gt;
	cbi	PortD,0		; just to measure INT-Time&lt;br /&gt;
	out	SREG,savsrg	; restore status register&lt;br /&gt;
	reti			; &lt;br /&gt;
;*************************************************************************&lt;br /&gt;
;* coefficient table in flash memory&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
CoTblF:&lt;br /&gt;
	.dw 	15709 	 	; k2 *32768 (0,4794008655888)&lt;br /&gt;
	.dw 	28712	 	; k4 *32768 (0,8762184935393)&lt;br /&gt;
	.dw 	32001		; k6 *32768 (0,9765975895082)&lt;br /&gt;
	.dw 	32686	 	; k8 *32768 (0,9974992559356)&lt;br /&gt;
	.dw 	 5301	 	; k1 *32768 (0,1617584983677)&lt;br /&gt;
	.dw 	24020		; k3 *32768 (0,7330289323415)&lt;br /&gt;
	.dw 	30977 		; k5 *32768 (0,9453497003291)&lt;br /&gt;
	.dw 	32460	 	; k7 *32768 (0,9905991566845)&lt;br /&gt;
&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
;* data in SRAM&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
.dseg&lt;br /&gt;
.org	$0100&lt;br /&gt;
DatTbl1:&lt;br /&gt;
	; &amp;quot;allpass&amp;quot; 0&lt;br /&gt;
	.dw 	$0000 	 	; x10&lt;br /&gt;
	; allpass 2&lt;br /&gt;
	.dw 	$0000 	 	; x12&lt;br /&gt;
	.dw 	$0000 	 	; x22&lt;br /&gt;
	.dw 	$0000 	 	; y02&lt;br /&gt;
	.dw 	$0000 	 	; y12&lt;br /&gt;
	.dw 	$0000 	 	; y22&lt;br /&gt;
	; allpass 4&lt;br /&gt;
	.dw 	$0000 	 	; x14&lt;br /&gt;
	.dw 	$0000 	 	; x24&lt;br /&gt;
	.dw 	$0000 	 	; y04&lt;br /&gt;
	.dw 	$0000 	 	; y14&lt;br /&gt;
	.dw 	$0000 	 	; y24&lt;br /&gt;
	; allpass 6&lt;br /&gt;
	.dw 	$0000 	 	; x16&lt;br /&gt;
	.dw 	$0000 	 	; x26&lt;br /&gt;
	.dw 	$0000 	 	; y06&lt;br /&gt;
	.dw 	$0000 	 	; y16&lt;br /&gt;
	.dw 	$0000 	 	; y26&lt;br /&gt;
	; allpass 8&lt;br /&gt;
	.dw 	$0000 	 	; x18&lt;br /&gt;
	.dw 	$0000 	 	; x28&lt;br /&gt;
	.dw 	$0000 	 	; y08&lt;br /&gt;
	.dw 	$0000 	 	; y18&lt;br /&gt;
	.dw 	$0000 	 	; y28&lt;br /&gt;
CoTblS:&lt;br /&gt;
	.dw 	$0000 	 	; k2&lt;br /&gt;
	.dw 	$0000 	 	; k4&lt;br /&gt;
	.dw 	$0000		; k6&lt;br /&gt;
	.dw 	$0000	 	; k8&lt;br /&gt;
DatTbl2:&lt;br /&gt;
	.dw 	$0000	 	; k1&lt;br /&gt;
	.dw 	$0000		; k3&lt;br /&gt;
	.dw 	$0000 		; k5&lt;br /&gt;
	.dw 	$0000	 	; k7&lt;br /&gt;
	; allpass 1&lt;br /&gt;
	.dw 	$0000 	 	; x11&lt;br /&gt;
	.dw 	$0000 	 	; x21&lt;br /&gt;
	.dw 	$0000 	 	; y01&lt;br /&gt;
	.dw 	$0000 	 	; y11&lt;br /&gt;
	.dw 	$0000 	 	; y21&lt;br /&gt;
	; allpass 3&lt;br /&gt;
	.dw 	$0000 	 	; x13&lt;br /&gt;
	.dw 	$0000 	 	; x23&lt;br /&gt;
	.dw 	$0000 	 	; y03&lt;br /&gt;
	.dw 	$0000 	 	; y13&lt;br /&gt;
	.dw 	$0000 	 	; y23&lt;br /&gt;
	; allpass 5&lt;br /&gt;
	.dw 	$0000 	 	; x15&lt;br /&gt;
	.dw 	$0000 	 	; x25&lt;br /&gt;
	.dw 	$0000 	 	; y05&lt;br /&gt;
	.dw 	$0000 	 	; y15&lt;br /&gt;
	.dw 	$0000 	 	; y25&lt;br /&gt;
	; allpass 7&lt;br /&gt;
	.dw 	$0000 	 	; x17&lt;br /&gt;
	.dw 	$0000 	 	; x27&lt;br /&gt;
	.dw 	$0000 	 	; y07&lt;br /&gt;
	.dw 	$0000 	 	; y17&lt;br /&gt;
	.dw 	$0000 	 	; y27&lt;br /&gt;
;*************************************************************************&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:DSP]]&lt;/div&gt;</summary>
		<author><name>Andyw</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Oszilloskop&amp;diff=76129</id>
		<title>Oszilloskop</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Oszilloskop&amp;diff=76129"/>
		<updated>2013-05-30T08:57:12Z</updated>

		<summary type="html">&lt;p&gt;Andyw: /* Datenauswertung */ Hinweis auf GNU Octave und Forge korrigiert, Lizenzproblem erklärt. Instrument Control für Kommunikation über LAN mit Oszis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Oszilloskop&#039;&#039;&#039; dient zur grafischen Darstellung des Spannungsverlaufs eines oder mehrerer elektischen Signale in einem einstellbaren Zeitfenster. Es ist das wichtigste Werkzeug der Elektotechniker.&lt;br /&gt;
&lt;br /&gt;
== Anfragen bezüglich Kaufberatung im Forum ==&lt;br /&gt;
&lt;br /&gt;
=== Kritik an den Anfragen ===&lt;br /&gt;
Im Forum finden sich regelmäßig Anfragen nach individueller Beratung zum Oszilloskopkauf. Die Anzahl solcher Oszilloskop-Threads hat schon lange die 1000 überschritten. Sie sind langweilig, eine Qual und oft unnütz - besonders dann, wenn sich der Fragesteller offenbar nicht mit den Grundlagen eines Oszilloskops und den wichtigsten Kennzahlen bekanntgemacht hat oder nicht einmal weiß, was er überhaupt messen will. Auch, wenn ein Fragesteller ein paar Grundlagen besitzt, hat er anscheinend meistens keine Lust, verständlich darzustellen, was er genau will und lässt sich stattdessen umständlich befragen.&lt;br /&gt;
&lt;br /&gt;
Den meisten regelmäßigen Forumbenutzern ist daher gründlich die Lust an Oszilloskop-Threads vergangen. Dort &amp;quot;diskutieren&amp;quot; eigentlich nur noch Trolle und anonyme Gäste, die oft genug nur Werbung über Billigangebote über die x-te Ausgabe einer billigen, als Oszilloskop bezeichneten Plastikkiste, einem suupertollen eBay-Schnäppchen oder angeblicher asiatischer Wundertüten.&lt;br /&gt;
&lt;br /&gt;
==== Links für Anfänger ====&lt;br /&gt;
Wer sich ernsthafte Beratung wüsncht und eine &amp;quot;sanfte&amp;quot; Einführung in das Thema sucht, kann sich die englischsprachige YouTube-Videos von AfroTechMods anschauen:&lt;br /&gt;
&lt;br /&gt;
[http://afrotechmods.com/tutorials/2011/11/27/oscilloscope-tutorials/ http://afrotechmods.com/tutorials/2011/11/27/oscilloscope-tutorials]&lt;br /&gt;
&lt;br /&gt;
Dazu passt auch sein Tutorial über Funktionsgeneratoren:&lt;br /&gt;
[http://afrotechmods.com/tutorials/2011/11/27/function-generator-tutorial/ http://afrotechmods.com/tutorials/2011/11/27/function-generator-tutorial].&lt;br /&gt;
&lt;br /&gt;
===Maßgeschneidert?===&lt;br /&gt;
Besonders die immer wiederkehrende Forderung, dass es unbedingt das maßgeschneiderte Oszilloskop zum Superpreis genau für den Fragesteller geben muss, ist sinnlos. Wer mit diesem Anspruch kommt, der wird enttäuscht werden. Das gibt es nicht, und gute Oszilloskope kosten Geld, da qualitativ hochwertige Geräte keine Massenware sind. Lediglich billige Geräte werden in grosser Zahl hergestellt und sind entsprechend preiswert, diese sind jedoch für anspruchsvoll Anweder meist untauglich, da genau an den wichtigen Dingen gespart und nur auf Optik gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
===Gebraucht ist auch keine Lösung===&lt;br /&gt;
Es gibt eine Reihe von gebrauchte Oszilloskopen- vorwiegend im Internet, von den die meisten billig sind. Da niemand per Ferndiagnose oder Blick in eine Glaskugel in ein gebrauchtes Gerät hineinsehen und etwas über den Zustand berichten kann, besteht immer das typische Risiko eines Kaufs aus zweiter Hand, das jeder selber tragen muss. Niemand im Forum kann und wird das jemandem abnehmen. &lt;br /&gt;
&lt;br /&gt;
Was man allgemein sagen kann, ist, dass man besser die Finger von Angeboten lassen sollte, wenn der Verkäufer mit den übliche Phrasen wie, &amp;quot;Dachbodenfund&amp;quot;, &amp;quot;Keine Ahnung davon&amp;quot;, &amp;quot;Keine Möglichkeit zu testen&amp;quot; kommt. Vorsicht ist auch bei dem beliebten Trick &amp;quot;Funktioniert, aber aus rechtlichen Gründen (Garantie) verkaufe ich es als defekt, für Bastler&amp;quot; gegeben. Man muss sich immer vor Augen führen, dass niemand ein gutes und wertvolles Gerät dieser Art zum Billigpreis abgegeben wird und dies schon garnicht über Internetplattformen, wo es kaum einen Markt für Topgeräte gibt. Gute gebrauchte Geräte gibt es von privat daher nur auf Elektronikbörsen zu entsprechenden Preisen.&lt;br /&gt;
&lt;br /&gt;
Es gibt demgemäss natürlich auch Geräte von seriösen Gebrauchthändlern mit Garantie - allerdings ebenso zu derartigen Preisen, dass dagegen der Kauf eines aktuellen Neugeräts ebenfalls attraktiv erscheint.&lt;br /&gt;
&lt;br /&gt;
=== Erfahrungen? ===&lt;br /&gt;
Eine Vorgehensweise, von der man auch abraten muss, ist die Frage nach Erfahrungen anderer Mitglieder! Die meisten Antworten kommen von Trollen und Posern, die eigentlich keine Ahnung haben. Die einen wollen als anonymer Gast mal wieder trollen, die anderen wollen nur mitteilen, dass Amateurfunker sowieso die besseren Menschen sind. Andere wiederum haben &amp;quot;zufällig&amp;quot; gerade *das* richtige Oszilloskop zu verkaufen. Dann gibt es noch die, die sich ihr eigenes Oszilloskop schönreden wollen, ihren Vorurteilen oder ihrem Fetisch frönen. Zum Beispiel&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Kauf ja kein Gerät aus Asien!&#039;&#039;&lt;br /&gt;
* &#039;&#039;Unter LeCroy|Agilent|Yokogawa|Tektronix geht gar nichts!&#039;&#039;&lt;br /&gt;
* &#039;&#039;Nur Gebrauchtgeräte lohnen sich!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hinweise wie &#039;&#039;mein vor 30 Jahren gekauftes Markengerät funktioniert noch heute tadellos&#039;&#039; sind ebenfalls ziemlich sinnlos. Der Hersteller wird dieses Gerät gar nicht mehr anbieten und er wird schon gar nicht mehr mit der gleichen Qualität fertigen, wie vor 30 Jahren. Dazu ist der Kostendruck zu hoch und Technologien haben sich geändert. Selten sind die neuen Technologien heute so robust, wie die vor 30 Jahren.&lt;br /&gt;
&lt;br /&gt;
Als Unerfahrener kann man daher aus den Antworten nicht herauslesen, ob sie wirklich auf Erfahrung beruhen. Man braucht also gewissermassen selbst Erfahrung, um die Erfahrungsberichte anderer richtig einzuordnen.&lt;br /&gt;
&lt;br /&gt;
Ein anderer Aspekt aus alten Threads ist, dass viele Fragesteller die Erfahrungen gar nicht zur Kenntnis nehmen wollen, wenn sie der eigenen Wunschvorstellung widersprechen. So etwas nennt man beratungsresistent. Da stellt sich schon mal heraus, dass der Fragesteller schon längst ein Gerät bestellt hat und jetzt gebauchpinselt werden will. Eine Zeitverschwendung für alle.&lt;br /&gt;
&lt;br /&gt;
Erfahrungen mit eigenen Geräten lassen bedingt den Schluss zu, welche&lt;br /&gt;
Marken grundsätzlich empfehlenswert sind, weil dort gegebenenfalls mehr auf Qualität geachtet wird.&lt;br /&gt;
&lt;br /&gt;
=== Zusatzkosten beim Kauf im Ausland ===&lt;br /&gt;
Beim Kauf eines scheinbar preisgünstigen Gerätes im Ausland ist Folgendes zu beachten:&lt;br /&gt;
&lt;br /&gt;
Versandkosten, Einfuhrumsatzsteuer, Zoll, e.v. Gebühr für den Paketdienst und die Gebühren für die  Währungsumrechnung sind Kosten, die bei vielen vermeintlichen Internet-Schnäppchen aus dem Ausland (besonders Nicht-EU) noch hinzukommen und bei plakativen Überschriften gerne &amp;quot;vergessen&amp;quot; oder ignoriert werden. Oft wird sich das Angebot selbst schöngeredet. Zudem sind das nicht einmmal alle Kosten, die man zu tragen hat. Zum Beispiel können für manche Zahlungsweisen weitere Gebühren hinzukommen oder Lagergebühren im Zolllager.&lt;br /&gt;
&lt;br /&gt;
Wer nicht vorher rechnet, hat nachher schnell mehr bezahlt als bei einem lokalen Händler. Siehe auch [http://www.zoll.de Zoll].&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich ist der deutsche Zoll nicht doof. Besonders wenn ein asiatischer Versender auf ein Paket bei der Zollerklärung &amp;quot;Geschenk, Wert $40&amp;quot; schreibt, dann kann man fast sicher sein, dass der deutsche Zoll sich das genauer ansieht. Die Ware landet im Zolllager und man darf den Kaufpreis nachweisen.&lt;br /&gt;
&lt;br /&gt;
Ebenso glaubt der Zoll nicht an kostenlosen Versand und nimmt regelmäßig ziemlich saftige Versandgebühren an, die dann versteuert werden&amp;lt;ref&amp;gt;Passiert das, kann man gegen den Steuerbescheid Widerspruch einlegen. Wie das geht sollte in einer Rechtsbehelfsbelehrung auf dem Steuerbescheid stehen.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Nochmal zum Mitschreiben, besonders bei Käufen von außerhalb des Zollgebiets der EU sollte man sich vorher mindestens über die folgenden Kosten informieren:&lt;br /&gt;
&lt;br /&gt;
* Versandkosten oder was der Zoll sich bei kostenlosem Versand ausdenkt&lt;br /&gt;
* Versandart (was durch die Post importiert wird, wird vom Zoll anders abgefertigt, als das, was von einem Paketdienst importiert wird)&lt;br /&gt;
* Einfuhrumsatzsteuer&lt;br /&gt;
* Zoll (bei der Warengruppe, in die Oszilloskope gehören, ist der zur Zeit wohl 0%. Das kann sich natürlich ändern)&lt;br /&gt;
* Gebühr Paketdienst. Paketdienste lassen sich die Zollanmeldung und den Papierkrieg zum Teil mit saftigen Gebühren bezahlen. Die sind nicht in den Versandkosten enthalten.&lt;br /&gt;
* Gebühr für Währungsumrechnung&lt;br /&gt;
* Bankgebühr für Zahlung ins Ausland&lt;br /&gt;
&lt;br /&gt;
==== Beispiel ====&lt;br /&gt;
Ein Kauf eines PC-basierten Messinstruments mit Oszilloskopfunktion, das in Deutschland nicht erhältlich ist und einen Kaufwert von 719,- US Dollar in Taiwan hatte, wurde aufgrund der Umrechung mit einem Wert von 589,- Euro veranschlagt. An UST kamen 112,- und an Zollgebühren 46,- Euro hinzu. Zusammen mit dem Versand und Bankgebühren kostete das Gerät insgesamt 790,- Euro. Andere Geräte des Herstellers, die in Deutschland zu beschaffen sind, kosten als deutsches Exemplar kaum mehr, dafür hat man die volle Verbrauchergarantie. Diese sind also in der Regel vorzuziehen, wenn das Gerät in Deutschland beschaffbar ist.&lt;br /&gt;
&lt;br /&gt;
===Spielzeuge aller Art===&lt;br /&gt;
[[Datei:Karikatur oscilloscope sale.jpg|thumb|left|240px|Preisgünstiges Spitzenoszilloskop 5Gs]]&lt;br /&gt;
&lt;br /&gt;
Offensichtlich scheint es gerade Mode zu werden, einen schwachbrüstigen Analog-Digital-Konverter hinter eine eher zufällig gewählte, krumme analoge Eingangsschaltung zu klemmen und an einen Mikrocontroller mit Grafik-LCD anzuschließen.  Das ganze wird als digitales Speicheroszilloskop (DSO) zum Sonderpreis verkauft.&lt;br /&gt;
&lt;br /&gt;
Je nach Hersteller wird so ein Gerät komplett ohne Gehäuse geliefert, was mit Hinblick auf die Sicherheit sehr fragwürdig ist, oder es kommt in einem lustig aufgemachten Plastikgehäuse in MP3-Player-Format daher, das auch keine großartige Isolation bietet. Hinzu kommen Eindruck schindende Namen und Logos, die Modernität und Qualität suggerieren sollen, oft noch unterstrichen durch die Assoziierung mit Open-Source und pseudo-Hacker / Maker Bewegungen.&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
Im Vergleich zu richtigen Oszilloskopen sind dies leider nur Spielzeuge. Unsichere Spielzeuge. Es nervt diese Dinger immer wieder im Forum als das &amp;quot;Beste seit Erfindung von geschnitten Brot&amp;quot; vorgestellt zu bekommen. Ein Blick auf die technischen Daten dieser &amp;quot;Oszilloskope&amp;quot; (sofern die Daten überhaupt angegeben werden) reicht, um festzustellen, dass man ein Spielzeug vor sich hat. Schön für den, der spielen will, schlecht für den, der sicher messen will.&lt;br /&gt;
&lt;br /&gt;
Ebenso verrät ein Blick auf die Schaltung des Analogeingangs, ob man Qualität vor sich hat. Fehlende Spannungsfestigkeit und fehlende Frequenzkompensation des Eingangsverstärkers sind sichere Zeichen für Schund. Wenn es eine Verbindung zum PC gibt, aber diese nicht isoliert ist, ist das ein weiteres Zeichen für Scheinqualität.&lt;br /&gt;
&lt;br /&gt;
In [http://welecw2000a.sourceforge.net/docs/Hardware/GW_Instek_GDS-1152A.pdf] kann man das Innenleben eines richtigen DSO bewundern. Man vergleiche dies mit den Innenleben der Spielzeug-&amp;quot;DSO&amp;quot;s.&lt;br /&gt;
&lt;br /&gt;
Ein anderes, sicheres Zeichen eines Spielzeug-&amp;quot;DSOs&amp;quot; ist es, wenn irgendein Ding aus Abgreifklemmen und Klinkenstecker als &amp;quot;Tastkopf&amp;quot; mitgeliefert wird oder die Buchse für den Tastkopf aus einer Klinkenbuchse oder ähnlicher Niederfrequenz-Anschlusstechnik besteht.&lt;br /&gt;
&lt;br /&gt;
Auffällig ist bei diesen Spielzeugen auch, dass sie vehement von typischen Fanboys verteidigt werden. Nicht mit technischem Argumenten, sondern mit Aussagen wie &amp;quot;aber ist billig&amp;quot;, &amp;quot;aber ist cool&amp;quot;, &amp;quot;aber enthält doch einen Arduino&amp;quot;. Trotzdem, wer ein Oszilloskop haben möchte, sollte sich das Geld für ein Spielzeug-&amp;quot;DSO&amp;quot; sparen.&lt;br /&gt;
&lt;br /&gt;
== Funktion von Oszilloskopen ==&lt;br /&gt;
=== Was wird gemessen? ===&lt;br /&gt;
Oszilloskope zeigen einen Spannungsverlauf über einen kurzen, für das menschliche Auge in Realzeit meist nicht erfassbaren Zeitraum an. Je hochwertiger das Oszilloskop, desto kürzer ist dieser Zeitraum, beziehungsweise desto schneller darf sich das Signal ändern. Spitzengeräte können Perioden von wenigen ns auf den gesamten sichtbaren Bildbereich aufzoomen. Innerhalb dieser Perioden sind bei guten Oszilloskopen auch Teilabschnitte aufweitbar. Massgeblich ist dafür ein manuell oder automatisch erzeugter Startzeitpunkt, der sogenannten Trigger. &lt;br /&gt;
&lt;br /&gt;
Darüber hinaus lassen sich andere Größen, zum Beispiel Ströme, Drücke und Magnetfelder anzeigen, wenn man zusätzlich entsprechende Wandler einsetzt, um aus den Grössen zuvor eine Spannung zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
=== Was wird dargestellt? ===&lt;br /&gt;
&lt;br /&gt;
Den Eingang für eine Spannung bezeichnet man bei einem Oszilloskop als Kanal. Die an den Kanälen anliegenden Spannungen können einzeln oder gemeinsam angezeigt werden. Bei Mehrkanal-Oszilloskopen kann man üblicherweise auch eine Spannung über eine Spannung darstellen (XY-Modus), womit Übertragungskennlinien von Bauteilen dargestellt werden können.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich bieten moderne Oszilloskope die Möglichkeit, sich gewisse Kenngrößen der Spannungsverläufe anzeigen zu lassen. Gängige Werte sind zum Beispiel die Anzeige von Spitzenspannung und Effektivwert einer Spannung, Frequenz/Periodendauer, Anstiegs- und Abfallzeiten, Tastverhältnis und so weiter. Darüber hinaus bieten gute Oszilloskope Positionsmarken (Cursor), mit denen man, durch eine Linie dargestellt, auf dem Bildschirm Positionen im Spannungsverlauf markieren kann. Zur Position zugehörige Werte (Zeit oder Spannung), sowie die Differenz dieser Werte zwischen zwei Poitionsmarken können abgelesen werden.&lt;br /&gt;
&lt;br /&gt;
Besonders [[#Digitale_Tischoszilloskope|digitale Oszilloskope]] können relativ viele unterschiedliche Kenngrößen anzeigen, da sich viele dieser Größen mit einfachen Algorithmen aus den vom Oszilloskop im Speicher erfassten Daten berechnen lassen. Ebenso sind einfache mathematische Operationen möglich, etwa eine diskrete Fourier-Transformation oder die Summe oder Differenz der Spannungsverläufe von zwei Kanälen. Oszilloskope der Oberklasse bieten darüber hinaus ausgeklügelte Möglichkeiten der Signalanalyse. &lt;br /&gt;
&lt;br /&gt;
Für spezielle Anwendungen finden sich in manchen Oszilloskopen besondere Messfunktionen. Zum Beispiel go/no-go Messungen, mit denen eine Spannungsverlauf mit einem vorgegebenen Verlauf verglichen wird. Entspricht der Spannungsverlauf hinreichend dem vorgegebenen Verlauf wird ein &amp;quot;go&amp;quot; (alles ist OK) Signal ausgegeben. Weicht der Verlauf zu stark ab, ein &amp;quot;no go&amp;quot; (Spannung stimmt nicht) Signal.&lt;br /&gt;
&lt;br /&gt;
Bereits in der Unterklasse digitaler Oszilloskope ist heutzutage eine PC-Schnittstelle üblich. Beim Kauf sollte man darauf achten, dass das Protokoll der Schnittstelle dokumentiert ist. Sonst ist man auf proprietäre PC-Software des Herstellers angewiesen. Bei Oszilloskopen der Unterklasse wird zwar häufig kostenlos PC-Software mitgeliefert, doch leider sind diese Programme durchgehend von erschreckend schlechter Qualität. Bei Oszilloskopen der Oberklasse lassen sich die Hersteller ihre PC-Software gerne zusätzlich sehr teuer bezahlen.&lt;br /&gt;
&lt;br /&gt;
== Analoge Oszilloskope ==&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
[[Bild:Oszilloskop.png|thumb|right|300px|Hybrides Analog/Digital Oszilloskop]]&lt;br /&gt;
Bei analogen Oszilloskopen wird das darzustellende Signal nach der Verstärkung direkt zur Ablenkung eines Elektronenstrahls verwendet.&lt;br /&gt;
&lt;br /&gt;
Brauchbare analoge Oszilloskope findet man oft schon für ca. 50 Euro bei Online-Auktionen und Kleinanzeigenmärkten. Für 200-400 Euro bekommt man dort recht gute Profigeräte&amp;lt;ref&amp;gt;Ein Gerät, welche mit dem Attribut &#039;&#039;Profigerät&#039;&#039; beworben wird, ist normalerweise keins.&amp;lt;/ref&amp;gt;  mit 60-200 MHz Bandbreite. Brauchbare Neugeräte fangen bei 600 Euro an. Der Oszilloskopmarkt wird von einigen wenigen Marken dominiert. Im höherpreisigen Segment sind es vor allem HP (Agilent) und Tektronix, sowie Yokogawa und Lecroy. Hameg ist vor allem im mittleren Segment (500-1500 Euro) weit verbreitet. Man findet sie oft in Schule und Ausbildung. Preislich darunter finden sich diverse asiatische oder gelegentlich noch osteuropäische Hersteller von Analogoszilloskopen. Häufig treten diese Hersteller nicht unter eigenem Namen auf, sondern bieten ihre einfachen Geräte als OEM-Produkte an. &lt;br /&gt;
&lt;br /&gt;
Ganz einfache Geräte verfügen nur über einen Kanal&amp;lt;ref&amp;gt;Es gibt, beziehungsweise gab, nochmals einfachere Geräte, nämlich solche ohne Trigger. Die Zeiten solcher Gerät sind allerdings seit rund 50 Jahren vorbei. Daher sollte man den fehlenden Trigger nur bei historischen Gebrauchtgeräten finden.&amp;lt;/ref&amp;gt;. Damit ist es nicht möglich, zwei Signale in zeitliche Beziehung zu setzen. Dies ist jedoch oft wichtig. Deshalb verfügen heutzutage auch einfache Geräte meist über zwei Kanäle.&lt;br /&gt;
&lt;br /&gt;
=== Bandbreite ===&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Bandbreite&#039;&#039;&#039; gibt Auskunft, welche Signal-Frequenzen das Oszilloskop noch verarbeiten kann. Bei angegebener Bandbreite fällt die Verstärkung des Oszilloskops um 3dB ab, ein Sinussignal wird dann nur noch mit ca. 70% der wahren Amplitude angezeigt. Um Signalverläufe noch vernünftig interpretieren zu können, kann man grob sagen, dass man Signale bis 1/10 der Bandbreite dargestellt bekommt. Ein Rechtecksignal nahe der Bandbreite würde z.&amp;amp;nbsp;B. nur noch als Sinus dargestellt werden &amp;lt;ref&amp;gt;Häufig wird von Anfängern bei der Bandbreitenbetrachtung vergessen, dass ein Rechtecksignal nicht aus einer einzigen Sinusschwingung der Frequenz f, sondern aus einer theoretisch unendlichen Summe von Signalen der Frequenzen f, 3 * f, 5 * f ... besteht. Für eine vernünftige Darstellung eines Rechtecksignals sollte die Oszilloskopbandbreite so groß sein, dass zumindest die ersten paar Oberwellen nicht zu stark gedämpft werden. Aus dieser Betrachtung ergeben sich Faustformeln, wie die, dass die Bandbreite eines Oszilloskops zehnmal (oder dreimal, oder fünfmal, je nachdem wie genau man messen möchte) größer sein sollte als die Grundfrequenz des Rechtecks.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Beim Messen von Digitalsignalen ist man meist an der &#039;&#039;&#039;Anstiegszeit&#039;&#039;&#039; interessiert. Die Anstiegszeit gibt an, wie lange ein Rechtecksignal von 10-90% benötigt. Die Anstiegszeit des Oszilloskops gibt an, welche Anstiegszeit dargestellt wird, wenn man ein nahezu ideales Rechtecksignal mit annähernd Null Anstiegszeit anlegen würde. Man kann die Anstiegszeit direkt aus der Bandbreite berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_{Osc} = \frac{0.35}{B}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\!\, t_A&amp;lt;/math&amp;gt; : Anstiegszeit des Oszilloskops in Sekunden (s)&lt;br /&gt;
* &amp;lt;math&amp;gt;\!\, B&amp;lt;/math&amp;gt; : Bandbreite in Hertz (Hz)&lt;br /&gt;
&lt;br /&gt;
Legt man ein reales Rechtecksignal an das Oszilloskop an, dann wird die Anzeige umso mehr verfälscht, je näher die Anstiegszeit des Eingangssignals der Anstiegszeit des Oszilloskops kommt. Dabei gilt folgender Zusammenhang.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t_S = \sqrt{t_{ges}^2-t_{Osc}^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\!\, t_S&amp;lt;/math&amp;gt;: Anstiegszeit des Eingangssignals&lt;br /&gt;
* &amp;lt;math&amp;gt;\!\, t_{ges}&amp;lt;/math&amp;gt;: Angezeigte Anstiegszeit auf dem Oszilloskop&lt;br /&gt;
* &amp;lt;math&amp;gt;\!\, t_{Osc}&amp;lt;/math&amp;gt;: Anstiegszeit des Oszilloskops&lt;br /&gt;
&lt;br /&gt;
Bei analogen Oszilloskopen ist die Bandbreite gegeben durch die Begrenzung des analogen Eingangsverstärkerts sowie die Signaldarstellung, also die Qualität des Ablenkverstärkers.&lt;br /&gt;
&lt;br /&gt;
=== Tastköpfe richtig benutzen ===&lt;br /&gt;
&lt;br /&gt;
Wenn man wirklich schnelle Signale messen will, spielt auch die Bandbreite des verwendeten Tastkopfes eine wichtige Rolle. Näheres dazu findet man [http://www.sigcon.com/Pubs/straight/probes.htm hier]. Aber der beste Tastkopf nützt nichts, wenn man ihn falsch anschließt. Für schnelle Messung jenseits von ein paar MHz nutzt man praktisch immmer 10:1 Tastköpfe mit 10 MOhm Eingangswiderstand und ca. 8-15pF Eingangskapazität. Je nach Typ erreicht man damit Bandbreiten von 100-500MHz. Danach muss man aber auch den Tastkopf richtig anschließen. Der mitgelieferte Masseanschluß mit Krokodilklemme ist zwar praktisch, für viele hochfrequente Messungen aber unbrauchbar. Ein Rechtecksignal damit zu messen ergibt dann starke Überschwinger, welche real aber gar nicht vorhanden sind, sondern durch die zu lange, induktive Masseleitung im Zusammenspiel mit der Eingangskapazität verursacht werden. Das sieht man z.B. [http://www.mikrocontroller.net/topic/281669?goto=2975948#2975754 hier], den Messaufbau sieht man [http://www.mikrocontroller.net/topic/281669?goto=2975948#2975896 hier].&lt;br /&gt;
&lt;br /&gt;
Für saubere, hochfrequente Messungen muss man die Masseanbindung so kurz wie möglich machen. Dafür haben die Tastköpfe oft eine kleines Zusatzteil, eine Massefeder, beigelegt (engl. [http://www.mikrocontroller.net/attachment/27280/groundspring.png ground spring]). Damit kann man die Masse auf kürzestem Wege anschließen und erhält ein sauberes Messergebnis wie man [http://www.mikrocontroller.net/topic/281669?goto=2975948#2975931 hier] sieht.&lt;br /&gt;
&lt;br /&gt;
=== Triggerung ===&lt;br /&gt;
&lt;br /&gt;
Oszilloskope unterscheiden sich oft stark in den Triggerungsmöglichkeiten. Bei guten Geräten kann man z.&amp;amp;nbsp;B. die Triggerung variabel verzögern. Erst dadurch wird es möglich, dass man sich Signale genauer anschauen kann, die zeitlich weit hinter einem Triggerereignis kommen. Eine weitere Funktion bei höherklassigen Oszilloskopen ist eine zweite Zeitbasis. Mit dieser kann man in einen Ausschnitt des Messsignals hereinzoomen&amp;lt;ref&amp;gt;Die zweite Zeitbasis steuert einen zweiten Strahl (ähnlich wie einen separaten Kanal), der das gleiche Eingangssignal erhält. Die zweite Zeitbasis wird auf eine höhere Horizontalfrequenz eingestellt als die erste. Zusammen mit einer horizontalen Verschiebung der Darstellung kann man nun Ausschnitte des Signals durchfahren und vergrößert betrachten.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Mit Analog-Oszilloskopen kann man sich hauptsächlich periodische Signalverläufe anschauen, also solche, die zeitlich immer wiederkehrend sind. Denn nur so kann ein Signal immer wieder auf den Schirm &amp;quot;geschrieben&amp;quot; werden und erscheint als stehendes Bild. Aperiodische Signale, wie z.&amp;amp;nbsp;B. auf Datenübertragungsleitungen, sind damit nicht darstellbar. Sie laufen mit einem Strahldurchgang über den Schirm. In dieser kurzen Zeit ist es jedoch nur selten möglich, sie visuell aufzunehmen. Mit einer Digitalkamera kann man solche Signalverläufe mitunter trotzdem einfangen. Früher sehr hochpreisige, heute nicht mehr übliche Analog-Oszilloskope hatten eine eingebaute Speichermöglichkeit (Speicherröhre) für einmalige Signale. Diese Klasse von Analog-Oszilloskopen wurde durch digitale Speicheroszilloskope (DSOs) abgelöst.&lt;br /&gt;
&lt;br /&gt;
Manche Analog-Oszilloskope bieten eine Möglichkeit, die Triggerung nur zu einem definiertem Zeitpunkt anzustoßen, somit kann auch der Anlaufstrom eines Motors mit einem Analog-Oszilloskop dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
=== Analoge Speicheroszilloskope ===&lt;br /&gt;
Inzwischen eher selten sind analoge Speicheroszilloskope anzutreffen. Diese speichern im Gegensatz zu digitalen Speicheroszilloskopen nicht das Signal selbst, sondern das Bild auf der Röhre. Dies wird mit speziellen speichernden Bildröhren erreicht. Je nach Typ kann es mehrere getrennt betreibbare Bereiche geben, um beispielsweise 2 Bilder eines Signales zu unterschiedlichen Zeitpunkten darstellen zu können (z.B. Tektronix 549).&lt;br /&gt;
&lt;br /&gt;
Einige wenige dieser Oszilloskope waren sogar in der Lage, das aufgezeichnete Bild auf Papier auszugeben (z.B. &amp;quot;HP Model 175A&amp;quot; mit Modul 1784A).&lt;br /&gt;
&lt;br /&gt;
=== Vergleichstabelle Analogoszilloskope ===&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle soll einen Überblick über interessante oder bekannte Neugeräte besonders im unteren Preisbereich geben. Eine vollständige Auflistung aller existierenden Geräte ergibt wegen der Vielzahl an Baureihen und Modellen wenig Sinn.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;analogoszis&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Hersteller&lt;br /&gt;
! Preis [&amp;amp;euro;]&lt;br /&gt;
! Kanäle&lt;br /&gt;
! Bandbreite &amp;lt;BR/&amp;gt;[MHz]&lt;br /&gt;
! Röhre [cm]&lt;br /&gt;
! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| generisches 10 MHz Oszilloskop unter Bezeichnungen wie C1-94, S1-94, OS10, AO-610, [http://www.ett-online.de/html/de/werkstatt/oszilloskope/digitale-oszilloskope/oszilloskop-mccheck-st16b-1-kanal-10-mhz/article-4-55152-459045509045501590.html ST16B], CS10, GOS-310, 72-6602, HUC70, CS1010 [http://www.conrad.de/ce/de/product/122413/VOLTCRAFT-6102-Analoges-1-Kanal-Oszilloskop-Bandbreite-0-DC-10-MHz VC 610/2]&lt;br /&gt;
| SYSTRONICS (INDIA) LIMITED&lt;br /&gt;
| ab 115&lt;br /&gt;
| 1&lt;br /&gt;
| 10&lt;br /&gt;
| 4 − 4,8 × 6&lt;br /&gt;
| Seit Jahrzehnten von vielen No-Name Herstellern in unterschiedlichen Ausführungen und Bauformen im Angebot. Wenig empfehlenswert für µC-Arbeiten. &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.attenelectronics.com/Products/Oscilloscopes/Analog_oscilloscope/2012/0728/129.html Atten AT7328], CS4128 und andere Bezeichnungen wie 100867.&lt;br /&gt;
| Atten&lt;br /&gt;
| ab 240&lt;br /&gt;
| 2&lt;br /&gt;
| 20(?)&lt;br /&gt;
| 8 × 10&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://systronicsindia.tradeindia.com/oscilloscopes--287360.html Systronics 6020], Mc Check CS-4128, MES 2K2 und andere&lt;br /&gt;
| SYSTRONICS (INDIA) LIMITED&lt;br /&gt;
| ab 200&lt;br /&gt;
| 2&lt;br /&gt;
| 20&lt;br /&gt;
| 8 × 10&lt;br /&gt;
| Hersteller hat keine eigene Präsenz in Europa&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.attenelectronics.com/Products/Oscilloscopes/Analog_oscilloscope/2012/0728/128.html Atten AT7340], [http://www.conrad.de/ce/de/product/122421/VOLTCRAFT-VC-630-2-Analoges-2-Kanal-Oszilloskop-Bandbreite-0-DC-bis-30-MHz/?ref=category&amp;amp;rt=category&amp;amp;rb=1 VC 630-2] und andere.&lt;br /&gt;
| Atten&lt;br /&gt;
| ab 370&lt;br /&gt;
| 2&lt;br /&gt;
| 40(?) 30 Voltcraft&lt;br /&gt;
| 8 × 10&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ett-online.de/html/de/werkstatt/oszilloskope/digitale-oszilloskope/oszilloskop-mccheck-st-52-2-kanal-50-mhz/article-4-55156-459045509045501590.html Mc Check ST-52] und andere&lt;br /&gt;
| SYSTRONICS (INDIA) LIMITED&lt;br /&gt;
| ab 550&lt;br /&gt;
| 2&lt;br /&gt;
| 50&lt;br /&gt;
| 8 × 10&lt;br /&gt;
| Hersteller hat keine eigene Präsenz in Europa&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.hameg.com/446.0.html?L=1 HM 400]&lt;br /&gt;
| Hameg&lt;br /&gt;
| ab 650&lt;br /&gt;
| 2&lt;br /&gt;
| 40&lt;br /&gt;
| 8 × 10&lt;br /&gt;
| Abgekündigt, nur noch Restbestände erhältlich!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Digitale Speicheroszilloskope ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:tektronix.jpg|thumb|right|300px|Digitales Speicheroszilloskop vom Anfang des Jahrtausends]]&lt;br /&gt;
Ein digitales Speicheroszilloskop (englisch DSO, &#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;S&#039;&#039;&#039;torage &#039;&#039;&#039;O&#039;&#039;&#039;scilloscope) digitalisiert das Eingangssignal mit einem Analog-Digital-Wandler und legt die Werte in einem Speicher ab. Damit ist Bandbreite nur durch die Begrenzung des analogen Eingangsverstärkerts gegeben. Der Vorteil der Speicherung ist, dass man auf diese Weise Momentaufnahmen eines Signals machen und damit einmalige (transiente) Ereignisse (Spikes, Datenübertragungen) erkennen und darstellen kann, was besonders bei digitalen Schaltungen, z.&amp;amp;nbsp;B. mit Mikrocontrollern, sehr nützlich ist. Weiterhin lässt sich das Signal &amp;quot;vermessen&amp;quot; (z.&amp;amp;nbsp;B. um die Baudrate einer Datenübertragung zu bestimmen), man kann die Frequenz und den Effektivwert anzeigen lassen, das Frequenzspektrum, und je nach Modell noch vieles mehr. Das Signal wird in S/W oder Farbe auf einem LCD dargestellt, lässt sich aber oft auch über einen angeschlossenen Drucker ausdrucken oder an den PC übermitteln.&lt;br /&gt;
&lt;br /&gt;
Der wichtigste Parameter bei digitalen Oszilloskopen ist die &#039;&#039;&#039;Abtastrate&#039;&#039;&#039;, die angibt, mit welcher Geschwindigkeit das Eingangssignal digitalisiert wird. Um ein Signal mit einer bestimmten Frequenz vernünftig darstellen zu können, muss es mindestens mit der 10-fachen Frequenz abgetastet werden, für die genaue Analyse analoger Signale ist sogar ein Faktor von 25 bis 40 anzuraten&amp;lt;ref&amp;gt;Dieser Anhaltswert liegt über der Nyquist-Frequenz (zweifache Frequenz), da man Abweichungen von der idealen Signalform sehen und beurteilen möchte.&lt;br /&gt;
&lt;br /&gt;
Die zehnfache Abtastfrequenz bedeutet, dass man 10 Messpunkte pro Signalperiode hat, was in einer 1:1 Darstellung auf dem Bildschirm gerade mal 10 nebeneinander liegenden Pixeln entspricht. Das ist immer noch sehr wenig, um ein Signal zu beurteilen.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Außerdem sind die &#039;&#039;&#039;Speichertiefe&#039;&#039;&#039; und die &#039;&#039;&#039;Wandler-Auflösung&#039;&#039;&#039; interessant. Ein Oszilloskop, das mit acht Bit Auflösung abtastet und 2000*8 Bit Speicher hat, kann 2000 Samples abspeichern, was einer Darstellung von 2000*256 Pixeln entspricht. Acht Bit Auflösung ist heutzutage ein gängiger Wert, auch wenn er niedrig erscheint. Ein normales Oszilloskop ist kein Präzisionsmessgerät und acht Bit sind für die Darstellung auf den Displays normaler Oszilloskope ausreichend.   &lt;br /&gt;
&lt;br /&gt;
Bei der Wandlung und Speicherung gibt es unterschiedliche Verfahren: Ehemals günstige Oszilloskope wie die TDS1000-Serie von Tektronix verwenden &#039;&#039;&#039;CCD-Speicher&#039;&#039;&#039; (Eimerkettenspeicher, ein analoges Schieberegister); die Messwerte werden erst gespeichert, und dann digitalisiert. Nachteile dieser Vorgehensweise sind ein stärkeres Rauschen, die begrenzte Speichertiefe und Totzeiten, während der keine Eingangswerte aufgenommen werden. Diese entstehen, da das Wandeln aller Werte aus dem analogen Zwischenspeicher länger dauert als die Zeit zum Füllen dieses Speichers. Deshalb muss das Gerät bis zum Abschluss der Wandlung warten, bevor es den Speicher erneut füllt.&lt;br /&gt;
&lt;br /&gt;
Früher wandelten nur teurere Modelle in Echtzeit mit schnellen Flash-[[AD-Wandler]]n und speicherten die Messwerte direkt in einem schnellen RAM. Die Speichertiefe ist dabei praktisch unbegrenzt, allerdings sind Wandler sehr teuer, die mehrere GS/s schaffen. Durch einen Trick (mehrere verschachtelte langsame AD-Wandler) setzen sich AD-Wandler bei günstigen Modellen durch. Oszilloskope, die diesen Trick verwenden, erkennt man daran, dass die Abtastfrequenz mit der Anzahl der aktivierten Kanäle sinkt. Zum Beispiel, findet man Vierkanaloszilloskop mit vier Wandlern à 250 MS/s, die bei Benutzung nur eines Kanals 1 GS/s für diesen Kanal erreichen, bei Benutzung von zwei Kanäle 500 MS/s pro Kanal und bei Benutzung von drei oder vier Kanälen 250 MS/s pro Kanal.&lt;br /&gt;
&lt;br /&gt;
In den richtig schnellen Geräten (mehrere GHz Samplerate) ist ein ähnlicher Trick üblich. Dort sind in den verwendeten Wandlerschaltkreisen eine größere Anzahl Sample-and-Hold-Stufen und AD-Wandler integriert. Die Eingangsspannung wird dann zeitversetzt in den Sample-and-Hold-Stufen gespeichert und von den im Vergleich zur Samplerate langsameren AD-Wandlern umgesetzt. Die Ausgangslogik sorgt dann dafür, dass die Daten in der richtigen Reihenfolge ausgegeben werden. Ein Problem bei dieser Vorgehensweise sind unterschiedliche elektrische Eigenschaften der parallelen Wandlerstufen. &lt;br /&gt;
&lt;br /&gt;
Natürlich spielt der Verwendungszweck eine entscheidende Rolle bei der Auswahl. Auf dem Labortisch, wo meist nur kleine Spannungen mit einem gemeinsamen Massebezug vorkommen, werden andere Anforderungen an ein Oszilloskop gestellt, als z.&amp;amp;nbsp;B. im Servicebereich für Industriesteuerungsanlagen, Automatisierungstechnik, usw. Dort sind weniger hohe Abtastraten wichtig, sondern eher eine größere Anzahl Eingangskanäle, die galvanisch voneinander getrennt sind, Spannungsfestigkeit bis min. 500 Volt, sowie speziell bei Störungsanalysen, die Möglichkeit, komplexe Triggermuster einzustellen, und eine integrierte große Festplatte, um einzelne Ereignisse automatisiert über lange Zeiträume hinweg festhalten zu können. Ein Beispiel für so ein hochwertiges Gerät ist ein Yokogawa Scopecorder (DL708). Allerdings sind bei solchen Geräten die Preise nach oben hin offen.&lt;br /&gt;
&lt;br /&gt;
===  Digitale Tischoszilloskope ===&lt;br /&gt;
==== Allgemeines ====&lt;br /&gt;
&lt;br /&gt;
DSO Tischoszilloskope sind die klassischen, in sich abgeschlossenen Geräte, die in der Gestaltung analogen Oszilloskopen ähneln. Daneben gibt es zum Beispiel auch PC DSOs. Viele Tischgeräte sind bereits so klein (geringe Tiefe) und leicht, dass sie zu Recht als tragbare Geräte bezeichnet werden. Beim Neukauf eines Oszilloskops sind diese Geräte die interessantesten.&lt;br /&gt;
&lt;br /&gt;
Mittlerweile ist es üblich, dass man bereits bei Einsteigermodellen eingebaute USB oder RS-232 Schnittstellen findet und eine (häufig sehr simple) Windows-Software zur Bedienung vom PC aus oder zumindest zum Auslesen von Daten auf den PC. Ebenfalls häufig sind USB oder ähnliche Schnittstellen für USB-Memorysticks oder Speicherkarten zum Speichern von Messwerten, Screenshots und Konfigurationen. Ironischerweise sind Schnittstellen und Windows-Software bei Markengeräten häufig gesondert zu erwerben, während sie bei eher unbekannten Marken kostenlos mitgeliefert werden, wenn auch die Qualität der kostenlosen Software häufig zu wünschen übrig lässt. &lt;br /&gt;
&lt;br /&gt;
Beispiele für günstige Einstiegsmodelle sind einige, aber nicht alle, Geräte von Rigol, Hantek, Owon oder Atten. Für wenig Geld erhält man für einfache Anwendungen brauchbares Oszilloskop mit ein paar Highlights aber auch auffälligen Einschränkungen und Fehlern in der Hard- und Software. Viel oder überhaupt Service kann man von diesen Firmen für sein Geld nicht erwarten.&lt;br /&gt;
&lt;br /&gt;
Geräte von [http://www.instek.com/] sind etwas teurer. Geräte aus der GDS-1000A oder GDS-1000U Serie dürften zum Einstieg interessant sein.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Beispiel für ein Einstiegsmodell war das [http://www.tek.com/site/ps/0,,40-15314-INTRO_EN,00.html TDS1002] von Tektronix (ca. 1200 Euro). Dazu muss man allerdings sagen, dass Tektronix die aktuelle Entwicklung etwas verschlafen hat. Der nur 2 kByte große Speicher ist einfach nicht mehr zeitgemäß. Geräte der [http://www.home.agilent.com/agilent/product.jspx?nid=-33575.0&amp;amp;cc=DE&amp;amp;lc=ger&amp;amp;pageMode=OV Agilent InfiniiVision 2000X Serie] beginnen in einem ähnlichen Preisbereich aber mit wesentlich mehr Features.&lt;br /&gt;
&lt;br /&gt;
==== Vergleichstabelle digitale Tischoszilloskope ====&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle soll einen Überblick über interessante oder bekannte Geräte besonders im unteren Preisbereich geben. Eine vollständige Auflistung aller existierenden Geräte ergibt wegen der Vielzahl an Baureihen und Modellen wenig Sinn.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;digitaloszis&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Hersteller&lt;br /&gt;
! Preis [&amp;amp;euro;]&lt;br /&gt;
! Kanäle&lt;br /&gt;
! Samplerate &amp;lt;BR/&amp;gt;[MS/s]&lt;br /&gt;
! Bandbreite &amp;lt;BR/&amp;gt;[MHz]&lt;br /&gt;
! Auflösung [Bit]&lt;br /&gt;
! Speichertiefe [Samples]&lt;br /&gt;
! Display&lt;br /&gt;
! PC-Interface&lt;br /&gt;
! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.conrad.de/ce/de/product/122485/VOLTCRAFT-Vorteilsset-DSO-1062D-2-Kanal-Oszilloskop-Digitales-Speicheroszilloskop-Bandbreite-60-MHz-inkl-2-Tastkoepf DSO5062D]&lt;br /&gt;
| [http://www.conrad.de/ Conrad]&lt;br /&gt;
| 329.-&lt;br /&gt;
| 2&lt;br /&gt;
| 500/1000&lt;br /&gt;
| 60&lt;br /&gt;
| 8&lt;br /&gt;
| 1M&lt;br /&gt;
| 800 x 480, 7&amp;quot; (die auch genutzt werden)&lt;br /&gt;
| 1 x USB Geräte- und 1 x USB Host-Schnittstelle&lt;br /&gt;
| Gleiche Hardware wie das Hantek DSO5102B und nur leicht modifizierte Software (Startbild, Gerätename, etc.).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.hantek.com.cn/english/produce_list.asp?unid=78 DSO5102B]&lt;br /&gt;
| [http://www.hantek.com.cn/english/ Hantek]&lt;br /&gt;
| mit sehr viel Glück auf eBay 390 + Zoll + Umsatzsteuer ... 520&lt;br /&gt;
| 2&lt;br /&gt;
| 500/1000&lt;br /&gt;
| 100&lt;br /&gt;
| 8&lt;br /&gt;
| 1M&lt;br /&gt;
| 800 x 480, 7&amp;quot; (die auch genutzt werden)&lt;br /&gt;
| 1 x USB Geräte- und 1 x USB Host-Schnittstelle&lt;br /&gt;
| Beliebt, da es einen Hack auf 200 MHz gibt. Ebenso diverse Hacks an der Hardware. Für ein Niedrigpreis-Produkt übliche und verzeihbare Hardware- und Firmware-Macken. Auch als Tekway DST1102B oder Protek 3110 im Handel.&lt;br /&gt;
|-&lt;br /&gt;
| DSO3062A||Agilent||800||2||500 ||60||8||4k||320x240||USB||weitgehend baugleich mit Rigol DS5000&lt;br /&gt;
|-&lt;br /&gt;
| InfiniiVision 2000 X Serie||Agilent|| 950 - 2600 (MSO) ||2 - 4||1 G/Kanal. Bei Benutzung der Hälfte aller Kanäle 2G/Kanal|| 70 - 200 || 8 || 100k || 800 x 480, 8,5&amp;quot;|| ||Markengeräte mit exzellentem Preis-Leistungs-Verhältnis. Software-Aufrüstbar (Funktionsgenerator, Protokoll-Dekoder, usw.)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rigolna.com/products_ds1000d.aspx DS1000 Serie]&lt;br /&gt;
| [http://www.rigolna.com/ Rigol]&lt;br /&gt;
| 285 - 1650&lt;br /&gt;
| 2&lt;br /&gt;
| 400/200&amp;lt;BR/&amp;gt;(1/2 Kanäle)&lt;br /&gt;
| 25-100&lt;br /&gt;
| 8&lt;br /&gt;
| 1M&lt;br /&gt;
| 320x240&lt;br /&gt;
| USB, seriell&lt;br /&gt;
| optional 16-Kanal Logikanalysator&lt;br /&gt;
|-&lt;br /&gt;
| [[Rigol DS1052E]]&lt;br /&gt;
| [http://www.rigolna.com/ Rigol]&lt;br /&gt;
| 285,-€ zzgl. Versand bei Batronix&lt;br /&gt;
| 2&lt;br /&gt;
| 1000/500&amp;lt;BR/&amp;gt;(1/2 Kanäle)&lt;br /&gt;
| 50 (100=DS1102E)&lt;br /&gt;
| 8&lt;br /&gt;
| 1M&lt;br /&gt;
| 320x234&lt;br /&gt;
| USB, seriell&lt;br /&gt;
| optional 16-Kanal Logikanalysator = DS1052D (DS1102D). Im Netz kursieren diverse, mehr oder weniger ernst zu nehmende Anleitungen, wie man ein DS1052E per Software auf ein DS1102E umrüsten kann.&lt;br /&gt;
|-&lt;br /&gt;
| Owon PDS Serie&lt;br /&gt;
| Owon, alias Xiamen Lilliput Technology Co., Ltd&lt;br /&gt;
| 299,- (PDS5022S); 495,- (PDS6062T); 570,- (PDS7102T)&lt;br /&gt;
| 2&lt;br /&gt;
| 100 - 500&lt;br /&gt;
| 25 - 100&lt;br /&gt;
| 8&lt;br /&gt;
| 5k pro Kanal&lt;br /&gt;
| 640x480&lt;br /&gt;
| USB, seriell incl.&lt;br /&gt;
| Qualität entspricht Preis. Relativ unausgewogenes Verhältnis von Bandbreite zu Samplingrate. Geräte mit einem &#039;S&#039; am Ende der Typenbezeichnung haben ein STN LCD mit niedriger Qualität.&amp;lt;br&amp;gt;nur Real-Time Sampling&lt;br /&gt;
|-&lt;br /&gt;
| [http://owon.com.cn/eng/smartDS.asp Owon SDS Serie]&lt;br /&gt;
| Owon, alias Xiamen Lilliput Technology Co., Ltd&lt;br /&gt;
| 400 (SDS7102)&lt;br /&gt;
| 2&lt;br /&gt;
| 500 M - 3.2 G&lt;br /&gt;
| 60 - 300&lt;br /&gt;
| 8&lt;br /&gt;
| 10M/Kanal&lt;br /&gt;
| 800 x 600, 8&amp;quot;&lt;br /&gt;
| USB Host und Slave, seriell incl., Ethernet, VGA&lt;br /&gt;
| Deutliche Verbesserung gegenüber der alten PDS-Serie. Beeindruckende Speichertiefe (10M) und Bildschirm (8&amp;quot;). Für ein Niedrigpreis-Produkt übliche Hardware- und Firmware-Macken. Neuere Geräte mit verbessertem Hardwaredesign, Firmware wird regelmäßig aktualisiert, menülastige, gewöhnugsbedürftige Bedienung. Akkubetrieb optional&lt;br /&gt;
|-&lt;br /&gt;
| GW Instek GDS-1000 Serie&lt;br /&gt;
| [http://www.instek.com/html/en/index-e.asp GW Instek], alias Good Will Instrument Co., Ltd.&lt;br /&gt;
| 350 - 550&amp;lt;br&amp;gt;(Conrad: 475 - 950)&lt;br /&gt;
| 2&lt;br /&gt;
| 250&lt;br /&gt;
| 25 - 100&lt;br /&gt;
| 8&lt;br /&gt;
| 4k&lt;br /&gt;
| 320x234&lt;br /&gt;
| USB (Geräte-Modus, kein Host-Modus), SD Kartenslot&lt;br /&gt;
| Von Conrad teurer als DSO-4000 Serie erhältlich.&amp;lt;br&amp;gt;[http://code.google.com/p/gds2000tools/ Einfache Software für Linux erhältlich]&lt;br /&gt;
|-&lt;br /&gt;
| GW Instek GDS-1000&#039;&#039;&#039;A&#039;&#039;&#039; Serie&lt;br /&gt;
| [http://www.instek.com/html/en/index-e.asp GW Instek], alias Good Will Instrument Co., Ltd.&lt;br /&gt;
| 500 - ?&lt;br /&gt;
| 2&lt;br /&gt;
| bis 1GS/s&lt;br /&gt;
| 60 - 150&lt;br /&gt;
| 8&lt;br /&gt;
| bis 2M&lt;br /&gt;
| 320x234&lt;br /&gt;
| USB (Geräte-Modus, kein Host-Modus), SD Kartenslot&lt;br /&gt;
| [http://code.google.com/p/gds2000tools/ Einfache Software für Linux erhältlich]&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Hersteller&lt;br /&gt;
! Preis [&amp;amp;euro;]&lt;br /&gt;
! Kanäle&lt;br /&gt;
! Samplerate &amp;lt;BR/&amp;gt;[MS/s]&lt;br /&gt;
! Bandbreite &amp;lt;BR/&amp;gt;[MHz]&lt;br /&gt;
! Auflösung [Bit]&lt;br /&gt;
! Speichertiefe [Samples]&lt;br /&gt;
! Display&lt;br /&gt;
! PC-Interface&lt;br /&gt;
! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.instek.com/html/en/products-l.asp?p1sn=17&amp;amp;p2sn=41 GW Instek GDS-2000 Serie]&lt;br /&gt;
| [http://www.instek.com/html/en/index-e.asp GW Instek], alias Good Will Instrument Co., Ltd.&lt;br /&gt;
| 850 - 1800&lt;br /&gt;
| 2 - 4&lt;br /&gt;
| 1000&lt;br /&gt;
| 60 - 200&lt;br /&gt;
| 8&lt;br /&gt;
| max. 5000 (alle Kanäle benutzt) / 25000 (ein Kanal in Benutzung)&lt;br /&gt;
| 320x234&lt;br /&gt;
| Inkl. USB (Geräte-Modus zum PC, zwei weitere USB-Buchsen Host-Modus für eine Speicherkarte oder Drucker), RS-232&lt;br /&gt;
| Weitgehend baugleich mit Conrad Voltcraft DSO-8000 Serie. Vier-Kanal Versionen haben keinen externen Trigger und weniger Trigger-Funktionen.&amp;lt;br&amp;gt;[http://code.google.com/p/gds2000tools/ Einfache Software für Linux erhältlich]&lt;br /&gt;
|-&lt;br /&gt;
| TDS-1002B&lt;br /&gt;
| Tektronix&lt;br /&gt;
| 1100&lt;br /&gt;
| 2&lt;br /&gt;
| 1000&lt;br /&gt;
| 60&lt;br /&gt;
| 8&lt;br /&gt;
| 2.5k&lt;br /&gt;
| 320x240&lt;br /&gt;
| USB inkl.&lt;br /&gt;
| verhältnismäßig starkes Rauschen, siehe Text oben&lt;br /&gt;
|-&lt;br /&gt;
| WaveJet 3xx&lt;br /&gt;
| LeCroy &lt;br /&gt;
| 2800..8000 (brutto)&lt;br /&gt;
| 2 oder 4&lt;br /&gt;
| 1000/2000&lt;br /&gt;
| 100/200/350/500&lt;br /&gt;
| 8&lt;br /&gt;
| 500k&lt;br /&gt;
| 640x480&lt;br /&gt;
| USB inkl.&lt;br /&gt;
| verfügbar z.&amp;amp;nbsp;B. bei Farnell&lt;br /&gt;
|-&lt;br /&gt;
| WaveAce Serie&lt;br /&gt;
| LeCroy &lt;br /&gt;
| 1000 - 3500&lt;br /&gt;
| 2&lt;br /&gt;
| 250 - 2000&lt;br /&gt;
| 60 - 300&lt;br /&gt;
| 8&lt;br /&gt;
| 4k - 8k&lt;br /&gt;
| 320x240&lt;br /&gt;
| USB (Geräte- und Host-Modus), RS-232(?)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.dlm2000.de DLM20XX]&lt;br /&gt;
| YOKOGAWA &lt;br /&gt;
| 3300..8000 (brutto)&lt;br /&gt;
| 2 oder 4 (3+1) wobei 1 wahlweise 8Kanal Digital ist&lt;br /&gt;
| 2500 (1250)&lt;br /&gt;
| 200/350/500&lt;br /&gt;
| 8&lt;br /&gt;
| 12,5MPts&lt;br /&gt;
| 1024x768&lt;br /&gt;
| USB, Ethernet, Browsersteuerung inkl.&lt;br /&gt;
| Vertrieb vom Hersteller direkt!&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.uni-trend.com/UT2025B.html UNI-T UT2025B] / Voltcraft DSO-1022 M&lt;br /&gt;
| [http://www.uni-trend.com/ Uni-Trend Group Limited]&lt;br /&gt;
| 290 - 356&lt;br /&gt;
| 2&lt;br /&gt;
| 250&lt;br /&gt;
| 25&lt;br /&gt;
| 8&lt;br /&gt;
| 512k/Kanal&amp;lt;ref&amp;gt;Uni-Ts Angaben zur Speichertiefe sind mit Vorsicht zu genießen. Seit Jahren wirbelt die Firma mit Begriffen wie &#039;&#039;memory length&#039;&#039;, &#039;&#039; memory depth&#039;&#039;, &#039;&#039;recording length&#039;&#039; und &#039;&#039;saving depth&#039;&#039; herum - jeweils mit unterschiedlichen Werten für das gleiche Oszilloskop. Dabei vermeidet Uni-T Begriffsdefinitionen zu geben. Im Zweifelsfall sollte man mit dem kleinsten Wert aller Angaben rechnen.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 320x240 (Monochrom)&lt;br /&gt;
| USB, RS-232.&lt;br /&gt;
| Als UT2025&#039;&#039;&#039;C&#039;&#039;&#039; mit Farbdisplay. UT2000 Serie 25-200MHz, 2CH 250MSa/s bis 1GSa/s&amp;lt;br&amp;gt;wenig Rauschen&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.uni-trend.com/UTD2052CEL.html UTD2052CEL]&lt;br /&gt;
| [http://www.uni-trend.com/ Uni-Trend Group Limited]&lt;br /&gt;
| 369,-&lt;br /&gt;
| 2&lt;br /&gt;
| 1000&lt;br /&gt;
| 50&lt;br /&gt;
| 8&lt;br /&gt;
| 2x600k &#039;&#039;recording length&#039;&#039;;&amp;lt;br&amp;gt;25k &#039;&#039;saving depth&#039;&#039; ein Kanal;&amp;lt;br&amp;gt;12,5k &#039;&#039;memory depth&#039;&#039; zwei Kanäle&amp;lt;ref&amp;gt;Uni-Ts Angaben zur Speichertiefe sind mit Vorsicht zu genießen. Seit Jahren wirbelt die Firma mit Begriffen wie &#039;&#039;memory length&#039;&#039;, &#039;&#039; memory depth&#039;&#039;, &#039;&#039;recording length&#039;&#039; und &#039;&#039;saving depth&#039;&#039; herum - jeweils mit unterschiedlichen Werten für das gleiche Oszilloskop. Dabei vermeidet Uni-T Begriffsdefinitionen zu geben. Im Zweifelsfall sollte man mit dem kleinsten Wert aller Angaben rechnen.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| 800 x 480&amp;lt;br&amp;gt;Der Displaycontroller faßt immer 2x2 Pixel zusammen, dadurch reduziert sich die Auflösung real auf 400 x 240&amp;lt;br&amp;gt;(Menü nimmt relativ viel Platz auf dem Bildschirm ein)&lt;br /&gt;
| USB&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| HM2008&lt;br /&gt;
| [http://www.hameg.com Hameg]&lt;br /&gt;
| 2000&lt;br /&gt;
| 2&lt;br /&gt;
| 2GSa/s(1CH)1GSa/s(2CH)&lt;br /&gt;
| 200&lt;br /&gt;
| 8&lt;br /&gt;
| 4048k&lt;br /&gt;
| Röhre 8x10cm&lt;br /&gt;
| USB für Speicherstick (vorne), USB/RS232 für PC (hinten), &lt;br /&gt;
| 4 Logikkanäle nachrüstbar, Ethernet/USB nachrüstbar&lt;br /&gt;
|-&lt;br /&gt;
| PT 1200&lt;br /&gt;
| [http://www.PEAKTECH.de Peaktech]&lt;br /&gt;
| ca. 360&lt;br /&gt;
| 2&lt;br /&gt;
| 100MSa/s(1CH)100MSa/s(2CH)&lt;br /&gt;
| 25&lt;br /&gt;
| 8&lt;br /&gt;
| 6k pro Kanal&lt;br /&gt;
| Farb LCD 7,8&amp;quot; 640x480&lt;br /&gt;
| USB für PC (hinten) &lt;br /&gt;
| Im Original vermutlich ein Owon PDS5022S. Optional: Akkupack 7,4 V ~ 8000 mA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Weitere Marken, die gelegentlich auf dem deutschen Markt auftauchen, häufig über eBay, sind &lt;br /&gt;
&lt;br /&gt;
* GAOtek&lt;br /&gt;
* Hangzhou Jingce (JC)&lt;br /&gt;
* Tonghui&lt;br /&gt;
* Ypioneer&lt;br /&gt;
* Jiangsu Lvyang&lt;br /&gt;
* Siglent (Zweitmarke von Atten)&lt;br /&gt;
&lt;br /&gt;
Über deren Qualität hört man wenig oder gar nichts.&lt;br /&gt;
&lt;br /&gt;
=== PC-Oszilloskope ===&lt;br /&gt;
==== PC-Zusätze ====&lt;br /&gt;
===== Allgemeines &amp;amp; Beachtenswertes =====&lt;br /&gt;
&lt;br /&gt;
PC-Oszilloskope / PC-Zusätze sind im Prinzip digitale Speicheroszilloskope, mit der Besonderheit, dass sie die Daten nicht selbst anzeigen, sondern an einen PC übermitteln. Beim Kauf eines PC-Oszilloskops sollte man besonders vorsichtig sein, da viele Angebote irreführende Informationen enthalten. Sehr beliebt ist z.&amp;amp;nbsp;B. die Werbung mit der Analogbandbreite, also die Bandbreite die der Analogteil der Schaltung (Eingangsverstärker) verarbeiten kann. Wenn hier 100 MHz angegeben sind bedeutet das aber nicht, dass sich auch wirklich Signale bis 100 MHz darstellen lassen; wenn der Wandler nur mit 40 MS/s abtastet ist das Oszilloskop gerade noch bis 4 MHz verwendbar. Ebenso sollte man nur die Echtzeit- oder Realtime-Abtastrate beachten, eine manchmal ebenfalls angegebene &amp;quot;Äquivalent-Abtastrate&amp;quot; ist nur bei periodischen Signalen zu gebrauchen und damit im Umfeld von Mikrocontrollern meist wertlos.&lt;br /&gt;
&lt;br /&gt;
Die Wahl zwischen einem Tischoszilloskop und einem PC-Zusatz ist nicht nur eine Geld-, Leistungs- oder Qualitätsfrage. Ein Tischgerät lässt sich anders bedienen (echte Knöpfe, sicherer Stand) und belegt nicht den PC oder Laptop. Erfahrene Entwickler ziehen ein separates Gerät einem PC-Zusatz vor. Zum Teil ist dies eine Generationsfrage.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommt, dass billige PC-Oszilloskope meist keine galvanische Trennung an ihrer USB-Schnittstelle besitzen. Ein Fehler bei einer Messung kann daher nicht nur das Oszilloskop, sondern gleich den PC mit beschädigen. Das gleiche Problem kann man übrigens auch bei einfachen Tischoszilloskopen mit PC-Schnittstelle haben. Allerdings kann man Tischgeräte auch ohne die PC-Verbindung betreiben, PC-Oszilloskope nicht.&lt;br /&gt;
&lt;br /&gt;
Gelegentlich wird geraten, das Oszilloskop, egal ob Tischgerät oder PC-Zusatz, immer über einen &amp;quot;self powered&amp;quot; USB-Hub (einer mit eigenem Netzteil) mit dem PC zu verbinden. Ob ein solcher Hub als Schutzmaßnahme geeignet ist, besonders zum Personenschutz, sei dahingestellt. Schaden sollte er nicht.&lt;br /&gt;
&lt;br /&gt;
Besonders zu beachten ist die PC-Software. Nicht nur, ob sie zum Zeitpunkt des Kaufs wenigstens grundsätzlichen Ansprüchen genügt, sondern auch, ob der Hersteller vermutlich willens und in der Lage ist, die Software über viele Jahre zu warten. Stichwort Investitionssicherheit. Ohne Wartung kann eine Inkompatibilität in der Software zum nächste Windows Service-Pack oder zur nächste Windows-Version das Gerät völlig entwerten.&lt;br /&gt;
&lt;br /&gt;
Leider ist es so, dass es fast keine freie [[Oszilloskop#Software|Oszilloskopsoftware]] gibt. Die Protokolle zwischen Oszilloskop-Vorsätzen und Computer sind meist proprietär, und selten hat sich ein Entwickler freier Software die Mühe gemacht, ein Protokoll zu entschlüsseln. Noch seltener ist es, dass auf dieser Basis eine brauchbare oder gar gute Software geschrieben wurde. So ist ein Ausweichen auf freie Software kaum möglich, sollte der Hersteller die Wartung aufgeben. Man ist im Normalfall auf Gedeih und Verderb dem Hersteller ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
===== Vergleichstabelle PC-Zusätze =====&lt;br /&gt;
&lt;br /&gt;
Diese Tabelle soll einen Überblick über interessante oder bekannte Geräte besonders im unteren Preisbereich geben. Eine vollständige Auflistung aller existierenden Geräte ergibt wegen der Vielzahl an Baureihen und Modellen wenig Sinn.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}} class=&amp;quot;sortable&amp;quot; id=&amp;quot;pczusatzoszis&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! Hersteller&lt;br /&gt;
! Preis [&amp;amp;euro;]&lt;br /&gt;
! Kanäle&lt;br /&gt;
! Sample&amp;amp;shy;rate &amp;lt;BR/&amp;gt;[MS/s]&lt;br /&gt;
! Band&amp;amp;shy;breite &amp;lt;BR/&amp;gt;[MHz]&lt;br /&gt;
! Auf&amp;amp;shy;lösung [Bit]&lt;br /&gt;
! Speicher&amp;amp;shy;tiefe [Samples]&lt;br /&gt;
! Display&lt;br /&gt;
! PC-Inter&amp;amp;shy;face&lt;br /&gt;
! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.elandigitalsystems.com/support/usbtmfaq/software.php USBscope50]&lt;br /&gt;
| Elan Digital Systems / dt. Vertrieb Hacker&lt;br /&gt;
| 249&lt;br /&gt;
| 1 (-4)&lt;br /&gt;
| 50 / 1000&lt;br /&gt;
| 10 / 75&lt;br /&gt;
| 8&lt;br /&gt;
| 3k pro Kanal&lt;br /&gt;
| auf dem PC&lt;br /&gt;
| USB&lt;br /&gt;
| CAT II, 300V galv. Trennung zu USB, OpenSource SDK, Java, Linux, LabView&lt;br /&gt;
|-&lt;br /&gt;
| PicoScope PS 2104&lt;br /&gt;
| Pico Technology&lt;br /&gt;
| 185&lt;br /&gt;
| 1&lt;br /&gt;
| 50&lt;br /&gt;
| 10&lt;br /&gt;
| 8&lt;br /&gt;
| 8K&lt;br /&gt;
| auf dem PC&lt;br /&gt;
| USB&lt;br /&gt;
| Spektralanalyse und Voltmeter in Software.&lt;br /&gt;
|-&lt;br /&gt;
| PicoScope PS 2105&lt;br /&gt;
| Pico Technology&lt;br /&gt;
| 290&lt;br /&gt;
| 1&lt;br /&gt;
| 100&lt;br /&gt;
| 25&lt;br /&gt;
| 8&lt;br /&gt;
| 24K&lt;br /&gt;
| auf dem PC&lt;br /&gt;
| USB&lt;br /&gt;
| Spektralanalyse und Voltmeter in Software.&lt;br /&gt;
|-&lt;br /&gt;
| PicoScope 2205&lt;br /&gt;
| Pico Technology&lt;br /&gt;
| 350&lt;br /&gt;
| 2&lt;br /&gt;
| 200&lt;br /&gt;
| 25&lt;br /&gt;
| 8 - 12&lt;br /&gt;
| 16K&lt;br /&gt;
| auf dem PC&lt;br /&gt;
| USB &lt;br /&gt;
| Kleiner Arbitrary Waveform Generator eingebaut.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.hantek.com.cn/english/produce_list.asp?unid=62 DSO-2090 USB]&lt;br /&gt;
| Hantek - Qingdao Hatek Electronic Co., Ltd.&lt;br /&gt;
| 200&lt;br /&gt;
| 2&lt;br /&gt;
| 1 Kanal: 100 / 2 Kanäle: 50&lt;br /&gt;
| 40&lt;br /&gt;
| 8&lt;br /&gt;
| 1 Kanal: 64K / 2 Kanäle: 32K&lt;br /&gt;
| auf dem PC&lt;br /&gt;
| USB &lt;br /&gt;
| Wenige Vorteile gegenüber einem Tischgerät. Analogbandbreite bei der Samplingrate nicht ausnutzbar. Kleiner Eingangsspannungsbereich. Unter diversen anderen Namen erhältlich.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.hantek.com.cn/english/produce_list.asp?unid=63 DSO-2150 USB]&lt;br /&gt;
| Hantek - Qingdao Hatek Electronic Co., Ltd.&lt;br /&gt;
| 200&lt;br /&gt;
| 2&lt;br /&gt;
| max. 150&lt;br /&gt;
| 60&lt;br /&gt;
| 8&lt;br /&gt;
| 10K-32K/Kanal&lt;br /&gt;
| auf dem PC&lt;br /&gt;
| USB&lt;br /&gt;
| .&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.hantek.com.cn/english/produce_list.asp?unid=64 DSO-2250 USB]&lt;br /&gt;
| Hantek - Qingdao Hatek Electronic Co., Ltd.  &lt;br /&gt;
| 220&lt;br /&gt;
| 2&lt;br /&gt;
| max. 250&lt;br /&gt;
| 100&lt;br /&gt;
| 8&lt;br /&gt;
| 10K-512K/Kanal&lt;br /&gt;
| auf dem PC&lt;br /&gt;
| USB&lt;br /&gt;
| .&lt;br /&gt;
|-&lt;br /&gt;
| Mephisto Scope 1 (UM202)&lt;br /&gt;
| Meilhaus&lt;br /&gt;
| 333&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 16&lt;br /&gt;
| 256K&lt;br /&gt;
| ..&lt;br /&gt;
| USB&lt;br /&gt;
| 5 in 1,&lt;br /&gt;
Oszilloskop,&lt;br /&gt;
Logik-Analysator,&lt;br /&gt;
Voltmeter,&lt;br /&gt;
Datenlogger analog und digital,&lt;br /&gt;
Digital-I/O&lt;br /&gt;
|-&lt;br /&gt;
| MSO-19&lt;br /&gt;
| Link Instruments Inc.&lt;br /&gt;
| 172&lt;br /&gt;
| 1&lt;br /&gt;
| 200&lt;br /&gt;
| 60&lt;br /&gt;
| ??&lt;br /&gt;
| 1K&lt;br /&gt;
| ..&lt;br /&gt;
| USB&lt;br /&gt;
|&lt;br /&gt;
Oszilloskop,&lt;br /&gt;
Logik-Analysator,&lt;br /&gt;
Pattern Generator,&lt;br /&gt;
TDR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Soundkarten-Oszilloskope ====&lt;br /&gt;
[[Bild:Soundoszi.JPG|thumb|right|300px|Soundkarten Oszilloskop]]&lt;br /&gt;
Wem ein wirklich einfaches Oszilloskop für kleine Frequenzen (bis etwa 20 kHz) ausreicht, bspw. um die Kommunikation am I2C-Bus zu analysieren, kann dazu die Soundkarte des PC benutzen.&lt;br /&gt;
Allerdings eignet sich eine Soundkarte nicht dazu, Gleichspannungen zu messen, zu niederfrequente Signale können daher nicht damit erfasst werden: Im Screenshot nebenan erkennt man das z.&amp;amp;nbsp;B. an der fallenden Gerade am Schluss (obwohl der tatsächliche Signalpegel konstant oben bleibt). Auch ist hier besondere Vorsicht geboten, da Soundkarten nur für geringe Spannungen ausgelegt sind und bei einer zu hohen Eingangsspannung möglicherweise der ganze PC beschädigt wird. Daher ist eine Vorschaltung mit Spannungsbegrenzung (ca 0,7V) nötig. &lt;br /&gt;
&lt;br /&gt;
Der Vorteil der Soundkartennutzung ist, dass es sich dank des PCs um eine Art  Speicheroszilloskop handelt und die Daten zum Beispiel in Excel analysiert werden können.&lt;br /&gt;
&lt;br /&gt;
* [http://www.scheidig.de/Deutsch/Download/SpekOszi/info.htm Hardy u. Karola Scheidig] verschiedene Programme zum Messen mit der Soundkarte.&lt;br /&gt;
* [http://www.sillanumsoft.org/ Visual Analyser] von Alfredo Accattatis und der University of Rome Tor Vergata, &amp;quot;Donateware&amp;quot; &lt;br /&gt;
* [http://www.zeitnitz.de/Christian/scope_en Soundcard Oscilloscope für Windows] von Christian Zeitnitz, kostenlos für Privatanwendung&lt;br /&gt;
* [http://www.qsl.net/dl4yhf/spectra1.html Spectrum Lab von DL4YHF]&lt;br /&gt;
* [http://w5big.com/spectrogram.htm Spectrogram] von R.S. Horne, ältere Version kostenlos&lt;br /&gt;
* [http://www.audiotester.de/ Audiotester 30-Tage-Version kostenlos]&lt;br /&gt;
* [http://www.dasylab.com/ DasyLab] Eingeschränkte Version (Soundkarte und serielle Schnittstelle) als Beilage zum Buch &amp;quot;Signale-Prozesse-Systeme&amp;quot; ISBN 9783642018633&lt;br /&gt;
* [http://www.zelscope.com/ Zelscope] von Constantin Zeldovich 14-Tage Evaluationsversion&lt;br /&gt;
* [http://www.dxzone.com/catalog/Software/Spectrum_analyzers/ Linksammlung]&lt;br /&gt;
==== Grafikkarten-Oszilloskope ====&lt;br /&gt;
Videokarten, die über einen analogen Input verfügen, stellen ebenfalls eine Alternative zu käuflichen Oszilloskopen dar, da sie 3kanalig Frequenzen bis rund 180 MHz verarbeiten können. Die digitale Auflösung liegt meist bei 8 Bit maximal, was für einfache Anzeigen jedoch reicht, wenn die Aussteuerung entsprechend ist. Durch Übersampeln lässt sich die Auflösung wie gehabt steigern, indem man z.B. je 4 Werte softwareseitig zusammenfasst und damit bis zu 2 Bit an Auflösung gewinnt. Bei 16 werten kann man in der Regel statistische 2-3 Bit erwarten und erhält eine Güte von ca 10 Bit bei 10MHz.&lt;br /&gt;
&lt;br /&gt;
=== Selbstbau ===&lt;br /&gt;
&lt;br /&gt;
Selbstbau eines solchen Gerätes erspart wie fast immer in solchen Fällen kein Geld, sofern man nicht eine Spezialfunktion benötigt, die im Markt nicht beschaffbar ist. Der Spaß liegt als wieder im Bauen selbst.&lt;br /&gt;
&lt;br /&gt;
Es gibt diverse preiswerte Bausätze für Spielzeug-Oszilloskope. Die Ergebnisse nach dem Zusammenbau sind als Oszilloskop wenig brauchbar.&lt;br /&gt;
&lt;br /&gt;
Eine positive Ausnahme stellt hier das [http://www.elv.de/usb-mini-scope-modul-usb-msm-komplettbausatz.html USB-MSM] von ELV dar, das bei sorgfältiger Kalibrierung und &amp;quot;analog powert&amp;quot; bis zu 200kHz trotz seiner Einfachheit durchaus für das Hobbylabor oder schulische Zwecke brauchbar ist.&lt;br /&gt;
&lt;br /&gt;
Daneben findet man nur sehr wenige Selbstbau-Projekte deren Ergebnisse überzeugen. Einige interessante Projekte sind [http://www.mikrocontroller.net/topic/228997?goto=new#2308320]n und [http://www.ssalewski.de/DAD.html.de]. Dazu sei allerdings gesagt, dass der Aufwand an Material und Messmitteln schnell die Kosten für ein fertiges Oszilloskop überschreitet.&lt;br /&gt;
&lt;br /&gt;
=== Umbau ===&lt;br /&gt;
Sofern man tatsächlich etwas benötigt, was nicht käuflich zu erwerben ist, kann der Kauf und Umbau eines verhandenen Gerätes sinnvoll sein. &lt;br /&gt;
&lt;br /&gt;
Auf eBay werden immer noch die Oszilloskope der früheren Firma Wittig (heute Welec), wie zum Beispiel das W2012A, angeboten. Als Alternative zu der fehlerträchtigen Orginalfirmware ist mittlerweile eine Open-Source Variante verfügbar die kontinuierlich weiterentwickelt wird. Ebenfalls wird an Hardware Erweiterungen gearbeitet die die Qualität des Oszilloskops deutlich steigern. Wer sich nicht sicher ist ob das Gerät seinen Ansprüchen genügt sollte bei den Entwicklern nachfragen. [http://sourceforge.net/apps/trac/welecw2000a/wiki] Auch hier ist der Weg das Ziel.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR_Softwarepool#Oszilloskop|AVR Softwarepool: Oszilloskop]]&lt;br /&gt;
* [[Einfaches Oszilloskop mit Bascom-AVR]]&lt;br /&gt;
* [[USB_Oszilloskop]]&lt;br /&gt;
* [[Logic_Analyzer]]&lt;br /&gt;
* [[LCS-1M - Ein einfaches, preiswertes, mikrokontrollergesteuertes Zweikanal-Oszilloskop zum Selberbauen]] ([[Picaxe]])&lt;br /&gt;
&lt;br /&gt;
== Links &amp;amp; Literatur ==&lt;br /&gt;
* [http://www.elektronikpraxis.vogel.de/index.cfm?pid=9681 Online-Dossier Grundlagen digitaler Oszilloskope. ] Veröffentlicht auf Elektronikpraxis online&lt;br /&gt;
* [http://www.tek.com/Measurement/App_Notes/XYZs/03W_8605_3.pdf XYZs of Oscilloscopes Primer]. Tektronix 03W-8605-3. 20091. Grundlagen digitaler Oszilloskope und das messen mit ihnen, wobei die Tektronix-Produktpalette im Vordergrund steht.  &lt;br /&gt;
* [http://www.tek.com/Measurement/App_Notes/ABCsProbes/60W_6053_9.pdf ABCs of Probes Primer]. Tektronix 60W-6053-9. 2009. Die Grundlagen von Tastköpfen, natürlich am Beispiel von Tektronixs Tastköpfen.&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/1?filter=oszi*+-oszillator Forum-Beiträge zum Thema Oszilloskop] (Kaufberatung, Anwendung)&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/3?filter=oszi*+-oszillator Beiträge im Markt-Forum]&lt;br /&gt;
* [http://www.virtuelles-oszilloskop.de/ Ein virtuelles interaktives Oszilloskop] ala HAMEG HM203-6 20 MHz zum Üben (Seite auf [http://www.virtuelles-oszilloskop.com Englisch])&lt;br /&gt;
* [http://www.eosystems.ro/eoscope/eoscope_en.htm Selbstbau-DSO 40MSPS]&lt;br /&gt;
* [http://www.sigcon.com/Pubs/straight/probes.htm Probing High-Speed Digital Designs], Originally published in [http://www.elecdesign.com/ Electronic Design Magazine], March, 1997&lt;br /&gt;
* [http://hackedgadgets.com/2007/12/10/oscilloscope-tutorials/ Oscilloscope Tutorials] Linkliste bei hackedgadgets.com&lt;br /&gt;
* [http://www.eevblog.com/2011/03/30/eevblog-159-oscilloscope-trigger-holdoff-tutorial/ EEVBlog #159] Videotutorial von Dave Jones zu &#039;&#039;&#039;Trigger Holdoff&#039;&#039;&#039;, (engl.)&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/167705#1602827 WinXP Software für OsziFox/ProbeScope] von  Micha B. (chameo)&lt;br /&gt;
&lt;br /&gt;
* [http://users.physik.fu-berlin.de/~jtt/fsc2.phtml fsc2] is a program running under GNU/Linux for controlling spectrometers. Supported devices include digitizing oscilloscopes too:&lt;br /&gt;
** Tektronix Digitizing Oscilloscope TDS520, TDS520A, TDS520C, TDS540, TDS744A and TDS754A&lt;br /&gt;
** LeCroy Digitizing Oscilloscope 9400, 9410, 9420, 9424, 9424e and 9450(A)&lt;br /&gt;
** LeCroy Digitizing Oscilloscope Waverunner and Waverunner-2 (LT224, LT 262, LT264, LT342, LT344, LT354, LT362, LT364, LT372, LT374, LT584, 44(M)Xi, 62X1, 64(M)Xi, 104(M)Xi, 204(M)Xi)&lt;br /&gt;
** LeCroy Digitizing Oscilloscope WaveSurfer (422, 424, 432, 434, 452 and 454)&lt;br /&gt;
&lt;br /&gt;
* [http://xoscope.sourceforge.net/ xoscope, oscope] is a digital oscilloscope using input from a sound card or EsounD and/or a ProbeScope/osziFOX and Bitscope hardware. Includes 8 signal displays, variable time scale, math,memory, measurements, and file save/load. (Linux, GPL)&lt;br /&gt;
&lt;br /&gt;
* [http://www.mtoussaint.de/qtdso.html QtDSO] is a frontend for the Velleman PCS64i digital oscilloscope (Anm.: Velleman nicht mehr unterstützt) It provides a fully featured oscillocope mode (including XY  plot and math) and a highly configurable spectrum analyzer mode. Für &#039;&#039;&#039;Digitalmultimeter&#039;&#039;&#039; gibt es vom gleichen Autor [http://www.mtoussaint.de/qtdmm.html QtDMM] und [http://www.mtoussaint.de/qtdmm2.html QtDMM2].&lt;br /&gt;
&lt;br /&gt;
* [http://www.eig.ch/fr/laboratoires/systemes-numeriques/projets/osqoop-l-oscilloscope-libre/index.html Osqoop] est un oscilloscope logiciel sous licence libre. Il permet de travailler sur un nombre arbitraire de canaux et des acquisitions de longue durée. Wiki description: [http://gitorious.org/osqoop Osqoop] is a multi-platform open source software oscilloscope based on Qt 4. It connects to various hardware data sources such as the sound input or a dedicated USB board.&lt;br /&gt;
&lt;br /&gt;
*[http://code.google.com/p/gds2000tools/ gds2000tools] ist eine Linux-Software für GW-Instek GDS-2000 und andere GW-Instek Oszilloskope.&lt;br /&gt;
&lt;br /&gt;
* [https://code.google.com/p/xoscillo/ Xoscillo] - A software oscilloscope that acquires data using an Arduino or a Parallax (more platforms to come). (Lizenz: CC-BY-NC-SA 3.0; Windows and Linux (needs mono))&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/projects/oscope2100/ Oscope 2100] Linux software für Hantek DSO-2100.&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/projects/openhantek/ OpenHantek] Linux Software für Hantek (Voltcraft/Darkwire/Protek/Acetech) DSO-2090.&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/projects/dsoda/ Digital Soda] DSO-2250 Software.&lt;br /&gt;
&lt;br /&gt;
* [http://owondriver.sourceforge.net/ Owon Driver, Ownon Dump] Linux-Treiber für Owon-Oszilloskope.&lt;br /&gt;
&lt;br /&gt;
* [http://foss.doredevelopment.dk/wiki/Lxi-control Lxi-Control] Kommandozeilen-Applikation zur Fernsteuerung von Geräten mit LXI-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
* [http://gpib-utils.sourceforge.net/ gpib-util] Linux Kommandozeilen-Applikation, unterstützt diverse Oszilloskope (und andere Geräte) mit GPIB-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
* [http://optics.eee.nottingham.ac.uk/vxi11/ VXI11] Bibliothek und Programme für Geräte mit VXI-11 Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/projects/wfmreader/ Linux WFM Datenformat-Leser].&lt;br /&gt;
&lt;br /&gt;
=== Datenauswertung ===&lt;br /&gt;
&lt;br /&gt;
Bei Oszilloskopen (DSOs), die es erlauben, die gemessenen Daten zu einem PC zu übertragen, kann man die Messwerte auf dem PC weiter auswerten. Zum Beispiel ein Signal demodulieren, filtern oder dekodieren. Grundsätzlich ist die Auswertung in jeder Programmiersprache möglich. Programmiersprachen für numerische Berechnungen eignen sich jedoch besonders.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mathworks.com Matlab] und Freie Alternativen wie [http://www.scilab.org/ SciLab] oder [http://www.gnu.org/software/octave/ GNU Octave]&lt;br /&gt;
&lt;br /&gt;
* [http://www.mathworks.com/matlabcentral/fileexchange/?term=Oscilloscope Matlabcentral Fileexchange, Suche nach &#039;&#039;Oscilloscope&#039;&#039;] Auf Matlabcentral Fileexchange finden sich auch MatLab Lese- und Auswertungsfunktionen für diverse Oszilloskope. Hinweis: Die von MatLab für die Kommunikation mit einem Oszilloskop verwendeten Toolboxen und Funktionen dürfen aufgrund der Matlabcentral Lizenz nicht mit freien Alternativen verwendet werden. [http://wiki.octave.org/FAQ#Why_can.27t_I_use_code_from_File_Exchange_in_Octave.3F_It.27s_released_under_a_BSD_license.21 siehe GNU OCtave FAQ]&lt;br /&gt;
&lt;br /&gt;
* [http://octave.sourceforge.net/instrument-control/ Octave-Forge instrument-control] für die Kommunikation mit diversen Geräten wie z.B. LXI-compatible Agilent, LeCroy or Tektronix Oszilloskope über VXI11. Außerdem UART, I2C, GPIB usw.&lt;br /&gt;
&lt;br /&gt;
* Eines Ingenieurs angeblich unwürdig&amp;lt;ref&amp;gt;Es ist sehr einfach Fehler in Tabellenkalkulationen zu machen, die typischerweise lange unentdeckt bleiben. [http://www.eusprig.org/ Untersuchungen] haben gezeigt, dass bereits dann bis zu 90% aller Tabellenkalkulationsblätter fehlerhaft sind, wenn es nur um einfache mathematische Grundoperationen (Addieren, Subtrahieren, Multiplizieren, Dividieren) geht.&amp;lt;/ref&amp;gt; sind Microsoft Excel oder andere Tabellenkalkulationen. Trotzdem sind sie zur Datenauswertung populär und auch geeignet, wenn sie richtig gehandhabt werden.&lt;br /&gt;
&lt;br /&gt;
== Fußnoten ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Grundlagen]]&lt;br /&gt;
[[Category:Oszilloskope und Analyzer| ]]&lt;/div&gt;</summary>
		<author><name>Andyw</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Digitale_Signalverarbeitung&amp;diff=76128</id>
		<title>Digitale Signalverarbeitung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Digitale_Signalverarbeitung&amp;diff=76128"/>
		<updated>2013-05-30T08:42:18Z</updated>

		<summary type="html">&lt;p&gt;Andyw: /* Octave */ Abschnitt auf neuen Stand gebracht, Links zum Wiki und die Projektseite hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anwendungsgebiete ==&lt;br /&gt;
&lt;br /&gt;
* Modulation/Demodulation zur Datenübertragung (z.&amp;amp;nbsp;B. Telefonmodem, DSL, GSM) - &amp;quot;Software Defined Radio&amp;quot; (SDR)&lt;br /&gt;
* Multimediacodierung (MP3, DivX, JPEG)&lt;br /&gt;
* Bildverarbeitung (Bildverbesserung)&lt;br /&gt;
* Mustererkennung, Objekterkennung&lt;br /&gt;
* Echo- und Störgeräuschunterdrückung bei Telefonen, Sprechgarnituren (Headsets) und Hörgeräten&lt;br /&gt;
&lt;br /&gt;
== Verfahren ==&lt;br /&gt;
&lt;br /&gt;
=== FIR- und IIR-Filter ===&lt;br /&gt;
&lt;br /&gt;
Die häufigste Aufgabe in der DSV ist das Filtern, das heißt, bestimmte Frequenzanteile zu unterdrücken, zu verstärken oder in der Phase zu verschieben. Man kann grundsätzlich zwischen zwei Filterarten unterscheiden:&lt;br /&gt;
&lt;br /&gt;
Bei &#039;&#039;&#039;FIR-Filter&#039;&#039;&#039;n (&#039;&#039;&#039;F&#039;&#039;&#039;inite &#039;&#039;&#039;I&#039;&#039;&#039;mpulse &#039;&#039;&#039;R&#039;&#039;&#039;esponse) wird jeder Ausgangswert aus der Summe unterschiedlich gewichteter Eingangswerte zusammengesetzt, die dazu in Schieberegistern vorgehalten werden. Dabei bezeichnet man die maximale Anzahl an Werten, die bei der Berechnung berücksichtigt werden, als &#039;&#039;&#039;Ordnung&#039;&#039;&#039; oder auch Filtertiefe. Je höher die Ordnungszahl, desto besser nähern sich die die Eigenschaften des realen Filters bez. ripple, Steilheit und z.B. Dämpfung an das theoretische Ideal an, desto höher ist aber auch der Rechenaufwand.&lt;br /&gt;
&lt;br /&gt;
Werden bei FIR-Filtern nur zurückliegende Werte verwendet, so handelt es sich um ein &amp;quot;look back&amp;quot; - Filter. Dieses ist typisch für real time Anwendungen. Werden auch Werte verwendet, die nach dem eigentlichen Bezugzeitpunkt liegen, spricht man von einem look ahead-Filter. Dieses kann naturgemäß nicht in Echtzeit angewendet werden, bzw die Ausgabezeitpunkte müssen um mindestens die halbe Filtertiefe verzögert werden.&lt;br /&gt;
&lt;br /&gt;
==== Merkmale von FIR-Filtern ====&lt;br /&gt;
* immer stabil&lt;br /&gt;
* linearer Phasengang -&amp;gt; keine Phasenverzerrungen&lt;br /&gt;
* Ordnungen oft im zwei- bis dreistelligen Bereich&lt;br /&gt;
* problemlos realisierbar!&lt;br /&gt;
&lt;br /&gt;
==== Beispiel ====&lt;br /&gt;
Seien D(0), D(1) ... D(t) die eingehenden Daten, so wäre Y(t) = 1/k * (D(t) + D(t-1) + D(t-2) + ... + D(t-k)) ein einfaches FIR-Filter der Ordnung &amp;quot;k&amp;quot;, das als gleitender Mittelwert bezeichnet wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu FIR-Filtern werden bei &#039;&#039;&#039;IIR-Filter&#039;&#039;&#039;n (&#039;&#039;&#039;I&#039;&#039;&#039;nfinite &#039;&#039;&#039;I&#039;&#039;&#039;mpulse &#039;&#039;&#039;R&#039;&#039;&#039;esponse) auch frühere &#039;&#039;&#039;Ausgangs&#039;&#039;&#039;werte in die Berechnung des aktuellen Ausgangswertes mit einbezogen. Wie man sich leicht vorstellen kann, kann dadurch die Antwort auf einen Eingangsimpuls theoretisch unendlich lang werden, da jeder Ausgangswert auf den Eingang rückgekoppelt wird.&lt;br /&gt;
&lt;br /&gt;
====Merkmale von IIR-Filtern====&lt;br /&gt;
* durch Rundungsfehler kann das [[Filter]] instabil werden -&amp;gt; &amp;quot;Aufschaukeln&amp;quot; durch Rückkopplung -&amp;gt; schwierigere Realisierung&lt;br /&gt;
* kein linearer Phasengang -&amp;gt; verschiedene Frequenzanteile werden durch den Filter unterschiedlich lange verzögert -&amp;gt; &amp;quot;Verzerrung&amp;quot;&lt;br /&gt;
* einziger Vorteil gegenüber FIR: Um einen gewünschten Frequenzgang zu erzielen, ist eine sehr viel niedrigere Ordnung ausreichend -&amp;gt; weniger Rechenaufwand&lt;br /&gt;
* Ordnung üblicherweise &amp;lt; 10&lt;br /&gt;
&lt;br /&gt;
==== Beispiel====&lt;br /&gt;
Seien D(0), D(1) ... D(t) wieder die eingehenden Daten, wie oben, und Y(t-1) der um einen Berechungsschritt zeitlich verzögerte Wert des Filterwertes Y(t), dann wäre Y(t) = Y(t-1) * (1-k)  +  D(t) * k ein IIR-Filter erster Ordnung, wobei 1/k die Dämpfung und damit die Grenzfrequenz des Filters bestimmt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Viele nützliche Informationen zur Realisierung gibt es im [http://www.dspguru.com/info/faqs/ FIR- und IIR-FAQ auf dspguru.com] (der dort erwähnte Sourcecode FirAlgs.c kann [[Media:FirAlgs.c|hier]] direkt heruntergeladen werden).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Berechnungssoftware&#039;&#039;&#039;:&lt;br /&gt;
* [http://www.filter-solutions.com/digital.html Beschreibung der Digitalfiltertypen], [http://www.nuhertz.com/download.html hier kostenlose Testversion Filter Free]&lt;br /&gt;
&lt;br /&gt;
=== DFT und FFT ===&lt;br /&gt;
&lt;br /&gt;
Die [[FFT]] (Fast Fourier Transform) ist ein schneller Algorithmus zur Berechnung der DFT (Discrete Fourier Transform). Damit bezeichnet man die Transformation eines Zeitsignals (= eine Abfolge von Samples) in den Frequenzbereich (= Frequenzbestandteile des Signals). Die Transformation kann theoretisch auch ohne Verlust umgekehrt durchgeführt werden, also vom Frequenz- in den Zeitbereich (Inverse Discrete Fourier Transform, IDFT). Eine DFT wird praktisch immer mit dem FFT-Algorithmus realisiert, weshalb die Bezeichnungen oft FFT/DFT oft gleichwertig verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die offensichtlichste Anwendung der FFT ist die Darstellung des Frequenzspektrums eines Signals. Beispiel:&lt;br /&gt;
&lt;br /&gt;
Ein Audiosignal wird mit einer Frequenz von 44,1 kHz abgetastet und mit den erhaltenen Daten eine DFT mit 512 Punkten durchgeführt. Man erhält ein Amplitudenspektrum mit 512 Frequenzwerten von 0 bis 511, wobei die Werte 0 bis 255 zu denen der oberen Hälfte spiegelsymmetrisch sind. Bei der o.g. Abtastfrequenz ergibt sich nach Nyquist ein Frequenzbereich von 0 bis 22,05 kHz, mit einer Auflösung von 44100/512 = 86,13 Hz. Dabei repräsentiert die erste Frequenz 0, den Bereich von 0 Hz bis 86,13 Hz, u.s.w. - die letzte Frequenz 255 den Bereich von 21963,87 bis 22050 Hz.&lt;br /&gt;
&lt;br /&gt;
Die Spektralanalyse ist jedoch nur ein kleiner Teil der Anwendungsmöglichkeiten. Viele Verarbeitungen lassen sich im Frequenzbereich einfacher durchführen als im Zeitbereich, z.&amp;amp;nbsp;B. Korrelationen oder sehr lange FIR-Filter. Das zu verarbeitende Signal wird dazu in den Frequenzbereich transformiert, dort manipuliert, und wieder in den Zeitbereich zurücktransformiert. Das klingt vielleicht umständlich, kann aber in der Praxis sehr viel schneller sein als eine Realisierung im Zeitbereich.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/25095 Diskussion: FFT auf dem AVR]&lt;br /&gt;
* [http://sourceforge.net/projects/kissfft/ Kiss FFT] - einfache FFT-Bibliothek, in C, Floating- und Fixed Point, BSD-Lizenz, geeignet für Mikrocontroller&lt;br /&gt;
* [http://www.fftw.org/ FFTW] - &#039;&#039;&#039;die&#039;&#039;&#039; Floating Point FFT-Bibliothek für PCs, GPL-Lizenz&lt;br /&gt;
*[http://www.sprut.de/electronic/pic/16bit/dsp/fft/fft.htm FFT - verständlich auch für Nichtakademiker (Deutsch)]&lt;br /&gt;
* [http://www.science.smith.edu/departments/Physics/fstaff/gfelder/ffteasy/ ffteasy - Einfache Routinen zur FFT]&lt;br /&gt;
&lt;br /&gt;
==== Goertzel-Algorithmus ====&lt;br /&gt;
&lt;br /&gt;
Liegt das Interesse bei der Berechnung einer DFT / FFT nur bei wenigen bestimmten Frequenz-Linien, so gibt es eine weniger rechenaufwendige Alternative mit diesem Algorithmus. Die Grenze, ab der Goertzel-Algo nicht mehr effektiv genug ist, liegt grob bei etwa 15% der Spektralfrequenzen.&lt;br /&gt;
&lt;br /&gt;
Das typische Anwendungsgebiet sind DTMF-Dekoder in Software.&lt;br /&gt;
Hierfür sind sogar die üblichen 8-bit-AVR-Controller ausreichend schnell.&lt;br /&gt;
&lt;br /&gt;
=== Signalerzeugung ===&lt;br /&gt;
&lt;br /&gt;
Für die Korrelation von Eingangssignalen mit zuvor ausgesendeten oder bekannten Signalformen zwecks Mustererkennung müssen oftmals eigene Signale generiert werden.&lt;br /&gt;
&lt;br /&gt;
Rechteck-, Sägezahn- und Dreieckssignale lassen sich mit einfachen Zählern realisieren. &lt;br /&gt;
&lt;br /&gt;
Möchte man Sinus- oder beliebige andere Signalformen erzeugen, bietet es sich an, vorausberechnete Funktionswerte im Speicher abzulegen und der Reihe nach auszugeben. Eine variable Frequenzeinstellung kann man durch die Methode der Direkten Digitalen Synthese (&#039;&#039;&#039;DDS&#039;&#039;&#039;) realisieren.&lt;br /&gt;
&lt;br /&gt;
* [[Digitaler Funktionsgenerator]] - ausführliche Erklärung des Verfahrens im PDF, Beispielcode für AVR&lt;br /&gt;
* http://www.myplace.nu/avr/minidds/ - noch ein AVR-Projekt&lt;br /&gt;
* http://www.hit.bme.hu/~papay/sci/DDS/start.htm - noch eine Erklärung&lt;br /&gt;
&lt;br /&gt;
Eine weitere Methode zur Realisierung von (mehr oder weniger beliebigen) Funktionen ist die &#039;&#039;&#039;Polynomapproximation&#039;&#039;&#039;. Dabei nähert man die zu erzeugende Funktion durch ein Polynom an und verwendet das Horner-Schema, um die einzelnen Funktionswerte zu berechnen. Für ein Polynom der Ordnung N benötigt man damit pro Wert N+1 Multiplikationen (N ist üblicherweise &amp;lt;= 10).&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Zur Entwicklung von Signalverarbeitungsverfahren gibt es eine ganze Reihe von Programmen. Neben kleinen Werkzeugen für den Filterentwurf und spezialisierten Bibliotheken zum Einbinden in eigene Programme existieren mehrere Mathematikprogramme, mit denen sich Signale verarbeiten und darstellen lassen. Die drei wichtigsten sind Matlab, Octave und Scilab.&lt;br /&gt;
&lt;br /&gt;
=== MATLAB ===&lt;br /&gt;
&lt;br /&gt;
MATLAB ist das Standardprogramm für numerische Mathematik. In der digitalen Signalverarbeitung wird es häufig verwendet, um einen Algorithmus vor der Umsetzung in C-Code oder auf einen DSP zu entwickeln und zu testen. Zum schon recht hohen Preis der Grundsoftware muss man noch einige hundert Euro für diverse Toolboxes einplanen (Signal Processing, Filter Design, Image Processing). Die [http://www.mikrocontroller.net/link/isbn/0979223903 Studentenversion] kostet ca. 80 Euro (die Signal Processing Toolbox und ein paar andere sind bereits enthalten).&lt;br /&gt;
&lt;br /&gt;
MATLAB ist für Windows, Linux, Mac OS X, Solaris und HP-UX erhältlich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weblinks&#039;&#039;&#039;:&lt;br /&gt;
* http://users.ece.gatech.edu/%7Ebonnie/book/TUTORIAL/tutorial.html - Englischsprachiges MATLAB-Tutorial&lt;br /&gt;
* http://www.mathworks.com/access/helpdesk/help/techdoc/matlab.shtml - MATLAB-Referenz&lt;br /&gt;
* http://www.eng.auburn.edu/~sjreeves/Classes/DSP/DSP.html - MATLAB for DSP (allgemeine Tipps und Hinweise)&lt;br /&gt;
&lt;br /&gt;
=== GNU Octave ===&lt;br /&gt;
&lt;br /&gt;
GNU Octave ist eine (zum größten Teil zu Matlab (R) kompatible) höhere Programmiersprache, die hauptsächlich für numerische Berechnungen gedacht ist. Sie stellt eine komfortable Kommandozeilenschnittstelle zur numerischen Lösung linearer und nichtlinearer Probleme bereit. Durch den hohen Grad an Matlab-Kompatibilität kann man problemlos die Matlab-Online-Hilfe und Matlab-Einführungen zum Lernen verwenden.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich ist Octave ein reines Kommandozeilenprogramm es wird aber aktiv an einer GUI auf Basis von Qt entwickelt (siehe http://wiki.octave.org/FAQ#Is_there_a_GUI_for_Octave.3F).&lt;br /&gt;
&lt;br /&gt;
Ideone.com bietet seit einiger Zeit einen online-Interpreter auch für Octave an. Hier kann man die Sprache ohne Installation kurz antesten: [http://ideone.com/E5Cxz9 Sombrero und &amp;quot;Hallo Mikrocontroller Leser&amp;quot; Beispiel]&lt;br /&gt;
&lt;br /&gt;
Zum Plotten unter GNU/Linux kann wahlweise gnuplot oder das neue FLTK backend verwendet werden. Unter Windows stehen noch weitere backends wie wxWidgets zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Octave-Forge beheimatet Pakete, die (noch) nicht in &amp;quot;octave core&amp;quot; aufgenommen wurden. Hier sind auch viele Funktionen der Matlab-Toolboxes enthalten (z.B. Filterdesign, Signalverarbeitung).&lt;br /&gt;
&lt;br /&gt;
Octave kann unter GNU/Linux oder *BSD über den jeweiligen Paketmanager (wie z.B. apt-get, aptitude, synaptics in Ubuntu oder Debian) installiert werden. Für Windows stehen vorkompilierte Pakete mit MinGW, MSVC oder für cygwin zur Verfügung. Für MacOS gibt es Möglichkeiten mit Fink, MacPorts und Homebrew zu installieren.&lt;br /&gt;
[http://wiki.octave.org/Main_Page#Installation_Instructions_for_Windows.2C_MacOS_X_and_GNU.2FLinux Octave Wiki Installationsanleitung Windows, MacOS X und GNU/Linux]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weblinks&#039;&#039;&#039;:&lt;br /&gt;
* http://www.gnu.org/software/octave/ Projektseite&lt;br /&gt;
* http://wiki.octave.org/Main_Page Wiki, u.A. mit Installationsanleitungen&lt;br /&gt;
* http://octave.sourceforge.net/ - Octave-Forge Zusatzpakete&lt;br /&gt;
&lt;br /&gt;
=== Scilab / Scicos ===&lt;br /&gt;
&lt;br /&gt;
Auch das Open-Source-Programmpaket Scilab / Scicos, ähnlich leistungsfähig wie Matlab und seine Zusatzmodule, ist kostenlos und im Quelltext erhältlich. Während die Grundsyntax (Kontrollstrukturen, Ausdrücke) weitgehend Matlab-kompatibel ist, gibt es bei den Funktionen z.T. deutliche Abweichungen. Dafür bietet Scilab / Scicos verglichen mit Octave umfangreichere Möglichkeiten zur grafischen Darstellung, die über das 2D- und 3D-Plotten von Funktionen weit hinausgehen, z.&amp;amp;nbsp;B. lassen sich Linien, Kreise usw. zeichnen.&lt;br /&gt;
&lt;br /&gt;
Scilab / Scicos läuft unter Windows, Linux/Unix und Mac OS X. Für die wichtigsten Linux-Distributionen sind fertige, komplette Binärpakete (RPM, ...) zur einfachen Installation frei verfügbar. Für Windows gibt es ebenfalls ein einfach zu installierendes Komplettpaket.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weblinks&#039;&#039;&#039;:&lt;br /&gt;
* [http://www.scilab.org/ Scilab Homepage (Universelles Wissenschaftlich-Technisches Mathematik-Paket)]&lt;br /&gt;
* [http://www.scicos.org/ Scicos Homepage (Modellations- und Simulations-Paket für Scilab, ist im Scilab-Download enthalten)]&lt;br /&gt;
* [http://www-rocq.inria.fr/scicos/scicosmodnum.html ModNum Digital communication toolbox zu Scicos]&lt;br /&gt;
* [http://www.scilab.org/publications/index_publications.php?page=freebooks Übersicht zur Literatur: Webtexte, Bücher und Zeitschriftenartikel]&lt;br /&gt;
&#039;&#039;&#039;Bücher&#039;&#039;&#039;:&lt;br /&gt;
* [http://www.scicos.org/book.html Modeling and Simulation in Scilab/Scicos, (für Version 3.0, aktuell ist Version 4.1.2)]&lt;br /&gt;
&#039;&#039;&#039;Tutorials&#039;&#039;&#039;:&lt;br /&gt;
* [http://wiki.scilab.org/Tutorials?action=AttachFile&amp;amp;do=get&amp;amp;target=signal.pdf Signal Processing with Scilab (1998)], [http://wuarchive.wustl.edu/pub/aminet/misc/math/scilab-doc.lha Beispielfiles dazu lha-gepackt (1996)] [http://aminet.net/package/misc/math/scilab-doc oder hier], [http://viewvc.scilab.org/bin/cgi/viewvc.cgi/trunk/scilab_doc/signal/Nfigs_source/ hier auch einzeln erhältlich]&lt;br /&gt;
* [http://www.scilab.org/publications/delicado/scilab.pdf DSP-Tutorial in spanisch, teilweise aus dem englischen Tutorial entnommen]&lt;br /&gt;
* [http://www.neurotraces.com/scilab/scilab2/index.html Treatment of neurophysiological signals using Scilab, HTML-Texte mit Kapiteln zu Filtern, FFT usw.]&lt;br /&gt;
* [http://www.scilab.org/publications/TELECOM/ComNumSc.zip Digital-Kommunikation - französisches Tutorial, gezipptes Postscript]&lt;br /&gt;
* [http://www.mate.tue.nl/mate/pdfs/6827.pdf Beispielprojekt mit Vergleich SciCos und SciLab]&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Ein DSP (&#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;S&#039;&#039;&#039;ignal &#039;&#039;&#039;P&#039;&#039;&#039;rocessor) ist eine spezielle CPU mit einem auf die Verarbeitung von Signalen optimierten Kern und Befehlssatz. Unterschieden wird hauptsächlich zwischen Gleitkomma- und Festkomma-DSPs.&lt;br /&gt;
&lt;br /&gt;
Charakteristisches Merkmal vieler DSPs ist eine VLIW-Architektur (&#039;&#039;&#039;V&#039;&#039;&#039;ery &#039;&#039;&#039;L&#039;&#039;&#039;ong &#039;&#039;&#039;I&#039;&#039;&#039;nstruction &#039;&#039;&#039;W&#039;&#039;&#039;ord). Dabei werden Anweisungen für mehrere parallele Ausführungseinheiten (Multiplizierer/Addierer/Akkumulatoren) und mehrere Lade-/Speicherbefehle in einem einzigen, langen Befehlswort kodiert, und in einem Takt ausgeführt. Dazu kommen häufig mehrere gleichzeitig adressierbare Speicherbänke, Unterstützung für Ringpuffer, Schleifen ohne Sprung-Overhead, Bit-Reverse-Adressierung (wichtig für FFT) und Arithmetik mit Sättigungs- statt Überlaufverhalten (wichtig für die Realisierung von IIR-Filtern).&lt;br /&gt;
&lt;br /&gt;
Seit ein paar Jahren beginnen die Grenzen zwischen Mikrocontrollern und DSPs etwas zu verschwimmen. Viele Mikrocontroller werden mit zusätzlichen DSP-Funktionen ausgestattet ([[PICCOLO]], [[dsPIC]], [[ARM]]), während DSPs zunehmend in Richtung der Aufgabenbereiche eines Mikrocontrollers oder Allround-Prozessors vordringen und immer öfter um Unterstützung für Betriebssysteme (MMU) oder I/O-Funktionen wie Ethernet oder USB erweitert werden ([[Blackfin]]).&lt;br /&gt;
&lt;br /&gt;
Eine noch größere DSP-Rechenleistung kann mit programmierbaren Logikbausteinen (&#039;&#039;&#039;[[FPGA]]&#039;&#039;&#039;s) erzielt werden, da die Anzahl gleichzeitig ausführbarer Rechenoperationen nur durch die Größe des FPGAs begrenzt wird. Nachteilig sind die gegenüber DSPs um ein vielfaches höheren Kosten, höherer Stromverbrauch und höherer Entwicklungsaufwand, weshalb FPGAs für Signalverarbeitung nur in sehr speziellen Anwendungen verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Aktuelle &#039;&#039;&#039;PC-Prozessoren&#039;&#039;&#039; sind sehr gut für Gleitkomma-Signalverarbeitung geeignet. Wenn keine besonderen Anforderungen an Echtzeitfähigkeit, Strom- oder Platzbedarf gestellt werden, hat ein normaler PC mit Abstand das beste Preis/Leistungsverhältnis. Der erste Schritt bei einem DSP-Projekt sollte somit eine Implementierung auf dem PC sein. Es macht wenig Sinn, ein Eval-Board für einen Signalprozessor zu kaufen und einfach loszulegen.&lt;br /&gt;
&lt;br /&gt;
=== Fest- oder Gleitkomma? ===&lt;br /&gt;
&lt;br /&gt;
Signalverarbeitung auf einem Gleitkomma- (Floating-Point-) Rechner ist grundsätzlich einfacher als auf einem Festkomma- (Fixed-Point-) Rechner. Da die Ungenauigkeiten bei der Rechnung mit Floating-Point-Zahlen in vielen Fällen vernachlässigbar sind, kann man einen Algorithmus i.d.R. 1:1 in Programmcode umsetzen. Hat man nur Festkomma-Rechenoperationen zur Verfügung wird es etwas ungemütlich. Man muss sich Gedanken um die Skalierung der Daten, die Reihenfolge von Rechenoperationen, Überläufe, Rundungsrauschen usw. machen. Da Gleitkomma-DSPs allerdings teurer sind und mehr Strom verbrauchen, werden für Massenprodukte fast ausschließlich Festkomma-DSPs bzw. ASICs mit Festkomma-Rechenwerken verwendet.&lt;br /&gt;
&lt;br /&gt;
=== TI C2000 ===&lt;br /&gt;
&lt;br /&gt;
Eine komplette 32-bit DSC Controller Familie vom low-cost ([http://www.ti.com/corp/docs/landing/f280xx-piccolo/index.htm PICCOLO]) bis high-end Controller mit FPU ([http://focus.ti.com/paramsearch/docs/parametricsearch.tsp?family=mcu&amp;amp;sectionId=95&amp;amp;tabId=2108&amp;amp;familyId=1414&amp;amp;paramCriteria=no TMS320F28335]).&lt;br /&gt;
Die Peripherie umfasst Mehrkanal A/D Wandler mit 12-bit Aufloesung und bis zu 4 Megasamples Abtastrate. Die PWMs haben einen hochauflösenden Modus, der bis zu 150ps auflösen kann. Als Interface stehen CAN, I2C, schnelle generelle serielle Ports und Quadratureingänge für Drehgeber zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
=== TI C5000 ===&lt;br /&gt;
&lt;br /&gt;
DSP für batteriebetriebene Anwendungen. Die gesamte Architektur wurde auf Stromverbrauch optimiert. Dazu werden spezielle Werkzeuge zur Verfügung gestellt, die zur Anwendung passende Optimierungslösungen generiert. [[TMS320VC5505 eZDSP USB Stick‎]] mit IDE als preisgünstiges Entwicklungssystem ( &amp;lt; 50€)&lt;br /&gt;
&lt;br /&gt;
=== TI C6000 ===&lt;br /&gt;
&lt;br /&gt;
DSP-Familie vom Marktführer Texas Instruments enthält sowohl Fest- als auch Gleitkomma-DSPs.&lt;br /&gt;
&lt;br /&gt;
=== TI DM6400 (DaVinci) ===&lt;br /&gt;
&lt;br /&gt;
DSP für Videoanwendungen. Einige Derivate enthalten auch einen ARM9 als Co-Prozessor. Diese Familie wird unter dem Namen [http://focus.ti.com/paramsearch/docs/parametricsearch.tsp?family=dsp&amp;amp;sectionId=2&amp;amp;tabId=1852&amp;amp;familyId=1300 DaVinci] vermarktet.&lt;br /&gt;
&lt;br /&gt;
=== TI OMAP ===&lt;br /&gt;
&lt;br /&gt;
Prozessor für mobile Geräte, enthält einen ARM-Kern und einen C6000-DSP. Ein interessantes und mit $149 sehr preisgünstiges Evalboard ist das [http://www.beagleboard.org Beagle Board]. Ein kostenloser Assembler für den DSP ist verfügbar.&lt;br /&gt;
&lt;br /&gt;
=== SHARC/TigerSHARC ===&lt;br /&gt;
&lt;br /&gt;
32-Bit-Gleitkomma-DSP von Analog Devices.&lt;br /&gt;
&lt;br /&gt;
=== Blackfin ===&lt;br /&gt;
&lt;br /&gt;
Der Blackfin ist ein 16/32-Bit-Festkomma-DSP von Analog Devices. Im Gegensatz zu den 16-bittigen Vorgängern ADSP-21xx, die häufig als Co-Prozessoren zur Signalverarbeitung zusammen mit einem Mikrocontroller verwendet werden, geht der Blackfin schon weit in den Einsatzbereich eines Allround-Prozessors hinein. So gibt es z.&amp;amp;nbsp;B. einen Linux-Port für Blackfin, Eval-Boards mit Ethernet, CAN, USB und vielen MB SDRAM. Dank der verbesserten Stromsparfunktionen der BF52x-Reihe ist diese eher neue Architektur vermehrt in mobilen Geräten (Kameras, Mediaplayer, etc.) anzutreffen.&lt;br /&gt;
&lt;br /&gt;
Wichtig für die Entwicklung ist zu wissen:&lt;br /&gt;
&lt;br /&gt;
* Keine Fließkomma-Unterstützung in Hardware&lt;br /&gt;
* Keine MMU, keine Unterstützung für virtuellen Speicher (kein Unix fork(), etc.)&lt;br /&gt;
&lt;br /&gt;
Unterstützte Entwicklungswerkzeuge:&lt;br /&gt;
&lt;br /&gt;
* Visual DSP++: Hauseigenes Entwicklungswerkzeug von Analog Devices, kommerziell&lt;br /&gt;
* GCC: Freie GNU-Umgebung mit Assembler, Compiler, Linker, Debugger&lt;br /&gt;
* Eclipse für uClinux-Entwicklung wie auch &#039;nackt&#039; ohne OS&lt;br /&gt;
&lt;br /&gt;
Aufgrund der ausgereiften GNU-Toolchain ist der Blackfin eine der kostengünstigsten Plattformen für die Entwicklung. Die Werkzeuge laufen sowohl unter Windows32 als auch Linux, bevorzugt wird jedoch Linux eingesetzt. Für die Kernel-Entwicklung ist Linux unabdingbar.&lt;br /&gt;
Dank offener JTAG-Spezifikation existieren einige Werkzeuge von Drittherstellern zum Hardware-Debugging (In-Circuit Emulation) und zur Programmierung:&lt;br /&gt;
&lt;br /&gt;
* [http://www.section5.ch/icebear ICEbear] JTAG: schneller USB-&amp;gt;JTAG adapter&lt;br /&gt;
* [http://www.ronetix.at/ PEEDI] High end JTAG, Ethernet&lt;br /&gt;
* [http://www.bluetechnix.at/rainbow2006/site/blackfin_family/__dev_tools/__gnice_jtag/409/gnice_jtag.aspx gnICE von Bluetechnix]&lt;br /&gt;
* [http://www.analog.com/en/processors-dsp/blackfin/emulator-100/processors/product.html JTAG-Adapter von Analog Devices]&lt;br /&gt;
&lt;br /&gt;
Beide Werkzeuge arbeiten auch mit ARM-Prozessoren.&lt;br /&gt;
&lt;br /&gt;
Weitere Links:&lt;br /&gt;
&lt;br /&gt;
* [http://www.bluetechnix.com/rainbow2006/default.aspx Bluetechnix Core-Module]&lt;br /&gt;
* [http://www.analog.com/blackfin Herstellerwebsite]&lt;br /&gt;
* [http://blackfin.uclinux.org/ uClinux Port und GNU toolchain]&lt;br /&gt;
&lt;br /&gt;
=== dsPIC ===&lt;br /&gt;
&lt;br /&gt;
Der [[dsPIC]] ist ein kleiner 16-Bit-Mikrocontroller mit DSP-Funktionen. Mit dem klassischen 8-Bit-PIC hat er außer dem Namen nichts gemeinsam.&lt;br /&gt;
&lt;br /&gt;
Er basiert auf der modernen RISC-Architektur des PIC24 und bietet zusätzlich 40-Bit-Register und spezielle Befehle für DSP-Anwendungen. Der derzeit schnellste dsPIC33E arbeitet mit bis zu 70MIPS. dsPIC33 gibt es auch im DIL28-Gehäuse. &lt;br /&gt;
&lt;br /&gt;
Ein kostenloser C-Compiler (C30) und eine DSP-Bibliothek werden von Microchip angeboten. Dabei handelt es sich um eine &amp;quot;Light&amp;quot;-Version des kommerziellen C30, bei dem nur eine Optimierungsstufe freigeschaltet ist, aber ansonsten keine Einschränkungen (Codegröße o.ä.) bestehen.&lt;br /&gt;
&lt;br /&gt;
=== TriCore ===&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;TriCore&#039;&#039;&#039; von Infineon ist ein 32-Bit-Mikrocontroller mit DSP-Funktionen, mit derzeitigem Schwerpunkt im Bereich der High Performance Embedded Real-Time Systems für Industrie-  und Automobilanwendungen (Beispiele: Motorsteuerungen, Servomotoren, Solarinverter, Multi-Axis-Conrol) &lt;br /&gt;
&lt;br /&gt;
* [http://www.infineon.com/cgi-bin/ifx/portal/ep/channelView.do?channelId=-78991&amp;amp;channelPage=%2Fep%2Fchannel%2FleafNote.jsp&amp;amp;pageTypeId=17099  Übersicht über die &#039;&#039;&#039;TriCore&#039;&#039;&#039; Produktfamilie]&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen für Starterkits/Evalboards ===&lt;br /&gt;
&lt;br /&gt;
* http://www.spectrumdigital.com - große Auswahl an Starterkits mit TI-DSPs, ab $300&lt;br /&gt;
* http://www.bluetechnix.com - Blackfin-Module ab € 150&lt;br /&gt;
* http://www.zbrain.ch/ - Blackfin-Modul, Preis: ?&lt;br /&gt;
* http://www.danvillesignal.com/ - ADSP-218x-Boards ab $200, Sharc-Boards ab $400&lt;br /&gt;
* http://docs.blackfin.uclinux.org/doku.php?id=buy_stuff - Blackfin BF533 STAMP $170 (keine analogen Schnittstellen, aber über Pfostenstecker leicht zu erweitern)&lt;br /&gt;
* http://www.sundance.com - High-End-Module mit TI C6000&lt;br /&gt;
* http://www.spectrumsignal.com/ - TMS320 und SHARC&lt;br /&gt;
* http://www.pentek.com/dspcentral/ - TMS430 und PowerPC&lt;br /&gt;
* http://www.bittware.com/ - SHARC und TigerSHARC&lt;br /&gt;
* http://www.hunteng.co.uk/ - C6000&lt;br /&gt;
* http://www.kanecomputing.co.uk&lt;br /&gt;
* http://www.dsp-systeme.net - DSP-Module mit DSP von TI und ADI&lt;br /&gt;
* http://search.digikey.com/scripts/DkSearch/dksus.dll?lang=de&amp;amp;site=DE&amp;amp;WT.z_homepage_link=hp_go_button&amp;amp;KeyWords=TMDX5505EZDSP&amp;amp;x=22&amp;amp;y=22  eZDSP  USB Stick , &amp;lt;50€&lt;br /&gt;
* http://www.dsp-weuffen.de  - TI C6727 Board und vielen Beispielen&lt;br /&gt;
* http://www.ehitex.de/artikel.php?xPD=131_132&amp;amp;kat_name= - Infineon TriCore Starter Kits&lt;br /&gt;
&lt;br /&gt;
== Weitere Infos==&lt;br /&gt;
&lt;br /&gt;
===Literatur ===&lt;br /&gt;
* Oppenheim, Schaefer: &amp;quot;Discrete Time Signal Processing&amp;quot;, ISBN 0131988425&lt;br /&gt;
* Proakis: &amp;quot;Digital Signal Processing&amp;quot;, ISBN 0131873741&lt;br /&gt;
* Lyons: &amp;quot;Understanding Digital Signal Processing&amp;quot;, ISBN 0131089897&lt;br /&gt;
* Smith: &amp;quot;The Scientist and Engineer&#039;s Guide to Digital Signal Processing&amp;quot;, ISBN  075067444X (unter http://dspguide.com/ als PDF verfügbar)&lt;br /&gt;
* Sanjit K. Mitra: &amp;quot;Handbook for Digital Signal Processing&amp;quot; (1993,1312 Seiten), ISBN 0471619957&lt;br /&gt;
&lt;br /&gt;
=== Foren ===&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/list-10-1.html DSP-Forum auf mikrocontroller.net (deutsch)]&lt;br /&gt;
* [http://groups.google.de/group/comp.dsp Newsgroup comp.dsp (Englisch)]&lt;br /&gt;
* [http://www.dsprelated.com/groups.php Discussion Groups (Englisch)]&lt;br /&gt;
&lt;br /&gt;
=== Webseiten ===&lt;br /&gt;
* http://www.dspguru.com/ - FAQs, Infos, Beispielcode, ...&lt;br /&gt;
* http://docs.google.com/View?docid=dg2hppb_4gtgk89 - evtl. interessant als Rohmaterial für diesen Artikel&lt;br /&gt;
* http://www.dsprelated.com - Blogs, Jobs, Comp.DSP, ...&lt;br /&gt;
* http://www.unidsp56.de/ Eine Entwicklungsplattform für den Amateur&lt;br /&gt;
* http://de.wikipedia.org/wiki/Datei:Aircraft-recognition-and-tracking-by-dsp-based-signal-processing.jpg&lt;br /&gt;
&lt;br /&gt;
=== Artikel aus der Kategorie DSP ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ncl style=compact maxdepth=2 headings=bullet headstart=2&lt;br /&gt;
      showcats=1 showarts=1&amp;gt;DSP&amp;lt;/ncl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:DSP]]&lt;/div&gt;</summary>
		<author><name>Andyw</name></author>
	</entry>
</feed>