<?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=62.225.145.235</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=62.225.145.235"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/62.225.145.235"/>
	<updated>2026-04-11T09:19:30Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59994</id>
		<title>Glossar</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59994"/>
		<updated>2011-08-29T11:30:07Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* S */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
&lt;br /&gt;
;ABI: &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface: Das Binärinterface, das zum Datenaustausch verwendet wird, z.B. die Registerverwendung in einer Funktion und für Parameterübergabe, Datenablage, Strukturlayout, etc. Jeder [[Compiler]] erzeugt Code nach einer bestimmten ABI, so daß der Code aus unterschiedlichen Modulen und Bibliotheken zusammenpasst. Beim Mischen von Hochsprachen mit (Inline-)Assembler muss auf ABI-konformität geachtet werden. Compiler-Schalter können das ABI beeinflussen. Beispiel: -fpack-struct beim GCC.&lt;br /&gt;
&lt;br /&gt;
;[[ADC]]: &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;C&#039;&#039;&#039;onverter.&lt;br /&gt;
&lt;br /&gt;
;[[AGC]]: &#039;&#039;&#039;A&#039;&#039;&#039;utomatic &#039;&#039;&#039;G&#039;&#039;&#039;ain &#039;&#039;&#039;C&#039;&#039;&#039;ontrol. Ein Schaltkreis zur selbsttätigen Verstärkungsanpassung.&lt;br /&gt;
&lt;br /&gt;
;[[ARM]]: Eine Mikrocontrollerfamilie&lt;br /&gt;
&lt;br /&gt;
;[[AVR]]: Eine Mikrocontrollerfamilie von Atmel. Der Ursprung des Namens ist unklar.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
&lt;br /&gt;
;[[BGA]]: &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
&lt;br /&gt;
;Bit: &#039;&#039;&#039;Bi&#039;&#039;&#039;nary Digi&#039;&#039;&#039;t&#039;&#039;&#039;: Kleinste Informationseinheit, siehe [[Bitmanipulation]].&lt;br /&gt;
 &lt;br /&gt;
;BNC: &#039;&#039;&#039;B&#039;&#039;&#039;ajonet &#039;&#039;&#039;N&#039;&#039;&#039;ut &#039;&#039;&#039;C&#039;&#039;&#039;onnector: Ein Steckverbinder für Koaxialkabel.&lt;br /&gt;
&lt;br /&gt;
;[[BSDL]]: &#039;&#039;&#039;B&#039;&#039;&#039;oundary &#039;&#039;&#039;S&#039;&#039;&#039;can &#039;&#039;&#039;D&#039;&#039;&#039;escription &#039;&#039;&#039;L&#039;&#039;&#039;anguage: Eine Sprache für [[boundary scan]]-basiertes Testen und Debuggen.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
&lt;br /&gt;
;[[C]]: Eine weit verbreitete Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
;[[CAN]]: &#039;&#039;&#039;C&#039;&#039;&#039;ontroller &#039;&#039;&#039;A&#039;&#039;&#039;rea &#039;&#039;&#039;N&#039;&#039;&#039;etwork: Ein Netzwerk für kleine [[Mikrocontroller]], ursprünglich für die Automobilbranche entwickelt.&lt;br /&gt;
&lt;br /&gt;
;[[CPLD]]: &#039;&#039;&#039;C&#039;&#039;&#039;omplex &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;L&#039;&#039;&#039;ogic &#039;&#039;&#039;D&#039;&#039;&#039;evice: Ein programmierbarer Logikbaustein.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
&lt;br /&gt;
;[[DAC]]: &#039;&#039;&#039;D&#039;&#039;&#039;igital to &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;C&#039;&#039;&#039;onverter&lt;br /&gt;
&lt;br /&gt;
;[[DSP]]: &#039;&#039;&#039;D&#039;&#039;&#039;igitaler &#039;&#039;&#039;S&#039;&#039;&#039;ignal&#039;&#039;&#039;p&#039;&#039;&#039;rozessor&lt;br /&gt;
&lt;br /&gt;
;[[DTMF]]: &#039;&#039;&#039;D&#039;&#039;&#039;ual &#039;&#039;&#039;T&#039;&#039;&#039;one &#039;&#039;&#039;M&#039;&#039;&#039;ultiple &#039;&#039;&#039;F&#039;&#039;&#039;requency: Tonwahlverfahren im Telephon.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
&lt;br /&gt;
;[[EEPROM]]: &#039;&#039;&#039;E&#039;&#039;&#039;lectrical &#039;&#039;&#039;E&#039;&#039;&#039;rasable and &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;O&#039;&#039;&#039;nly &#039;&#039;&#039;M&#039;&#039;&#039;emory: Ein nichtflüchtiger [[Speicher#EEPROM|Speicher]].&lt;br /&gt;
&lt;br /&gt;
;[[EMV]]: &#039;&#039;&#039;E&#039;&#039;&#039;lektro&#039;&#039;&#039;m&#039;&#039;&#039;agnetische &#039;&#039;&#039;V&#039;&#039;&#039;erträglichkeit: Beschreibt das Verhalten von Geräten bezüglich Aussenden von elektromagetischen Störungen und die Toleranz bezüglich Einstrahlung eben dieser. &lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
&lt;br /&gt;
;FBGA: &#039;&#039;&#039;F&#039;&#039;&#039;ine [[BGA|&#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray]]: Eine Gehäuseform für ICs.&lt;br /&gt;
;FEC: &#039;&#039;&#039;F&#039;&#039;&#039;orward &#039;&#039;&#039;E&#039;&#039;&#039;rror &#039;&#039;&#039;C&#039;&#039;&#039;orrectopn: Fehlerkorrektur&lt;br /&gt;
;FEM: &#039;&#039;&#039;F&#039;&#039;&#039;inite &#039;&#039;&#039;E&#039;&#039;&#039;lemente &#039;&#039;&#039;M&#039;&#039;&#039;ethode: Stützstellenapproximation&lt;br /&gt;
;[http://de.wikipedia.org/wiki/Schnelle_Fourier-Transformation FFT]: &#039;&#039;&#039;F&#039;&#039;&#039;ast &#039;&#039;&#039;F&#039;&#039;&#039;ourier &#039;&#039;&#039;T&#039;&#039;&#039;ransformation: Ein Algorithmus zur effizienten Berechnung der [http://de.wikipedia.org/wiki/Diskrete_Fourier-Transformation Diskreten Fourier-Transformation] für den Fall gleicher Zeitabstände der Eingabewerte und einer Zweierpotenz als Anzahl der Eingabewerte.  Die Fourier-Transformation bildet eine Funktion auf ihr Frequenzspektrum ab, was vielfach in der Signalverarbeitung Anwendung findet neben anderen Transformationen wie Laplace-Transformation, Wavelet-Transformation oder Z-Transformation.&lt;br /&gt;
;[[FIFO]]: &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;O&#039;&#039;&#039;ut: Eine Organisationsform für einen Zwischenspeicher.&lt;br /&gt;
;[[FPGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray: Ein programmierbarer Logikbaustein.&lt;br /&gt;
;[[FPU]]: &#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;U&#039;&#039;&#039;nit: Teil eines Prozessors der Berechnungen mit Gleitkommazahlen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
;GFR: &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;F&#039;&#039;&#039;unction &#039;&#039;&#039;R&#039;&#039;&#039;egister: s.u.&lt;br /&gt;
;GPR: &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;P&#039;&#039;&#039;urpose &#039;&#039;&#039;R&#039;&#039;&#039;egister: Arbeitsregister eines Prozessors. Bei vielen Architekturen müssen Daten in solche Register geladen werden, um sie bearbeiten zu können. Bei [[AVR]] sind das z.B. die Register R0 – R31.&lt;br /&gt;
;GPS: &#039;&#039;&#039;G&#039;&#039;&#039;lobal &#039;&#039;&#039;P&#039;&#039;&#039;ositioning &#039;&#039;&#039;S&#039;&#039;&#039;ystem&lt;br /&gt;
;GSM: &#039;&#039;&#039;G&#039;&#039;&#039;lobal &#039;&#039;&#039;S&#039;&#039;&#039;ystem for &#039;&#039;&#039;M&#039;&#039;&#039;obile Communications:&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
&lt;br /&gt;
;HF: Hochfrequenz&lt;br /&gt;
&lt;br /&gt;
;HIL: &amp;amp;rarr; Wikipedia: [http://de.wikipedia.org/wiki/Hardware_in_the_Loop &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;i&#039;&#039;&#039;n the &#039;&#039;&#039;L&#039;&#039;&#039;oop].&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
;ISA: &#039;&#039;&#039;I&#039;&#039;&#039;nstruction &#039;&#039;&#039;S&#039;&#039;&#039;et &#039;&#039;&#039;A&#039;&#039;&#039;rchitecture: Registerstruktur und Befehlssatz eines Prozessors/[[Mikrocontroller]]s bzw. einer Prozessorfamilie.&lt;br /&gt;
&lt;br /&gt;
;[[ISP]]: &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;P&#039;&#039;&#039;rogramming: Der Mikrocontroller wird direkt auf der Zielhardware programmiert.&lt;br /&gt;
&lt;br /&gt;
;ISR: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ervice &#039;&#039;&#039;R&#039;&#039;&#039;outine: Ein Programmstück, das nach Eintreten eines bestimmten Ereignisses ausgeführt wird. Siehe [[Interrupt]].&lt;br /&gt;
&lt;br /&gt;
;IRQ: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;R&#039;&#039;&#039;e&#039;&#039;&#039;q&#039;&#039;&#039;uest: Ein Ereignis, das einen [[Interrupt]] auslöst. In der Regel wird die Programmausführung unterbrochen und ein spezielles Programmstück, eine ISR, ausgeführt und danach zum ursprünglichen Programmcode zurückgekehrt. Viele IRQs können aktiviert oder deaktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
;[[JTAG]]: &#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup: Eine Funktion für komplexe ICs, um diese im aufgelöteten Zustand zu prüfen bzw. zu programmieren und debuggen (Mikrocontroller).&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
&lt;br /&gt;
;LSB: &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das niederwertigste Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: niederwertigstes Bit.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
&lt;br /&gt;
;MSB: &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das höchstwertige Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: höchstwertiges Bit.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
&lt;br /&gt;
;[[PCM]]: &#039;&#039;&#039;P&#039;&#039;&#039;ulse &#039;&#039;&#039;C&#039;&#039;&#039;ode &#039;&#039;&#039;M&#039;&#039;&#039;odulation: Ein Datenformat&lt;br /&gt;
&lt;br /&gt;
;[[PFC]]: &#039;&#039;&#039;P&#039;&#039;&#039;ower &#039;&#039;&#039;F&#039;&#039;&#039;actor &#039;&#039;&#039;C&#039;&#039;&#039;orrection: Eine Schaltung, die Blindleistung kompensiert&lt;br /&gt;
&lt;br /&gt;
;[http://de.wikipedia.org/wiki/Phase-locked_loop PLL]: &#039;&#039;&#039;P&#039;&#039;&#039;hase &#039;&#039;&#039;L&#039;&#039;&#039;ocked &#039;&#039;&#039;L&#039;&#039;&#039;oop: Eine Schaltung, die einen Ausgangstakt mit definierter Phaselage zu einem Eingangstakt generiert.&lt;br /&gt;
&lt;br /&gt;
;[[PSU]]: &#039;&#039;&#039;P&#039;&#039;&#039;ower &#039;&#039;&#039;S&#039;&#039;&#039;upply &#039;&#039;&#039;U&#039;&#039;&#039;nit: Bezeichnung für die Stromversorgungseinheit&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
&lt;br /&gt;
;[[RS232]]: &#039;&#039;&#039;R&#039;&#039;&#039;ecommended &#039;&#039;&#039;S&#039;&#039;&#039;tandard 232: Eine Definition zur seriellen Datenübertragung, eng gekoppelt an [[UART]].&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&lt;br /&gt;
;SFR: &#039;&#039;&#039;S&#039;&#039;&#039;pecial &#039;&#039;&#039;F&#039;&#039;&#039;unction &#039;&#039;&#039;R&#039;&#039;&#039;egister: Hardware-Register, über die interne und externe Peripherie eines Prozessors/[[Mikrocontroller]]s konfiguriert wird, und über die Daten ausgetauscht werden. IO-Ports werden z.B. auf bestimmte [[Speicher#Register|SFRs]] abgebildet, auf die dann mit speziellen Befehlen zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
;SAR: &#039;&#039;&#039;S&#039;&#039;&#039;ynthetic &#039;&#039;&#039;A&#039;&#039;&#039;perture &#039;&#039;&#039;R&#039;&#039;&#039;adar: Eine Messmethodik in der Radartechnik&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
&lt;br /&gt;
;TTL: &#039;&#039;&#039;T&#039;&#039;&#039;ransistor-&#039;&#039;&#039;T&#039;&#039;&#039;ransistor-&#039;&#039;&#039;L&#039;&#039;&#039;ogik.&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
&lt;br /&gt;
;[[UART]]: &#039;&#039;&#039;U&#039;&#039;&#039;niversal &#039;&#039;&#039;A&#039;&#039;&#039;synchronus &#039;&#039;&#039;R&#039;&#039;&#039;eceiver and &#039;&#039;&#039;T&#039;&#039;&#039;ransmitter: Ein Modul in Mikrocontrollern oder PCs zum seriellen Datenaustausch.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;br /&gt;
&lt;br /&gt;
;Z: In der HF-Technik das Formelzeichen für den [[Wellenwiderstand]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59993</id>
		<title>Glossar</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59993"/>
		<updated>2011-08-29T11:29:38Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* S */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
&lt;br /&gt;
;ABI: &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface: Das Binärinterface, das zum Datenaustausch verwendet wird, z.B. die Registerverwendung in einer Funktion und für Parameterübergabe, Datenablage, Strukturlayout, etc. Jeder [[Compiler]] erzeugt Code nach einer bestimmten ABI, so daß der Code aus unterschiedlichen Modulen und Bibliotheken zusammenpasst. Beim Mischen von Hochsprachen mit (Inline-)Assembler muss auf ABI-konformität geachtet werden. Compiler-Schalter können das ABI beeinflussen. Beispiel: -fpack-struct beim GCC.&lt;br /&gt;
&lt;br /&gt;
;[[ADC]]: &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;C&#039;&#039;&#039;onverter.&lt;br /&gt;
&lt;br /&gt;
;[[AGC]]: &#039;&#039;&#039;A&#039;&#039;&#039;utomatic &#039;&#039;&#039;G&#039;&#039;&#039;ain &#039;&#039;&#039;C&#039;&#039;&#039;ontrol. Ein Schaltkreis zur selbsttätigen Verstärkungsanpassung.&lt;br /&gt;
&lt;br /&gt;
;[[ARM]]: Eine Mikrocontrollerfamilie&lt;br /&gt;
&lt;br /&gt;
;[[AVR]]: Eine Mikrocontrollerfamilie von Atmel. Der Ursprung des Namens ist unklar.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
&lt;br /&gt;
;[[BGA]]: &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
&lt;br /&gt;
;Bit: &#039;&#039;&#039;Bi&#039;&#039;&#039;nary Digi&#039;&#039;&#039;t&#039;&#039;&#039;: Kleinste Informationseinheit, siehe [[Bitmanipulation]].&lt;br /&gt;
 &lt;br /&gt;
;BNC: &#039;&#039;&#039;B&#039;&#039;&#039;ajonet &#039;&#039;&#039;N&#039;&#039;&#039;ut &#039;&#039;&#039;C&#039;&#039;&#039;onnector: Ein Steckverbinder für Koaxialkabel.&lt;br /&gt;
&lt;br /&gt;
;[[BSDL]]: &#039;&#039;&#039;B&#039;&#039;&#039;oundary &#039;&#039;&#039;S&#039;&#039;&#039;can &#039;&#039;&#039;D&#039;&#039;&#039;escription &#039;&#039;&#039;L&#039;&#039;&#039;anguage: Eine Sprache für [[boundary scan]]-basiertes Testen und Debuggen.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
&lt;br /&gt;
;[[C]]: Eine weit verbreitete Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
;[[CAN]]: &#039;&#039;&#039;C&#039;&#039;&#039;ontroller &#039;&#039;&#039;A&#039;&#039;&#039;rea &#039;&#039;&#039;N&#039;&#039;&#039;etwork: Ein Netzwerk für kleine [[Mikrocontroller]], ursprünglich für die Automobilbranche entwickelt.&lt;br /&gt;
&lt;br /&gt;
;[[CPLD]]: &#039;&#039;&#039;C&#039;&#039;&#039;omplex &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;L&#039;&#039;&#039;ogic &#039;&#039;&#039;D&#039;&#039;&#039;evice: Ein programmierbarer Logikbaustein.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
&lt;br /&gt;
;[[DAC]]: &#039;&#039;&#039;D&#039;&#039;&#039;igital to &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;C&#039;&#039;&#039;onverter&lt;br /&gt;
&lt;br /&gt;
;[[DSP]]: &#039;&#039;&#039;D&#039;&#039;&#039;igitaler &#039;&#039;&#039;S&#039;&#039;&#039;ignal&#039;&#039;&#039;p&#039;&#039;&#039;rozessor&lt;br /&gt;
&lt;br /&gt;
;[[DTMF]]: &#039;&#039;&#039;D&#039;&#039;&#039;ual &#039;&#039;&#039;T&#039;&#039;&#039;one &#039;&#039;&#039;M&#039;&#039;&#039;ultiple &#039;&#039;&#039;F&#039;&#039;&#039;requency: Tonwahlverfahren im Telephon.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
&lt;br /&gt;
;[[EEPROM]]: &#039;&#039;&#039;E&#039;&#039;&#039;lectrical &#039;&#039;&#039;E&#039;&#039;&#039;rasable and &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;O&#039;&#039;&#039;nly &#039;&#039;&#039;M&#039;&#039;&#039;emory: Ein nichtflüchtiger [[Speicher#EEPROM|Speicher]].&lt;br /&gt;
&lt;br /&gt;
;[[EMV]]: &#039;&#039;&#039;E&#039;&#039;&#039;lektro&#039;&#039;&#039;m&#039;&#039;&#039;agnetische &#039;&#039;&#039;V&#039;&#039;&#039;erträglichkeit: Beschreibt das Verhalten von Geräten bezüglich Aussenden von elektromagetischen Störungen und die Toleranz bezüglich Einstrahlung eben dieser. &lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
&lt;br /&gt;
;FBGA: &#039;&#039;&#039;F&#039;&#039;&#039;ine [[BGA|&#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray]]: Eine Gehäuseform für ICs.&lt;br /&gt;
;FEC: &#039;&#039;&#039;F&#039;&#039;&#039;orward &#039;&#039;&#039;E&#039;&#039;&#039;rror &#039;&#039;&#039;C&#039;&#039;&#039;orrectopn: Fehlerkorrektur&lt;br /&gt;
;FEM: &#039;&#039;&#039;F&#039;&#039;&#039;inite &#039;&#039;&#039;E&#039;&#039;&#039;lemente &#039;&#039;&#039;M&#039;&#039;&#039;ethode: Stützstellenapproximation&lt;br /&gt;
;[http://de.wikipedia.org/wiki/Schnelle_Fourier-Transformation FFT]: &#039;&#039;&#039;F&#039;&#039;&#039;ast &#039;&#039;&#039;F&#039;&#039;&#039;ourier &#039;&#039;&#039;T&#039;&#039;&#039;ransformation: Ein Algorithmus zur effizienten Berechnung der [http://de.wikipedia.org/wiki/Diskrete_Fourier-Transformation Diskreten Fourier-Transformation] für den Fall gleicher Zeitabstände der Eingabewerte und einer Zweierpotenz als Anzahl der Eingabewerte.  Die Fourier-Transformation bildet eine Funktion auf ihr Frequenzspektrum ab, was vielfach in der Signalverarbeitung Anwendung findet neben anderen Transformationen wie Laplace-Transformation, Wavelet-Transformation oder Z-Transformation.&lt;br /&gt;
;[[FIFO]]: &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;O&#039;&#039;&#039;ut: Eine Organisationsform für einen Zwischenspeicher.&lt;br /&gt;
;[[FPGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray: Ein programmierbarer Logikbaustein.&lt;br /&gt;
;[[FPU]]: &#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;U&#039;&#039;&#039;nit: Teil eines Prozessors der Berechnungen mit Gleitkommazahlen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
;GFR: &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;F&#039;&#039;&#039;unction &#039;&#039;&#039;R&#039;&#039;&#039;egister: s.u.&lt;br /&gt;
;GPR: &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;P&#039;&#039;&#039;urpose &#039;&#039;&#039;R&#039;&#039;&#039;egister: Arbeitsregister eines Prozessors. Bei vielen Architekturen müssen Daten in solche Register geladen werden, um sie bearbeiten zu können. Bei [[AVR]] sind das z.B. die Register R0 – R31.&lt;br /&gt;
;GPS: &#039;&#039;&#039;G&#039;&#039;&#039;lobal &#039;&#039;&#039;P&#039;&#039;&#039;ositioning &#039;&#039;&#039;S&#039;&#039;&#039;ystem&lt;br /&gt;
;GSM: &#039;&#039;&#039;G&#039;&#039;&#039;lobal &#039;&#039;&#039;S&#039;&#039;&#039;ystem for &#039;&#039;&#039;M&#039;&#039;&#039;obile Communications:&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
&lt;br /&gt;
;HF: Hochfrequenz&lt;br /&gt;
&lt;br /&gt;
;HIL: &amp;amp;rarr; Wikipedia: [http://de.wikipedia.org/wiki/Hardware_in_the_Loop &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;i&#039;&#039;&#039;n the &#039;&#039;&#039;L&#039;&#039;&#039;oop].&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
;ISA: &#039;&#039;&#039;I&#039;&#039;&#039;nstruction &#039;&#039;&#039;S&#039;&#039;&#039;et &#039;&#039;&#039;A&#039;&#039;&#039;rchitecture: Registerstruktur und Befehlssatz eines Prozessors/[[Mikrocontroller]]s bzw. einer Prozessorfamilie.&lt;br /&gt;
&lt;br /&gt;
;[[ISP]]: &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;P&#039;&#039;&#039;rogramming: Der Mikrocontroller wird direkt auf der Zielhardware programmiert.&lt;br /&gt;
&lt;br /&gt;
;ISR: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ervice &#039;&#039;&#039;R&#039;&#039;&#039;outine: Ein Programmstück, das nach Eintreten eines bestimmten Ereignisses ausgeführt wird. Siehe [[Interrupt]].&lt;br /&gt;
&lt;br /&gt;
;IRQ: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;R&#039;&#039;&#039;e&#039;&#039;&#039;q&#039;&#039;&#039;uest: Ein Ereignis, das einen [[Interrupt]] auslöst. In der Regel wird die Programmausführung unterbrochen und ein spezielles Programmstück, eine ISR, ausgeführt und danach zum ursprünglichen Programmcode zurückgekehrt. Viele IRQs können aktiviert oder deaktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
;[[JTAG]]: &#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup: Eine Funktion für komplexe ICs, um diese im aufgelöteten Zustand zu prüfen bzw. zu programmieren und debuggen (Mikrocontroller).&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
&lt;br /&gt;
;LSB: &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das niederwertigste Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: niederwertigstes Bit.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
&lt;br /&gt;
;MSB: &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das höchstwertige Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: höchstwertiges Bit.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
&lt;br /&gt;
;[[PCM]]: &#039;&#039;&#039;P&#039;&#039;&#039;ulse &#039;&#039;&#039;C&#039;&#039;&#039;ode &#039;&#039;&#039;M&#039;&#039;&#039;odulation: Ein Datenformat&lt;br /&gt;
&lt;br /&gt;
;[[PFC]]: &#039;&#039;&#039;P&#039;&#039;&#039;ower &#039;&#039;&#039;F&#039;&#039;&#039;actor &#039;&#039;&#039;C&#039;&#039;&#039;orrection: Eine Schaltung, die Blindleistung kompensiert&lt;br /&gt;
&lt;br /&gt;
;[http://de.wikipedia.org/wiki/Phase-locked_loop PLL]: &#039;&#039;&#039;P&#039;&#039;&#039;hase &#039;&#039;&#039;L&#039;&#039;&#039;ocked &#039;&#039;&#039;L&#039;&#039;&#039;oop: Eine Schaltung, die einen Ausgangstakt mit definierter Phaselage zu einem Eingangstakt generiert.&lt;br /&gt;
&lt;br /&gt;
;[[PSU]]: &#039;&#039;&#039;P&#039;&#039;&#039;ower &#039;&#039;&#039;S&#039;&#039;&#039;upply &#039;&#039;&#039;U&#039;&#039;&#039;nit: Bezeichnung für die Stromversorgungseinheit&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
&lt;br /&gt;
;[[RS232]]: &#039;&#039;&#039;R&#039;&#039;&#039;ecommended &#039;&#039;&#039;S&#039;&#039;&#039;tandard 232: Eine Definition zur seriellen Datenübertragung, eng gekoppelt an [[UART]].&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&lt;br /&gt;
;SFR: &#039;&#039;&#039;S&#039;&#039;&#039;pecial &#039;&#039;&#039;F&#039;&#039;&#039;unction &#039;&#039;&#039;R&#039;&#039;&#039;egister: Hardware-Register, über die interne und externe Peripherie eines Prozessors/[[Mikrocontroller]]s konfiguriert wird, und über die Daten ausgetauscht werden. IO-Ports werden z.B. auf bestimmte [[Speicher#Register|SFRs]] abgebildet, auf die dann mit speziellen Befehlen zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
;SAR: &#039;&#039;&#039;S&#039;&#039;&#039;ynthetic &#039;&#039;&#039;A&#039;&#039;&#039;perture &#039;&#039;&#039;R&#039;&#039;adar: Eine Messmethodik in der Radartechnik&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
&lt;br /&gt;
;TTL: &#039;&#039;&#039;T&#039;&#039;&#039;ransistor-&#039;&#039;&#039;T&#039;&#039;&#039;ransistor-&#039;&#039;&#039;L&#039;&#039;&#039;ogik.&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
&lt;br /&gt;
;[[UART]]: &#039;&#039;&#039;U&#039;&#039;&#039;niversal &#039;&#039;&#039;A&#039;&#039;&#039;synchronus &#039;&#039;&#039;R&#039;&#039;&#039;eceiver and &#039;&#039;&#039;T&#039;&#039;&#039;ransmitter: Ein Modul in Mikrocontrollern oder PCs zum seriellen Datenaustausch.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;br /&gt;
&lt;br /&gt;
;Z: In der HF-Technik das Formelzeichen für den [[Wellenwiderstand]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59992</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59992"/>
		<updated>2011-08-29T11:24:46Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Schrittverlust */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
===Mechanischer Aufbau===&lt;br /&gt;
Schrittmotoren bestehen aus einem (magnetisierten) Ankerkonstrukt und einem Spulensystem, wodurch bei Strommfluss eine Bewegung generiert werden kann. Kohlebürsten oder Schleifringe braucht der Motor nicht. Der Anker (Innenläufer) kann z. B. aus einem gezahnten Permanentmagneten bestehen. Durch diesen geschickten Aufbau wird erreicht, dass je Motorumdrehung mehre Schrittpositionen geschaffen werden, in die der Motor einrasten kann. So gibt es Motoren mit 200 Vollschritten je Umdrehung. Aufgund der Magnetisierung besitzt der Motor Ruhepunkte, in denen ein Haltemoment vorliegt.&lt;br /&gt;
&lt;br /&gt;
===Elektrischer Aufbau===&lt;br /&gt;
Es gibt aus elektrischer Sicht zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt. Der Unterschied besteht in der Ansteuerung der Wicklungen:&lt;br /&gt;
&lt;br /&gt;
==== Unipolare Schrittmotoren ====&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
==== Bipolare Schrittmotoren ====&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
Durch passendes Anlegen der Spannungen an die Wicklungen wird ein Drehfeld erzeugt, dem der Motor folgt. Bevor der Motor die durch das Feld vorgegebene Position erreicht, muss es weitergeführt werden, um die Drehung zu erhalten. Der Motor wird dadurch hinter dem Feld her geführt. Die Winkeldifferenz zwischen Feld und Position ist ein Mass für die Belastung des Motors und die Beschleunigung.&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
===Betriebsarten===&lt;br /&gt;
====Vollschrittbetrieb====&lt;br /&gt;
Die einfachste Betriebsart ist die des Vollschrittbetriebs, bei der das Drehfeld immer um 90 Grad vorgeschoben werden muss, was durch wechselseitiges Ansteuern der Spulen sowie Negation der Ströme nach dem Muster + 0 - 0 sowie  0 + 0 - erfolgt. Es ist dabei immer nur eine einzige Spule aktv.&lt;br /&gt;
&lt;br /&gt;
====Halbschrittbetrieb====&lt;br /&gt;
Durch Nutzung von zwei Spulen gleiczeitig entstehen Zwischenstufen, die gegenüber dem Vollschritt um 45 Grad gedreht sind, da der Motor z.B. gleichzeit in Nord- als auch in Ostrichtung gezogen wird. Werden beide Betriebsarten gemischt, entsteht das Halbschrittverfahren. Dadurch entstehen 45 Grad-Schritte. Das Bestromungsmuster sieht wie folgt aus: + + 0 0 - - 0 0   sowie  0 + + 0 0 - - 0  für die andere Spule, wobei man wieder eine 90 Grad-Verschiebung der beiden Ströme erkent.&lt;br /&gt;
&lt;br /&gt;
====Micro-Step-Betrieb====&lt;br /&gt;
Bei weiterer Verfeinerung der Methode entsteht der sogenannte microstep Betrieb, bei dem die beiden Wicklungen mit Sinus/Cosinus-Strömen angesteuert werden. Dennoch bleiben bei Schrittmotoren jeweils die Ruhepunkte pro Vollschritt erhalten, in die sie bei Abschalten des Stromes hineinfallen. In diesen Punkten ist das magnetische Haltemoment vergleichsweise gering (theoretisch null), wächst aber bei infinitisimaler Motordrehung rasch an, um dann wieder abzuflachen, sodass es bei 45 Grad, wenn der Anker gerade zwischen zwei magentischen Positionen steht, wieder Null ist. Vereinfacht kann man sich dies durch einen sinusförmigen-Kurvenverlauf, wie im Diagramm rot dargestellt, vorstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:schrittmotor-ansteuerung-sin-con-js.gif|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
Den beiden ansteuernden Stömen Sinus/Cosinus kann nun ein dem Haltemoment eingegengesetzter Strom aufaddiert werden, der den Anker dort, wo er am stärksten Widerstand erfährt, mehr Drehmoment von Aussen zuführt. Dazu muss eine Welle mit 4facher Frequenz, die immer exakt 90 Grad Vorlauf zur Ankerstellung hat, hinzuaddiert werden.&lt;br /&gt;
&lt;br /&gt;
In Realität ist das Moment nicht sinusförmig und dessen Maximum leicht nach vorne verschoben. Unter der Annahme, dass der Vorlauf des Drehfeldes für den Motor günstig ist, kann vereinfachend eine leichte Abflachung der Kurven in den Maxima von Sinus und Cosinus vorgenommen werden. Dies ist bei der einfachen Methode [[Digitale_Sinusfunktion#Sinus-Approximation_1]] bereits ansatzweise berücksichtigt, da die Kurve im Bereich 30 und 150 Grad steiler verläuft, als der reale Sinus.&lt;br /&gt;
&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn die Sollvorgabe vom Motor nicht erreicht wird und der Motor dem Drehfeld nicht folgen kann. Der Motor schwingt dann in die Position des letzten Vollschritts zurück, teilweise sogar darüber hinaus, wenn shcwere Mechanik über Getriebe angetrieben werden und höhe Torsionsmomente gespeichert waren.&lt;br /&gt;
&lt;br /&gt;
==== Erkennung ====&lt;br /&gt;
Eine Möglichkeit ist, auf der Achse des Motors einen Winkelsensor (Encoder) zu montieren und die Schritte permanent mitzuzählen. Eine weitere Möglichkeit besteht in der Messung des Gegen-EMK des Motors. Bei einem Schrittverlust entstehen seltsame Oberwellen.&lt;br /&gt;
&lt;br /&gt;
==== Vermeidung ====&lt;br /&gt;
Entscheidend ist, das Drehfeld des Motors zum richtigen Zeitpunkt weiterzuführen. Das darf nicht zu früh passieren. Der kritischste Fall ist der des Starts. Daher kommt der richtigen Wahl der Beschleunigung eine grosse Bedeutung zu.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
====Häufigster Fehler====&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
====Tipps zur Rampe====&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben. Damit ergibt sich ein beschleunigter Zeitverlauf.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59991</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59991"/>
		<updated>2011-08-29T11:06:52Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Micro-Step-Betrieb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
===Mechanischer Aufbau===&lt;br /&gt;
Schrittmotoren bestehen aus einem (magnetisierten) Ankerkonstrukt und einem Spulensystem, wodurch bei Strommfluss eine Bewegung generiert werden kann. Kohlebürsten oder Schleifringe braucht der Motor nicht. Der Anker (Innenläufer) kann z. B. aus einem gezahnten Permanentmagneten bestehen. Durch diesen geschickten Aufbau wird erreicht, dass je Motorumdrehung mehre Schrittpositionen geschaffen werden, in die der Motor einrasten kann. So gibt es Motoren mit 200 Vollschritten je Umdrehung. Aufgund der Magnetisierung besitzt der Motor Ruhepunkte, in denen ein Haltemoment vorliegt.&lt;br /&gt;
&lt;br /&gt;
===Elektrischer Aufbau===&lt;br /&gt;
Es gibt aus elektrischer Sicht zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt. Der Unterschied besteht in der Ansteuerung der Wicklungen:&lt;br /&gt;
&lt;br /&gt;
==== Unipolare Schrittmotoren ====&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
==== Bipolare Schrittmotoren ====&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
Durch passendes Anlegen der Spannungen an die Wicklungen wird ein Drehfeld erzeugt, dem der Motor folgt. Bevor der Motor die durch das Feld vorgegebene Position erreicht, muss es weitergeführt werden, um die Drehung zu erhalten. Der Motor wird dadurch hinter dem Feld her geführt. Die Winkeldifferenz zwischen Feld und Position ist ein Mass für die Belastung des Motors und die Beschleunigung.&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
===Betriebsarten===&lt;br /&gt;
====Vollschrittbetrieb====&lt;br /&gt;
Die einfachste Betriebsart ist die des Vollschrittbetriebs, bei der das Drehfeld immer um 90 Grad vorgeschoben werden muss, was durch wechselseitiges Ansteuern der Spulen sowie Negation der Ströme nach dem Muster + 0 - 0 sowie  0 + 0 - erfolgt. Es ist dabei immer nur eine einzige Spule aktv.&lt;br /&gt;
&lt;br /&gt;
====Halbschrittbetrieb====&lt;br /&gt;
Durch Nutzung von zwei Spulen gleiczeitig entstehen Zwischenstufen, die gegenüber dem Vollschritt um 45 Grad gedreht sind, da der Motor z.B. gleichzeit in Nord- als auch in Ostrichtung gezogen wird. Werden beide Betriebsarten gemischt, entsteht das Halbschrittverfahren. Dadurch entstehen 45 Grad-Schritte. Das Bestromungsmuster sieht wie folgt aus: + + 0 0 - - 0 0   sowie  0 + + 0 0 - - 0  für die andere Spule, wobei man wieder eine 90 Grad-Verschiebung der beiden Ströme erkent.&lt;br /&gt;
&lt;br /&gt;
====Micro-Step-Betrieb====&lt;br /&gt;
Bei weiterer Verfeinerung der Methode entsteht der sogenannte microstep Betrieb, bei dem die beiden Wicklungen mit Sinus/Cosinus-Strömen angesteuert werden. Dennoch bleiben bei Schrittmotoren jeweils die Ruhepunkte pro Vollschritt erhalten, in die sie bei Abschalten des Stromes hineinfallen. In diesen Punkten ist das magnetische Haltemoment vergleichsweise gering (theoretisch null), wächst aber bei infinitisimaler Motordrehung rasch an, um dann wieder abzuflachen, sodass es bei 45 Grad, wenn der Anker gerade zwischen zwei magentischen Positionen steht, wieder Null ist. Vereinfacht kann man sich dies durch einen sinusförmigen-Kurvenverlauf, wie im Diagramm rot dargestellt, vorstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:schrittmotor-ansteuerung-sin-con-js.gif|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
Den beiden ansteuernden Stömen Sinus/Cosinus kann nun ein dem Haltemoment eingegengesetzter Strom aufaddiert werden, der den Anker dort, wo er am stärksten Widerstand erfährt, mehr Drehmoment von Aussen zuführt. Dazu muss eine Welle mit 4facher Frequenz, die immer exakt 90 Grad Vorlauf zur Ankerstellung hat, hinzuaddiert werden.&lt;br /&gt;
&lt;br /&gt;
In Realität ist das Moment nicht sinusförmig und dessen Maximum leicht nach vorne verschoben. Unter der Annahme, dass der Vorlauf des Drehfeldes für den Motor günstig ist, kann vereinfachend eine leichte Abflachung der Kurven in den Maxima von Sinus und Cosinus vorgenommen werden. Dies ist bei der einfachen Methode [[Digitale_Sinusfunktion#Sinus-Approximation_1]] bereits ansatzweise berücksichtigt, da die Kurve im Bereich 30 und 150 Grad steiler verläuft, als der reale Sinus.&lt;br /&gt;
&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn die Sollvorgabe vom Motor nicht erreicht wird und der Motor dem Drehfeld nicht folgen kann. Der Motor schwingt dann in die vorletzte Position zurück.&lt;br /&gt;
&lt;br /&gt;
==== Erkennung ====&lt;br /&gt;
Eine Möglichkeit ist, auf der Achse des Motors einen Winkelsensor (Encoder) zu montieren und die Schritte permanent mitzuzählen. Eine weitere Möglichkeit besteht in der Messung des Gegen-EMK des Motors. Bei einem Schrittverlust entstehen seltsame Oberwellen.&lt;br /&gt;
&lt;br /&gt;
==== Vermeidung ====&lt;br /&gt;
Entscheidend ist, das Drehfeld des Motors zum richtigen Zeitpunkt weiterzuführen. Das darf nicht zu früh passieren. Der kritischste Fall ist der des Starts. Daher kommt der richtigen Wahl der Beschleunigung eine grosse BEdeutung zu.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
====Häufigster Fehler====&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
====Tipps zur Rampe====&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben. Damit ergibt sich ein beschleunigter Zeitverlauf.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59990</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59990"/>
		<updated>2011-08-29T11:04:19Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Halbschrittbetrieb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
===Mechanischer Aufbau===&lt;br /&gt;
Schrittmotoren bestehen aus einem (magnetisierten) Ankerkonstrukt und einem Spulensystem, wodurch bei Strommfluss eine Bewegung generiert werden kann. Kohlebürsten oder Schleifringe braucht der Motor nicht. Der Anker (Innenläufer) kann z. B. aus einem gezahnten Permanentmagneten bestehen. Durch diesen geschickten Aufbau wird erreicht, dass je Motorumdrehung mehre Schrittpositionen geschaffen werden, in die der Motor einrasten kann. So gibt es Motoren mit 200 Vollschritten je Umdrehung. Aufgund der Magnetisierung besitzt der Motor Ruhepunkte, in denen ein Haltemoment vorliegt.&lt;br /&gt;
&lt;br /&gt;
===Elektrischer Aufbau===&lt;br /&gt;
Es gibt aus elektrischer Sicht zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt. Der Unterschied besteht in der Ansteuerung der Wicklungen:&lt;br /&gt;
&lt;br /&gt;
==== Unipolare Schrittmotoren ====&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
==== Bipolare Schrittmotoren ====&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
Durch passendes Anlegen der Spannungen an die Wicklungen wird ein Drehfeld erzeugt, dem der Motor folgt. Bevor der Motor die durch das Feld vorgegebene Position erreicht, muss es weitergeführt werden, um die Drehung zu erhalten. Der Motor wird dadurch hinter dem Feld her geführt. Die Winkeldifferenz zwischen Feld und Position ist ein Mass für die Belastung des Motors und die Beschleunigung.&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
===Betriebsarten===&lt;br /&gt;
====Vollschrittbetrieb====&lt;br /&gt;
Die einfachste Betriebsart ist die des Vollschrittbetriebs, bei der das Drehfeld immer um 90 Grad vorgeschoben werden muss, was durch wechselseitiges Ansteuern der Spulen sowie Negation der Ströme nach dem Muster + 0 - 0 sowie  0 + 0 - erfolgt. Es ist dabei immer nur eine einzige Spule aktv.&lt;br /&gt;
&lt;br /&gt;
====Halbschrittbetrieb====&lt;br /&gt;
Durch Nutzung von zwei Spulen gleiczeitig entstehen Zwischenstufen, die gegenüber dem Vollschritt um 45 Grad gedreht sind, da der Motor z.B. gleichzeit in Nord- als auch in Ostrichtung gezogen wird. Werden beide Betriebsarten gemischt, entsteht das Halbschrittverfahren. Dadurch entstehen 45 Grad-Schritte. Das Bestromungsmuster sieht wie folgt aus: + + 0 0 - - 0 0   sowie  0 + + 0 0 - - 0  für die andere Spule, wobei man wieder eine 90 Grad-Verschiebung der beiden Ströme erkent.&lt;br /&gt;
&lt;br /&gt;
====Micro-Step-Betrieb====&lt;br /&gt;
Um nicht nur 4 elektromagnetische Positionen eines Schrittmotors nutzen zu können, wird auf den sogenannten microstep Betrieb zurückgegriffen, bei dem die beiden Wicklungen mit Sinus/Cosinus-Strömen angesteuert werden. Dennoch bleiben bei Schrittmotoren jeweils die Ruhepunkte pro Vollschritt, in die sie bei Abschalten des Stromes hineinfallen. In diesen Punkten ist das magnetische Haltemoment vergleichsweise gering, wächst aber bei geringer Motordrehung rasch an, um dann wieder abzuflachen, sodass es bei 45 Grad, wenn der Anker gerade zwischen zwei Positionen steht, nahe Null ist. Vereinfacht kann man sich dies durch einen sinusförmigen-Kurvenverlauf, wie im Diagramm rot dargestellt, vorstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:schrittmotor-ansteuerung-sin-con-js.gif|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
Den beiden ansteuernden Stömen Sinus/Cosinus kann nun ein dem Haltemoment eingegengesetzter Strom aufaddiert werden, der den Anker dort, wo er am stärksten Widerstand erfährt, mehr Drehmoment von Aussen zuführt. Dazu muss eine Welle mit 4facher Frequenz, die immer exakt 90 Grad Vorlauf zur Ankerstellung hat, hinzuaddiert werden.&lt;br /&gt;
&lt;br /&gt;
In Realität ist das Moment nicht sinusförmig und dessen Maximum leicht nach vorne verschoben. Unter der Annahme, dass der Vorlauf des Drehfeldes für den Motor günstig ist, kann vereinfachend eine leichte Abflachung der Kurven in den Maxima von Sinus und Cosinus vorgenommen werden. Dies ist bei der einfachen Methode [[Digitale_Sinusfunktion#Sinus-Approximation_1]] bereits ansatzweise berücksichtigt, da die Kurve im Bereich 30 und 150 Grad steiler verläuft, als der reale Sinus.&lt;br /&gt;
&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn die Sollvorgabe vom Motor nicht erreicht wird und der Motor dem Drehfeld nicht folgen kann. Der Motor schwingt dann in die vorletzte Position zurück.&lt;br /&gt;
&lt;br /&gt;
==== Erkennung ====&lt;br /&gt;
Eine Möglichkeit ist, auf der Achse des Motors einen Winkelsensor (Encoder) zu montieren und die Schritte permanent mitzuzählen. Eine weitere Möglichkeit besteht in der Messung des Gegen-EMK des Motors. Bei einem Schrittverlust entstehen seltsame Oberwellen.&lt;br /&gt;
&lt;br /&gt;
==== Vermeidung ====&lt;br /&gt;
Entscheidend ist, das Drehfeld des Motors zum richtigen Zeitpunkt weiterzuführen. Das darf nicht zu früh passieren. Der kritischste Fall ist der des Starts. Daher kommt der richtigen Wahl der Beschleunigung eine grosse BEdeutung zu.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
====Häufigster Fehler====&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
====Tipps zur Rampe====&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben. Damit ergibt sich ein beschleunigter Zeitverlauf.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59989</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59989"/>
		<updated>2011-08-29T11:00:47Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Vollschrittbetrieb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
===Mechanischer Aufbau===&lt;br /&gt;
Schrittmotoren bestehen aus einem (magnetisierten) Ankerkonstrukt und einem Spulensystem, wodurch bei Strommfluss eine Bewegung generiert werden kann. Kohlebürsten oder Schleifringe braucht der Motor nicht. Der Anker (Innenläufer) kann z. B. aus einem gezahnten Permanentmagneten bestehen. Durch diesen geschickten Aufbau wird erreicht, dass je Motorumdrehung mehre Schrittpositionen geschaffen werden, in die der Motor einrasten kann. So gibt es Motoren mit 200 Vollschritten je Umdrehung. Aufgund der Magnetisierung besitzt der Motor Ruhepunkte, in denen ein Haltemoment vorliegt.&lt;br /&gt;
&lt;br /&gt;
===Elektrischer Aufbau===&lt;br /&gt;
Es gibt aus elektrischer Sicht zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt. Der Unterschied besteht in der Ansteuerung der Wicklungen:&lt;br /&gt;
&lt;br /&gt;
==== Unipolare Schrittmotoren ====&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
==== Bipolare Schrittmotoren ====&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
Durch passendes Anlegen der Spannungen an die Wicklungen wird ein Drehfeld erzeugt, dem der Motor folgt. Bevor der Motor die durch das Feld vorgegebene Position erreicht, muss es weitergeführt werden, um die Drehung zu erhalten. Der Motor wird dadurch hinter dem Feld her geführt. Die Winkeldifferenz zwischen Feld und Position ist ein Mass für die Belastung des Motors und die Beschleunigung.&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
===Betriebsarten===&lt;br /&gt;
====Vollschrittbetrieb====&lt;br /&gt;
Die einfachste Betriebsart ist die des Vollschrittbetriebs, bei der das Drehfeld immer um 90 Grad vorgeschoben werden muss, was durch wechselseitiges Ansteuern der Spulen sowie Negation der Ströme nach dem Muster + 0 - 0 sowie  0 + 0 - erfolgt. Es ist dabei immer nur eine einzige Spule aktv.&lt;br /&gt;
&lt;br /&gt;
====Halbschrittbetrieb====&lt;br /&gt;
Durch Nutzung von jeweils einer/zwei Spulen abwechselnd entsteht Zwischenstufen. Das Muster sieht aus wie folgt: + + 0 0 - - 0 0   sowie  0 + 0 0 - - 0  für die andere Spule. Dadurch entstehen 45 Grad-Schritte. &lt;br /&gt;
&lt;br /&gt;
====Micro-Step-Betrieb====&lt;br /&gt;
Um nicht nur 4 elektromagnetische Positionen eines Schrittmotors nutzen zu können, wird auf den sogenannten microstep Betrieb zurückgegriffen, bei dem die beiden Wicklungen mit Sinus/Cosinus-Strömen angesteuert werden. Dennoch bleiben bei Schrittmotoren jeweils die Ruhepunkte pro Vollschritt, in die sie bei Abschalten des Stromes hineinfallen. In diesen Punkten ist das magnetische Haltemoment vergleichsweise gering, wächst aber bei geringer Motordrehung rasch an, um dann wieder abzuflachen, sodass es bei 45 Grad, wenn der Anker gerade zwischen zwei Positionen steht, nahe Null ist. Vereinfacht kann man sich dies durch einen sinusförmigen-Kurvenverlauf, wie im Diagramm rot dargestellt, vorstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:schrittmotor-ansteuerung-sin-con-js.gif|thumb|500px]]&lt;br /&gt;
&lt;br /&gt;
Den beiden ansteuernden Stömen Sinus/Cosinus kann nun ein dem Haltemoment eingegengesetzter Strom aufaddiert werden, der den Anker dort, wo er am stärksten Widerstand erfährt, mehr Drehmoment von Aussen zuführt. Dazu muss eine Welle mit 4facher Frequenz, die immer exakt 90 Grad Vorlauf zur Ankerstellung hat, hinzuaddiert werden.&lt;br /&gt;
&lt;br /&gt;
In Realität ist das Moment nicht sinusförmig und dessen Maximum leicht nach vorne verschoben. Unter der Annahme, dass der Vorlauf des Drehfeldes für den Motor günstig ist, kann vereinfachend eine leichte Abflachung der Kurven in den Maxima von Sinus und Cosinus vorgenommen werden. Dies ist bei der einfachen Methode [[Digitale_Sinusfunktion#Sinus-Approximation_1]] bereits ansatzweise berücksichtigt, da die Kurve im Bereich 30 und 150 Grad steiler verläuft, als der reale Sinus.&lt;br /&gt;
&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn die Sollvorgabe vom Motor nicht erreicht wird und der Motor dem Drehfeld nicht folgen kann. Der Motor schwingt dann in die vorletzte Position zurück.&lt;br /&gt;
&lt;br /&gt;
==== Erkennung ====&lt;br /&gt;
Eine Möglichkeit ist, auf der Achse des Motors einen Winkelsensor (Encoder) zu montieren und die Schritte permanent mitzuzählen. Eine weitere Möglichkeit besteht in der Messung des Gegen-EMK des Motors. Bei einem Schrittverlust entstehen seltsame Oberwellen.&lt;br /&gt;
&lt;br /&gt;
==== Vermeidung ====&lt;br /&gt;
Entscheidend ist, das Drehfeld des Motors zum richtigen Zeitpunkt weiterzuführen. Das darf nicht zu früh passieren. Der kritischste Fall ist der des Starts. Daher kommt der richtigen Wahl der Beschleunigung eine grosse BEdeutung zu.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
====Häufigster Fehler====&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
====Tipps zur Rampe====&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben. Damit ergibt sich ein beschleunigter Zeitverlauf.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59903</id>
		<title>Glossar</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59903"/>
		<updated>2011-08-26T09:48:11Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* P */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
&lt;br /&gt;
;ABI: &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface: Das Binärinterface, das zum Datenaustausch verwendet wird, z.B. die Registerverwendung in einer Funktion und für Parameterübergabe, Datenablage, Strukturlayout, etc. Jeder [[Compiler]] erzeugt Code nach einer bestimmten ABI, so daß der Code aus unterschiedlichen Modulen und Bibliotheken zusammenpasst. Beim Mischen von Hochsprachen mit (Inline-)Assembler muss auf ABI-konformität geachtet werden. Compiler-Schalter können das ABI beeinflussen. Beispiel: -fpack-struct beim GCC.&lt;br /&gt;
&lt;br /&gt;
;[[ADC]]: &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;C&#039;&#039;&#039;onverter.&lt;br /&gt;
&lt;br /&gt;
;[[AGC]]: &#039;&#039;&#039;A&#039;&#039;&#039;utomatic &#039;&#039;&#039;G&#039;&#039;&#039;ain &#039;&#039;&#039;C&#039;&#039;&#039;ontrol. Ein Schaltkreis zur selbsttätigen Verstärkungsanpassung.&lt;br /&gt;
&lt;br /&gt;
;[[ARM]]: Eine Mikrocontrollerfamilie&lt;br /&gt;
&lt;br /&gt;
;[[AVR]]: Eine Mikrocontrollerfamilie von Atmel. Der Ursprung des Namens ist unklar.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
&lt;br /&gt;
;[[BGA]]: &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
&lt;br /&gt;
;Bit: &#039;&#039;&#039;Bi&#039;&#039;&#039;nary Digi&#039;&#039;&#039;t&#039;&#039;&#039;: Kleinste Informationseinheit, siehe [[Bitmanipulation]].&lt;br /&gt;
 &lt;br /&gt;
;BNC: &#039;&#039;&#039;B&#039;&#039;&#039;ajonet &#039;&#039;&#039;N&#039;&#039;&#039;ut &#039;&#039;&#039;C&#039;&#039;&#039;onnector: Ein Steckverbinder für Koaxialkabel.&lt;br /&gt;
&lt;br /&gt;
;[[BSDL]]: &#039;&#039;&#039;B&#039;&#039;&#039;oundary &#039;&#039;&#039;S&#039;&#039;&#039;can &#039;&#039;&#039;D&#039;&#039;&#039;escription &#039;&#039;&#039;L&#039;&#039;&#039;anguage: Eine Sprache für [[boundary scan]]-basiertes Testen und Debuggen.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
&lt;br /&gt;
;[[C]]: Eine weit verbreitete Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
;[[CAN]]: &#039;&#039;&#039;C&#039;&#039;&#039;ontroller &#039;&#039;&#039;A&#039;&#039;&#039;rea &#039;&#039;&#039;N&#039;&#039;&#039;etwork: Ein Netzwerk für kleine [[Mikrocontroller]], ursprünglich für die Automobilbranche entwickelt.&lt;br /&gt;
&lt;br /&gt;
;[[CPLD]]: &#039;&#039;&#039;C&#039;&#039;&#039;omplex &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;L&#039;&#039;&#039;ogic &#039;&#039;&#039;D&#039;&#039;&#039;evice: Ein programmierbarer Logikbaustein.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
&lt;br /&gt;
;[[DAC]]: &#039;&#039;&#039;D&#039;&#039;&#039;igital to &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;C&#039;&#039;&#039;onverter&lt;br /&gt;
&lt;br /&gt;
;[[DSP]]: &#039;&#039;&#039;D&#039;&#039;&#039;igitaler &#039;&#039;&#039;S&#039;&#039;&#039;ignal&#039;&#039;&#039;p&#039;&#039;&#039;rozessor&lt;br /&gt;
&lt;br /&gt;
;[[DTMF]]: &#039;&#039;&#039;D&#039;&#039;&#039;ual &#039;&#039;&#039;T&#039;&#039;&#039;one &#039;&#039;&#039;M&#039;&#039;&#039;ultiple &#039;&#039;&#039;F&#039;&#039;&#039;requency: Tonwahlverfahren im Telephon.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
&lt;br /&gt;
;[[EEPROM]]: &#039;&#039;&#039;E&#039;&#039;&#039;lectrical &#039;&#039;&#039;E&#039;&#039;&#039;rasable and &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;O&#039;&#039;&#039;nly &#039;&#039;&#039;M&#039;&#039;&#039;emory: Ein nichtflüchtiger [[Speicher#EEPROM|Speicher]].&lt;br /&gt;
&lt;br /&gt;
;[[EMV]]: &#039;&#039;&#039;E&#039;&#039;&#039;lektro&#039;&#039;&#039;m&#039;&#039;&#039;agnetische &#039;&#039;&#039;V&#039;&#039;&#039;erträglichkeit: Beschreibt das Verhalten von Geräten bezüglich Aussenden von elektromagetischen Störungen und die Toleranz bezüglich Einstrahlung eben dieser. &lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
&lt;br /&gt;
;[[FBGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ine &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
;[[FFT]]: &#039;&#039;&#039;F&#039;&#039;&#039;ast &#039;&#039;&#039;F&#039;&#039;&#039;ourier &#039;&#039;&#039;T&#039;&#039;&#039;ransformation: Ein Filter der Signalverarbeitung.&lt;br /&gt;
;[[FIFO]]: &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;O&#039;&#039;&#039;ut: Eine Organisationsform für einen Zwischenspeicher.&lt;br /&gt;
;[[FPGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray: Ein programmierbarer Logikbaustein.&lt;br /&gt;
;[[FPU]]: &#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;U&#039;&#039;&#039;nit: Teil eines Prozessors der Berechnungen mit Gleitkommazahlen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
;GPR: &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;P&#039;&#039;&#039;urpose &#039;&#039;&#039;R&#039;&#039;&#039;egister: Arbeitsregister eines Prozessors. Bei vielen Architekturen müssen Daten in solche Register geladen werden, um sie bearbeiten zu können. Bei [[AVR]] sind das z.B. die Register R0 – R31.&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
&lt;br /&gt;
;HF: Hochfrequenz&lt;br /&gt;
&lt;br /&gt;
;HIL: &amp;amp;rarr; Wikipedia: [http://de.wikipedia.org/wiki/Hardware_in_the_Loop &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;i&#039;&#039;&#039;n the &#039;&#039;&#039;L&#039;&#039;&#039;oop].&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
;ISA: &#039;&#039;&#039;I&#039;&#039;&#039;nstruction &#039;&#039;&#039;S&#039;&#039;&#039;et &#039;&#039;&#039;A&#039;&#039;&#039;rchitecture: Registerstruktur und Befehlssatz eines Prozessors/[[Mikrocontroller]]s bzw. einer Prozessorfamilie.&lt;br /&gt;
&lt;br /&gt;
;[[ISP]]: &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;P&#039;&#039;&#039;rogramming: Der Mikrocontroller wird direkt auf der Zielhardware programmiert.&lt;br /&gt;
&lt;br /&gt;
;ISR: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ervice &#039;&#039;&#039;R&#039;&#039;&#039;outine: Ein Programmstück, das nach Eintreten eines bestimmten Ereignisses ausgeführt wird. Siehe [[Interrupt]].&lt;br /&gt;
&lt;br /&gt;
;IRQ: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;R&#039;&#039;&#039;e&#039;&#039;&#039;q&#039;&#039;&#039;uest: Ein Ereignis, das einen [[Interrupt]] auslöst. In der Regel wird die Programmausführung unterbrochen und ein spezielles Programmstück, eine ISR, ausgeführt und danach zum ursprünglichen Programmcode zurückgekehrt. Viele IRQs können aktiviert oder deaktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
;[[JTAG]]: &#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup: Eine Funktion für komplexe ICs, um diese im aufgelöteten Zustand zu prüfen bzw. zu programmieren und debuggen (Mikrocontroller).&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
&lt;br /&gt;
;LSB: &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das niederwertigste Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: niederwertigstes Bit.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
&lt;br /&gt;
;MSB: &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das höchstwertige Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: höchstwertiges Bit.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
;[[PFC]]: &#039;&#039;&#039;P&#039;&#039;&#039;ower &#039;&#039;&#039;F&#039;&#039;&#039;actor &#039;&#039;&#039;C&#039;&#039;&#039;orrection: Eine Schaltung, die Blindleistung kompensiert&lt;br /&gt;
&lt;br /&gt;
;[[PLL]]: &#039;&#039;&#039;P&#039;&#039;&#039;hase &#039;&#039;&#039;L&#039;&#039;&#039;ocked &#039;&#039;&#039;L&#039;&#039;&#039;oop: Eine Schaltung, die einen Ausgangstakt mit definierter Phaselage zu einem Eingangstakt generiert.&lt;br /&gt;
&lt;br /&gt;
;[[PSU]]: &#039;&#039;&#039;P&#039;&#039;&#039;ower &#039;&#039;&#039;S&#039;&#039;&#039;upply &#039;&#039;&#039;U&#039;&#039;&#039;nit: Bezeichnung für die Stromversorgungseinheit&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
&lt;br /&gt;
;[[RS232]]: &#039;&#039;&#039;R&#039;&#039;&#039;ecommended &#039;&#039;&#039;S&#039;&#039;&#039;tandard 232: Eine Definition zur seriellen Datenübertragung, eng gekoppelt an [[UART]].&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&lt;br /&gt;
;SFR: &#039;&#039;&#039;S&#039;&#039;&#039;pecial &#039;&#039;&#039;F&#039;&#039;&#039;unction &#039;&#039;&#039;R&#039;&#039;&#039;egister: Hardware-Register, über die interne und externe Peripherie eines Prozessors/[[Mikrocontroller]]s konfiguriert wird, und über die Daten ausgetauscht werden. IO-Ports werden z.B. auf bestimmte [[Speicher#Register|SFRs]] abgebildet, auf die dann mit speziellen Befehlen zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
&lt;br /&gt;
;[[UART]]: &#039;&#039;&#039;U&#039;&#039;&#039;niversal &#039;&#039;&#039;A&#039;&#039;&#039;synchronus &#039;&#039;&#039;R&#039;&#039;&#039;eceiver and &#039;&#039;&#039;T&#039;&#039;&#039;ransmitter: Ein Modul in Mikrocontrollern oder PCs zum seriellen Datenaustausch.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;br /&gt;
&lt;br /&gt;
;Z: In der HF-Technik das Formelzeichen für den [[Wellenwiderstand]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59865</id>
		<title>Glossar</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59865"/>
		<updated>2011-08-25T13:32:54Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* F */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
&lt;br /&gt;
;ABI: &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface: Das Binärinterface, das zum Datenaustausch verwendet wird, z.B. die Registerverwendung in einer Funktion und für Parameterübergabe, Datenablage, Strukturlayout, etc. Jeder [[Compiler]] erzeugt Code nach einer bestimmten ABI, so daß der Code aus unterschiedlichen Modulen und Bibliotheken zusammenpasst. Beim Mischen von Hochsprachen mit (Inline-)Assembler muss auf ABI-konformität geachtet werden. Compiler-Schalter können das ABI beeinflussen. Beispiel: -fpack-struct beim GCC.&lt;br /&gt;
&lt;br /&gt;
;[[ADC]]: &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;C&#039;&#039;&#039;onverter.&lt;br /&gt;
&lt;br /&gt;
;[[AGC]]: &#039;&#039;&#039;A&#039;&#039;&#039;utomatic &#039;&#039;&#039;G&#039;&#039;&#039;ain &#039;&#039;&#039;C&#039;&#039;&#039;ontrol. Ein Schaltkreis zur selbsttätigen Verstärkungsanpassung.&lt;br /&gt;
&lt;br /&gt;
;[[ARM]]: Eine Mikrocontrollerfamilie&lt;br /&gt;
&lt;br /&gt;
;[[AVR]]: Eine Mikrocontrollerfamilie von Atmel. Der Ursprung des Namens ist unklar.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
&lt;br /&gt;
;[[BGA]]: &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
&lt;br /&gt;
;Bit: &#039;&#039;&#039;Bi&#039;&#039;&#039;nary Digi&#039;&#039;&#039;t&#039;&#039;&#039;: Kleinste Informationseinheit, siehe [[Bitmanipulation]].&lt;br /&gt;
 &lt;br /&gt;
;BNC: &#039;&#039;&#039;B&#039;&#039;&#039;ajonet &#039;&#039;&#039;N&#039;&#039;&#039;ut &#039;&#039;&#039;C&#039;&#039;&#039;onnector: Ein Steckverbinder für Koaxialkabel.&lt;br /&gt;
&lt;br /&gt;
;[[BSDL]]: &#039;&#039;&#039;B&#039;&#039;&#039;oundary &#039;&#039;&#039;S&#039;&#039;&#039;can &#039;&#039;&#039;D&#039;&#039;&#039;escription &#039;&#039;&#039;L&#039;&#039;&#039;anguage: Eine Sprache für [[boundary scan]]-basiertes Testen und Debuggen.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
&lt;br /&gt;
;[[C]]: Eine weit verbreitete Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
;[[CAN]]: &#039;&#039;&#039;C&#039;&#039;&#039;ontroller &#039;&#039;&#039;A&#039;&#039;&#039;rea &#039;&#039;&#039;N&#039;&#039;&#039;etwork: Ein Netzwerk für kleine [[Mikrocontroller]], ursprünglich für die Automobilbranche entwickelt.&lt;br /&gt;
&lt;br /&gt;
;[[CPLD]]: &#039;&#039;&#039;C&#039;&#039;&#039;omplex &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;L&#039;&#039;&#039;ogic &#039;&#039;&#039;D&#039;&#039;&#039;evice: Ein programmierbarer Logikbaustein.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
&lt;br /&gt;
;[[DAC]]: &#039;&#039;&#039;D&#039;&#039;&#039;igital to &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;C&#039;&#039;&#039;onverter&lt;br /&gt;
&lt;br /&gt;
;[[DSP]]: &#039;&#039;&#039;D&#039;&#039;&#039;igitaler &#039;&#039;&#039;S&#039;&#039;&#039;ignal&#039;&#039;&#039;p&#039;&#039;&#039;rozessor&lt;br /&gt;
&lt;br /&gt;
;[[DTMF]]: &#039;&#039;&#039;D&#039;&#039;&#039;ual &#039;&#039;&#039;T&#039;&#039;&#039;one &#039;&#039;&#039;M&#039;&#039;&#039;ultiple &#039;&#039;&#039;F&#039;&#039;&#039;requency: Tonwahlverfahren im Telephon.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
&lt;br /&gt;
;[[EEPROM]]: &#039;&#039;&#039;E&#039;&#039;&#039;lectrical &#039;&#039;&#039;E&#039;&#039;&#039;rasable and &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;O&#039;&#039;&#039;nly &#039;&#039;&#039;M&#039;&#039;&#039;emory: Ein nichtflüchtiger [[Speicher#EEPROM|Speicher]].&lt;br /&gt;
&lt;br /&gt;
;[[EMV]]: &#039;&#039;&#039;E&#039;&#039;&#039;lektro&#039;&#039;&#039;m&#039;&#039;&#039;agnetische &#039;&#039;&#039;V&#039;&#039;&#039;erträglichkeit: Beschreibt das Verhalten von Geräten bezüglich Aussenden von elektromagetischen Störungen und die Toleranz bezüglich Einstrahlung eben dieser. &lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
&lt;br /&gt;
;[[FBGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ine &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
;[[FFT]]: &#039;&#039;&#039;F&#039;&#039;&#039;ast &#039;&#039;&#039;F&#039;&#039;&#039;ourrier &#039;&#039;&#039;T&#039;&#039;&#039;Transformation: Ein Filter der Signalverarbeitung.&lt;br /&gt;
;[[FIFO]]: &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;O&#039;&#039;&#039;ut: Eine Organisationsform für einen Zwischenspeicher.&lt;br /&gt;
;[[FPGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray: Ein programmierbarer Logikbaustein.&lt;br /&gt;
;[[FPU]]: &#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;U&#039;&#039;&#039;nit: Teil eines Prozessors der Berechnungen mit Gleitkommazahlen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
;GPR: &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;P&#039;&#039;&#039;urpose &#039;&#039;&#039;R&#039;&#039;&#039;egister: Arbeitsregister eines Prozessors. Bei vielen Architekturen müssen Daten in solche Register geladen werden, um sie bearbeiten zu können. Bei [[AVR]] sind das z.B. die Register R0 – R31.&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
&lt;br /&gt;
;HF: Hochfrequenz&lt;br /&gt;
&lt;br /&gt;
;HIL: &amp;amp;rarr; Wikipedia: [http://de.wikipedia.org/wiki/Hardware_in_the_Loop &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;i&#039;&#039;&#039;n the &#039;&#039;&#039;L&#039;&#039;&#039;oop].&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
;ISA: &#039;&#039;&#039;I&#039;&#039;&#039;nstruction &#039;&#039;&#039;S&#039;&#039;&#039;et &#039;&#039;&#039;A&#039;&#039;&#039;rchitecture: Registerstruktur und Befehlssatz eines Prozessors/[[Mikrocontroller]]s bzw. einer Prozessorfamilie.&lt;br /&gt;
&lt;br /&gt;
;[[ISP]]: &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;P&#039;&#039;&#039;rogramming: Der Mikrocontroller wird direkt auf der Zielhardware programmiert.&lt;br /&gt;
&lt;br /&gt;
;ISR: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ervice &#039;&#039;&#039;R&#039;&#039;&#039;outine: Ein Programmstück, das nach Eintreten eines bestimmten Ereignisses ausgeführt wird. Siehe [[Interrupt]].&lt;br /&gt;
&lt;br /&gt;
;IRQ: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;R&#039;&#039;&#039;e&#039;&#039;&#039;q&#039;&#039;&#039;uest: Ein Ereignis, das einen [[Interrupt]] auslöst. In der Regel wird die Programmausführung unterbrochen und ein spezielles Programmstück, eine ISR, ausgeführt und danach zum ursprünglichen Programmcode zurückgekehrt. Viele IRQs können aktiviert oder deaktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
;[[JTAG]]: &#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup: Eine Funktion für komplexe ICs, um diese im aufgelöteten Zustand zu prüfen bzw. zu programmieren und debuggen (Mikrocontroller).&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
&lt;br /&gt;
;LSB: &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das niederwertigste Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: niederwertigstes Bit.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
&lt;br /&gt;
;MSB: &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das höchstwertige Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: höchstwertiges Bit.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
&lt;br /&gt;
;[[RS232]]: &#039;&#039;&#039;R&#039;&#039;&#039;ecommended &#039;&#039;&#039;S&#039;&#039;&#039;tandard 232: Eine Definition zur seriellen Datenübertragung, eng gekoppelt an [[UART]].&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&lt;br /&gt;
;SFR: &#039;&#039;&#039;S&#039;&#039;&#039;pecial &#039;&#039;&#039;F&#039;&#039;&#039;unction &#039;&#039;&#039;R&#039;&#039;&#039;egister: Hardware-Register, über die interne und externe Peripherie eines Prozessors/[[Mikrocontroller]]s konfiguriert wird, und über die Daten ausgetauscht werden. IO-Ports werden z.B. auf bestimmte [[Speicher#Register|SFRs]] abgebildet, auf die dann mit speziellen Befehlen zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
&lt;br /&gt;
;[[UART]]: &#039;&#039;&#039;U&#039;&#039;&#039;niversal &#039;&#039;&#039;A&#039;&#039;&#039;synchronus &#039;&#039;&#039;R&#039;&#039;&#039;eceiver and &#039;&#039;&#039;T&#039;&#039;&#039;ransmitter: Ein Modul in Mikrocontrollern oder PCs zum seriellen Datenaustausch.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;br /&gt;
&lt;br /&gt;
;Z: In der HF-Technik das Formelzeichen für den [[Wellenwiderstand]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Oszilloskop&amp;diff=59864</id>
		<title>Diskussion:Oszilloskop</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Oszilloskop&amp;diff=59864"/>
		<updated>2011-08-25T13:30:42Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Gebraucht */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo,&lt;br /&gt;
könnte jemand das Bild, dass ich hinzugefügt (ganz unten) habe ein bisschen stauchen und vor allem mit einem kleinen Rahmen versehen, damit es zum Seitenlayout passt? Ich weiß nämlich weder wie ich ein hochgeladenes Bild wieder lösche noch wie das mit dem Rahmen geht...;-)&lt;br /&gt;
Danke&lt;br /&gt;
&lt;br /&gt;
Ist wohl schon erledigt, bei mir sehen die Bilder alle gut aus. [[Benutzer:Stefan|Stefan]] 20:23, 25. Mär. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie wäre es, den Meinungsabschnitt 1 aus dem Artikel herauszunehmen und z.B. in diesen Diskussionsteil zu stecken? &amp;quot;&amp;quot;besonders ekelhaft&amp;quot;, &amp;quot;Windmacher&amp;quot;, &amp;quot;Eh, macht mich mal ein Oszilloskop klar!&amp;quot; sind IMHO auch nicht angebracht. Jemand der den Artikel aufruft und liest, braucht kein Überbraten mit dem 3 Seiten Hammervorspann bevor er zu den gesuchten Infos kommt. Diejenigen, die im Forum so nervend fragen, rufen den Artikel sowieso nicht auf und lesen somit diesen Vorspann auch nicht. Ein kurzer Verweis auf die Diskussionsseite (FAQ xyz siehe Diskussionsseite) könnte den alten Text ersetzen. [[Benutzer:Stefan|Stefan]] 20:21, 25. Mär. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Sehe ich auch so. Das ist einfach zu subjektiv für einen Wiki-Artikel. --[[Benutzer:Andreas|andreas]] 20:41, 25. Mär. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Mir kommt es irgendwie so vor, als sei der gesamte Artikel (zumindest aber der 1. Abschnitt) von der Werbeabteilung eines namenhaften Oszi-Herstellers geschrieben, um die Konkurrenz zu diffarmieren. Offensichtlich will der Autor nicht wahr haben, dass es auch zum günstigen Preis bereits gute Oszilloskope gibt. Völlig außer acht gelassen wird, was der Anwender mit damit machen will (vielleicht arbeitet er nur mit niedrigen Frequenzen, dann ist die Bandbreite relativ egal). Auf jeden Fall fehlt die Angabe, wie teuer ein gutes Oszilloskop mindestens sein muss, wahrscheinlich aus dem Grunde, weil der Autor möglichst teure Geräte verkaufen will. (Für analoge Oszis gibt es diese Angabe, aber digitale werden nunmal immer wichtiger und da fehlt sie.) -- [[Benutzer:Paul k|Paul k]] 03:12, 6. Jul. 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Gebraucht=&lt;br /&gt;
Einmal ratet ihr von Gebrauchten ab, weiter unten wird empfohlen, nur Topgeräte zu kaufen und dies aber &amp;quot;nur gebraucht. ???&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Unwürdig?=&lt;br /&gt;
Angeblich ist die &amp;quot;Datenauswertung mit Excel eines Ingenieurs unwürdig&amp;quot;. Dürfte ich dafür mal den Grunde erfahren? Wenn sich Leute in Excel vertippen, ist das deren Problem und wäre in MATLAB genau so falsch und unerkennbar. Wenn da 90% falsch sind, sind das Excels von BWLern...&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Oszilloskop&amp;diff=59863</id>
		<title>Oszilloskop</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Oszilloskop&amp;diff=59863"/>
		<updated>2011-08-25T13:24:33Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Soundkarten-Oszilloskope */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Oszilloskop dient zur grafischen Darstellung des Spannungsverlaufs eines oder mehrerer Signale in einem einstellbaren Zeitbereich.&lt;br /&gt;
&lt;br /&gt;
== Anfragen nach Kaufberatung im Forum ==&lt;br /&gt;
&lt;br /&gt;
===Eh, macht mich mal ein Oszilloskop klar!===&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 unnütz. Besonders dann, wenn sich der Fragesteller nicht mit den Grundlagen eines Oszilloskops und den wichtigsten Kennzahlen bekanntgemacht hat oder nicht weiß, was er messen will. Sogar wenn ein Fragesteller ein paar Grundlagen besitzt, hat er meistens keine Lust verständlich darzustellen, was er will und lässt sich alles aus der Nase ziehen.&lt;br /&gt;
&lt;br /&gt;
Den meisten regelmäßigen Formsteilnehmern ist daher gründlich die Lust an Oszilloskop-Threads vergangen. Bitte verschont uns damit. Verschont uns mit dem x-ten Ausgraben einer billigen, als Oszilloskop bezeichneten Plastikkiste, dem suuupertollen eBay-Schnäppchen, der asiatischen Wundertüte.&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 sie keine Massenware sind.&lt;br /&gt;
&lt;br /&gt;
===Gebraucht ist auch keine Lösung===&lt;br /&gt;
Ja, es gibt gebrauchte Oszilloskope. Manche sind billig. Nein, niemand kann per Ferndiagnose und Glaskugel in ein gebrauchtes Gerät hineinsehen und etwas über den Zustand berichten. Das Risiko eines Kaufs muss jeder selber tragen. Niemand im Forum kann und wird das jemandem abnehmen. &lt;br /&gt;
&lt;br /&gt;
Was man allgemein sagen kann ist, dass man die Finger von Angeboten lassen sollte, wenn der Verkäufer mit den übliche Lügen wie, &amp;quot;Dachbodenfund&amp;quot;, &amp;quot;Keine Ahnung davon&amp;quot;, &amp;quot;Keine Möglichkeit zu testen&amp;quot; kommt. Vorsicht auch bei dem beliebten Trick &amp;quot;Funktioniert, aber aus rechtlichen Gründen (Garantie) verkaufe ich es als defekt, für Bastler&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Es gibt auch Geräte von seriösen Gebrauchthändlern mit Garantie. Allerdings häufig zu so saftigen Preisen, dass dagegen der Kauf eines aktuellen Neugeräts plötzlich attraktiv erscheint.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen?===&lt;br /&gt;
Eine andere Variante, von der man abraten muss, ist die Frage nach Erfahrungen. Besonders dann, wenn man nicht willens ist, die Erfahrungen anderer zur Kenntnis zu nehmen, wenn sie der eigenen Forderung nach einem billigen Superoszilloskop widersprechen. Hinzu kommt, dass man als Unerfahrener nicht aus den Antworten herauslesen kann, ob derjenige wirklich die Erfahrung hat, oder sich seinen eigenen früheren Oszilloskopkauf schönreden möchte. Man braucht Erfahrung um die Erfahrungsberichte anderer richtig einzuordnen.&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus gibt es die Standardantworten derjenigen, die eigene Interessen verfolgen, 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 tadellose&#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. Nicht alle neuen Technologien sind so robust wie die vor 30 Jahren.&lt;br /&gt;
&lt;br /&gt;
===Versandkosten, Einfuhrumsatzsteuer, Zoll, e.v. Gebühr Paketdienst, Gebühr Währungsumrechnung, usw.===&lt;br /&gt;
&lt;br /&gt;
Bei vermeintlichen Internet-Schnäppchen aus dem Ausland (besonders Nicht-EU) werden gerne die in der Überschrift genannten Zusatzkosten ignoriert und sich so das Angebot selbst schöngeredet. Das sind nicht mal alle Kosten, die man haben kann. 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;
* Gebühr für Zahlung ins Ausland&lt;br /&gt;
&lt;br /&gt;
===Spielzeuge aller Art===&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 Graphik-LCD anzuschließen. Das ganze wird dann als digitales Speicheroszilloskop (DSO) zum Sonderpreis verkauft. Je nach Hersteller wird so ein Gerät komplett ohne Gehäuse geliefert (Sicherheit? Da sch**ßen wir doch drauf), oder in einem lustig aufgemachten Plastikgehäuse in MP3-Player-Format, das auch keine großartige Isolation bietet. Am besten ist irgendwo noch ein Gang-Tribal aufgedruckt, um die Coolness zu unterstreichen.&lt;br /&gt;
&lt;br /&gt;
Im Vergleich zu richtigen Oszilloskopen sind dies Spielzeuge. Es nervt, diese Dinger immer wieder im Forum als das Beste seit Erfindung von geschnitten Brot vorgestellt zu bekommen. Ein Blick von weniger als eine Minute Dauer auf die technischen Daten dieser &amp;quot;Oszilloskope&amp;quot;, wenn 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 ein Spielzeug vor sich hat. Fehlende Spannungsfestigkeit und fehlende Frequenzkompensation des Eingangsverstärkers sind sichere Zeichen. Wenn es eine Verbindung zum PC gibt, aber diese nicht isoliert ist, ist das ein weiteres Zeichen.&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;
Fazit, 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;
== Was messen Oszilloskope? ==&lt;br /&gt;
&lt;br /&gt;
Oszilloskope zeigen einen Spannungsverlauf über einen relativ kurzen Zeitraum an. Je besser das Oszilloskop, desto länger ist dieser kurze Zeitraum, beziehungsweise desto schneller darf das Signal sein. Darüber hinaus lassen sich andere Größen, zum Beispiel Ströme, anzeigen, wenn man zusätzlich entsprechende Wandler einsetzt, um aus ihnen eine Spannung zu erzeugen. Bei Mehrkanal-Oszilloskopen kann man üblicherweise auch eine Spannung über eine Spannung darstellen (XY-Modus). Als Kanal bezeichnet man bei einem Oszilloskop einen Eingang für eine Spannung. Die an den Kanäle anliegenden Spannungen können vom Oszilloskop einzeln oder gemeinsam angezeigt werden.&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 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 sogenannte Cursoren, 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 Cursoren 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 ausrechnen 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. 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, manchmal sehr teure  PC-Software des Herstellers angewiesen.&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;
== 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 2 Kanäle.&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 Ansteigszeit 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;
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].&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, ST16, CS10, GOS-310, 72-6602, HUC70, CS1010&lt;br /&gt;
| -&lt;br /&gt;
| 130&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.atten.com.cn/english/products/rf_microwave/AT7328_40.htm Atten AT7328], CS-4128 und andere Bezeichnungen wie 100867.&lt;br /&gt;
| Atten&lt;br /&gt;
| 250&lt;br /&gt;
| 2&lt;br /&gt;
| 20&lt;br /&gt;
| 8 × 10&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| HM 303-6&lt;br /&gt;
| Hameg&lt;br /&gt;
| 600&lt;br /&gt;
| 2&lt;br /&gt;
| 35&lt;br /&gt;
| 8 × 10&lt;br /&gt;
| &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]]&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. Der Vorteil daran 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&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 8 Bit Auflösung abtastet und 2000*8 Bit Speicher hat, kann 2000 Samples abspeichern, was einer Darstellung von 2000*256 Pixeln entspricht. 8 Bit Auflösung ist heutzutage ein gängiger Wert, auch wenn er niedrig erscheint. Ein normales Oszilloskop ist kein Präzisionsmessgerät und 8 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: 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.&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;
Ein Beispiel für günstige Einstiegsmodelle sind die Geräte der [http://owon.co.uk/index.asp Owon PDS Serie]. Für wenig Geld erhält man ein für einfache Anwendungen brauchbares Oszilloskop mit ein paar Highlights (Bildschirmauflösung) aber auch auffälligen Einschränkungen wie eine geringe Abtastrate. Zum Beispiel 250 MS/s beim [http://owon.co.uk/pds6062.asp PDS6062].&lt;br /&gt;
&lt;br /&gt;
Ein vernünftiges Verhältnis von Bandbreite zu Abtastrate haben die Geräte der [http://www.instek.com/html/en/products-l.asp?p1sn=4&amp;amp;p2sn=4 GDS-2000 Serie von GW Instek]. 1 GS/s, allerdings sinkt die Abtastrate je mehr Kanäle man gleichzeitig verwendet. Die 25 kByte Speichertiefe verteilt sich ebenfalls über die benutzten Kanäle. Die neuere GDS-1000&#039;&#039;&#039;A&#039;&#039;&#039; Serie (dazwischen gibt es noch die GDS-1000 Serie), bietet mit Einschränkungen 2 MByte Speichertiefe, ist kompakter als die GDS-2000 Serie und hat fast alle Features der GDS-2000 Serie.   Für Oszilloskope aller GW Instek GDS-Serien gibt es eine [http://code.google.com/p/gds2000tools/ einfache freie Software für Linux], ansonsten ist Linux-Software für DSOs eher selten.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Beispiel für ein Einstiegsmodell ist das [http://www.tek.com/site/ps/0,,40-15314-INTRO_EN,00.html TDS1002] von Tektronix (ca. 1200 Euro). Es hat zwei Kanäle mit je 1 GS/s und ist für Signale bis 60 MHz verwendbar. Die Wandlerauflösung beträgt 8 Bit (256 Stufen), der Speicher ist nur 2 kByte groß. Markengeräte wie das TDS1002 sind häufig Vorbilder für die Geräte der Hersteller weniger bekannter Marken.&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;
| 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;
| DSO3062A||Agilent||800||2||500 ||60||8||4k||320x240||USB||weitgehend baugleich mit Rigol DS5000&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;
| 600 - 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;
| ab 260 Euro + Zoll + Umsatzsteuer (ebay China, penible Zollkontrolle vorhersehbar)&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;
&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;
| 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;
| [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;
| [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;
* Tekway&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;
Auf eBay werden immer noch die Oszilloskope der früheren Firma Wittig (heute Welec), wie zum Beispiel das W2012A, angeboten. Als Alternative zu der leicht 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]&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;
&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 Clones 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 fehlen häufig bei den Clones wie GNU Octave. Man ist hier auf das original MatLab angewiesen.&lt;br /&gt;
&lt;br /&gt;
* Eines Ingenieurs 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.&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>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59862</id>
		<title>DDS basierter Funktionsgenerator mit AD5930</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59862"/>
		<updated>2011-08-25T12:37:56Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* PWM-Signale */ tipp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite soll als Projektseite für einen DDS-basierten Funktionsgenerator dienen. Bekannte Funktionsgeneratoren auf Basis von DDS-ICs der Firma Analog Devices sind bekannt und im Internet einsehbar (bspw. DDS10, DDS20, DDS130).&lt;br /&gt;
Allen Funktionsgeneratoren ist eines gemein, sie sind sehr einfach gehalten und können es mit kommerziellen Funktionsgeneratoren nicht aufnehmen. Die Rekonstruktionsfilter sind zum Teil unbefriedigend dimensioniert und erfüllen insgesamt, nach Auffassung des Projektinitiators, nicht den Anspruch an einen Funktionsgenerator für die Messtechnik.&lt;br /&gt;
&lt;br /&gt;
Das Projekt nimmt bewusst Abstand von Projekten mit &amp;quot;großen&amp;quot; DDS-ICs, die beispielsweise für Eigenbau-Netzwerkanalysatoren, Signalgeneratoren, Antennenanpassgeräten oder Impedanzmessgeräten und ähnlichen Schaltungen zum Einsatz kommen. Derlei Projekte sind inspirierend, haben jedoch völlig andere Ansprüche.&lt;br /&gt;
Daher soll das erklärte Ziel dieses Projektes ein Funktionsgenerator sein, der das Optimum aus dem AD5930 herausholen kann und als Vorlage für eigene Schaltungen mit DDS-ICs dient.&lt;br /&gt;
Zunächst soll der Funktionsgenerator komplett via PC ansteuerbar sein, eine Erweiterung als Standalone-Gerät ist aber ebenso denkbar.&lt;br /&gt;
&lt;br /&gt;
= Worte vom Projektinitiator an die Gemeinde =&lt;br /&gt;
&lt;br /&gt;
Es wurde bewusst Mikrocontroller.net für das Projekt gewählt, da diese Plattform keinem kommerziellem Hintergedanken entspricht, für jeden auch ohne Anmeldung einsehbar ist und der Projektinitiator, nach eigener Erfahrung der Auffassung ist, dass viele sich gegenüber einer englischsprachigen Plattform mit qualifizierten Beiträgen zurückhalten.&lt;br /&gt;
Jeder der sich inspiriert fühlt sein Wissen mit anderen zu teilen und Lust hat am Projekt teilzunehmen ist aufgerufen, diese Projektseite mit Informationen zu füllen.&lt;br /&gt;
&lt;br /&gt;
= Basisgerät =&lt;br /&gt;
&lt;br /&gt;
Das Basisgerät soll als PC-Gerät ausgeführt sein. Da alle Schnittstellen jedoch auch über Pfostensteckeranschlüsse zugänglich gemacht werden, ist es problemlos möglich, den Funktionsgenerator zu einem Standalone-Gerät auszubauen.&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
* Signalarten: Sinus, Dreieck, Rampe, Rechteck, Puls&lt;br /&gt;
* minimale Frequenz: 3Hz&lt;br /&gt;
* maximale Frequenz: Sinus- und Rechtecksignale bis 20MHz, Dreieck und Rampe bis 2MHz&lt;br /&gt;
* Modi: Kontinuierlich, Burst, Sweep, Modulation (AM/FM)&lt;br /&gt;
* Signalausgang: 10Vpp&lt;br /&gt;
* Offset: ±5V&lt;br /&gt;
&lt;br /&gt;
== Die Schaltungsbaugruppen ==&lt;br /&gt;
&lt;br /&gt;
Der komplette Funktionsgenerator wird im Folgenden in einzelnen Baugruppen definiert und die Baugruppen kontinuierlich in ihrer Funktion erklärt. Sie stellen zugleich die einzelnen Baustellen des Projektes dar.&lt;br /&gt;
&lt;br /&gt;
=== Das Herzstück: DDS-IC AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Der AD5930 ist ein Signalgeneratorbaustein von Analog Devices, der nach dem DDS-Prinzip (Digital Direct Synthesis) arbeitet. Mit dem speziellen Exemplar lassen sich sinus- und dreieckförmige Signale erzeugen. Dazu wird ein Frequenzwort per SPI-Schnittstelle an das DDS-IC übertragen.&lt;br /&gt;
Im Gegensatz zu anderen DDS-Bausteinen von Analog Devices ist dieses Frequenzwort beim AD5930/5932 nur 24bit breit. Bei einer, laut Datenblatt angegebenen maximalen Taktfrequenz von 50MHz ergibt sich somit:&lt;br /&gt;
&lt;br /&gt;
kleinste auszugebende Frequenz/kleinstes Frequenzinkrement: 2,980232239 Hz&lt;br /&gt;
maximale Ausgangsfrequenz: 25 MHz&lt;br /&gt;
&lt;br /&gt;
Er ist der direkte Bruder des AD5932. Beide unterscheiden sich nur geringfügig. Der AD5930 verfügt über einen differentiellen Stromausgang, der AD5932 hingegen über einen einzelnen Spannungsausgang, bei dem ein 200Ω Abschlusswiderstand bereits integriert worden ist. Außerdem wurde die Ansteuerung der Vollaussteuerung beim AD5932 eingespart.&lt;br /&gt;
&lt;br /&gt;
Beide verfügen über eine Sweepfunktion mit verschiedenen Modi. So ist es möglich, den Sweep vollständig intern durchzuführen oder aber über einen Interrupt den nächsten Frequenzschritt zu setzen, sodass hier ein aufwändiges Neuschreiben der nächsten Frequenz entfällt. Damit minimiert sich die Ansteuerung erheblich und die Datenübertragung zum IC wird erheblich reduziert.&lt;br /&gt;
Zum Sweepen definiert man einfach nur die Startfrequenz, das Frequenzinkrement (positiv oder negativ) und die Anzahl von Inkrementen.&lt;br /&gt;
Darüber hinaus lässt sich definieren, ob nur eine bestimmte Anzahl an Sweeps durchgeführt oder kontinuierlich gesweept werden soll.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich lässt sich mit dem AD5930 ein Burstsignal mit einer definierten Anzahl an Schwingungen erzeugen.&lt;br /&gt;
&lt;br /&gt;
Der AD5930 verfügt über einen Eingang (FullScaleAdjust - FSADJUST) über den sich Amplitudenmodulation, aber auch Amplitudenkorrekturen durchführen ließe.&lt;br /&gt;
&lt;br /&gt;
Eine microcontroller-gestützte Frequenzmodulation ist ebenfalls denkbar.&lt;br /&gt;
&lt;br /&gt;
Programmiert werden beide Bausteine via SPI, mit maximalen Taktgeschwindigkeiten von bis zu 40MHz.&lt;br /&gt;
&lt;br /&gt;
All diese Eigenschaften und noch einige weitere hier vielleicht nicht erwähnte prädestinieren dieses DDS-IC als Herzstück für einen Funktionsgenerator.&lt;br /&gt;
&lt;br /&gt;
=== Taktquelle für den AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Dem Datenblatt zum AD5930 kann man entnehmen, dass der AD5930 mit einem Takt aus einem Quarzoszillator von 50MHz betrieben werden kann.&lt;br /&gt;
Da sich hiermit, wie man der [http://www.analog.com/static/imported-files/application_notes/AN-1044.pdf Application Note AN-1044] entnehmen kann, ein Frequenzinkrement von ungünstigen &amp;lt;math&amp;gt;50 MHz / 2 ^ {24} = 2,980232239 Hz&amp;lt;/math&amp;gt; ergibt, ist es sinnvoll den AD5930 leicht zu übertakten. Dazu wird von 3Hz pro Frequenzinkrement auf die notwendige Taktfrequenz zurück gerechnet.&lt;br /&gt;
Es ergeben sich &amp;lt;math&amp;gt;3 Hz * 2 ^ {24} = 50,331648 MHz&amp;lt;/math&amp;gt; für die Taktquelle.&lt;br /&gt;
&lt;br /&gt;
Da diese Frequenzschritte zumindest für kleine Frequenzen relativ groß erscheinen, ist vorgesehen zwischen zwei Taktfrequenzen umzuschalten, sodass mit einer Taktfrequenz von 3,3554432 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. erreicht wird. (Details siehe nachfolgender Text)&lt;br /&gt;
&lt;br /&gt;
Somit ergibt sich für den fein aufgelösten Frequenzbereich 0,2 Hz .. 1 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. und für den grob aufgelösten Frequenzbereich 3 Hz .. 20 MHz eine Frequenzauflösung von 3 Hz/Inkr.&lt;br /&gt;
&lt;br /&gt;
Um die Taktfrequenzen zu erzeugen, wird zunächst ein programmierbarer Synthesizer, der CDCE913 von Texas Instruments, eingesetzt. Mit diesem und einem extern angeschlossenen Quarz ist es möglich, die notwendige Taktfrequenz für den DDS-IC bereitzustellen. Er verfügt über eine 2-Wire I²C-Schnittstelle, sodass zur Programmierung lediglich eine Takt- (SCL) und eine Datenleitung (SDA) notwendig sind.&lt;br /&gt;
Findet sich ein ähnliches IC mit 3-Wire SPI-Schnittstelle, so ist vorgesehen den CDCE913 zu ersetzen, da dann nur noch eine ChipSelect-Leitung notwendig wird und Takt- bzw. Datenleitung für AD5930 und PLL-IC gemeinsam verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Es stehen eine Reihe von Quarzen zur Verfügung, mit denen sich die Taktfrequenz erzeugen lässt. Es sind lediglich ein paar wenige Randbedingung bei diesem IC zu beachten, um den richtigen Quarz auszuwählen:&lt;br /&gt;
&lt;br /&gt;
1.) &amp;lt;math&amp;gt;fmclk = fout = {fin / Pdiv} * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit M = 1 .. 511, N = 1 .. 4095 und Pdiv = 1 .. 127&lt;br /&gt;
&lt;br /&gt;
2.) &amp;lt;math&amp;gt;fVCO = fin * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit fVCO = 80 MHz .. 230 MHz und fin = 8 MHz .. 32 MHz&lt;br /&gt;
&lt;br /&gt;
Die Frequenz fout sind in unserem Fall die gewünschten 50,331648 MHz.&lt;br /&gt;
Mit den Randbedingungen ergibt sich für Pdiv = 2 .. 4 und daraus bspw. folgende mögliche Kombinationen für den zu verwendenden Quarz, wenn Pdiv = 2 gewählt wurde:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; &#039;&#039;f(Quarz) in [MHz]: &#039;&#039; M (1…511)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;8,192:&#039;&#039; 125, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;9,8304:&#039;&#039; 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;11,0592:&#039;&#039; 225&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;12,288:&#039;&#039; 125, 250, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;14,7456:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;16,384:&#039;&#039; 250, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;19,6608:&#039;&#039; 25, 50, 75, 100, 125, 150, 200, 225, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;22,1184:&#039;&#039; 225, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;24,576:&#039;&#039; 125, 250, 375, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;29,4912:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
Die M-Werte der Tabelle reduzieren sich, wenn man Pdiv = 3 oder 4 wählt.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich einen Quarz mit maximal möglicher Frequenz zu verwenden, da dann der Frequenzfehler minimal wird.&lt;br /&gt;
&lt;br /&gt;
Als leicht erhältlicher Standardquarz (Referenz sei bspw. Reichelt) kann daher derjenige mit 24,576 MHz zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
Mit diesem Quarz und dem Ändern des Teilers von Pdiv = 2 auf Pdiv = 6 ergibt sich eine Frequenzauflösung des AD5930 auf 1 Hz, respektive einer Taktfrequenz des AD5930 von fmclk = 16,777216 MHz und mit Pdiv = 12 eine Auflösung von 0,5 Hz, respektive einer Taktfrequenz von fmclk = 8,388608 MHz. Zu beachten ist dabei, dass sich dadurch natürlich die maximal auszugebende Frequenz ebenfalls reduziert. Mit Pdiv = 6 sind dies fmax = 8,388608 MHz und für Pdiv = 12 entsprechend fmax = 4,194304 MHz.&lt;br /&gt;
&lt;br /&gt;
Somit kann durch einfaches Ändern von Pdiv die Taktfrequenz bzw. die Frequenzauflösung verändert werden.&lt;br /&gt;
&lt;br /&gt;
Den Zusammenhang zwischen Taktfrequenz und Frequenzauflösung zeigt die nachfolgende Tabelle noch einmal:&lt;br /&gt;
&lt;br /&gt;
fmclk = 50,331648 MHz --&amp;gt; foutmin = 3 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 41,94304 MHz --&amp;gt; foutmin = 2,5 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 33,554432 MHz --&amp;gt; foutmin = 2 Hz --&amp;gt; Pdiv = 3&lt;br /&gt;
&lt;br /&gt;
fmclk = 25,165824 MHz --&amp;gt; foutmin = 1,5 Hz --&amp;gt; Pdiv = 4&lt;br /&gt;
&lt;br /&gt;
fmclk = 16,777216 MHz --&amp;gt; foutmin = 1 Hz --&amp;gt; Pdiv = 6&lt;br /&gt;
&lt;br /&gt;
fmclk = 8,388608 MHz --&amp;gt; foutmin = 0,5 Hz --&amp;gt; Pdiv = 12&lt;br /&gt;
&lt;br /&gt;
fmclk = 4,194304 MHz --&amp;gt; foutmin = 0,25 Hz --&amp;gt; Pdiv = 24&lt;br /&gt;
&lt;br /&gt;
fmclk = 3,3554432 MHz --&amp;gt; foutmin = 0,2 Hz --&amp;gt; Pdiv = 30&lt;br /&gt;
&lt;br /&gt;
fmclk = 2,0971515 MHz --&amp;gt; foutmin = 0,125 Hz --&amp;gt; Pdiv = 48&lt;br /&gt;
&lt;br /&gt;
fmclk = 1,6777216 MHz --&amp;gt; foutmin = 0,1 Hz --&amp;gt; Pdiv = 60&lt;br /&gt;
&lt;br /&gt;
Wer es genauer als ein Quarz braucht kann auch ein TCXO oder gar einen TCVCXO verwenden. Hierbei ist die Auswahl an Bausteinen jedoch deutlich eingeschränkter. Eine Möglichkeit ist die Verwendung eines TCXO mit einer Frequenz von 16,384 MHz.&lt;br /&gt;
Mit ihm lassen sich die aufgeführten Taktfrequenzen ebenfalls einstellen.&lt;br /&gt;
Es ist anzumerken, dass der CDCE913 über die Möglichkeit verfügt zwei PLL-Settings vorzuprogrammieren und im EEPROM zu hinterlegen, sodass zwischen zwei Ausgangsfrequenzen durch einfaches Umschalten eines Statusregisters umgeschaltet werden kann. Es kann aber auch zur Laufzeit auf die Register des PLL-Bausteins zugegriffen und Registerwerte neu geschrieben werden, sodass die maximale Ausgangsfrequenz des AD5930 voll ausgenutzt werden kann, ohne dabei auf sehr tiefe Frequenzen verzichten zu müssen.&lt;br /&gt;
&lt;br /&gt;
=== Die Programmierung des DDS-ICs ===&lt;br /&gt;
&lt;br /&gt;
In einem ersten Schritt soll der AD5930 über einen FT232 vollständig vom PC aus programmiert werden. Das macht Arbeiten im Bereich Mikrocontroller zunächst überflüssig.&lt;br /&gt;
Mit einem kleinen Tool kann der FT232 via Bit Banging als USB to SPI Programmer genutzt werden, sodass der Schwerpunkt zunächst vollständig im Bereich Schaltungsentwurf liegen kann.&lt;br /&gt;
Eine Adaptierung eines Mikrocontrollers ist dann in einer späteren Ausbaustufe &amp;quot;schnell&amp;quot; erledigt.&lt;br /&gt;
&lt;br /&gt;
Auf dieser [http://www.openschemes.com/modules/wordpress/2009/11/05/bit-banging-spi-on-arduinos-ft232rl/1/ Webseite] wird gezeigt, dass via Bit Banging der FT232 als USB to SPI Programmer verwendet werden kann. Dazu werden einfach die drei notwendigen SPI-Leitungen vom AD5930 mit dem FT232 wie folgt verbunden:&lt;br /&gt;
&lt;br /&gt;
* Beschreibung - AD5930 - FT232&lt;br /&gt;
*  ChipSelect - FSync  - RI&lt;br /&gt;
*    Clock    - SCLK   - CTS&lt;br /&gt;
*     Data    - SDATA  - MOSI&lt;br /&gt;
&lt;br /&gt;
und das [http://www.openschemes.com/uploads/wordpress/2009/11/ft232spi.zip SPI Demo Tool] gestartet.&lt;br /&gt;
Nachdem der FT232 erkannt wurde drückt man &amp;quot;Open Interface&amp;quot;. Man vergewissert sich noch einmal, dass die Einstellungen für die SPI-Leitungen auch stimmen und klickt auf &amp;quot;Do bitbang Setup&amp;quot;.&lt;br /&gt;
Nun braucht man nur noch die Bitlänge von 8 auf 16 umstellen und kann durch direktes Schreiben der Adressen den AD5930 programmieren.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel soll gezeigt werden, wie ein 1MHz Sinussignal schnell per Hand mit diesem Tool programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* 06db    - setzt die notwendigen Einstellungen in ControlRegister&lt;br /&gt;
* d051    - MSB der Startfrequenz für 1MHz&lt;br /&gt;
* ceb8    - LSB der Startfrequenz für 1MHz&lt;br /&gt;
* 3000    - MSB des Frequenzinkrements&lt;br /&gt;
* 2000    - LSB des Frequenzinkrements&lt;br /&gt;
* 1002    - minimale Anzahl der Frequenzinkremente&lt;br /&gt;
&lt;br /&gt;
Die Programmierung ist kinderleicht und kann bequem als PC-Software ausgeführt werden, sodass hierfür kein Mikrocontroller zum Einsatz kommen muss.&lt;br /&gt;
Wie der AD5930/32 für einen Sweep oder eine Einzelfrequenz programmiert werden kann, findet sich beispielhaft auch in der Application Note-1044 von Analog Devices.&lt;br /&gt;
&lt;br /&gt;
=== Der 1. Verstärker ===&lt;br /&gt;
&lt;br /&gt;
Das Datenblatt des AD5930 empfiehlt, dass an seinen DAC-Ausgängen ein mind. 200Ω Widerstand als Last angeschlossen wird, zu denen parallel ein Kondensator von 20pF spendiert werden soll, um ein Rekonstruktionsfilter 1. Ordnung auszubilden. Aus der Stromquelle des DAC wird somit eine Spannungsquelle.&lt;br /&gt;
Je nach Taktfrequenz muss der Wert der Kapazität angepasst werden. Gesetz dem Fall der AD5930 wird mit eine Taktfrequenz von 41,94304MHz gespeist erhöht sich der Wert der Kapazität auf 39pF.&lt;br /&gt;
Um die Vorteile eines differentiellen Ausgangs nutzen zu können kommen in aller Regel Übertrager zum Einsatz.&lt;br /&gt;
Analog Devices, CN-0142, &amp;quot;High CMRR Circuit for Converting Wideband Complementary DAC Outputs to Single-Ended Without Precision Resistors&amp;quot; schreibt zu der Thematik:&lt;br /&gt;
&amp;quot;...Traditional methods for converting wideband DAC comple-mentary current outputs to a single-ended signal are to either use a center-tapped transformer or a single op amp in a differential-to-single-ended configuration. However, the transformer low frequency nonlinearities may limit its use near dc; and the operational amplifier approach requires closely matched resistors to provide dc common-mode rejection, load impedance, and gain matching between the complementary DAC outputs. Errors in the matching will produce errors at the final output...&amp;quot;.&lt;br /&gt;
Abhilfe kann hier ein differentieller Verstärker wie der AD8129/AD8130 schaffen, der über einen differentiellen Eingang und einen Single-Ended Ausgang verfügt. Aus dem symmetrischen Signal wird somit ein unsymmetrisches, wie es in den meisten Anwendungen benötigt wird. Der Verstärker soll das Rekonstruktionsfilter treiben, mit dem es im nächsten Abschnitt weiter geht.&lt;br /&gt;
&lt;br /&gt;
=== Das Rekonstruktionsfilter ===&lt;br /&gt;
&lt;br /&gt;
Die DDS macht prinzipbedingt den Einsatz eines Rekonstruktionsfilters notwendig. Dieses sorgt dafür, dass das Taktsignal des DDS-ICs mit ausreichender Dämpfung unterdrückt wird.&lt;br /&gt;
In verschiedenen Papern findet man ganz unterschiedliche Angaben zu dieser notwendigen Dämpfung. Einige sprechen von -60dBr (bspw. Aufsatz zur Tiefpassfilter - Dimensionierung von Gehard Rohm) andere sogar von -70dBr (bspw. Application Note  #5 von www.thinkSRS.com) im Bereich der Funktionsgeneratoranwendungen. Die Einheit dBr heißt Decibel relativ und entspricht dem Verhältnis zweier Spannungspegel.&lt;br /&gt;
&lt;br /&gt;
Letzt genannte Quelle schlägt für den Einsatz von DDS-ICs die Verwendung elliptischer Filter vor, da sie mit einem steilen Übergangsbereich und kleinem Ripple im Durchlassbereich entworfen werden können.&lt;br /&gt;
Als Filter wird daher ein elliptisches Filter eingesetzt. Dieses wird mittels freien Tools (bsp. AADE Filter Design) dimensioniert und ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Wie im Abschnitt [http://www.mikrocontroller.net/articles/DDS_basierter_Funktionsgenerator_mit_AD5930#Taktquelle_f.C3.BCr_den_AD5930 Taktquelle für den AD5930] nachzulesen ist, soll zwischen zwei verschiedenen Taktfrequenzen umgeschaltet werden. Demzufolge sind zwei verschiedene Rekonstruktionsfilter erforderlich.&lt;br /&gt;
Für das Taktsignal 3,3554432 MHz kommt ein aktives Rekonstruktionsfilter zum Einsatz, da bei passiven Filtern große Induktivitäten notwendig würden, was mit höheren Filterverlusten einhergeht, da die DC-Widerstände großer Induktivitäten ebenfalls recht groß ausfallen.&lt;br /&gt;
Für das Taktsignal 50,331648 MHz kommt dagegen ein elliptisches Filter, auch Cauer-Filter genannt, zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Vielen graut es davor sich mit der Filterthematik zu beschäftigen, es soll jedoch gezeigt werden, dass der Entwurf eines ordentliches Filters mit modernen PC-gestützen Mitteln kein Geheimnis darstellt.&lt;br /&gt;
&lt;br /&gt;
Die erste Frage die sich jedem, der noch nie ein Filter entworfen hat, stellt ist, wo muss die Filtergrenze liegen. Dazu ein wenig Theorie:&lt;br /&gt;
&lt;br /&gt;
Es werde angenommen der DDS-IC ist mit fs=50MHz getaktet. Die maximale Ausgangsfrequenz ergibt sich laut Nyquist-Abtasttheorem zu fmax = 25 MHz. Das heißt, dass 25 MHz noch vom Filter durchgelassen werden sollen, aber das Stopband auch bereits bei fs-fmax = 25 MHz beginnen soll, ein Widerspruch in sich. Da es in der Realität keine unendlich steilen Filter gibt, trifft man einen Kompromiss und legt die maximale Ausgangsfrequenz auf fs/3. Dies würde bedeuten, dass uns nur etwa f = 16.67 MHz als maximale Ausgangsfrequenz der DDS zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
Wir wollen uns diesem Kompromiss ein wenig entgegensetzen und setzen die Filtergrenze etwas höher, also bei 20 MHz an. Innerhalb einer Dekade (fs-fmax = 30MHz) soll das Signal um -60 dBc bis -70 dBc (dBc - Decibel under Carrier) gedämpft werden.&lt;br /&gt;
Im Folgenden geht es also darum, ein Filter mit den getroffenen Annahmen zu entwerfen. Es wird geprüft, ob ein Filter 7. Ordnung diesem Anspruch gerecht werden kann oder ob ein Filter 9. Ordnung eingesetzt werden muss.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe des Programmes AADE Filter Design entwerfen wir einen Elliptic LowPass mit folgenden Parametern:&lt;br /&gt;
&lt;br /&gt;
F1 = 20 MHz&lt;br /&gt;
F2 = 30 MHz&lt;br /&gt;
Apass = 0,01 (warum 0,01 wird nachfolgend erklärt)&lt;br /&gt;
Order = 7 bzw. 9&lt;br /&gt;
Zin = 50 Ω&lt;br /&gt;
Zout = 50 Ω&lt;br /&gt;
&lt;br /&gt;
Das Passband Ripple wird bewusst sehr klein gewählt, da es durch die Annäherung der errechneten Bauteilwerte an erhältliche und parasitären Effekten wieder zunehmen wird. Wenn man ein Passband Ripple von 0,5 dB erreicht wäre das großartig, mit kleiner 1 dB wären man aber immer noch sehr zufrieden. Wieso?&lt;br /&gt;
&lt;br /&gt;
Das wird rechnerisch schnell deutlich:&lt;br /&gt;
&lt;br /&gt;
Geht man davon aus, dass das Filter mit einer Eingangsimpedanz von 50 Ω von einer Quelle mit 50 Ω Ausgangsimpedanz und einem Signal von 1 V (0 dB) Amplitude gespeist wird, so wird man, wenn das Filter eine Ausgangsimpedanz von 50 Ω hat und man das Filter mit 50 Ω abschließt noch die halbe Spannung messen können, also 500 mV (ca. -6,02 dB).&lt;br /&gt;
Lässt man nun 0,3 dB Ripple zu, so entspricht das einem Wert von -6.32 dB oder 483 mV, bei 0,5 dB sind es 472 mV und bei 1 dB noch rund 446 mV.&lt;br /&gt;
&lt;br /&gt;
Die Bauteile werden zunächst als verlustfrei betrachtet und das Programm schlägt für beide Filter eine Bauteilbemessung vor:&lt;br /&gt;
&lt;br /&gt;
Filter 7. Ordnung [[http://www.mikrocontroller.net/attachment/70868/FG-AD5930-3.png]], [[http://www.mikrocontroller.net/attachment/70869/FG-AD5930-4.png]]&lt;br /&gt;
&lt;br /&gt;
Filter 9. Ordnung [[http://www.mikrocontroller.net/attachment/70870/FG-AD5930-5.png]], [[http://www.mikrocontroller.net/attachment/70871/FG-AD5930-6.png]]&lt;br /&gt;
&lt;br /&gt;
Anhand der Bauteilbemessung wird schnell ersichtlich, dass es keine diskreten Kondensatoren mit 0,xxxpF gibt und auch keine Induktivitäten mit Werten unterhalb des nH-Bereiches.&lt;br /&gt;
&lt;br /&gt;
Das Entwurftool lässt es aber dennoch zu, dass man sich die Filterkurve anschauen kann. Im direkten Vergleich der beiden Filter zeigt sich, dass mit dem Filter 7. Ordnung gerade etwa -60 dBr gegenüber dem maximalen Ausgangssignal an Dämpfung erreicht werden. Wir konzentrieren uns daher auf das Filter 9. Ordnung, da es mit etwa -90 dBr deutlich vielversprechender ausschaut.&lt;br /&gt;
&lt;br /&gt;
Das Filter muss nun realen Bauteilwerten angenähert werden. Dies tut man, indem man einfach schaut, was die Hersteller für Bauteilwerte liefern können. Im einfachsten Fall gibt es genau den Wert, den man sucht, andernfalls kann man auch durch Verschaltung mehrerer Bauteile (Induktivitäten oder Kapazitäten in Serie oder parallel angeordnet) auf den gewünschten Bauteilwert kommen.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich, eine SpiceSimulation durchzuführen, in der man das errechnete Filter mit dem aus realen Bauteilwerten bestehenden vergleicht. Hier kann, durch Hinzufügen des Serienwiderstandes bzw. der Güte und der Resonanzfrequenz bzw. der parasitären Kapazität, schon abgeschätzt werden, wie das Filter in etwa real wirken wird. Dies setzt jedoch ein gut durchdachtes, kapazitätsarmes Layout voraus.&lt;br /&gt;
&lt;br /&gt;
Wer sich das nicht antun möchte, der baut das Filter &amp;quot;einfach&amp;quot; auf und vermisst es bspw. mit einem Gain-Phase-Analyser, einem Netzwerkanalysator oder mit einem Spektrumanalyser mit integriertem Tracking Generator o.ä. brauchbarem Messequipment.&lt;br /&gt;
&lt;br /&gt;
Nähert man das mit den oben genannten Randbedingungen entworfene Filter 9. Ordnung an real erhältliche Bauteilwerte an, so erhält man bspw. das folgende Filter:&lt;br /&gt;
&lt;br /&gt;
*Dipol 1: &#039;&#039;&#039;120pF&#039;&#039;&#039;&lt;br /&gt;
*Dipol 2: &#039;&#039;&#039;8pF || 540nH&#039;&#039;&#039; (aus 270nH + 270nH)&lt;br /&gt;
*Dipol 3: &#039;&#039;&#039;250pF&#039;&#039;&#039;(aus 150pF || 100pF)&lt;br /&gt;
*Dipol 4: &#039;&#039;&#039;43p&#039;&#039;&#039; (aus 33pF || 10pF) &#039;&#039;&#039;|| 530nH&#039;&#039;&#039; (aus 330nH + 200nH)&lt;br /&gt;
*Dipol 5: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 6: &#039;&#039;&#039;56pF || 490nH&#039;&#039;&#039; (aus 270nH + 220nH)&lt;br /&gt;
*Dipol 7: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 8: &#039;&#039;&#039;30pF&#039;&#039;&#039; (aus 15pF || 15pF) &#039;&#039;&#039;|| 480nH&#039;&#039;&#039; (aus 330nH + 150nH)&lt;br /&gt;
*Dipol 9: &#039;&#039;&#039;100pF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies Filter ist in folgender Simulation noch einmal gezeigt [[http://www.mikrocontroller.net/attachment/70886/FG-AD5930-7.png]], [[http://www.mikrocontroller.net/attachment/70887/FG-AD5930-8.png]].&lt;br /&gt;
&lt;br /&gt;
Fügt man nun den Bauteilwerten noch ihre parasitären Elemente hinzu (Verluste in den Bauteilen), diese findet man in den Datenbättern der Bauteile, so kann man das Filter der Realität weiter annähern. Dies ist hier mal für Induktivitäten eines Herstellers unterschiedlicher Serien und Gehäusegrößen durchgeführt worden [[http://www.mikrocontroller.net/attachment/71186/FG-AD5930-9.png]].&lt;br /&gt;
&lt;br /&gt;
Nach diesen Ergebnissen fällt die Bauteilwahl auf die AS-Serie im Package 0805.&lt;br /&gt;
&lt;br /&gt;
Als Kondensatoren werden NPO-Typen in 0805 mit ±0,5pF bei kleinen Bauteilwerten und ±5% bei den größeren Werten für die Toleranz eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Nun geht es an den Aufbau des Filters. Hier findet sich das Testlayout, das speziell für dieses Filter [[http://www.mikrocontroller.net/attachment/74720/Filter.png]] verwendet wurde. Die in Serie geschalteten Induktivitäten werden im 90°-Winkel zueinander angeordnet, um die Kopplung der Induktivitäten untereinander zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
Nach dem Vermessen des Filters wird dessen Übertragungsfunktion (Uout/Uin in dB) dem ursprünglich simulierten Filter mit realen, verlustbehafteten Bauteilwerten graphisch gegenüber gestellt [[http://www.mikrocontroller.net/attachment/79100/Filtermessung.png]].&lt;br /&gt;
&lt;br /&gt;
Es zeigt sich, dass das reale Filter [[http://www.mikrocontroller.net/attachment/79034/Filter.JPG]] recht gut gelungen ist, sodass diese Bauteilwerte direkt im weiteren Projekt verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Für den fein aufgelösten Frequenzbereich soll die Taktfrequenz des DDS 3,3554432 MHz betragen.&lt;br /&gt;
Um ein aktives Filter zu entwerfen kommt das kostenlos Programm FilterPro von Texas Instruments zum Einsatz.&lt;br /&gt;
Wir legen folgende Randbedingungen fest:&lt;br /&gt;
&lt;br /&gt;
* Passband: Low-Pass&lt;br /&gt;
* Circuit-Type: MFB Single-Ended bzw. MFB Fully Differential&lt;br /&gt;
* Anzahl Pole: 4&lt;br /&gt;
* Cutoff Freq. 1,5M&lt;br /&gt;
* Filter Type: Butterworth&lt;br /&gt;
* Value Display: Component Values&lt;br /&gt;
* Components: Res. E48 und Cap. E12&lt;br /&gt;
&lt;br /&gt;
und erhalten sofort ein Filter mit der Bemessung der passiven Bauelemente und einer Dämpfung von 80 dB/Dekade.&lt;br /&gt;
Bei der Wahl der richtigen OPVs für das Filter hilft die Angabe Req. GBP (erfoderliches Verstärkungsbandbreiteprodukt).&lt;br /&gt;
&lt;br /&gt;
In diesem Abschnitt wurde gezeigt, dass die PC gestützte Auslegung eines Rekonstruktionsfilters bei Weitem nicht so kompliziert ist, wie es zunächst erscheinen mag, sodass jeder mit dem hier gezeigten Beispiel in der Lage sein sollte, sein eigenes Rekonstruktionsfilter auszulegen.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos zum Filter können der [http://www.mikrocontroller.net/topic/168134#1606968 Diskussionsrunde] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenkorrektur ===&lt;br /&gt;
&lt;br /&gt;
Der FSAdjust-Eingang ermöglicht eine Korrektur der Amplitude, sodass hier Verluste durch das Filter bzw. Passband Ripple, durch eine Rückkoppplung vom Verstärker zum DDS-IC, ausgeglichen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Endstufe ===&lt;br /&gt;
&lt;br /&gt;
Übliche Funktionsgeneratoren verfügen über eine Endstufe, mit der Ausgangspegel von 20Vpp möglich sind. Ähnliche Ausgangspegel sollen auch hier das Ziel sein.&lt;br /&gt;
&lt;br /&gt;
==== DC-Offsetverschiebung ====&lt;br /&gt;
&lt;br /&gt;
Eine Gleichspannungsoffsetverschiebung soll ebenfalls implementiert werden. Diese kann analog von einem Potentiometer aus erfolgen, soll später dann jedoch gegen einen DAC ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Selbstverständlich gehört auch eine durchdachte Spannungsversorgung in den Rahmen dieses Projektes, das den kompletten Funktionsgenerator mit den erforderlichen Spannungen versorgt.&lt;br /&gt;
&lt;br /&gt;
== Sonderfunktionen ==&lt;br /&gt;
&lt;br /&gt;
Hier sollen die Funktionen beleuchtet werden, die entweder nicht direkt oder gar nicht aus dem AD5930, jedoch mit etwas Controllerunterstützung dennoch gewonnen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenmodulation ===&lt;br /&gt;
&lt;br /&gt;
Über den bereits erwähnten FSAdjust am AD5930 kann eine Amplitudenmodulation vorgenommen werden. Diese soll separat nach außen geführt werden und es dem Benutzer erlauben Signale auf eine eingestellte Trägerfrequenz im AD5930 aufzumodelieren.&lt;br /&gt;
&lt;br /&gt;
=== Impuls-Signale ===&lt;br /&gt;
&lt;br /&gt;
Für die Ausgabe von Impulsen kann die Burst-Funktion des AD5930 verwendet werden. Die minimale Impulslänge wird dann durch die maximale Ausgangsfrequenz des AD5930 bestimmt. Dazu kann das Signal durch einen schnellen Baustein der 74er Reihe geschickt werden, sodass Impulse von 20ns vorstellbar sind.&lt;br /&gt;
&lt;br /&gt;
=== PWM-Signale ===&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Ausbaus zum Standalone-Gerät wird zwangsläufig auch ein Mikrocontroller zum Einsatz kommen, sodass hier grundsätzlich die Möglichkeit besteht, den Funktionsgenerator um Pulsweitenmodulation zu erweitern. Für die Ausgabe von PWM-Signalen bis 20MHz ist jedoch ein entsprechend schneller Mikrocontroller notwendig.&lt;br /&gt;
Macht man sich dagegen die Burst-Funktion des AD5930 in Kombination mit einem schnellem Baustein der 74er Reihe o.ä. zu Nutze, so sollte auch eine Pulsweitenmodulation mit langsameren Mikrocontrollern möglich sein. Hierzu ist aber die Programmierzeit des AD5930 mit zu berücksichtigen, da ständig neue Frequenzen geschrieben werden müssen.&lt;br /&gt;
&lt;br /&gt;
== Das Software Frontend ==&lt;br /&gt;
&lt;br /&gt;
Für die Programmierung des AD5930 ist, in der Ausbaustufe mit FT232, eine Softwareoberfläche notwendig, von der aus sämtliche Einstellungen für den Bediener nutzerfreundlich vorgenommen werden können.&lt;br /&gt;
&lt;br /&gt;
= Ausbau zum Standalone-Gerät =&lt;br /&gt;
&lt;br /&gt;
Als weitere Stufe steht der Ausbau zum Standalone-Gerät an. Hierzu wird ein Mikrontroller mit Anzeige und Menüsteuerung zum Einsatz kommen können, sodass sämtliche Einstellungen auch bequem direkt am Gerät erfolgen können und ein PC nicht zwingend erforderlich ist.&lt;br /&gt;
Hierfür ist die Programmierung eines Mikrocontrollers notwendig.&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung des Standalone-Gerätes ==&lt;br /&gt;
&lt;br /&gt;
== Controllerauswahl ==&lt;br /&gt;
&lt;br /&gt;
== Anzeige der Statusinformationen - LCD ==&lt;br /&gt;
&lt;br /&gt;
== Schaltung des Controllerboards ==&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
= Schaltpläne und Layoutdaten =&lt;br /&gt;
&lt;br /&gt;
Alle Schaltpläne und Layoutdaten sollen hier für jeden zugänglich gemacht werden. Es bietet sich daher an Eagle in der Light Version oder KiCAD zu verwenden.&lt;br /&gt;
&lt;br /&gt;
= Diskussionsrunde =&lt;br /&gt;
&lt;br /&gt;
Unter diesem [http://www.mikrocontroller.net/topic/168134#1606968 Link] sollen Diskussionen zum Projekt erfolgen.&lt;br /&gt;
&lt;br /&gt;
= Links zu bekannten Projekten mit dem AD5930/AD5932 =&lt;br /&gt;
&lt;br /&gt;
[http://mexlewiki.hs-heilbronn.de/UserFiles/File/Funktionsgenerator%20DDS/Documentation%20DDS.pdf DDS-Funktionsgenerator mit dem MiniMEXLE Version 3.0]&lt;br /&gt;
&lt;br /&gt;
[http://www.uchobby.com/index.php/2007/09/05/arduino-siggen1-boards-arrive/ Siggen1]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Signalgeneratoren]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Debugging&amp;diff=59858</id>
		<title>Debugging</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Debugging&amp;diff=59858"/>
		<updated>2011-08-25T12:24:55Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;Debugging&amp;#039;&amp;#039;&amp;#039; bedeutet wörtlich &amp;quot;Entwanzen&amp;quot; und bezeichnet umgangssprachlich das Beheben von sog. &amp;quot;bugs&amp;quot; (Wanzen), also Fehlern in Programmen.“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Debugging&#039;&#039;&#039; bedeutet wörtlich &amp;quot;Entwanzen&amp;quot; und bezeichnet umgangssprachlich das Beheben von sog. &amp;quot;bugs&amp;quot; (Wanzen), also Fehlern in Programmen.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59856</id>
		<title>Glossar</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59856"/>
		<updated>2011-08-25T12:22:47Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* B */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
&lt;br /&gt;
;ABI: &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface: Das Binärinterface, das zum Datenaustausch verwendet wird, z.B. die Registerverwendung in einer Funktion und für Parameterübergabe, Datenablage, Strukturlayout, etc. Jeder [[Compiler]] erzeugt Code nach einer bestimmten ABI, so daß der Code aus unterschiedlichen Modulen und Bibliotheken zusammenpasst. Beim Mischen von Hochsprachen mit (Inline-)Assembler muss auf ABI-konformität geachtet werden. Compiler-Schalter können das ABI beeinflussen. Beispiel: -fpack-struct beim GCC.&lt;br /&gt;
&lt;br /&gt;
;[[ADC]]: &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;C&#039;&#039;&#039;onverter.&lt;br /&gt;
&lt;br /&gt;
;[[AGC]]: &#039;&#039;&#039;A&#039;&#039;&#039;utomatic &#039;&#039;&#039;G&#039;&#039;&#039;ain &#039;&#039;&#039;C&#039;&#039;&#039;ontrol. Ein Schaltkreis zur selbsttätigen Verstärkungsanpassung.&lt;br /&gt;
&lt;br /&gt;
;[[ARM]]: Eine Mikrocontrollerfamilie&lt;br /&gt;
&lt;br /&gt;
;[[AVR]]: Eine Mikrocontrollerfamilie von Atmel. Der Ursprung des Namens ist unklar.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
&lt;br /&gt;
;[[BGA]]: &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
&lt;br /&gt;
;Bit: &#039;&#039;&#039;Bi&#039;&#039;&#039;nary Digi&#039;&#039;&#039;t&#039;&#039;&#039;: Kleinste Informationseinheit, siehe [[Bitmanipulation]].&lt;br /&gt;
 &lt;br /&gt;
;BNC: &#039;&#039;&#039;B&#039;&#039;&#039;ajonet &#039;&#039;&#039;N&#039;&#039;&#039;ut &#039;&#039;&#039;C&#039;&#039;&#039;onnector: Ein Steckverbinder für Koaxialkabel.&lt;br /&gt;
&lt;br /&gt;
;[[BSDL]]: &#039;&#039;&#039;B&#039;&#039;&#039;oundary &#039;&#039;&#039;S&#039;&#039;&#039;can &#039;&#039;&#039;D&#039;&#039;&#039;escription &#039;&#039;&#039;L&#039;&#039;&#039;anguage: Eine Sprache für [[boundary scan]]-basiertes Testen und Debuggen.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
&lt;br /&gt;
;[[C]]: Eine weit verbreitete Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
;[[CAN]]: &#039;&#039;&#039;C&#039;&#039;&#039;ontroller &#039;&#039;&#039;A&#039;&#039;&#039;rea &#039;&#039;&#039;N&#039;&#039;&#039;etwork: Ein Netzwerk für kleine [[Mikrocontroller]], ursprünglich für die Automobilbranche entwickelt.&lt;br /&gt;
&lt;br /&gt;
;[[CPLD]]: &#039;&#039;&#039;C&#039;&#039;&#039;omplex &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;L&#039;&#039;&#039;ogic &#039;&#039;&#039;D&#039;&#039;&#039;evice: Ein programmierbarer Logikbaustein.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
&lt;br /&gt;
;[[DAC]]: &#039;&#039;&#039;D&#039;&#039;&#039;igital to &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;C&#039;&#039;&#039;onverter&lt;br /&gt;
&lt;br /&gt;
;[[DSP]]: &#039;&#039;&#039;D&#039;&#039;&#039;igitaler &#039;&#039;&#039;S&#039;&#039;&#039;ignal&#039;&#039;&#039;p&#039;&#039;&#039;rozessor&lt;br /&gt;
&lt;br /&gt;
;[[DTMF]]: &#039;&#039;&#039;D&#039;&#039;&#039;ual &#039;&#039;&#039;T&#039;&#039;&#039;one &#039;&#039;&#039;M&#039;&#039;&#039;ultiple &#039;&#039;&#039;F&#039;&#039;&#039;requency: Tonwahlverfahren im Telephon.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
&lt;br /&gt;
;[[EEPROM]]: &#039;&#039;&#039;E&#039;&#039;&#039;lectrical &#039;&#039;&#039;E&#039;&#039;&#039;rasable and &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;O&#039;&#039;&#039;nly &#039;&#039;&#039;M&#039;&#039;&#039;emory: Ein nichtflüchtiger [[Speicher#EEPROM|Speicher]].&lt;br /&gt;
&lt;br /&gt;
;[[EMV]]: &#039;&#039;&#039;E&#039;&#039;&#039;lektro&#039;&#039;&#039;m&#039;&#039;&#039;agnetische &#039;&#039;&#039;V&#039;&#039;&#039;erträglichkeit: Beschreibt das Verhalten von Geräten bezüglich Aussenden von elektromagetischen Störungen und die Toleranz bezüglich Einstrahlung eben dieser. &lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
&lt;br /&gt;
;[[FBGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ine &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
;[[FIFO]]: &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;O&#039;&#039;&#039;ut: Eine Organisationsform für einen Zwischenspeicher.&lt;br /&gt;
;[[FPGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray: Ein programmierbarer Logikbaustein.&lt;br /&gt;
;[[FPU]]: &#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;U&#039;&#039;&#039;nit: Teil eines Prozessors der Berechnungen mit Gleitkommazahlen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
;GPR: &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;P&#039;&#039;&#039;urpose &#039;&#039;&#039;R&#039;&#039;&#039;egister: Arbeitsregister eines Prozessors. Bei vielen Architekturen müssen Daten in solche Register geladen werden, um sie bearbeiten zu können. Bei [[AVR]] sind das z.B. die Register R0 – R31.&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
&lt;br /&gt;
;HF: Hochfrequenz&lt;br /&gt;
&lt;br /&gt;
;HIL: &amp;amp;rarr; Wikipedia: [http://de.wikipedia.org/wiki/Hardware_in_the_Loop &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;i&#039;&#039;&#039;n the &#039;&#039;&#039;L&#039;&#039;&#039;oop].&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
;ISA: &#039;&#039;&#039;I&#039;&#039;&#039;nstruction &#039;&#039;&#039;S&#039;&#039;&#039;et &#039;&#039;&#039;A&#039;&#039;&#039;rchitecture: Registerstruktur und Befehlssatz eines Prozessors/[[Mikrocontroller]]s bzw. einer Prozessorfamilie.&lt;br /&gt;
&lt;br /&gt;
;[[ISP]]: &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;P&#039;&#039;&#039;rogramming: Der Mikrocontroller wird direkt auf der Zielhardware programmiert.&lt;br /&gt;
&lt;br /&gt;
;ISR: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ervice &#039;&#039;&#039;R&#039;&#039;&#039;outine: Ein Programmstück, das nach Eintreten eines bestimmten Ereignisses ausgeführt wird. Siehe [[Interrupt]].&lt;br /&gt;
&lt;br /&gt;
;IRQ: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;R&#039;&#039;&#039;e&#039;&#039;&#039;q&#039;&#039;&#039;uest: Ein Ereignis, das einen [[Interrupt]] auslöst. In der Regel wird die Programmausführung unterbrochen und ein spezielles Programmstück, eine ISR, ausgeführt und danach zum ursprünglichen Programmcode zurückgekehrt. Viele IRQs können aktiviert oder deaktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
;[[JTAG]]: &#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup: Eine Funktion für komplexe ICs, um diese im aufgelöteten Zustand zu prüfen bzw. zu programmieren und debuggen (Mikrocontroller).&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
&lt;br /&gt;
;LSB: &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das niederwertigste Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: niederwertigstes Bit.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
&lt;br /&gt;
;MSB: &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das höchstwertige Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: höchstwertiges Bit.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
&lt;br /&gt;
;[[RS232]]: &#039;&#039;&#039;R&#039;&#039;&#039;ecommended &#039;&#039;&#039;S&#039;&#039;&#039;tandard 232: Eine Definition zur seriellen Datenübertragung, eng gekoppelt an [[UART]].&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&lt;br /&gt;
;SFR: &#039;&#039;&#039;S&#039;&#039;&#039;pecial &#039;&#039;&#039;F&#039;&#039;&#039;unction &#039;&#039;&#039;R&#039;&#039;&#039;egister: Hardware-Register, über die interne und externe Peripherie eines Prozessors/[[Mikrocontroller]]s konfiguriert wird, und über die Daten ausgetauscht werden. IO-Ports werden z.B. auf bestimmte [[Speicher#Register|SFRs]] abgebildet, auf die dann mit speziellen Befehlen zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
&lt;br /&gt;
;[[UART]]: &#039;&#039;&#039;U&#039;&#039;&#039;niversal &#039;&#039;&#039;A&#039;&#039;&#039;synchronus &#039;&#039;&#039;R&#039;&#039;&#039;eceiver and &#039;&#039;&#039;T&#039;&#039;&#039;ransmitter: Ein Modul in Mikrocontrollern oder PCs zum seriellen Datenaustausch.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;br /&gt;
&lt;br /&gt;
;Z: In der HF-Technik das Formelzeichen für den [[Wellenwiderstand]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59855</id>
		<title>Glossar</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59855"/>
		<updated>2011-08-25T12:22:27Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* B */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
&lt;br /&gt;
;ABI: &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface: Das Binärinterface, das zum Datenaustausch verwendet wird, z.B. die Registerverwendung in einer Funktion und für Parameterübergabe, Datenablage, Strukturlayout, etc. Jeder [[Compiler]] erzeugt Code nach einer bestimmten ABI, so daß der Code aus unterschiedlichen Modulen und Bibliotheken zusammenpasst. Beim Mischen von Hochsprachen mit (Inline-)Assembler muss auf ABI-konformität geachtet werden. Compiler-Schalter können das ABI beeinflussen. Beispiel: -fpack-struct beim GCC.&lt;br /&gt;
&lt;br /&gt;
;[[ADC]]: &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;C&#039;&#039;&#039;onverter.&lt;br /&gt;
&lt;br /&gt;
;[[AGC]]: &#039;&#039;&#039;A&#039;&#039;&#039;utomatic &#039;&#039;&#039;G&#039;&#039;&#039;ain &#039;&#039;&#039;C&#039;&#039;&#039;ontrol. Ein Schaltkreis zur selbsttätigen Verstärkungsanpassung.&lt;br /&gt;
&lt;br /&gt;
;[[ARM]]: Eine Mikrocontrollerfamilie&lt;br /&gt;
&lt;br /&gt;
;[[AVR]]: Eine Mikrocontrollerfamilie von Atmel. Der Ursprung des Namens ist unklar.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
&lt;br /&gt;
;[[BGA]]: &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
&lt;br /&gt;
;Bit: &#039;&#039;&#039;Bi&#039;&#039;&#039;nary Digi&#039;&#039;&#039;t&#039;&#039;&#039;: Kleinste Informationseinheit, siehe [[Bitmanipulation]].&lt;br /&gt;
 &lt;br /&gt;
;BNC: &#039;&#039;&#039;B&#039;&#039;&#039;ajonet &#039;&#039;&#039;N&#039;&#039;&#039;ut &#039;&#039;&#039;C&#039;&#039;&#039;onnector: Ein Steckverbinder für Koaxialkabel.&lt;br /&gt;
&lt;br /&gt;
;[[BSDL]]: &#039;&#039;&#039;B&#039;&#039;&#039;oundary &#039;&#039;&#039;S&#039;&#039;&#039;can &#039;&#039;&#039;D&#039;&#039;&#039;escription &#039;&#039;&#039;L&#039;&#039;&#039;anguage: Eine Sprache für {{boundary scan]]-basiertes Testen und Debuggen.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
&lt;br /&gt;
;[[C]]: Eine weit verbreitete Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
;[[CAN]]: &#039;&#039;&#039;C&#039;&#039;&#039;ontroller &#039;&#039;&#039;A&#039;&#039;&#039;rea &#039;&#039;&#039;N&#039;&#039;&#039;etwork: Ein Netzwerk für kleine [[Mikrocontroller]], ursprünglich für die Automobilbranche entwickelt.&lt;br /&gt;
&lt;br /&gt;
;[[CPLD]]: &#039;&#039;&#039;C&#039;&#039;&#039;omplex &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;L&#039;&#039;&#039;ogic &#039;&#039;&#039;D&#039;&#039;&#039;evice: Ein programmierbarer Logikbaustein.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
&lt;br /&gt;
;[[DAC]]: &#039;&#039;&#039;D&#039;&#039;&#039;igital to &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;C&#039;&#039;&#039;onverter&lt;br /&gt;
&lt;br /&gt;
;[[DSP]]: &#039;&#039;&#039;D&#039;&#039;&#039;igitaler &#039;&#039;&#039;S&#039;&#039;&#039;ignal&#039;&#039;&#039;p&#039;&#039;&#039;rozessor&lt;br /&gt;
&lt;br /&gt;
;[[DTMF]]: &#039;&#039;&#039;D&#039;&#039;&#039;ual &#039;&#039;&#039;T&#039;&#039;&#039;one &#039;&#039;&#039;M&#039;&#039;&#039;ultiple &#039;&#039;&#039;F&#039;&#039;&#039;requency: Tonwahlverfahren im Telephon.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
&lt;br /&gt;
;[[EEPROM]]: &#039;&#039;&#039;E&#039;&#039;&#039;lectrical &#039;&#039;&#039;E&#039;&#039;&#039;rasable and &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;O&#039;&#039;&#039;nly &#039;&#039;&#039;M&#039;&#039;&#039;emory: Ein nichtflüchtiger [[Speicher#EEPROM|Speicher]].&lt;br /&gt;
&lt;br /&gt;
;[[EMV]]: &#039;&#039;&#039;E&#039;&#039;&#039;lektro&#039;&#039;&#039;m&#039;&#039;&#039;agnetische &#039;&#039;&#039;V&#039;&#039;&#039;erträglichkeit: Beschreibt das Verhalten von Geräten bezüglich Aussenden von elektromagetischen Störungen und die Toleranz bezüglich Einstrahlung eben dieser. &lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
&lt;br /&gt;
;[[FBGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ine &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
;[[FIFO]]: &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;O&#039;&#039;&#039;ut: Eine Organisationsform für einen Zwischenspeicher.&lt;br /&gt;
;[[FPGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray: Ein programmierbarer Logikbaustein.&lt;br /&gt;
;[[FPU]]: &#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;U&#039;&#039;&#039;nit: Teil eines Prozessors der Berechnungen mit Gleitkommazahlen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
;GPR: &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;P&#039;&#039;&#039;urpose &#039;&#039;&#039;R&#039;&#039;&#039;egister: Arbeitsregister eines Prozessors. Bei vielen Architekturen müssen Daten in solche Register geladen werden, um sie bearbeiten zu können. Bei [[AVR]] sind das z.B. die Register R0 – R31.&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
&lt;br /&gt;
;HF: Hochfrequenz&lt;br /&gt;
&lt;br /&gt;
;HIL: &amp;amp;rarr; Wikipedia: [http://de.wikipedia.org/wiki/Hardware_in_the_Loop &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;i&#039;&#039;&#039;n the &#039;&#039;&#039;L&#039;&#039;&#039;oop].&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
;ISA: &#039;&#039;&#039;I&#039;&#039;&#039;nstruction &#039;&#039;&#039;S&#039;&#039;&#039;et &#039;&#039;&#039;A&#039;&#039;&#039;rchitecture: Registerstruktur und Befehlssatz eines Prozessors/[[Mikrocontroller]]s bzw. einer Prozessorfamilie.&lt;br /&gt;
&lt;br /&gt;
;[[ISP]]: &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;P&#039;&#039;&#039;rogramming: Der Mikrocontroller wird direkt auf der Zielhardware programmiert.&lt;br /&gt;
&lt;br /&gt;
;ISR: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ervice &#039;&#039;&#039;R&#039;&#039;&#039;outine: Ein Programmstück, das nach Eintreten eines bestimmten Ereignisses ausgeführt wird. Siehe [[Interrupt]].&lt;br /&gt;
&lt;br /&gt;
;IRQ: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;R&#039;&#039;&#039;e&#039;&#039;&#039;q&#039;&#039;&#039;uest: Ein Ereignis, das einen [[Interrupt]] auslöst. In der Regel wird die Programmausführung unterbrochen und ein spezielles Programmstück, eine ISR, ausgeführt und danach zum ursprünglichen Programmcode zurückgekehrt. Viele IRQs können aktiviert oder deaktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
;[[JTAG]]: &#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup: Eine Funktion für komplexe ICs, um diese im aufgelöteten Zustand zu prüfen bzw. zu programmieren und debuggen (Mikrocontroller).&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
&lt;br /&gt;
;LSB: &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das niederwertigste Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: niederwertigstes Bit.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
&lt;br /&gt;
;MSB: &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das höchstwertige Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: höchstwertiges Bit.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
&lt;br /&gt;
;[[RS232]]: &#039;&#039;&#039;R&#039;&#039;&#039;ecommended &#039;&#039;&#039;S&#039;&#039;&#039;tandard 232: Eine Definition zur seriellen Datenübertragung, eng gekoppelt an [[UART]].&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&lt;br /&gt;
;SFR: &#039;&#039;&#039;S&#039;&#039;&#039;pecial &#039;&#039;&#039;F&#039;&#039;&#039;unction &#039;&#039;&#039;R&#039;&#039;&#039;egister: Hardware-Register, über die interne und externe Peripherie eines Prozessors/[[Mikrocontroller]]s konfiguriert wird, und über die Daten ausgetauscht werden. IO-Ports werden z.B. auf bestimmte [[Speicher#Register|SFRs]] abgebildet, auf die dann mit speziellen Befehlen zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
&lt;br /&gt;
;[[UART]]: &#039;&#039;&#039;U&#039;&#039;&#039;niversal &#039;&#039;&#039;A&#039;&#039;&#039;synchronus &#039;&#039;&#039;R&#039;&#039;&#039;eceiver and &#039;&#039;&#039;T&#039;&#039;&#039;ransmitter: Ein Modul in Mikrocontrollern oder PCs zum seriellen Datenaustausch.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;br /&gt;
&lt;br /&gt;
;Z: In der HF-Technik das Formelzeichen für den [[Wellenwiderstand]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59854</id>
		<title>Glossar</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59854"/>
		<updated>2011-08-25T12:20:14Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* A */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
&lt;br /&gt;
;ABI: &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface: Das Binärinterface, das zum Datenaustausch verwendet wird, z.B. die Registerverwendung in einer Funktion und für Parameterübergabe, Datenablage, Strukturlayout, etc. Jeder [[Compiler]] erzeugt Code nach einer bestimmten ABI, so daß der Code aus unterschiedlichen Modulen und Bibliotheken zusammenpasst. Beim Mischen von Hochsprachen mit (Inline-)Assembler muss auf ABI-konformität geachtet werden. Compiler-Schalter können das ABI beeinflussen. Beispiel: -fpack-struct beim GCC.&lt;br /&gt;
&lt;br /&gt;
;[[ADC]]: &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;C&#039;&#039;&#039;onverter.&lt;br /&gt;
&lt;br /&gt;
;[[AGC]]: &#039;&#039;&#039;A&#039;&#039;&#039;utomatic &#039;&#039;&#039;G&#039;&#039;&#039;ain &#039;&#039;&#039;C&#039;&#039;&#039;ontrol. Ein Schaltkreis zur selbsttätigen Verstärkungsanpassung.&lt;br /&gt;
&lt;br /&gt;
;[[ARM]]: Eine Mikrocontrollerfamilie&lt;br /&gt;
&lt;br /&gt;
;[[AVR]]: Eine Mikrocontrollerfamilie von Atmel. Der Ursprung des Namens ist unklar.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
&lt;br /&gt;
;[[BGA]]: &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
&lt;br /&gt;
;Bit: &#039;&#039;&#039;Bi&#039;&#039;&#039;nary Digi&#039;&#039;&#039;t&#039;&#039;&#039;: Kleinste Informationseinheit, siehe [[Bitmanipulation]].&lt;br /&gt;
 &lt;br /&gt;
;BNC: &#039;&#039;&#039;B&#039;&#039;&#039;ajonet &#039;&#039;&#039;N&#039;&#039;&#039;ut &#039;&#039;&#039;C&#039;&#039;&#039;onnector: Ein Steckverbinder für Koaxialkabel.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
&lt;br /&gt;
;[[C]]: Eine weit verbreitete Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
;[[CAN]]: &#039;&#039;&#039;C&#039;&#039;&#039;ontroller &#039;&#039;&#039;A&#039;&#039;&#039;rea &#039;&#039;&#039;N&#039;&#039;&#039;etwork: Ein Netzwerk für kleine [[Mikrocontroller]], ursprünglich für die Automobilbranche entwickelt.&lt;br /&gt;
&lt;br /&gt;
;[[CPLD]]: &#039;&#039;&#039;C&#039;&#039;&#039;omplex &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;L&#039;&#039;&#039;ogic &#039;&#039;&#039;D&#039;&#039;&#039;evice: Ein programmierbarer Logikbaustein.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
&lt;br /&gt;
;[[DAC]]: &#039;&#039;&#039;D&#039;&#039;&#039;igital to &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;C&#039;&#039;&#039;onverter&lt;br /&gt;
&lt;br /&gt;
;[[DSP]]: &#039;&#039;&#039;D&#039;&#039;&#039;igitaler &#039;&#039;&#039;S&#039;&#039;&#039;ignal&#039;&#039;&#039;p&#039;&#039;&#039;rozessor&lt;br /&gt;
&lt;br /&gt;
;[[DTMF]]: &#039;&#039;&#039;D&#039;&#039;&#039;ual &#039;&#039;&#039;T&#039;&#039;&#039;one &#039;&#039;&#039;M&#039;&#039;&#039;ultiple &#039;&#039;&#039;F&#039;&#039;&#039;requency: Tonwahlverfahren im Telephon.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
&lt;br /&gt;
;[[EEPROM]]: &#039;&#039;&#039;E&#039;&#039;&#039;lectrical &#039;&#039;&#039;E&#039;&#039;&#039;rasable and &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;O&#039;&#039;&#039;nly &#039;&#039;&#039;M&#039;&#039;&#039;emory: Ein nichtflüchtiger [[Speicher#EEPROM|Speicher]].&lt;br /&gt;
&lt;br /&gt;
;[[EMV]]: &#039;&#039;&#039;E&#039;&#039;&#039;lektro&#039;&#039;&#039;m&#039;&#039;&#039;agnetische &#039;&#039;&#039;V&#039;&#039;&#039;erträglichkeit: Beschreibt das Verhalten von Geräten bezüglich Aussenden von elektromagetischen Störungen und die Toleranz bezüglich Einstrahlung eben dieser. &lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
&lt;br /&gt;
;[[FBGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ine &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
;[[FIFO]]: &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;O&#039;&#039;&#039;ut: Eine Organisationsform für einen Zwischenspeicher.&lt;br /&gt;
;[[FPGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray: Ein programmierbarer Logikbaustein.&lt;br /&gt;
;[[FPU]]: &#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;U&#039;&#039;&#039;nit: Teil eines Prozessors der Berechnungen mit Gleitkommazahlen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
;GPR: &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;P&#039;&#039;&#039;urpose &#039;&#039;&#039;R&#039;&#039;&#039;egister: Arbeitsregister eines Prozessors. Bei vielen Architekturen müssen Daten in solche Register geladen werden, um sie bearbeiten zu können. Bei [[AVR]] sind das z.B. die Register R0 – R31.&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
&lt;br /&gt;
;HF: Hochfrequenz&lt;br /&gt;
&lt;br /&gt;
;HIL: &amp;amp;rarr; Wikipedia: [http://de.wikipedia.org/wiki/Hardware_in_the_Loop &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;i&#039;&#039;&#039;n the &#039;&#039;&#039;L&#039;&#039;&#039;oop].&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
;ISA: &#039;&#039;&#039;I&#039;&#039;&#039;nstruction &#039;&#039;&#039;S&#039;&#039;&#039;et &#039;&#039;&#039;A&#039;&#039;&#039;rchitecture: Registerstruktur und Befehlssatz eines Prozessors/[[Mikrocontroller]]s bzw. einer Prozessorfamilie.&lt;br /&gt;
&lt;br /&gt;
;[[ISP]]: &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;P&#039;&#039;&#039;rogramming: Der Mikrocontroller wird direkt auf der Zielhardware programmiert.&lt;br /&gt;
&lt;br /&gt;
;ISR: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ervice &#039;&#039;&#039;R&#039;&#039;&#039;outine: Ein Programmstück, das nach Eintreten eines bestimmten Ereignisses ausgeführt wird. Siehe [[Interrupt]].&lt;br /&gt;
&lt;br /&gt;
;IRQ: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;R&#039;&#039;&#039;e&#039;&#039;&#039;q&#039;&#039;&#039;uest: Ein Ereignis, das einen [[Interrupt]] auslöst. In der Regel wird die Programmausführung unterbrochen und ein spezielles Programmstück, eine ISR, ausgeführt und danach zum ursprünglichen Programmcode zurückgekehrt. Viele IRQs können aktiviert oder deaktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
;[[JTAG]]: &#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup: Eine Funktion für komplexe ICs, um diese im aufgelöteten Zustand zu prüfen bzw. zu programmieren und debuggen (Mikrocontroller).&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
&lt;br /&gt;
;LSB: &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das niederwertigste Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: niederwertigstes Bit.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
&lt;br /&gt;
;MSB: &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das höchstwertige Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: höchstwertiges Bit.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
&lt;br /&gt;
;[[RS232]]: &#039;&#039;&#039;R&#039;&#039;&#039;ecommended &#039;&#039;&#039;S&#039;&#039;&#039;tandard 232: Eine Definition zur seriellen Datenübertragung, eng gekoppelt an [[UART]].&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&lt;br /&gt;
;SFR: &#039;&#039;&#039;S&#039;&#039;&#039;pecial &#039;&#039;&#039;F&#039;&#039;&#039;unction &#039;&#039;&#039;R&#039;&#039;&#039;egister: Hardware-Register, über die interne und externe Peripherie eines Prozessors/[[Mikrocontroller]]s konfiguriert wird, und über die Daten ausgetauscht werden. IO-Ports werden z.B. auf bestimmte [[Speicher#Register|SFRs]] abgebildet, auf die dann mit speziellen Befehlen zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
&lt;br /&gt;
;[[UART]]: &#039;&#039;&#039;U&#039;&#039;&#039;niversal &#039;&#039;&#039;A&#039;&#039;&#039;synchronus &#039;&#039;&#039;R&#039;&#039;&#039;eceiver and &#039;&#039;&#039;T&#039;&#039;&#039;ransmitter: Ein Modul in Mikrocontrollern oder PCs zum seriellen Datenaustausch.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;br /&gt;
&lt;br /&gt;
;Z: In der HF-Technik das Formelzeichen für den [[Wellenwiderstand]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59851</id>
		<title>Glossar</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Glossar&amp;diff=59851"/>
		<updated>2011-08-25T12:17:29Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* F */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
&lt;br /&gt;
;ABI: &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface: Das Binärinterface, das zum Datenaustausch verwendet wird, z.B. die Registerverwendung in einer Funktion und für Parameterübergabe, Datenablage, Strukturlayout, etc. Jeder [[Compiler]] erzeugt Code nach einer bestimmten ABI, so daß der Code aus unterschiedlichen Modulen und Bibliotheken zusammenpasst. Beim Mischen von Hochsprachen mit (Inline-)Assembler muss auf ABI-konformität geachtet werden. Compiler-Schalter können das ABI beeinflussen. Beispiel: -fpack-struct beim GCC.&lt;br /&gt;
&lt;br /&gt;
;[[ADC]]: &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;C&#039;&#039;&#039;onverter.&lt;br /&gt;
&lt;br /&gt;
;[[AVR]]: Eine Mikrocontrollerfamilie von Atmel. Der Ursprung des Namens ist unklar.&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
&lt;br /&gt;
;[[BGA]]: &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
&lt;br /&gt;
;Bit: &#039;&#039;&#039;Bi&#039;&#039;&#039;nary Digi&#039;&#039;&#039;t&#039;&#039;&#039;: Kleinste Informationseinheit, siehe [[Bitmanipulation]].&lt;br /&gt;
 &lt;br /&gt;
;BNC: &#039;&#039;&#039;B&#039;&#039;&#039;ajonet &#039;&#039;&#039;N&#039;&#039;&#039;ut &#039;&#039;&#039;C&#039;&#039;&#039;onnector: Ein Steckverbinder für Koaxialkabel.&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
&lt;br /&gt;
;[[C]]: Eine weit verbreitete Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
;[[CAN]]: &#039;&#039;&#039;C&#039;&#039;&#039;ontroller &#039;&#039;&#039;A&#039;&#039;&#039;rea &#039;&#039;&#039;N&#039;&#039;&#039;etwork: Ein Netzwerk für kleine [[Mikrocontroller]], ursprünglich für die Automobilbranche entwickelt.&lt;br /&gt;
&lt;br /&gt;
;[[CPLD]]: &#039;&#039;&#039;C&#039;&#039;&#039;omplex &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;L&#039;&#039;&#039;ogic &#039;&#039;&#039;D&#039;&#039;&#039;evice: Ein programmierbarer Logikbaustein.&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
&lt;br /&gt;
;[[DAC]]: &#039;&#039;&#039;D&#039;&#039;&#039;igital to &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;C&#039;&#039;&#039;onverter&lt;br /&gt;
&lt;br /&gt;
;[[DSP]]: &#039;&#039;&#039;D&#039;&#039;&#039;igitaler &#039;&#039;&#039;S&#039;&#039;&#039;ignal&#039;&#039;&#039;p&#039;&#039;&#039;rozessor&lt;br /&gt;
&lt;br /&gt;
;[[DTMF]]: &#039;&#039;&#039;D&#039;&#039;&#039;ual &#039;&#039;&#039;T&#039;&#039;&#039;one &#039;&#039;&#039;M&#039;&#039;&#039;ultiple &#039;&#039;&#039;F&#039;&#039;&#039;requency: Tonwahlverfahren im Telephon.&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
&lt;br /&gt;
;[[EEPROM]]: &#039;&#039;&#039;E&#039;&#039;&#039;lectrical &#039;&#039;&#039;E&#039;&#039;&#039;rasable and &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;O&#039;&#039;&#039;nly &#039;&#039;&#039;M&#039;&#039;&#039;emory: Ein nichtflüchtiger [[Speicher#EEPROM|Speicher]].&lt;br /&gt;
&lt;br /&gt;
;[[EMV]]: &#039;&#039;&#039;E&#039;&#039;&#039;lektro&#039;&#039;&#039;m&#039;&#039;&#039;agnetische &#039;&#039;&#039;V&#039;&#039;&#039;erträglichkeit: Beschreibt das Verhalten von Geräten bezüglich Aussenden von elektromagetischen Störungen und die Toleranz bezüglich Einstrahlung eben dieser. &lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
&lt;br /&gt;
;[[FBGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ine &#039;&#039;&#039;B&#039;&#039;&#039;all &#039;&#039;&#039;G&#039;&#039;&#039;rid &#039;&#039;&#039;A&#039;&#039;&#039;rray: Eine Gehäuseform für ICs.&lt;br /&gt;
;[[FIFO]]: &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;F&#039;&#039;&#039;irst &#039;&#039;&#039;O&#039;&#039;&#039;ut: Eine Organisationsform für einen Zwischenspeicher.&lt;br /&gt;
;[[FPGA]]: &#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray: Ein programmierbarer Logikbaustein.&lt;br /&gt;
;[[FPU]]: &#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;U&#039;&#039;&#039;nit: Teil eines Prozessors der Berechnungen mit Gleitkommazahlen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
;GPR: &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;P&#039;&#039;&#039;urpose &#039;&#039;&#039;R&#039;&#039;&#039;egister: Arbeitsregister eines Prozessors. Bei vielen Architekturen müssen Daten in solche Register geladen werden, um sie bearbeiten zu können. Bei [[AVR]] sind das z.B. die Register R0 – R31.&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
&lt;br /&gt;
;HF: Hochfrequenz&lt;br /&gt;
&lt;br /&gt;
;HIL: &amp;amp;rarr; Wikipedia: [http://de.wikipedia.org/wiki/Hardware_in_the_Loop &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;i&#039;&#039;&#039;n the &#039;&#039;&#039;L&#039;&#039;&#039;oop].&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
&lt;br /&gt;
;ISA: &#039;&#039;&#039;I&#039;&#039;&#039;nstruction &#039;&#039;&#039;S&#039;&#039;&#039;et &#039;&#039;&#039;A&#039;&#039;&#039;rchitecture: Registerstruktur und Befehlssatz eines Prozessors/[[Mikrocontroller]]s bzw. einer Prozessorfamilie.&lt;br /&gt;
&lt;br /&gt;
;[[ISP]]: &#039;&#039;&#039;I&#039;&#039;&#039;n &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;P&#039;&#039;&#039;rogramming: Der Mikrocontroller wird direkt auf der Zielhardware programmiert.&lt;br /&gt;
&lt;br /&gt;
;ISR: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ervice &#039;&#039;&#039;R&#039;&#039;&#039;outine: Ein Programmstück, das nach Eintreten eines bestimmten Ereignisses ausgeführt wird. Siehe [[Interrupt]].&lt;br /&gt;
&lt;br /&gt;
;IRQ: &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;R&#039;&#039;&#039;e&#039;&#039;&#039;q&#039;&#039;&#039;uest: Ein Ereignis, das einen [[Interrupt]] auslöst. In der Regel wird die Programmausführung unterbrochen und ein spezielles Programmstück, eine ISR, ausgeführt und danach zum ursprünglichen Programmcode zurückgekehrt. Viele IRQs können aktiviert oder deaktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
;[[JTAG]]: &#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup: Eine Funktion für komplexe ICs, um diese im aufgelöteten Zustand zu prüfen bzw. zu programmieren und debuggen (Mikrocontroller).&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
&lt;br /&gt;
;LSB: &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das niederwertigste Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;L&#039;&#039;&#039;east &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: niederwertigstes Bit.&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
&lt;br /&gt;
;MSB: &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;yte: Das höchstwertige Byte in einem Datenwort mit mehreren Bytes. Je nach Zusammenhang aber auch &#039;&#039;&#039;M&#039;&#039;&#039;ost &#039;&#039;&#039;S&#039;&#039;&#039;ignificant &#039;&#039;&#039;B&#039;&#039;&#039;it: höchstwertiges Bit.&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
&lt;br /&gt;
;[[RS232]]: &#039;&#039;&#039;R&#039;&#039;&#039;ecommended &#039;&#039;&#039;S&#039;&#039;&#039;tandard 232: Eine Definition zur seriellen Datenübertragung, eng gekoppelt an [[UART]].&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
&lt;br /&gt;
;SFR: &#039;&#039;&#039;S&#039;&#039;&#039;pecial &#039;&#039;&#039;F&#039;&#039;&#039;unction &#039;&#039;&#039;R&#039;&#039;&#039;egister: Hardware-Register, über die interne und externe Peripherie eines Prozessors/[[Mikrocontroller]]s konfiguriert wird, und über die Daten ausgetauscht werden. IO-Ports werden z.B. auf bestimmte [[Speicher#Register|SFRs]] abgebildet, auf die dann mit speziellen Befehlen zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
&lt;br /&gt;
;[[UART]]: &#039;&#039;&#039;U&#039;&#039;&#039;niversal &#039;&#039;&#039;A&#039;&#039;&#039;synchronus &#039;&#039;&#039;R&#039;&#039;&#039;eceiver and &#039;&#039;&#039;T&#039;&#039;&#039;ransmitter: Ein Modul in Mikrocontrollern oder PCs zum seriellen Datenaustausch.&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;br /&gt;
&lt;br /&gt;
;Z: In der HF-Technik das Formelzeichen für den [[Wellenwiderstand]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LIFO&amp;diff=59849</id>
		<title>LIFO</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LIFO&amp;diff=59849"/>
		<updated>2011-08-25T12:15:29Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein LIFO (&#039;&#039;&#039;L&#039;&#039;&#039;ast-&#039;&#039;&#039;I&#039;&#039;&#039;n-&#039;&#039;&#039;F&#039;&#039;&#039;irst-&#039;&#039;&#039;O&#039;&#039;&#039;ut) ist ein Pufferspeicher nach dem &amp;quot;Stapel-Prinzip&amp;quot;. Diese Pufferspeicher dienen meistens dazu, verschachtelte Operationen durchzuführen und Daten für spätere Aktionen aufzubewahren.&lt;br /&gt;
&lt;br /&gt;
Ein LIFO funktioniert so, dass das erste Element (First In), welches &amp;quot;von vorn&amp;quot; in die Warteschlange eingefügt wird, später auch als erstes wieder herausgeholt wird (First Out). Das Gegenstück zum LIFO ist [[FIFO]]. &lt;br /&gt;
&lt;br /&gt;
Ein bekanntes Beispiel für einen LIFO-Speicher ist der Stack in Mikroprozessoren. Bei einem Interrupt werden auf ihm die Register gesichert am Ende der [[ISR]] wiederhergestellt. Mit jedem Interrupt werden neue Registerzustände hinzugefügt, sodass bei der späteren Wiederaufnahme eines gestoppten Prozesses eine zeitlich richtige Abarbeitung der Zustände möglich wird.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist eine ausreichende Stackgröße, sodass nach geforderter Interrupttiefe und Registerspeicherbedarf immer ausreichend Platz vorhanden ist und kein Überlauf eintritt.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LIFO&amp;diff=59848</id>
		<title>LIFO</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LIFO&amp;diff=59848"/>
		<updated>2011-08-25T12:14:58Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein LIFO (&#039;&#039;&#039;L&#039;&#039;&#039;ast-&#039;&#039;&#039;I&#039;&#039;&#039;n-&#039;&#039;&#039;F&#039;&#039;&#039;irst-&#039;&#039;&#039;O&#039;&#039;&#039;ut) ist ein Pufferspeicher nach dem &amp;quot;Stapel-Prinzip&amp;quot;. Diese Pufferspeicher dienen meistens dazu, verschachtelte Operationen durchzuführen und Daten für spätere Aktionen aufzubewahren.&lt;br /&gt;
&lt;br /&gt;
Ein LIFO funktioniert so, dass das erste Element (First In), welches &amp;quot;von vorn&amp;quot; in die Warteschlange eingefügt wird, später auch als erstes wieder herausgeholt wird (First Out). Das Gegenstück zum LIFO ist [[FIFO]]. &lt;br /&gt;
&lt;br /&gt;
Ein bekanntes Beispiel für einen LIFO-Speicher ist der Stack in Mikroprozessoren. Bei einem Interrupt werden auf ihm die Register gesichert am Ende der {{ISR]] wiederhergestellt. Mit jedem Interrupt werden neue Registerzustände hinzugefügt, sodass bei der späteren Wiederaufnahme eines gestoppten Prozesses eine zeitlich richtige Abarbeitung der Zustände möglich wird.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist eine ausreichende Stackgröße, sodass nach geforderter Interrupttiefe und Registerspeicherbedarf immer ausreichend Platz vorhanden ist und kein Überlauf eintritt.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59846</id>
		<title>DDS basierter Funktionsgenerator mit AD5930</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59846"/>
		<updated>2011-08-25T12:11:41Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Das Rekonstruktionsfilter */ tipp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite soll als Projektseite für einen DDS-basierten Funktionsgenerator dienen. Bekannte Funktionsgeneratoren auf Basis von DDS-ICs der Firma Analog Devices sind bekannt und im Internet einsehbar (bspw. DDS10, DDS20, DDS130).&lt;br /&gt;
Allen Funktionsgeneratoren ist eines gemein, sie sind sehr einfach gehalten und können es mit kommerziellen Funktionsgeneratoren nicht aufnehmen. Die Rekonstruktionsfilter sind zum Teil unbefriedigend dimensioniert und erfüllen insgesamt, nach Auffassung des Projektinitiators, nicht den Anspruch an einen Funktionsgenerator für die Messtechnik.&lt;br /&gt;
&lt;br /&gt;
Das Projekt nimmt bewusst Abstand von Projekten mit &amp;quot;großen&amp;quot; DDS-ICs, die beispielsweise für Eigenbau-Netzwerkanalysatoren, Signalgeneratoren, Antennenanpassgeräten oder Impedanzmessgeräten und ähnlichen Schaltungen zum Einsatz kommen. Derlei Projekte sind inspirierend, haben jedoch völlig andere Ansprüche.&lt;br /&gt;
Daher soll das erklärte Ziel dieses Projektes ein Funktionsgenerator sein, der das Optimum aus dem AD5930 herausholen kann und als Vorlage für eigene Schaltungen mit DDS-ICs dient.&lt;br /&gt;
Zunächst soll der Funktionsgenerator komplett via PC ansteuerbar sein, eine Erweiterung als Standalone-Gerät ist aber ebenso denkbar.&lt;br /&gt;
&lt;br /&gt;
= Worte vom Projektinitiator an die Gemeinde =&lt;br /&gt;
&lt;br /&gt;
Es wurde bewusst Mikrocontroller.net für das Projekt gewählt, da diese Plattform keinem kommerziellem Hintergedanken entspricht, für jeden auch ohne Anmeldung einsehbar ist und der Projektinitiator, nach eigener Erfahrung der Auffassung ist, dass viele sich gegenüber einer englischsprachigen Plattform mit qualifizierten Beiträgen zurückhalten.&lt;br /&gt;
Jeder der sich inspiriert fühlt sein Wissen mit anderen zu teilen und Lust hat am Projekt teilzunehmen ist aufgerufen, diese Projektseite mit Informationen zu füllen.&lt;br /&gt;
&lt;br /&gt;
= Basisgerät =&lt;br /&gt;
&lt;br /&gt;
Das Basisgerät soll als PC-Gerät ausgeführt sein. Da alle Schnittstellen jedoch auch über Pfostensteckeranschlüsse zugänglich gemacht werden, ist es problemlos möglich, den Funktionsgenerator zu einem Standalone-Gerät auszubauen.&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
* Signalarten: Sinus, Dreieck, Rampe, Rechteck, Puls&lt;br /&gt;
* minimale Frequenz: 3Hz&lt;br /&gt;
* maximale Frequenz: Sinus- und Rechtecksignale bis 20MHz, Dreieck und Rampe bis 2MHz&lt;br /&gt;
* Modi: Kontinuierlich, Burst, Sweep, Modulation (AM/FM)&lt;br /&gt;
* Signalausgang: 10Vpp&lt;br /&gt;
* Offset: ±5V&lt;br /&gt;
&lt;br /&gt;
== Die Schaltungsbaugruppen ==&lt;br /&gt;
&lt;br /&gt;
Der komplette Funktionsgenerator wird im Folgenden in einzelnen Baugruppen definiert und die Baugruppen kontinuierlich in ihrer Funktion erklärt. Sie stellen zugleich die einzelnen Baustellen des Projektes dar.&lt;br /&gt;
&lt;br /&gt;
=== Das Herzstück: DDS-IC AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Der AD5930 ist ein Signalgeneratorbaustein von Analog Devices, der nach dem DDS-Prinzip (Digital Direct Synthesis) arbeitet. Mit dem speziellen Exemplar lassen sich sinus- und dreieckförmige Signale erzeugen. Dazu wird ein Frequenzwort per SPI-Schnittstelle an das DDS-IC übertragen.&lt;br /&gt;
Im Gegensatz zu anderen DDS-Bausteinen von Analog Devices ist dieses Frequenzwort beim AD5930/5932 nur 24bit breit. Bei einer, laut Datenblatt angegebenen maximalen Taktfrequenz von 50MHz ergibt sich somit:&lt;br /&gt;
&lt;br /&gt;
kleinste auszugebende Frequenz/kleinstes Frequenzinkrement: 2,980232239 Hz&lt;br /&gt;
maximale Ausgangsfrequenz: 25 MHz&lt;br /&gt;
&lt;br /&gt;
Er ist der direkte Bruder des AD5932. Beide unterscheiden sich nur geringfügig. Der AD5930 verfügt über einen differentiellen Stromausgang, der AD5932 hingegen über einen einzelnen Spannungsausgang, bei dem ein 200Ω Abschlusswiderstand bereits integriert worden ist. Außerdem wurde die Ansteuerung der Vollaussteuerung beim AD5932 eingespart.&lt;br /&gt;
&lt;br /&gt;
Beide verfügen über eine Sweepfunktion mit verschiedenen Modi. So ist es möglich, den Sweep vollständig intern durchzuführen oder aber über einen Interrupt den nächsten Frequenzschritt zu setzen, sodass hier ein aufwändiges Neuschreiben der nächsten Frequenz entfällt. Damit minimiert sich die Ansteuerung erheblich und die Datenübertragung zum IC wird erheblich reduziert.&lt;br /&gt;
Zum Sweepen definiert man einfach nur die Startfrequenz, das Frequenzinkrement (positiv oder negativ) und die Anzahl von Inkrementen.&lt;br /&gt;
Darüber hinaus lässt sich definieren, ob nur eine bestimmte Anzahl an Sweeps durchgeführt oder kontinuierlich gesweept werden soll.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich lässt sich mit dem AD5930 ein Burstsignal mit einer definierten Anzahl an Schwingungen erzeugen.&lt;br /&gt;
&lt;br /&gt;
Der AD5930 verfügt über einen Eingang (FullScaleAdjust - FSADJUST) über den sich Amplitudenmodulation, aber auch Amplitudenkorrekturen durchführen ließe.&lt;br /&gt;
&lt;br /&gt;
Eine microcontroller-gestützte Frequenzmodulation ist ebenfalls denkbar.&lt;br /&gt;
&lt;br /&gt;
Programmiert werden beide Bausteine via SPI, mit maximalen Taktgeschwindigkeiten von bis zu 40MHz.&lt;br /&gt;
&lt;br /&gt;
All diese Eigenschaften und noch einige weitere hier vielleicht nicht erwähnte prädestinieren dieses DDS-IC als Herzstück für einen Funktionsgenerator.&lt;br /&gt;
&lt;br /&gt;
=== Taktquelle für den AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Dem Datenblatt zum AD5930 kann man entnehmen, dass der AD5930 mit einem Takt aus einem Quarzoszillator von 50MHz betrieben werden kann.&lt;br /&gt;
Da sich hiermit, wie man der [http://www.analog.com/static/imported-files/application_notes/AN-1044.pdf Application Note AN-1044] entnehmen kann, ein Frequenzinkrement von ungünstigen &amp;lt;math&amp;gt;50 MHz / 2 ^ {24} = 2,980232239 Hz&amp;lt;/math&amp;gt; ergibt, ist es sinnvoll den AD5930 leicht zu übertakten. Dazu wird von 3Hz pro Frequenzinkrement auf die notwendige Taktfrequenz zurück gerechnet.&lt;br /&gt;
Es ergeben sich &amp;lt;math&amp;gt;3 Hz * 2 ^ {24} = 50,331648 MHz&amp;lt;/math&amp;gt; für die Taktquelle.&lt;br /&gt;
&lt;br /&gt;
Da diese Frequenzschritte zumindest für kleine Frequenzen relativ groß erscheinen, ist vorgesehen zwischen zwei Taktfrequenzen umzuschalten, sodass mit einer Taktfrequenz von 3,3554432 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. erreicht wird. (Details siehe nachfolgender Text)&lt;br /&gt;
&lt;br /&gt;
Somit ergibt sich für den fein aufgelösten Frequenzbereich 0,2 Hz .. 1 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. und für den grob aufgelösten Frequenzbereich 3 Hz .. 20 MHz eine Frequenzauflösung von 3 Hz/Inkr.&lt;br /&gt;
&lt;br /&gt;
Um die Taktfrequenzen zu erzeugen, wird zunächst ein programmierbarer Synthesizer, der CDCE913 von Texas Instruments, eingesetzt. Mit diesem und einem extern angeschlossenen Quarz ist es möglich, die notwendige Taktfrequenz für den DDS-IC bereitzustellen. Er verfügt über eine 2-Wire I²C-Schnittstelle, sodass zur Programmierung lediglich eine Takt- (SCL) und eine Datenleitung (SDA) notwendig sind.&lt;br /&gt;
Findet sich ein ähnliches IC mit 3-Wire SPI-Schnittstelle, so ist vorgesehen den CDCE913 zu ersetzen, da dann nur noch eine ChipSelect-Leitung notwendig wird und Takt- bzw. Datenleitung für AD5930 und PLL-IC gemeinsam verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Es stehen eine Reihe von Quarzen zur Verfügung, mit denen sich die Taktfrequenz erzeugen lässt. Es sind lediglich ein paar wenige Randbedingung bei diesem IC zu beachten, um den richtigen Quarz auszuwählen:&lt;br /&gt;
&lt;br /&gt;
1.) &amp;lt;math&amp;gt;fmclk = fout = {fin / Pdiv} * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit M = 1 .. 511, N = 1 .. 4095 und Pdiv = 1 .. 127&lt;br /&gt;
&lt;br /&gt;
2.) &amp;lt;math&amp;gt;fVCO = fin * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit fVCO = 80 MHz .. 230 MHz und fin = 8 MHz .. 32 MHz&lt;br /&gt;
&lt;br /&gt;
Die Frequenz fout sind in unserem Fall die gewünschten 50,331648 MHz.&lt;br /&gt;
Mit den Randbedingungen ergibt sich für Pdiv = 2 .. 4 und daraus bspw. folgende mögliche Kombinationen für den zu verwendenden Quarz, wenn Pdiv = 2 gewählt wurde:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; &#039;&#039;f(Quarz) in [MHz]: &#039;&#039; M (1…511)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;8,192:&#039;&#039; 125, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;9,8304:&#039;&#039; 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;11,0592:&#039;&#039; 225&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;12,288:&#039;&#039; 125, 250, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;14,7456:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;16,384:&#039;&#039; 250, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;19,6608:&#039;&#039; 25, 50, 75, 100, 125, 150, 200, 225, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;22,1184:&#039;&#039; 225, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;24,576:&#039;&#039; 125, 250, 375, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;29,4912:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
Die M-Werte der Tabelle reduzieren sich, wenn man Pdiv = 3 oder 4 wählt.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich einen Quarz mit maximal möglicher Frequenz zu verwenden, da dann der Frequenzfehler minimal wird.&lt;br /&gt;
&lt;br /&gt;
Als leicht erhältlicher Standardquarz (Referenz sei bspw. Reichelt) kann daher derjenige mit 24,576 MHz zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
Mit diesem Quarz und dem Ändern des Teilers von Pdiv = 2 auf Pdiv = 6 ergibt sich eine Frequenzauflösung des AD5930 auf 1 Hz, respektive einer Taktfrequenz des AD5930 von fmclk = 16,777216 MHz und mit Pdiv = 12 eine Auflösung von 0,5 Hz, respektive einer Taktfrequenz von fmclk = 8,388608 MHz. Zu beachten ist dabei, dass sich dadurch natürlich die maximal auszugebende Frequenz ebenfalls reduziert. Mit Pdiv = 6 sind dies fmax = 8,388608 MHz und für Pdiv = 12 entsprechend fmax = 4,194304 MHz.&lt;br /&gt;
&lt;br /&gt;
Somit kann durch einfaches Ändern von Pdiv die Taktfrequenz bzw. die Frequenzauflösung verändert werden.&lt;br /&gt;
&lt;br /&gt;
Den Zusammenhang zwischen Taktfrequenz und Frequenzauflösung zeigt die nachfolgende Tabelle noch einmal:&lt;br /&gt;
&lt;br /&gt;
fmclk = 50,331648 MHz --&amp;gt; foutmin = 3 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 41,94304 MHz --&amp;gt; foutmin = 2,5 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 33,554432 MHz --&amp;gt; foutmin = 2 Hz --&amp;gt; Pdiv = 3&lt;br /&gt;
&lt;br /&gt;
fmclk = 25,165824 MHz --&amp;gt; foutmin = 1,5 Hz --&amp;gt; Pdiv = 4&lt;br /&gt;
&lt;br /&gt;
fmclk = 16,777216 MHz --&amp;gt; foutmin = 1 Hz --&amp;gt; Pdiv = 6&lt;br /&gt;
&lt;br /&gt;
fmclk = 8,388608 MHz --&amp;gt; foutmin = 0,5 Hz --&amp;gt; Pdiv = 12&lt;br /&gt;
&lt;br /&gt;
fmclk = 4,194304 MHz --&amp;gt; foutmin = 0,25 Hz --&amp;gt; Pdiv = 24&lt;br /&gt;
&lt;br /&gt;
fmclk = 3,3554432 MHz --&amp;gt; foutmin = 0,2 Hz --&amp;gt; Pdiv = 30&lt;br /&gt;
&lt;br /&gt;
fmclk = 2,0971515 MHz --&amp;gt; foutmin = 0,125 Hz --&amp;gt; Pdiv = 48&lt;br /&gt;
&lt;br /&gt;
fmclk = 1,6777216 MHz --&amp;gt; foutmin = 0,1 Hz --&amp;gt; Pdiv = 60&lt;br /&gt;
&lt;br /&gt;
Wer es genauer als ein Quarz braucht kann auch ein TCXO oder gar einen TCVCXO verwenden. Hierbei ist die Auswahl an Bausteinen jedoch deutlich eingeschränkter. Eine Möglichkeit ist die Verwendung eines TCXO mit einer Frequenz von 16,384 MHz.&lt;br /&gt;
Mit ihm lassen sich die aufgeführten Taktfrequenzen ebenfalls einstellen.&lt;br /&gt;
Es ist anzumerken, dass der CDCE913 über die Möglichkeit verfügt zwei PLL-Settings vorzuprogrammieren und im EEPROM zu hinterlegen, sodass zwischen zwei Ausgangsfrequenzen durch einfaches Umschalten eines Statusregisters umgeschaltet werden kann. Es kann aber auch zur Laufzeit auf die Register des PLL-Bausteins zugegriffen und Registerwerte neu geschrieben werden, sodass die maximale Ausgangsfrequenz des AD5930 voll ausgenutzt werden kann, ohne dabei auf sehr tiefe Frequenzen verzichten zu müssen.&lt;br /&gt;
&lt;br /&gt;
=== Die Programmierung des DDS-ICs ===&lt;br /&gt;
&lt;br /&gt;
In einem ersten Schritt soll der AD5930 über einen FT232 vollständig vom PC aus programmiert werden. Das macht Arbeiten im Bereich Mikrocontroller zunächst überflüssig.&lt;br /&gt;
Mit einem kleinen Tool kann der FT232 via Bit Banging als USB to SPI Programmer genutzt werden, sodass der Schwerpunkt zunächst vollständig im Bereich Schaltungsentwurf liegen kann.&lt;br /&gt;
Eine Adaptierung eines Mikrocontrollers ist dann in einer späteren Ausbaustufe &amp;quot;schnell&amp;quot; erledigt.&lt;br /&gt;
&lt;br /&gt;
Auf dieser [http://www.openschemes.com/modules/wordpress/2009/11/05/bit-banging-spi-on-arduinos-ft232rl/1/ Webseite] wird gezeigt, dass via Bit Banging der FT232 als USB to SPI Programmer verwendet werden kann. Dazu werden einfach die drei notwendigen SPI-Leitungen vom AD5930 mit dem FT232 wie folgt verbunden:&lt;br /&gt;
&lt;br /&gt;
* Beschreibung - AD5930 - FT232&lt;br /&gt;
*  ChipSelect - FSync  - RI&lt;br /&gt;
*    Clock    - SCLK   - CTS&lt;br /&gt;
*     Data    - SDATA  - MOSI&lt;br /&gt;
&lt;br /&gt;
und das [http://www.openschemes.com/uploads/wordpress/2009/11/ft232spi.zip SPI Demo Tool] gestartet.&lt;br /&gt;
Nachdem der FT232 erkannt wurde drückt man &amp;quot;Open Interface&amp;quot;. Man vergewissert sich noch einmal, dass die Einstellungen für die SPI-Leitungen auch stimmen und klickt auf &amp;quot;Do bitbang Setup&amp;quot;.&lt;br /&gt;
Nun braucht man nur noch die Bitlänge von 8 auf 16 umstellen und kann durch direktes Schreiben der Adressen den AD5930 programmieren.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel soll gezeigt werden, wie ein 1MHz Sinussignal schnell per Hand mit diesem Tool programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* 06db    - setzt die notwendigen Einstellungen in ControlRegister&lt;br /&gt;
* d051    - MSB der Startfrequenz für 1MHz&lt;br /&gt;
* ceb8    - LSB der Startfrequenz für 1MHz&lt;br /&gt;
* 3000    - MSB des Frequenzinkrements&lt;br /&gt;
* 2000    - LSB des Frequenzinkrements&lt;br /&gt;
* 1002    - minimale Anzahl der Frequenzinkremente&lt;br /&gt;
&lt;br /&gt;
Die Programmierung ist kinderleicht und kann bequem als PC-Software ausgeführt werden, sodass hierfür kein Mikrocontroller zum Einsatz kommen muss.&lt;br /&gt;
Wie der AD5930/32 für einen Sweep oder eine Einzelfrequenz programmiert werden kann, findet sich beispielhaft auch in der Application Note-1044 von Analog Devices.&lt;br /&gt;
&lt;br /&gt;
=== Der 1. Verstärker ===&lt;br /&gt;
&lt;br /&gt;
Das Datenblatt des AD5930 empfiehlt, dass an seinen DAC-Ausgängen ein mind. 200Ω Widerstand als Last angeschlossen wird, zu denen parallel ein Kondensator von 20pF spendiert werden soll, um ein Rekonstruktionsfilter 1. Ordnung auszubilden. Aus der Stromquelle des DAC wird somit eine Spannungsquelle.&lt;br /&gt;
Je nach Taktfrequenz muss der Wert der Kapazität angepasst werden. Gesetz dem Fall der AD5930 wird mit eine Taktfrequenz von 41,94304MHz gespeist erhöht sich der Wert der Kapazität auf 39pF.&lt;br /&gt;
Um die Vorteile eines differentiellen Ausgangs nutzen zu können kommen in aller Regel Übertrager zum Einsatz.&lt;br /&gt;
Analog Devices, CN-0142, &amp;quot;High CMRR Circuit for Converting Wideband Complementary DAC Outputs to Single-Ended Without Precision Resistors&amp;quot; schreibt zu der Thematik:&lt;br /&gt;
&amp;quot;...Traditional methods for converting wideband DAC comple-mentary current outputs to a single-ended signal are to either use a center-tapped transformer or a single op amp in a differential-to-single-ended configuration. However, the transformer low frequency nonlinearities may limit its use near dc; and the operational amplifier approach requires closely matched resistors to provide dc common-mode rejection, load impedance, and gain matching between the complementary DAC outputs. Errors in the matching will produce errors at the final output...&amp;quot;.&lt;br /&gt;
Abhilfe kann hier ein differentieller Verstärker wie der AD8129/AD8130 schaffen, der über einen differentiellen Eingang und einen Single-Ended Ausgang verfügt. Aus dem symmetrischen Signal wird somit ein unsymmetrisches, wie es in den meisten Anwendungen benötigt wird. Der Verstärker soll das Rekonstruktionsfilter treiben, mit dem es im nächsten Abschnitt weiter geht.&lt;br /&gt;
&lt;br /&gt;
=== Das Rekonstruktionsfilter ===&lt;br /&gt;
&lt;br /&gt;
Die DDS macht prinzipbedingt den Einsatz eines Rekonstruktionsfilters notwendig. Dieses sorgt dafür, dass das Taktsignal des DDS-ICs mit ausreichender Dämpfung unterdrückt wird.&lt;br /&gt;
In verschiedenen Papern findet man ganz unterschiedliche Angaben zu dieser notwendigen Dämpfung. Einige sprechen von -60dBr (bspw. Aufsatz zur Tiefpassfilter - Dimensionierung von Gehard Rohm) andere sogar von -70dBr (bspw. Application Note  #5 von www.thinkSRS.com) im Bereich der Funktionsgeneratoranwendungen. Die Einheit dBr heißt Decibel relativ und entspricht dem Verhältnis zweier Spannungspegel.&lt;br /&gt;
&lt;br /&gt;
Letzt genannte Quelle schlägt für den Einsatz von DDS-ICs die Verwendung elliptischer Filter vor, da sie mit einem steilen Übergangsbereich und kleinem Ripple im Durchlassbereich entworfen werden können.&lt;br /&gt;
Als Filter wird daher ein elliptisches Filter eingesetzt. Dieses wird mittels freien Tools (bsp. AADE Filter Design) dimensioniert und ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Wie im Abschnitt [http://www.mikrocontroller.net/articles/DDS_basierter_Funktionsgenerator_mit_AD5930#Taktquelle_f.C3.BCr_den_AD5930 Taktquelle für den AD5930] nachzulesen ist, soll zwischen zwei verschiedenen Taktfrequenzen umgeschaltet werden. Demzufolge sind zwei verschiedene Rekonstruktionsfilter erforderlich.&lt;br /&gt;
Für das Taktsignal 3,3554432 MHz kommt ein aktives Rekonstruktionsfilter zum Einsatz, da bei passiven Filtern große Induktivitäten notwendig würden, was mit höheren Filterverlusten einhergeht, da die DC-Widerstände großer Induktivitäten ebenfalls recht groß ausfallen.&lt;br /&gt;
Für das Taktsignal 50,331648 MHz kommt dagegen ein elliptisches Filter, auch Cauer-Filter genannt, zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Vielen graut es davor sich mit der Filterthematik zu beschäftigen, es soll jedoch gezeigt werden, dass der Entwurf eines ordentliches Filters mit modernen PC-gestützen Mitteln kein Geheimnis darstellt.&lt;br /&gt;
&lt;br /&gt;
Die erste Frage die sich jedem, der noch nie ein Filter entworfen hat, stellt ist, wo muss die Filtergrenze liegen. Dazu ein wenig Theorie:&lt;br /&gt;
&lt;br /&gt;
Es werde angenommen der DDS-IC ist mit fs=50MHz getaktet. Die maximale Ausgangsfrequenz ergibt sich laut Nyquist-Abtasttheorem zu fmax = 25 MHz. Das heißt, dass 25 MHz noch vom Filter durchgelassen werden sollen, aber das Stopband auch bereits bei fs-fmax = 25 MHz beginnen soll, ein Widerspruch in sich. Da es in der Realität keine unendlich steilen Filter gibt, trifft man einen Kompromiss und legt die maximale Ausgangsfrequenz auf fs/3. Dies würde bedeuten, dass uns nur etwa f = 16.67 MHz als maximale Ausgangsfrequenz der DDS zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
Wir wollen uns diesem Kompromiss ein wenig entgegensetzen und setzen die Filtergrenze etwas höher, also bei 20 MHz an. Innerhalb einer Dekade (fs-fmax = 30MHz) soll das Signal um -60 dBc bis -70 dBc (dBc - Decibel under Carrier) gedämpft werden.&lt;br /&gt;
Im Folgenden geht es also darum, ein Filter mit den getroffenen Annahmen zu entwerfen. Es wird geprüft, ob ein Filter 7. Ordnung diesem Anspruch gerecht werden kann oder ob ein Filter 9. Ordnung eingesetzt werden muss.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe des Programmes AADE Filter Design entwerfen wir einen Elliptic LowPass mit folgenden Parametern:&lt;br /&gt;
&lt;br /&gt;
F1 = 20 MHz&lt;br /&gt;
F2 = 30 MHz&lt;br /&gt;
Apass = 0,01 (warum 0,01 wird nachfolgend erklärt)&lt;br /&gt;
Order = 7 bzw. 9&lt;br /&gt;
Zin = 50 Ω&lt;br /&gt;
Zout = 50 Ω&lt;br /&gt;
&lt;br /&gt;
Das Passband Ripple wird bewusst sehr klein gewählt, da es durch die Annäherung der errechneten Bauteilwerte an erhältliche und parasitären Effekten wieder zunehmen wird. Wenn man ein Passband Ripple von 0,5 dB erreicht wäre das großartig, mit kleiner 1 dB wären man aber immer noch sehr zufrieden. Wieso?&lt;br /&gt;
&lt;br /&gt;
Das wird rechnerisch schnell deutlich:&lt;br /&gt;
&lt;br /&gt;
Geht man davon aus, dass das Filter mit einer Eingangsimpedanz von 50 Ω von einer Quelle mit 50 Ω Ausgangsimpedanz und einem Signal von 1 V (0 dB) Amplitude gespeist wird, so wird man, wenn das Filter eine Ausgangsimpedanz von 50 Ω hat und man das Filter mit 50 Ω abschließt noch die halbe Spannung messen können, also 500 mV (ca. -6,02 dB).&lt;br /&gt;
Lässt man nun 0,3 dB Ripple zu, so entspricht das einem Wert von -6.32 dB oder 483 mV, bei 0,5 dB sind es 472 mV und bei 1 dB noch rund 446 mV.&lt;br /&gt;
&lt;br /&gt;
Die Bauteile werden zunächst als verlustfrei betrachtet und das Programm schlägt für beide Filter eine Bauteilbemessung vor:&lt;br /&gt;
&lt;br /&gt;
Filter 7. Ordnung [[http://www.mikrocontroller.net/attachment/70868/FG-AD5930-3.png]], [[http://www.mikrocontroller.net/attachment/70869/FG-AD5930-4.png]]&lt;br /&gt;
&lt;br /&gt;
Filter 9. Ordnung [[http://www.mikrocontroller.net/attachment/70870/FG-AD5930-5.png]], [[http://www.mikrocontroller.net/attachment/70871/FG-AD5930-6.png]]&lt;br /&gt;
&lt;br /&gt;
Anhand der Bauteilbemessung wird schnell ersichtlich, dass es keine diskreten Kondensatoren mit 0,xxxpF gibt und auch keine Induktivitäten mit Werten unterhalb des nH-Bereiches.&lt;br /&gt;
&lt;br /&gt;
Das Entwurftool lässt es aber dennoch zu, dass man sich die Filterkurve anschauen kann. Im direkten Vergleich der beiden Filter zeigt sich, dass mit dem Filter 7. Ordnung gerade etwa -60 dBr gegenüber dem maximalen Ausgangssignal an Dämpfung erreicht werden. Wir konzentrieren uns daher auf das Filter 9. Ordnung, da es mit etwa -90 dBr deutlich vielversprechender ausschaut.&lt;br /&gt;
&lt;br /&gt;
Das Filter muss nun realen Bauteilwerten angenähert werden. Dies tut man, indem man einfach schaut, was die Hersteller für Bauteilwerte liefern können. Im einfachsten Fall gibt es genau den Wert, den man sucht, andernfalls kann man auch durch Verschaltung mehrerer Bauteile (Induktivitäten oder Kapazitäten in Serie oder parallel angeordnet) auf den gewünschten Bauteilwert kommen.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich, eine SpiceSimulation durchzuführen, in der man das errechnete Filter mit dem aus realen Bauteilwerten bestehenden vergleicht. Hier kann, durch Hinzufügen des Serienwiderstandes bzw. der Güte und der Resonanzfrequenz bzw. der parasitären Kapazität, schon abgeschätzt werden, wie das Filter in etwa real wirken wird. Dies setzt jedoch ein gut durchdachtes, kapazitätsarmes Layout voraus.&lt;br /&gt;
&lt;br /&gt;
Wer sich das nicht antun möchte, der baut das Filter &amp;quot;einfach&amp;quot; auf und vermisst es bspw. mit einem Gain-Phase-Analyser, einem Netzwerkanalysator oder mit einem Spektrumanalyser mit integriertem Tracking Generator o.ä. brauchbarem Messequipment.&lt;br /&gt;
&lt;br /&gt;
Nähert man das mit den oben genannten Randbedingungen entworfene Filter 9. Ordnung an real erhältliche Bauteilwerte an, so erhält man bspw. das folgende Filter:&lt;br /&gt;
&lt;br /&gt;
*Dipol 1: &#039;&#039;&#039;120pF&#039;&#039;&#039;&lt;br /&gt;
*Dipol 2: &#039;&#039;&#039;8pF || 540nH&#039;&#039;&#039; (aus 270nH + 270nH)&lt;br /&gt;
*Dipol 3: &#039;&#039;&#039;250pF&#039;&#039;&#039;(aus 150pF || 100pF)&lt;br /&gt;
*Dipol 4: &#039;&#039;&#039;43p&#039;&#039;&#039; (aus 33pF || 10pF) &#039;&#039;&#039;|| 530nH&#039;&#039;&#039; (aus 330nH + 200nH)&lt;br /&gt;
*Dipol 5: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 6: &#039;&#039;&#039;56pF || 490nH&#039;&#039;&#039; (aus 270nH + 220nH)&lt;br /&gt;
*Dipol 7: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 8: &#039;&#039;&#039;30pF&#039;&#039;&#039; (aus 15pF || 15pF) &#039;&#039;&#039;|| 480nH&#039;&#039;&#039; (aus 330nH + 150nH)&lt;br /&gt;
*Dipol 9: &#039;&#039;&#039;100pF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies Filter ist in folgender Simulation noch einmal gezeigt [[http://www.mikrocontroller.net/attachment/70886/FG-AD5930-7.png]], [[http://www.mikrocontroller.net/attachment/70887/FG-AD5930-8.png]].&lt;br /&gt;
&lt;br /&gt;
Fügt man nun den Bauteilwerten noch ihre parasitären Elemente hinzu (Verluste in den Bauteilen), diese findet man in den Datenbättern der Bauteile, so kann man das Filter der Realität weiter annähern. Dies ist hier mal für Induktivitäten eines Herstellers unterschiedlicher Serien und Gehäusegrößen durchgeführt worden [[http://www.mikrocontroller.net/attachment/71186/FG-AD5930-9.png]].&lt;br /&gt;
&lt;br /&gt;
Nach diesen Ergebnissen fällt die Bauteilwahl auf die AS-Serie im Package 0805.&lt;br /&gt;
&lt;br /&gt;
Als Kondensatoren werden NPO-Typen in 0805 mit ±0,5pF bei kleinen Bauteilwerten und ±5% bei den größeren Werten für die Toleranz eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Nun geht es an den Aufbau des Filters. Hier findet sich das Testlayout, das speziell für dieses Filter [[http://www.mikrocontroller.net/attachment/74720/Filter.png]] verwendet wurde. Die in Serie geschalteten Induktivitäten werden im 90°-Winkel zueinander angeordnet, um die Kopplung der Induktivitäten untereinander zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
Nach dem Vermessen des Filters wird dessen Übertragungsfunktion (Uout/Uin in dB) dem ursprünglich simulierten Filter mit realen, verlustbehafteten Bauteilwerten graphisch gegenüber gestellt [[http://www.mikrocontroller.net/attachment/79100/Filtermessung.png]].&lt;br /&gt;
&lt;br /&gt;
Es zeigt sich, dass das reale Filter [[http://www.mikrocontroller.net/attachment/79034/Filter.JPG]] recht gut gelungen ist, sodass diese Bauteilwerte direkt im weiteren Projekt verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Für den fein aufgelösten Frequenzbereich soll die Taktfrequenz des DDS 3,3554432 MHz betragen.&lt;br /&gt;
Um ein aktives Filter zu entwerfen kommt das kostenlos Programm FilterPro von Texas Instruments zum Einsatz.&lt;br /&gt;
Wir legen folgende Randbedingungen fest:&lt;br /&gt;
&lt;br /&gt;
* Passband: Low-Pass&lt;br /&gt;
* Circuit-Type: MFB Single-Ended bzw. MFB Fully Differential&lt;br /&gt;
* Anzahl Pole: 4&lt;br /&gt;
* Cutoff Freq. 1,5M&lt;br /&gt;
* Filter Type: Butterworth&lt;br /&gt;
* Value Display: Component Values&lt;br /&gt;
* Components: Res. E48 und Cap. E12&lt;br /&gt;
&lt;br /&gt;
und erhalten sofort ein Filter mit der Bemessung der passiven Bauelemente und einer Dämpfung von 80 dB/Dekade.&lt;br /&gt;
Bei der Wahl der richtigen OPVs für das Filter hilft die Angabe Req. GBP (erfoderliches Verstärkungsbandbreiteprodukt).&lt;br /&gt;
&lt;br /&gt;
In diesem Abschnitt wurde gezeigt, dass die PC gestützte Auslegung eines Rekonstruktionsfilters bei Weitem nicht so kompliziert ist, wie es zunächst erscheinen mag, sodass jeder mit dem hier gezeigten Beispiel in der Lage sein sollte, sein eigenes Rekonstruktionsfilter auszulegen.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos zum Filter können der [http://www.mikrocontroller.net/topic/168134#1606968 Diskussionsrunde] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenkorrektur ===&lt;br /&gt;
&lt;br /&gt;
Der FSAdjust-Eingang ermöglicht eine Korrektur der Amplitude, sodass hier Verluste durch das Filter bzw. Passband Ripple, durch eine Rückkoppplung vom Verstärker zum DDS-IC, ausgeglichen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Endstufe ===&lt;br /&gt;
&lt;br /&gt;
Übliche Funktionsgeneratoren verfügen über eine Endstufe, mit der Ausgangspegel von 20Vpp möglich sind. Ähnliche Ausgangspegel sollen auch hier das Ziel sein.&lt;br /&gt;
&lt;br /&gt;
==== DC-Offsetverschiebung ====&lt;br /&gt;
&lt;br /&gt;
Eine Gleichspannungsoffsetverschiebung soll ebenfalls implementiert werden. Diese kann analog von einem Potentiometer aus erfolgen, soll später dann jedoch gegen einen DAC ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Selbstverständlich gehört auch eine durchdachte Spannungsversorgung in den Rahmen dieses Projektes, das den kompletten Funktionsgenerator mit den erforderlichen Spannungen versorgt.&lt;br /&gt;
&lt;br /&gt;
== Sonderfunktionen ==&lt;br /&gt;
&lt;br /&gt;
Hier sollen die Funktionen beleuchtet werden, die entweder nicht direkt oder gar nicht aus dem AD5930, jedoch mit etwas Controllerunterstützung dennoch gewonnen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenmodulation ===&lt;br /&gt;
&lt;br /&gt;
Über den bereits erwähnten FSAdjust am AD5930 kann eine Amplitudenmodulation vorgenommen werden. Diese soll separat nach außen geführt werden und es dem Benutzer erlauben Signale auf eine eingestellte Trägerfrequenz im AD5930 aufzumodelieren.&lt;br /&gt;
&lt;br /&gt;
=== Impuls-Signale ===&lt;br /&gt;
&lt;br /&gt;
Für die Ausgabe von Impulsen kann die Burst-Funktion des AD5930 verwendet werden. Die minimale Impulslänge wird dann durch die maximale Ausgangsfrequenz des AD5930 bestimmt. Dazu kann das Signal durch einen schnellen Baustein der 74er Reihe geschickt werden, sodass Impulse von 20ns vorstellbar sind.&lt;br /&gt;
&lt;br /&gt;
=== PWM-Signale ===&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Ausbaus zum Standalone-Gerät wird zwangsläufig auch ein Mikrocontroller zum Einsatz kommen, sodass hier grundsätzich die Möglichkeit besteht den Funktionsgenerator um Pulsweitenmodulation zu erweitern. Für die Ausgabe von PWM-Signalen bis 20MHz ist jedoch ein entsprechend schneller Mikrocontroller notwendig.&lt;br /&gt;
Macht man sich dagegen die Burst-Funktion des AD5930 in Kombination mit einem schnellem Baustein der 74er Reihe o.ä. zu Nutze, so sollte auch eine Pulsweitenmodulation mit langsameren Mikrocontrollern möglich sein. Hierzu ist aber die Programmierzeit des AD5930 mit zu berücksichtigen, da ständig neue Frequenzen geschrieben werden müssen.&lt;br /&gt;
&lt;br /&gt;
== Das Software Frontend ==&lt;br /&gt;
&lt;br /&gt;
Für die Programmierung des AD5930 ist, in der Ausbaustufe mit FT232, eine Softwareoberfläche notwendig, von der aus sämtliche Einstellungen für den Bediener nutzerfreundlich vorgenommen werden können.&lt;br /&gt;
&lt;br /&gt;
= Ausbau zum Standalone-Gerät =&lt;br /&gt;
&lt;br /&gt;
Als weitere Stufe steht der Ausbau zum Standalone-Gerät an. Hierzu wird ein Mikrontroller mit Anzeige und Menüsteuerung zum Einsatz kommen können, sodass sämtliche Einstellungen auch bequem direkt am Gerät erfolgen können und ein PC nicht zwingend erforderlich ist.&lt;br /&gt;
Hierfür ist die Programmierung eines Mikrocontrollers notwendig.&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung des Standalone-Gerätes ==&lt;br /&gt;
&lt;br /&gt;
== Controllerauswahl ==&lt;br /&gt;
&lt;br /&gt;
== Anzeige der Statusinformationen - LCD ==&lt;br /&gt;
&lt;br /&gt;
== Schaltung des Controllerboards ==&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
= Schaltpläne und Layoutdaten =&lt;br /&gt;
&lt;br /&gt;
Alle Schaltpläne und Layoutdaten sollen hier für jeden zugänglich gemacht werden. Es bietet sich daher an Eagle in der Light Version oder KiCAD zu verwenden.&lt;br /&gt;
&lt;br /&gt;
= Diskussionsrunde =&lt;br /&gt;
&lt;br /&gt;
Unter diesem [http://www.mikrocontroller.net/topic/168134#1606968 Link] sollen Diskussionen zum Projekt erfolgen.&lt;br /&gt;
&lt;br /&gt;
= Links zu bekannten Projekten mit dem AD5930/AD5932 =&lt;br /&gt;
&lt;br /&gt;
[http://mexlewiki.hs-heilbronn.de/UserFiles/File/Funktionsgenerator%20DDS/Documentation%20DDS.pdf DDS-Funktionsgenerator mit dem MiniMEXLE Version 3.0]&lt;br /&gt;
&lt;br /&gt;
[http://www.uchobby.com/index.php/2007/09/05/arduino-siggen1-boards-arrive/ Siggen1]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Signalgeneratoren]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59845</id>
		<title>DDS basierter Funktionsgenerator mit AD5930</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59845"/>
		<updated>2011-08-25T12:10:55Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Die Programmierung des DDS-ICs */ gibt es nicht&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite soll als Projektseite für einen DDS-basierten Funktionsgenerator dienen. Bekannte Funktionsgeneratoren auf Basis von DDS-ICs der Firma Analog Devices sind bekannt und im Internet einsehbar (bspw. DDS10, DDS20, DDS130).&lt;br /&gt;
Allen Funktionsgeneratoren ist eines gemein, sie sind sehr einfach gehalten und können es mit kommerziellen Funktionsgeneratoren nicht aufnehmen. Die Rekonstruktionsfilter sind zum Teil unbefriedigend dimensioniert und erfüllen insgesamt, nach Auffassung des Projektinitiators, nicht den Anspruch an einen Funktionsgenerator für die Messtechnik.&lt;br /&gt;
&lt;br /&gt;
Das Projekt nimmt bewusst Abstand von Projekten mit &amp;quot;großen&amp;quot; DDS-ICs, die beispielsweise für Eigenbau-Netzwerkanalysatoren, Signalgeneratoren, Antennenanpassgeräten oder Impedanzmessgeräten und ähnlichen Schaltungen zum Einsatz kommen. Derlei Projekte sind inspirierend, haben jedoch völlig andere Ansprüche.&lt;br /&gt;
Daher soll das erklärte Ziel dieses Projektes ein Funktionsgenerator sein, der das Optimum aus dem AD5930 herausholen kann und als Vorlage für eigene Schaltungen mit DDS-ICs dient.&lt;br /&gt;
Zunächst soll der Funktionsgenerator komplett via PC ansteuerbar sein, eine Erweiterung als Standalone-Gerät ist aber ebenso denkbar.&lt;br /&gt;
&lt;br /&gt;
= Worte vom Projektinitiator an die Gemeinde =&lt;br /&gt;
&lt;br /&gt;
Es wurde bewusst Mikrocontroller.net für das Projekt gewählt, da diese Plattform keinem kommerziellem Hintergedanken entspricht, für jeden auch ohne Anmeldung einsehbar ist und der Projektinitiator, nach eigener Erfahrung der Auffassung ist, dass viele sich gegenüber einer englischsprachigen Plattform mit qualifizierten Beiträgen zurückhalten.&lt;br /&gt;
Jeder der sich inspiriert fühlt sein Wissen mit anderen zu teilen und Lust hat am Projekt teilzunehmen ist aufgerufen, diese Projektseite mit Informationen zu füllen.&lt;br /&gt;
&lt;br /&gt;
= Basisgerät =&lt;br /&gt;
&lt;br /&gt;
Das Basisgerät soll als PC-Gerät ausgeführt sein. Da alle Schnittstellen jedoch auch über Pfostensteckeranschlüsse zugänglich gemacht werden, ist es problemlos möglich, den Funktionsgenerator zu einem Standalone-Gerät auszubauen.&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
* Signalarten: Sinus, Dreieck, Rampe, Rechteck, Puls&lt;br /&gt;
* minimale Frequenz: 3Hz&lt;br /&gt;
* maximale Frequenz: Sinus- und Rechtecksignale bis 20MHz, Dreieck und Rampe bis 2MHz&lt;br /&gt;
* Modi: Kontinuierlich, Burst, Sweep, Modulation (AM/FM)&lt;br /&gt;
* Signalausgang: 10Vpp&lt;br /&gt;
* Offset: ±5V&lt;br /&gt;
&lt;br /&gt;
== Die Schaltungsbaugruppen ==&lt;br /&gt;
&lt;br /&gt;
Der komplette Funktionsgenerator wird im Folgenden in einzelnen Baugruppen definiert und die Baugruppen kontinuierlich in ihrer Funktion erklärt. Sie stellen zugleich die einzelnen Baustellen des Projektes dar.&lt;br /&gt;
&lt;br /&gt;
=== Das Herzstück: DDS-IC AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Der AD5930 ist ein Signalgeneratorbaustein von Analog Devices, der nach dem DDS-Prinzip (Digital Direct Synthesis) arbeitet. Mit dem speziellen Exemplar lassen sich sinus- und dreieckförmige Signale erzeugen. Dazu wird ein Frequenzwort per SPI-Schnittstelle an das DDS-IC übertragen.&lt;br /&gt;
Im Gegensatz zu anderen DDS-Bausteinen von Analog Devices ist dieses Frequenzwort beim AD5930/5932 nur 24bit breit. Bei einer, laut Datenblatt angegebenen maximalen Taktfrequenz von 50MHz ergibt sich somit:&lt;br /&gt;
&lt;br /&gt;
kleinste auszugebende Frequenz/kleinstes Frequenzinkrement: 2,980232239 Hz&lt;br /&gt;
maximale Ausgangsfrequenz: 25 MHz&lt;br /&gt;
&lt;br /&gt;
Er ist der direkte Bruder des AD5932. Beide unterscheiden sich nur geringfügig. Der AD5930 verfügt über einen differentiellen Stromausgang, der AD5932 hingegen über einen einzelnen Spannungsausgang, bei dem ein 200Ω Abschlusswiderstand bereits integriert worden ist. Außerdem wurde die Ansteuerung der Vollaussteuerung beim AD5932 eingespart.&lt;br /&gt;
&lt;br /&gt;
Beide verfügen über eine Sweepfunktion mit verschiedenen Modi. So ist es möglich, den Sweep vollständig intern durchzuführen oder aber über einen Interrupt den nächsten Frequenzschritt zu setzen, sodass hier ein aufwändiges Neuschreiben der nächsten Frequenz entfällt. Damit minimiert sich die Ansteuerung erheblich und die Datenübertragung zum IC wird erheblich reduziert.&lt;br /&gt;
Zum Sweepen definiert man einfach nur die Startfrequenz, das Frequenzinkrement (positiv oder negativ) und die Anzahl von Inkrementen.&lt;br /&gt;
Darüber hinaus lässt sich definieren, ob nur eine bestimmte Anzahl an Sweeps durchgeführt oder kontinuierlich gesweept werden soll.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich lässt sich mit dem AD5930 ein Burstsignal mit einer definierten Anzahl an Schwingungen erzeugen.&lt;br /&gt;
&lt;br /&gt;
Der AD5930 verfügt über einen Eingang (FullScaleAdjust - FSADJUST) über den sich Amplitudenmodulation, aber auch Amplitudenkorrekturen durchführen ließe.&lt;br /&gt;
&lt;br /&gt;
Eine microcontroller-gestützte Frequenzmodulation ist ebenfalls denkbar.&lt;br /&gt;
&lt;br /&gt;
Programmiert werden beide Bausteine via SPI, mit maximalen Taktgeschwindigkeiten von bis zu 40MHz.&lt;br /&gt;
&lt;br /&gt;
All diese Eigenschaften und noch einige weitere hier vielleicht nicht erwähnte prädestinieren dieses DDS-IC als Herzstück für einen Funktionsgenerator.&lt;br /&gt;
&lt;br /&gt;
=== Taktquelle für den AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Dem Datenblatt zum AD5930 kann man entnehmen, dass der AD5930 mit einem Takt aus einem Quarzoszillator von 50MHz betrieben werden kann.&lt;br /&gt;
Da sich hiermit, wie man der [http://www.analog.com/static/imported-files/application_notes/AN-1044.pdf Application Note AN-1044] entnehmen kann, ein Frequenzinkrement von ungünstigen &amp;lt;math&amp;gt;50 MHz / 2 ^ {24} = 2,980232239 Hz&amp;lt;/math&amp;gt; ergibt, ist es sinnvoll den AD5930 leicht zu übertakten. Dazu wird von 3Hz pro Frequenzinkrement auf die notwendige Taktfrequenz zurück gerechnet.&lt;br /&gt;
Es ergeben sich &amp;lt;math&amp;gt;3 Hz * 2 ^ {24} = 50,331648 MHz&amp;lt;/math&amp;gt; für die Taktquelle.&lt;br /&gt;
&lt;br /&gt;
Da diese Frequenzschritte zumindest für kleine Frequenzen relativ groß erscheinen, ist vorgesehen zwischen zwei Taktfrequenzen umzuschalten, sodass mit einer Taktfrequenz von 3,3554432 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. erreicht wird. (Details siehe nachfolgender Text)&lt;br /&gt;
&lt;br /&gt;
Somit ergibt sich für den fein aufgelösten Frequenzbereich 0,2 Hz .. 1 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. und für den grob aufgelösten Frequenzbereich 3 Hz .. 20 MHz eine Frequenzauflösung von 3 Hz/Inkr.&lt;br /&gt;
&lt;br /&gt;
Um die Taktfrequenzen zu erzeugen, wird zunächst ein programmierbarer Synthesizer, der CDCE913 von Texas Instruments, eingesetzt. Mit diesem und einem extern angeschlossenen Quarz ist es möglich, die notwendige Taktfrequenz für den DDS-IC bereitzustellen. Er verfügt über eine 2-Wire I²C-Schnittstelle, sodass zur Programmierung lediglich eine Takt- (SCL) und eine Datenleitung (SDA) notwendig sind.&lt;br /&gt;
Findet sich ein ähnliches IC mit 3-Wire SPI-Schnittstelle, so ist vorgesehen den CDCE913 zu ersetzen, da dann nur noch eine ChipSelect-Leitung notwendig wird und Takt- bzw. Datenleitung für AD5930 und PLL-IC gemeinsam verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Es stehen eine Reihe von Quarzen zur Verfügung, mit denen sich die Taktfrequenz erzeugen lässt. Es sind lediglich ein paar wenige Randbedingung bei diesem IC zu beachten, um den richtigen Quarz auszuwählen:&lt;br /&gt;
&lt;br /&gt;
1.) &amp;lt;math&amp;gt;fmclk = fout = {fin / Pdiv} * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit M = 1 .. 511, N = 1 .. 4095 und Pdiv = 1 .. 127&lt;br /&gt;
&lt;br /&gt;
2.) &amp;lt;math&amp;gt;fVCO = fin * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit fVCO = 80 MHz .. 230 MHz und fin = 8 MHz .. 32 MHz&lt;br /&gt;
&lt;br /&gt;
Die Frequenz fout sind in unserem Fall die gewünschten 50,331648 MHz.&lt;br /&gt;
Mit den Randbedingungen ergibt sich für Pdiv = 2 .. 4 und daraus bspw. folgende mögliche Kombinationen für den zu verwendenden Quarz, wenn Pdiv = 2 gewählt wurde:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; &#039;&#039;f(Quarz) in [MHz]: &#039;&#039; M (1…511)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;8,192:&#039;&#039; 125, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;9,8304:&#039;&#039; 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;11,0592:&#039;&#039; 225&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;12,288:&#039;&#039; 125, 250, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;14,7456:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;16,384:&#039;&#039; 250, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;19,6608:&#039;&#039; 25, 50, 75, 100, 125, 150, 200, 225, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;22,1184:&#039;&#039; 225, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;24,576:&#039;&#039; 125, 250, 375, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;29,4912:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
Die M-Werte der Tabelle reduzieren sich, wenn man Pdiv = 3 oder 4 wählt.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich einen Quarz mit maximal möglicher Frequenz zu verwenden, da dann der Frequenzfehler minimal wird.&lt;br /&gt;
&lt;br /&gt;
Als leicht erhältlicher Standardquarz (Referenz sei bspw. Reichelt) kann daher derjenige mit 24,576 MHz zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
Mit diesem Quarz und dem Ändern des Teilers von Pdiv = 2 auf Pdiv = 6 ergibt sich eine Frequenzauflösung des AD5930 auf 1 Hz, respektive einer Taktfrequenz des AD5930 von fmclk = 16,777216 MHz und mit Pdiv = 12 eine Auflösung von 0,5 Hz, respektive einer Taktfrequenz von fmclk = 8,388608 MHz. Zu beachten ist dabei, dass sich dadurch natürlich die maximal auszugebende Frequenz ebenfalls reduziert. Mit Pdiv = 6 sind dies fmax = 8,388608 MHz und für Pdiv = 12 entsprechend fmax = 4,194304 MHz.&lt;br /&gt;
&lt;br /&gt;
Somit kann durch einfaches Ändern von Pdiv die Taktfrequenz bzw. die Frequenzauflösung verändert werden.&lt;br /&gt;
&lt;br /&gt;
Den Zusammenhang zwischen Taktfrequenz und Frequenzauflösung zeigt die nachfolgende Tabelle noch einmal:&lt;br /&gt;
&lt;br /&gt;
fmclk = 50,331648 MHz --&amp;gt; foutmin = 3 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 41,94304 MHz --&amp;gt; foutmin = 2,5 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 33,554432 MHz --&amp;gt; foutmin = 2 Hz --&amp;gt; Pdiv = 3&lt;br /&gt;
&lt;br /&gt;
fmclk = 25,165824 MHz --&amp;gt; foutmin = 1,5 Hz --&amp;gt; Pdiv = 4&lt;br /&gt;
&lt;br /&gt;
fmclk = 16,777216 MHz --&amp;gt; foutmin = 1 Hz --&amp;gt; Pdiv = 6&lt;br /&gt;
&lt;br /&gt;
fmclk = 8,388608 MHz --&amp;gt; foutmin = 0,5 Hz --&amp;gt; Pdiv = 12&lt;br /&gt;
&lt;br /&gt;
fmclk = 4,194304 MHz --&amp;gt; foutmin = 0,25 Hz --&amp;gt; Pdiv = 24&lt;br /&gt;
&lt;br /&gt;
fmclk = 3,3554432 MHz --&amp;gt; foutmin = 0,2 Hz --&amp;gt; Pdiv = 30&lt;br /&gt;
&lt;br /&gt;
fmclk = 2,0971515 MHz --&amp;gt; foutmin = 0,125 Hz --&amp;gt; Pdiv = 48&lt;br /&gt;
&lt;br /&gt;
fmclk = 1,6777216 MHz --&amp;gt; foutmin = 0,1 Hz --&amp;gt; Pdiv = 60&lt;br /&gt;
&lt;br /&gt;
Wer es genauer als ein Quarz braucht kann auch ein TCXO oder gar einen TCVCXO verwenden. Hierbei ist die Auswahl an Bausteinen jedoch deutlich eingeschränkter. Eine Möglichkeit ist die Verwendung eines TCXO mit einer Frequenz von 16,384 MHz.&lt;br /&gt;
Mit ihm lassen sich die aufgeführten Taktfrequenzen ebenfalls einstellen.&lt;br /&gt;
Es ist anzumerken, dass der CDCE913 über die Möglichkeit verfügt zwei PLL-Settings vorzuprogrammieren und im EEPROM zu hinterlegen, sodass zwischen zwei Ausgangsfrequenzen durch einfaches Umschalten eines Statusregisters umgeschaltet werden kann. Es kann aber auch zur Laufzeit auf die Register des PLL-Bausteins zugegriffen und Registerwerte neu geschrieben werden, sodass die maximale Ausgangsfrequenz des AD5930 voll ausgenutzt werden kann, ohne dabei auf sehr tiefe Frequenzen verzichten zu müssen.&lt;br /&gt;
&lt;br /&gt;
=== Die Programmierung des DDS-ICs ===&lt;br /&gt;
&lt;br /&gt;
In einem ersten Schritt soll der AD5930 über einen FT232 vollständig vom PC aus programmiert werden. Das macht Arbeiten im Bereich Mikrocontroller zunächst überflüssig.&lt;br /&gt;
Mit einem kleinen Tool kann der FT232 via Bit Banging als USB to SPI Programmer genutzt werden, sodass der Schwerpunkt zunächst vollständig im Bereich Schaltungsentwurf liegen kann.&lt;br /&gt;
Eine Adaptierung eines Mikrocontrollers ist dann in einer späteren Ausbaustufe &amp;quot;schnell&amp;quot; erledigt.&lt;br /&gt;
&lt;br /&gt;
Auf dieser [http://www.openschemes.com/modules/wordpress/2009/11/05/bit-banging-spi-on-arduinos-ft232rl/1/ Webseite] wird gezeigt, dass via Bit Banging der FT232 als USB to SPI Programmer verwendet werden kann. Dazu werden einfach die drei notwendigen SPI-Leitungen vom AD5930 mit dem FT232 wie folgt verbunden:&lt;br /&gt;
&lt;br /&gt;
* Beschreibung - AD5930 - FT232&lt;br /&gt;
*  ChipSelect - FSync  - RI&lt;br /&gt;
*    Clock    - SCLK   - CTS&lt;br /&gt;
*     Data    - SDATA  - MOSI&lt;br /&gt;
&lt;br /&gt;
und das [http://www.openschemes.com/uploads/wordpress/2009/11/ft232spi.zip SPI Demo Tool] gestartet.&lt;br /&gt;
Nachdem der FT232 erkannt wurde drückt man &amp;quot;Open Interface&amp;quot;. Man vergewissert sich noch einmal, dass die Einstellungen für die SPI-Leitungen auch stimmen und klickt auf &amp;quot;Do bitbang Setup&amp;quot;.&lt;br /&gt;
Nun braucht man nur noch die Bitlänge von 8 auf 16 umstellen und kann durch direktes Schreiben der Adressen den AD5930 programmieren.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel soll gezeigt werden, wie ein 1MHz Sinussignal schnell per Hand mit diesem Tool programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* 06db    - setzt die notwendigen Einstellungen in ControlRegister&lt;br /&gt;
* d051    - MSB der Startfrequenz für 1MHz&lt;br /&gt;
* ceb8    - LSB der Startfrequenz für 1MHz&lt;br /&gt;
* 3000    - MSB des Frequenzinkrements&lt;br /&gt;
* 2000    - LSB des Frequenzinkrements&lt;br /&gt;
* 1002    - minimale Anzahl der Frequenzinkremente&lt;br /&gt;
&lt;br /&gt;
Die Programmierung ist kinderleicht und kann bequem als PC-Software ausgeführt werden, sodass hierfür kein Mikrocontroller zum Einsatz kommen muss.&lt;br /&gt;
Wie der AD5930/32 für einen Sweep oder eine Einzelfrequenz programmiert werden kann, findet sich beispielhaft auch in der Application Note-1044 von Analog Devices.&lt;br /&gt;
&lt;br /&gt;
=== Der 1. Verstärker ===&lt;br /&gt;
&lt;br /&gt;
Das Datenblatt des AD5930 empfiehlt, dass an seinen DAC-Ausgängen ein mind. 200Ω Widerstand als Last angeschlossen wird, zu denen parallel ein Kondensator von 20pF spendiert werden soll, um ein Rekonstruktionsfilter 1. Ordnung auszubilden. Aus der Stromquelle des DAC wird somit eine Spannungsquelle.&lt;br /&gt;
Je nach Taktfrequenz muss der Wert der Kapazität angepasst werden. Gesetz dem Fall der AD5930 wird mit eine Taktfrequenz von 41,94304MHz gespeist erhöht sich der Wert der Kapazität auf 39pF.&lt;br /&gt;
Um die Vorteile eines differentiellen Ausgangs nutzen zu können kommen in aller Regel Übertrager zum Einsatz.&lt;br /&gt;
Analog Devices, CN-0142, &amp;quot;High CMRR Circuit for Converting Wideband Complementary DAC Outputs to Single-Ended Without Precision Resistors&amp;quot; schreibt zu der Thematik:&lt;br /&gt;
&amp;quot;...Traditional methods for converting wideband DAC comple-mentary current outputs to a single-ended signal are to either use a center-tapped transformer or a single op amp in a differential-to-single-ended configuration. However, the transformer low frequency nonlinearities may limit its use near dc; and the operational amplifier approach requires closely matched resistors to provide dc common-mode rejection, load impedance, and gain matching between the complementary DAC outputs. Errors in the matching will produce errors at the final output...&amp;quot;.&lt;br /&gt;
Abhilfe kann hier ein differentieller Verstärker wie der AD8129/AD8130 schaffen, der über einen differentiellen Eingang und einen Single-Ended Ausgang verfügt. Aus dem symmetrischen Signal wird somit ein unsymmetrisches, wie es in den meisten Anwendungen benötigt wird. Der Verstärker soll das Rekonstruktionsfilter treiben, mit dem es im nächsten Abschnitt weiter geht.&lt;br /&gt;
&lt;br /&gt;
=== Das Rekonstruktionsfilter ===&lt;br /&gt;
&lt;br /&gt;
Die DDS macht prinzipbedingt den Einsatz eines Rekonstruktionsfilters notwendig. Dieses sorgt dafür, dass das Taktsignal des DDS-ICs mit ausreichender Dämpfung unterdrückt wird.&lt;br /&gt;
In verschiedenen Papern findet man ganz unterschiedliche Angaben zu dieser notwendigen Dämpfung. Einige sprechen von -60dBr (bspw. Aufsatz zur Tiefpassfilter - Dimensionierung von Gehard Rohm) andere sogar von -70dBr (bspw. Application Note  #5 von www.thinkSRS.com) im Bereich der Funktionsgeneratoranwendungen. Die Einheit dBr heißt Decibel relativ und entspricht dem Verhältnis zweier Spannungspegel.&lt;br /&gt;
&lt;br /&gt;
Letzt genannte Quelle schlägt für den Einsatz von DDS-ICs die Verwendung elliptischer Filter vor, da sie mit einem steilen Übergangsbereich und kleinem Ripple im Durchlassbereich entworfen werden können.&lt;br /&gt;
Als Filter wird daher ein elliptisches Filter eingesetzt. Dieses wird mittels freien Tools (bsp. AADE Filter Design) dimensioniert und ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Wie im Abschnitt [http://www.mikrocontroller.net/articles/DDS_basierter_Funktionsgenerator_mit_AD5930#Taktquelle_f.C3.BCr_den_AD5930 Taktquelle für den AD5930] nachzulesen ist, soll zwischen zwei verschiedenen Taktfrequenzen umgeschaltet werden. Demzufolge sind zwei verschiedene Rekonstruktionsfilter erforderlich.&lt;br /&gt;
Für das Taktsignal 3,3554432 MHz kommt ein aktives Rekonstruktionsfilter zum Einsatz, da bei passiven Filtern große Induktivitäten notwendig würden, was mit höheren Filterverlusten einhergeht, da die DC-Widerstände großer Induktivitäten ebenfalls recht groß ausfallen.&lt;br /&gt;
Für das Taktsignal 50,331648 MHz kommt dagegen ein elliptisches Filter, auch Cauer-Filter genannt, zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Vielen graut es davor sich mit der Filterthematik zu beschäftigen, es soll jedoch gezeigt werden, dass der Entwurf eines ordentliches Filters mit modernen PC-gestützen Mitteln kein Geheimnis darstellt.&lt;br /&gt;
&lt;br /&gt;
Die erste Frage die sich jedem, der noch nie ein Filter entworfen hat, stellt ist, wo muss die Filtergrenze liegen. Dazu ein wenig Theorie:&lt;br /&gt;
&lt;br /&gt;
Es werde angenommen der DDS-IC ist mit fs=50MHz getaktet. Die maximale Ausgangsfrequenz ergibt sich laut Nyquist-Abtasttheorem zu fmax = 25 MHz. Das heißt, dass 25 MHz noch vom Filter durchgelassen werden sollen, aber das Stopband auch bereits bei fs-fmax = 25 MHz beginnen soll, ein Widerspruch in sich. Da es in der Realität keine unendlich steilen Filter gibt, trifft man einen Kompromiss und legt die maximale Ausgangsfrequenz auf fs/3. Dies würde bedeuten, dass uns nur etwa f = 16.67 MHz als maximale Ausgangsfrequenz der DDS zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
Wir wollen uns diesem Kompromiss ein wenig entgegensetzen und setzen die Filtergrenze etwas höher, also bei 20 MHz an. Innerhalb einer Dekade (fs-fmax = 30MHz) soll das Signal um -60 dBc bis -70 dBc (dBc - Decibel under Carrier) gedämpft werden.&lt;br /&gt;
Im Folgenden geht es also darum, ein Filter mit den getroffenen Annahmen zu entwerfen. Es wird geprüft, ob ein Filter 7. Ordnung diesem Anspruch gerecht werden kann oder ob ein Filter 9. Ordnung eingesetzt werden muss.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe des Programmes AADE Filter Design entwerfen wir einen Elliptic LowPass mit folgenden Parametern:&lt;br /&gt;
&lt;br /&gt;
F1 = 20 MHz&lt;br /&gt;
F2 = 30 MHz&lt;br /&gt;
Apass = 0,01 (warum 0,01 wird nachfolgend erklärt)&lt;br /&gt;
Order = 7 bzw. 9&lt;br /&gt;
Zin = 50 Ω&lt;br /&gt;
Zout = 50 Ω&lt;br /&gt;
&lt;br /&gt;
Das Passband Ripple wird bewusst sehr klein gewählt, da es durch die Annäherung der errechneten Bauteilwerte an erhältliche und parasitären Effekten wieder zunehmen wird. Wenn man ein Passband Ripple von 0,5 dB erreicht wäre das großartig, mit kleiner 1 dB wären man aber immer noch sehr zufrieden. Wieso?&lt;br /&gt;
&lt;br /&gt;
Das wird rechnerisch schnell deutlich:&lt;br /&gt;
&lt;br /&gt;
Geht man davon aus, dass das Filter mit einer Eingangsimpedanz von 50 Ω von einer Quelle mit 50 Ω Ausgangsimpedanz und einem Signal von 1 V (0 dB) Amplitude gespeist wird, so wird man, wenn das Filter eine Ausgangsimpedanz von 50 Ω hat und man das Filter mit 50 Ω abschließt noch die halbe Spannung messen können, also 500 mV (ca. -6,02 dB).&lt;br /&gt;
Lässt man nun 0,3 dB Ripple zu, so entspricht das einem Wert von -6.32 dB oder 483 mV, bei 0,5 dB sind es 472 mV und bei 1 dB noch rund 446 mV.&lt;br /&gt;
&lt;br /&gt;
Die Bauteile werden zunächst als verlustfrei betrachtet und das Programm schlägt für beide Filter eine Bauteilbemessung vor:&lt;br /&gt;
&lt;br /&gt;
Filter 7. Ordnung [[http://www.mikrocontroller.net/attachment/70868/FG-AD5930-3.png]], [[http://www.mikrocontroller.net/attachment/70869/FG-AD5930-4.png]]&lt;br /&gt;
&lt;br /&gt;
Filter 9. Ordnung [[http://www.mikrocontroller.net/attachment/70870/FG-AD5930-5.png]], [[http://www.mikrocontroller.net/attachment/70871/FG-AD5930-6.png]]&lt;br /&gt;
&lt;br /&gt;
Anhand der Bauteilbemessung wird schnell ersichtlich, dass es keine diskreten Kondensatoren mit 0,xxxpF gibt und auch keine Induktivitäten mit Werten unterhalb des nH-Bereiches.&lt;br /&gt;
&lt;br /&gt;
Das Entwurftool lässt es aber dennoch zu, dass man sich die Filterkurve anschauen kann. Im direkten Vergleich der beiden Filter zeigt sich, dass mit dem Filter 7. Ordnung gerade etwa -60 dBr gegenüber dem maximalen Ausgangssignal an Dämpfung erreicht werden. Wir konzentrieren uns daher auf das Filter 9. Ordnung, da es mit etwa -90 dBr deutlich vielversprechender ausschaut.&lt;br /&gt;
&lt;br /&gt;
Das Filter muss nun realen Bauteilwerten angenähert werden. Dies tut man, indem man einfach schaut, was die Hersteller für Bauteilwerte liefern können. Im einfachsten Fall gibt es genau den Wert, den man sucht, andernfalls kann man auch durch Verschaltung mehrerer Bauteile (Induktivitäten oder Kapazitäten in Serie oder parallel angeordnet) auf den gewünschten Bauteilwert kommen.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich, eine SpiceSimulation durchzuführen, in der man das errechnete Filter mit dem aus realen Bauteilwerten bestehenden vergleicht. Hier kann, durch Hinzufügen des Serienwiderstandes bzw. der Güte und der Resonanzfrequenz bzw. der parasitären Kapazität, schon abgeschätzt werden, wie das Filter in etwa real wirken wird. Dies setzt jedoch ein gut durchdachtes, kapazitätsarmes Layout vorraus.&lt;br /&gt;
&lt;br /&gt;
Wer sich das nicht antun möchte, der baut das Filter &amp;quot;einfach&amp;quot; auf und vermisst es bspw. mit einem Gain-Phase-Analyser, einem Netzwerkanalysator oder mit einem Spektrumanalyser mit integriertem Tracking Generator o.ä. brauchbarem Messequipment.&lt;br /&gt;
&lt;br /&gt;
Nähert man das mit den oben genannten Randbedingungen entworfene Filter 9. Ordnung an real erhältliche Bauteilwerte an, so erhält man bspw. das folgende Filter:&lt;br /&gt;
&lt;br /&gt;
*Dipol 1: &#039;&#039;&#039;120pF&#039;&#039;&#039;&lt;br /&gt;
*Dipol 2: &#039;&#039;&#039;8pF || 540nH&#039;&#039;&#039; (aus 270nH + 270nH)&lt;br /&gt;
*Dipol 3: &#039;&#039;&#039;250pF&#039;&#039;&#039;(aus 150pF || 100pF)&lt;br /&gt;
*Dipol 4: &#039;&#039;&#039;43p&#039;&#039;&#039; (aus 33pF || 10pF) &#039;&#039;&#039;|| 530nH&#039;&#039;&#039; (aus 330nH + 200nH)&lt;br /&gt;
*Dipol 5: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 6: &#039;&#039;&#039;56pF || 490nH&#039;&#039;&#039; (aus 270nH + 220nH)&lt;br /&gt;
*Dipol 7: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 8: &#039;&#039;&#039;30pF&#039;&#039;&#039; (aus 15pF || 15pF) &#039;&#039;&#039;|| 480nH&#039;&#039;&#039; (aus 330nH + 150nH)&lt;br /&gt;
*Dipol 9: &#039;&#039;&#039;100pF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies Filter ist in folgender Simulation noch einmal gezeigt [[http://www.mikrocontroller.net/attachment/70886/FG-AD5930-7.png]], [[http://www.mikrocontroller.net/attachment/70887/FG-AD5930-8.png]].&lt;br /&gt;
&lt;br /&gt;
Fügt man nun den Bauteilwerten noch ihre parasitären Elemente hinzu (Verluste in den Bauteilen), diese findet man in den Datenbättern der Bauteile, so kann man das Filter der Realität weiter annähern. Dies ist hier mal für Induktivitäten eines Herstellers unterschiedlicher Serien und Gehäusegrößen durchgeführt worden [[http://www.mikrocontroller.net/attachment/71186/FG-AD5930-9.png]].&lt;br /&gt;
&lt;br /&gt;
Nach diesen Ergebnissen fällt die Bauteilwahl auf die AS-Serie im Package 0805.&lt;br /&gt;
&lt;br /&gt;
Als Kondensatoren werden NPO-Typen in 0805 mit ±0,5pF bei kleinen Bauteilwerten und ±5% bei den größeren Werten für die Toleranz eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Nun geht es an den Aufbau des Filters. Hier findet sich das Testlayout, das speziell für dieses Filter [[http://www.mikrocontroller.net/attachment/74720/Filter.png]] verwendet wurde. Die in Serie geschalteten Induktivitäten werden im 90°-Winkel zueinander angeordnet, um die Kopplung der Induktivitäten untereinander zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
Nach dem Vermessen des Filters wird dessen Übertragungsfunktion (Uout/Uin in dB) dem ursprünglich simulierten Filter mit realen, verlustbehafteten Bauteilwerten graphisch gegenüber gestellt [[http://www.mikrocontroller.net/attachment/79100/Filtermessung.png]].&lt;br /&gt;
&lt;br /&gt;
Es zeigt sich, dass das reale Filter [[http://www.mikrocontroller.net/attachment/79034/Filter.JPG]] recht gut gelungen ist, sodass diese Bauteilwerte direkt im weiteren Projekt verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Für den fein aufgelösten Frequenzbereich soll die Taktfrequenz des DDS 3,3554432 MHz betragen.&lt;br /&gt;
Um ein aktives Filter zu entwerfen kommt das kostenlos Programm FilterPro von Texas Instruments zum Einsatz.&lt;br /&gt;
Wir legen folgende Randbedingungen fest:&lt;br /&gt;
&lt;br /&gt;
* Passband: Low-Pass&lt;br /&gt;
* Circuit-Type: MFB Single-Ended bzw. MFB Fully Differential&lt;br /&gt;
* Anzahl Pole: 4&lt;br /&gt;
* Cutoff Freq. 1,5M&lt;br /&gt;
* Filter Type: Butterworth&lt;br /&gt;
* Value Display: Component Values&lt;br /&gt;
* Components: Res. E48 und Cap. E12&lt;br /&gt;
&lt;br /&gt;
und erhalten sofort ein Filter mit der Bemessung der passiven Bauelemente und einer Dämpfung von 80 dB/Dekade.&lt;br /&gt;
Bei der Wahl der richtigen OPVs für das Filter hilft die Angabe Req. GBP (erfoderliches Verstärkungsbandbreiteprodukt).&lt;br /&gt;
&lt;br /&gt;
In diesem Abschnitt wurde gezeigt, dass die PC gestützte Auslegung eines Rekonstruktionsfilters bei Weitem nicht so kompliziert ist, wie es zunächst erscheinen mag, sodass jeder mit dem hier gezeigten Beispiel in der Lage sein sollte, sein eigenes Rekonstruktionsfilter auszulegen.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos zum Filter können der [http://www.mikrocontroller.net/topic/168134#1606968 Diskussionsrunde] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenkorrektur ===&lt;br /&gt;
&lt;br /&gt;
Der FSAdjust-Eingang ermöglicht eine Korrektur der Amplitude, sodass hier Verluste durch das Filter bzw. Passband Ripple, durch eine Rückkoppplung vom Verstärker zum DDS-IC, ausgeglichen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Endstufe ===&lt;br /&gt;
&lt;br /&gt;
Übliche Funktionsgeneratoren verfügen über eine Endstufe, mit der Ausgangspegel von 20Vpp möglich sind. Ähnliche Ausgangspegel sollen auch hier das Ziel sein.&lt;br /&gt;
&lt;br /&gt;
==== DC-Offsetverschiebung ====&lt;br /&gt;
&lt;br /&gt;
Eine Gleichspannungsoffsetverschiebung soll ebenfalls implementiert werden. Diese kann analog von einem Potentiometer aus erfolgen, soll später dann jedoch gegen einen DAC ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Selbstverständlich gehört auch eine durchdachte Spannungsversorgung in den Rahmen dieses Projektes, das den kompletten Funktionsgenerator mit den erforderlichen Spannungen versorgt.&lt;br /&gt;
&lt;br /&gt;
== Sonderfunktionen ==&lt;br /&gt;
&lt;br /&gt;
Hier sollen die Funktionen beleuchtet werden, die entweder nicht direkt oder gar nicht aus dem AD5930, jedoch mit etwas Controllerunterstützung dennoch gewonnen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenmodulation ===&lt;br /&gt;
&lt;br /&gt;
Über den bereits erwähnten FSAdjust am AD5930 kann eine Amplitudenmodulation vorgenommen werden. Diese soll separat nach außen geführt werden und es dem Benutzer erlauben Signale auf eine eingestellte Trägerfrequenz im AD5930 aufzumodelieren.&lt;br /&gt;
&lt;br /&gt;
=== Impuls-Signale ===&lt;br /&gt;
&lt;br /&gt;
Für die Ausgabe von Impulsen kann die Burst-Funktion des AD5930 verwendet werden. Die minimale Impulslänge wird dann durch die maximale Ausgangsfrequenz des AD5930 bestimmt. Dazu kann das Signal durch einen schnellen Baustein der 74er Reihe geschickt werden, sodass Impulse von 20ns vorstellbar sind.&lt;br /&gt;
&lt;br /&gt;
=== PWM-Signale ===&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Ausbaus zum Standalone-Gerät wird zwangsläufig auch ein Mikrocontroller zum Einsatz kommen, sodass hier grundsätzich die Möglichkeit besteht den Funktionsgenerator um Pulsweitenmodulation zu erweitern. Für die Ausgabe von PWM-Signalen bis 20MHz ist jedoch ein entsprechend schneller Mikrocontroller notwendig.&lt;br /&gt;
Macht man sich dagegen die Burst-Funktion des AD5930 in Kombination mit einem schnellem Baustein der 74er Reihe o.ä. zu Nutze, so sollte auch eine Pulsweitenmodulation mit langsameren Mikrocontrollern möglich sein. Hierzu ist aber die Programmierzeit des AD5930 mit zu berücksichtigen, da ständig neue Frequenzen geschrieben werden müssen.&lt;br /&gt;
&lt;br /&gt;
== Das Software Frontend ==&lt;br /&gt;
&lt;br /&gt;
Für die Programmierung des AD5930 ist, in der Ausbaustufe mit FT232, eine Softwareoberfläche notwendig, von der aus sämtliche Einstellungen für den Bediener nutzerfreundlich vorgenommen werden können.&lt;br /&gt;
&lt;br /&gt;
= Ausbau zum Standalone-Gerät =&lt;br /&gt;
&lt;br /&gt;
Als weitere Stufe steht der Ausbau zum Standalone-Gerät an. Hierzu wird ein Mikrontroller mit Anzeige und Menüsteuerung zum Einsatz kommen können, sodass sämtliche Einstellungen auch bequem direkt am Gerät erfolgen können und ein PC nicht zwingend erforderlich ist.&lt;br /&gt;
Hierfür ist die Programmierung eines Mikrocontrollers notwendig.&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung des Standalone-Gerätes ==&lt;br /&gt;
&lt;br /&gt;
== Controllerauswahl ==&lt;br /&gt;
&lt;br /&gt;
== Anzeige der Statusinformationen - LCD ==&lt;br /&gt;
&lt;br /&gt;
== Schaltung des Controllerboards ==&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
= Schaltpläne und Layoutdaten =&lt;br /&gt;
&lt;br /&gt;
Alle Schaltpläne und Layoutdaten sollen hier für jeden zugänglich gemacht werden. Es bietet sich daher an Eagle in der Light Version oder KiCAD zu verwenden.&lt;br /&gt;
&lt;br /&gt;
= Diskussionsrunde =&lt;br /&gt;
&lt;br /&gt;
Unter diesem [http://www.mikrocontroller.net/topic/168134#1606968 Link] sollen Diskussionen zum Projekt erfolgen.&lt;br /&gt;
&lt;br /&gt;
= Links zu bekannten Projekten mit dem AD5930/AD5932 =&lt;br /&gt;
&lt;br /&gt;
[http://mexlewiki.hs-heilbronn.de/UserFiles/File/Funktionsgenerator%20DDS/Documentation%20DDS.pdf DDS-Funktionsgenerator mit dem MiniMEXLE Version 3.0]&lt;br /&gt;
&lt;br /&gt;
[http://www.uchobby.com/index.php/2007/09/05/arduino-siggen1-boards-arrive/ Siggen1]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Signalgeneratoren]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59844</id>
		<title>DDS basierter Funktionsgenerator mit AD5930</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59844"/>
		<updated>2011-08-25T12:08:39Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Das Herzstück: DDS-IC AD5930 */ tipp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite soll als Projektseite für einen DDS-basierten Funktionsgenerator dienen. Bekannte Funktionsgeneratoren auf Basis von DDS-ICs der Firma Analog Devices sind bekannt und im Internet einsehbar (bspw. DDS10, DDS20, DDS130).&lt;br /&gt;
Allen Funktionsgeneratoren ist eines gemein, sie sind sehr einfach gehalten und können es mit kommerziellen Funktionsgeneratoren nicht aufnehmen. Die Rekonstruktionsfilter sind zum Teil unbefriedigend dimensioniert und erfüllen insgesamt, nach Auffassung des Projektinitiators, nicht den Anspruch an einen Funktionsgenerator für die Messtechnik.&lt;br /&gt;
&lt;br /&gt;
Das Projekt nimmt bewusst Abstand von Projekten mit &amp;quot;großen&amp;quot; DDS-ICs, die beispielsweise für Eigenbau-Netzwerkanalysatoren, Signalgeneratoren, Antennenanpassgeräten oder Impedanzmessgeräten und ähnlichen Schaltungen zum Einsatz kommen. Derlei Projekte sind inspirierend, haben jedoch völlig andere Ansprüche.&lt;br /&gt;
Daher soll das erklärte Ziel dieses Projektes ein Funktionsgenerator sein, der das Optimum aus dem AD5930 herausholen kann und als Vorlage für eigene Schaltungen mit DDS-ICs dient.&lt;br /&gt;
Zunächst soll der Funktionsgenerator komplett via PC ansteuerbar sein, eine Erweiterung als Standalone-Gerät ist aber ebenso denkbar.&lt;br /&gt;
&lt;br /&gt;
= Worte vom Projektinitiator an die Gemeinde =&lt;br /&gt;
&lt;br /&gt;
Es wurde bewusst Mikrocontroller.net für das Projekt gewählt, da diese Plattform keinem kommerziellem Hintergedanken entspricht, für jeden auch ohne Anmeldung einsehbar ist und der Projektinitiator, nach eigener Erfahrung der Auffassung ist, dass viele sich gegenüber einer englischsprachigen Plattform mit qualifizierten Beiträgen zurückhalten.&lt;br /&gt;
Jeder der sich inspiriert fühlt sein Wissen mit anderen zu teilen und Lust hat am Projekt teilzunehmen ist aufgerufen, diese Projektseite mit Informationen zu füllen.&lt;br /&gt;
&lt;br /&gt;
= Basisgerät =&lt;br /&gt;
&lt;br /&gt;
Das Basisgerät soll als PC-Gerät ausgeführt sein. Da alle Schnittstellen jedoch auch über Pfostensteckeranschlüsse zugänglich gemacht werden, ist es problemlos möglich, den Funktionsgenerator zu einem Standalone-Gerät auszubauen.&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
* Signalarten: Sinus, Dreieck, Rampe, Rechteck, Puls&lt;br /&gt;
* minimale Frequenz: 3Hz&lt;br /&gt;
* maximale Frequenz: Sinus- und Rechtecksignale bis 20MHz, Dreieck und Rampe bis 2MHz&lt;br /&gt;
* Modi: Kontinuierlich, Burst, Sweep, Modulation (AM/FM)&lt;br /&gt;
* Signalausgang: 10Vpp&lt;br /&gt;
* Offset: ±5V&lt;br /&gt;
&lt;br /&gt;
== Die Schaltungsbaugruppen ==&lt;br /&gt;
&lt;br /&gt;
Der komplette Funktionsgenerator wird im Folgenden in einzelnen Baugruppen definiert und die Baugruppen kontinuierlich in ihrer Funktion erklärt. Sie stellen zugleich die einzelnen Baustellen des Projektes dar.&lt;br /&gt;
&lt;br /&gt;
=== Das Herzstück: DDS-IC AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Der AD5930 ist ein Signalgeneratorbaustein von Analog Devices, der nach dem DDS-Prinzip (Digital Direct Synthesis) arbeitet. Mit dem speziellen Exemplar lassen sich sinus- und dreieckförmige Signale erzeugen. Dazu wird ein Frequenzwort per SPI-Schnittstelle an das DDS-IC übertragen.&lt;br /&gt;
Im Gegensatz zu anderen DDS-Bausteinen von Analog Devices ist dieses Frequenzwort beim AD5930/5932 nur 24bit breit. Bei einer, laut Datenblatt angegebenen maximalen Taktfrequenz von 50MHz ergibt sich somit:&lt;br /&gt;
&lt;br /&gt;
kleinste auszugebende Frequenz/kleinstes Frequenzinkrement: 2,980232239 Hz&lt;br /&gt;
maximale Ausgangsfrequenz: 25 MHz&lt;br /&gt;
&lt;br /&gt;
Er ist der direkte Bruder des AD5932. Beide unterscheiden sich nur geringfügig. Der AD5930 verfügt über einen differentiellen Stromausgang, der AD5932 hingegen über einen einzelnen Spannungsausgang, bei dem ein 200Ω Abschlusswiderstand bereits integriert worden ist. Außerdem wurde die Ansteuerung der Vollaussteuerung beim AD5932 eingespart.&lt;br /&gt;
&lt;br /&gt;
Beide verfügen über eine Sweepfunktion mit verschiedenen Modi. So ist es möglich, den Sweep vollständig intern durchzuführen oder aber über einen Interrupt den nächsten Frequenzschritt zu setzen, sodass hier ein aufwändiges Neuschreiben der nächsten Frequenz entfällt. Damit minimiert sich die Ansteuerung erheblich und die Datenübertragung zum IC wird erheblich reduziert.&lt;br /&gt;
Zum Sweepen definiert man einfach nur die Startfrequenz, das Frequenzinkrement (positiv oder negativ) und die Anzahl von Inkrementen.&lt;br /&gt;
Darüber hinaus lässt sich definieren, ob nur eine bestimmte Anzahl an Sweeps durchgeführt oder kontinuierlich gesweept werden soll.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich lässt sich mit dem AD5930 ein Burstsignal mit einer definierten Anzahl an Schwingungen erzeugen.&lt;br /&gt;
&lt;br /&gt;
Der AD5930 verfügt über einen Eingang (FullScaleAdjust - FSADJUST) über den sich Amplitudenmodulation, aber auch Amplitudenkorrekturen durchführen ließe.&lt;br /&gt;
&lt;br /&gt;
Eine microcontroller-gestützte Frequenzmodulation ist ebenfalls denkbar.&lt;br /&gt;
&lt;br /&gt;
Programmiert werden beide Bausteine via SPI, mit maximalen Taktgeschwindigkeiten von bis zu 40MHz.&lt;br /&gt;
&lt;br /&gt;
All diese Eigenschaften und noch einige weitere hier vielleicht nicht erwähnte prädestinieren dieses DDS-IC als Herzstück für einen Funktionsgenerator.&lt;br /&gt;
&lt;br /&gt;
=== Taktquelle für den AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Dem Datenblatt zum AD5930 kann man entnehmen, dass der AD5930 mit einem Takt aus einem Quarzoszillator von 50MHz betrieben werden kann.&lt;br /&gt;
Da sich hiermit, wie man der [http://www.analog.com/static/imported-files/application_notes/AN-1044.pdf Application Note AN-1044] entnehmen kann, ein Frequenzinkrement von ungünstigen &amp;lt;math&amp;gt;50 MHz / 2 ^ {24} = 2,980232239 Hz&amp;lt;/math&amp;gt; ergibt, ist es sinnvoll den AD5930 leicht zu übertakten. Dazu wird von 3Hz pro Frequenzinkrement auf die notwendige Taktfrequenz zurück gerechnet.&lt;br /&gt;
Es ergeben sich &amp;lt;math&amp;gt;3 Hz * 2 ^ {24} = 50,331648 MHz&amp;lt;/math&amp;gt; für die Taktquelle.&lt;br /&gt;
&lt;br /&gt;
Da diese Frequenzschritte zumindest für kleine Frequenzen relativ groß erscheinen, ist vorgesehen zwischen zwei Taktfrequenzen umzuschalten, sodass mit einer Taktfrequenz von 3,3554432 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. erreicht wird. (Details siehe nachfolgender Text)&lt;br /&gt;
&lt;br /&gt;
Somit ergibt sich für den fein aufgelösten Frequenzbereich 0,2 Hz .. 1 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. und für den grob aufgelösten Frequenzbereich 3 Hz .. 20 MHz eine Frequenzauflösung von 3 Hz/Inkr.&lt;br /&gt;
&lt;br /&gt;
Um die Taktfrequenzen zu erzeugen, wird zunächst ein programmierbarer Synthesizer, der CDCE913 von Texas Instruments, eingesetzt. Mit diesem und einem extern angeschlossenen Quarz ist es möglich, die notwendige Taktfrequenz für den DDS-IC bereitzustellen. Er verfügt über eine 2-Wire I²C-Schnittstelle, sodass zur Programmierung lediglich eine Takt- (SCL) und eine Datenleitung (SDA) notwendig sind.&lt;br /&gt;
Findet sich ein ähnliches IC mit 3-Wire SPI-Schnittstelle, so ist vorgesehen den CDCE913 zu ersetzen, da dann nur noch eine ChipSelect-Leitung notwendig wird und Takt- bzw. Datenleitung für AD5930 und PLL-IC gemeinsam verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Es stehen eine Reihe von Quarzen zur Verfügung, mit denen sich die Taktfrequenz erzeugen lässt. Es sind lediglich ein paar wenige Randbedingung bei diesem IC zu beachten, um den richtigen Quarz auszuwählen:&lt;br /&gt;
&lt;br /&gt;
1.) &amp;lt;math&amp;gt;fmclk = fout = {fin / Pdiv} * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit M = 1 .. 511, N = 1 .. 4095 und Pdiv = 1 .. 127&lt;br /&gt;
&lt;br /&gt;
2.) &amp;lt;math&amp;gt;fVCO = fin * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit fVCO = 80 MHz .. 230 MHz und fin = 8 MHz .. 32 MHz&lt;br /&gt;
&lt;br /&gt;
Die Frequenz fout sind in unserem Fall die gewünschten 50,331648 MHz.&lt;br /&gt;
Mit den Randbedingungen ergibt sich für Pdiv = 2 .. 4 und daraus bspw. folgende mögliche Kombinationen für den zu verwendenden Quarz, wenn Pdiv = 2 gewählt wurde:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; &#039;&#039;f(Quarz) in [MHz]: &#039;&#039; M (1…511)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;8,192:&#039;&#039; 125, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;9,8304:&#039;&#039; 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;11,0592:&#039;&#039; 225&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;12,288:&#039;&#039; 125, 250, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;14,7456:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;16,384:&#039;&#039; 250, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;19,6608:&#039;&#039; 25, 50, 75, 100, 125, 150, 200, 225, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;22,1184:&#039;&#039; 225, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;24,576:&#039;&#039; 125, 250, 375, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;29,4912:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
Die M-Werte der Tabelle reduzieren sich, wenn man Pdiv = 3 oder 4 wählt.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich einen Quarz mit maximal möglicher Frequenz zu verwenden, da dann der Frequenzfehler minimal wird.&lt;br /&gt;
&lt;br /&gt;
Als leicht erhältlicher Standardquarz (Referenz sei bspw. Reichelt) kann daher derjenige mit 24,576 MHz zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
Mit diesem Quarz und dem Ändern des Teilers von Pdiv = 2 auf Pdiv = 6 ergibt sich eine Frequenzauflösung des AD5930 auf 1 Hz, respektive einer Taktfrequenz des AD5930 von fmclk = 16,777216 MHz und mit Pdiv = 12 eine Auflösung von 0,5 Hz, respektive einer Taktfrequenz von fmclk = 8,388608 MHz. Zu beachten ist dabei, dass sich dadurch natürlich die maximal auszugebende Frequenz ebenfalls reduziert. Mit Pdiv = 6 sind dies fmax = 8,388608 MHz und für Pdiv = 12 entsprechend fmax = 4,194304 MHz.&lt;br /&gt;
&lt;br /&gt;
Somit kann durch einfaches Ändern von Pdiv die Taktfrequenz bzw. die Frequenzauflösung verändert werden.&lt;br /&gt;
&lt;br /&gt;
Den Zusammenhang zwischen Taktfrequenz und Frequenzauflösung zeigt die nachfolgende Tabelle noch einmal:&lt;br /&gt;
&lt;br /&gt;
fmclk = 50,331648 MHz --&amp;gt; foutmin = 3 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 41,94304 MHz --&amp;gt; foutmin = 2,5 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 33,554432 MHz --&amp;gt; foutmin = 2 Hz --&amp;gt; Pdiv = 3&lt;br /&gt;
&lt;br /&gt;
fmclk = 25,165824 MHz --&amp;gt; foutmin = 1,5 Hz --&amp;gt; Pdiv = 4&lt;br /&gt;
&lt;br /&gt;
fmclk = 16,777216 MHz --&amp;gt; foutmin = 1 Hz --&amp;gt; Pdiv = 6&lt;br /&gt;
&lt;br /&gt;
fmclk = 8,388608 MHz --&amp;gt; foutmin = 0,5 Hz --&amp;gt; Pdiv = 12&lt;br /&gt;
&lt;br /&gt;
fmclk = 4,194304 MHz --&amp;gt; foutmin = 0,25 Hz --&amp;gt; Pdiv = 24&lt;br /&gt;
&lt;br /&gt;
fmclk = 3,3554432 MHz --&amp;gt; foutmin = 0,2 Hz --&amp;gt; Pdiv = 30&lt;br /&gt;
&lt;br /&gt;
fmclk = 2,0971515 MHz --&amp;gt; foutmin = 0,125 Hz --&amp;gt; Pdiv = 48&lt;br /&gt;
&lt;br /&gt;
fmclk = 1,6777216 MHz --&amp;gt; foutmin = 0,1 Hz --&amp;gt; Pdiv = 60&lt;br /&gt;
&lt;br /&gt;
Wer es genauer als ein Quarz braucht kann auch ein TCXO oder gar einen TCVCXO verwenden. Hierbei ist die Auswahl an Bausteinen jedoch deutlich eingeschränkter. Eine Möglichkeit ist die Verwendung eines TCXO mit einer Frequenz von 16,384 MHz.&lt;br /&gt;
Mit ihm lassen sich die aufgeführten Taktfrequenzen ebenfalls einstellen.&lt;br /&gt;
Es ist anzumerken, dass der CDCE913 über die Möglichkeit verfügt zwei PLL-Settings vorzuprogrammieren und im EEPROM zu hinterlegen, sodass zwischen zwei Ausgangsfrequenzen durch einfaches Umschalten eines Statusregisters umgeschaltet werden kann. Es kann aber auch zur Laufzeit auf die Register des PLL-Bausteins zugegriffen und Registerwerte neu geschrieben werden, sodass die maximale Ausgangsfrequenz des AD5930 voll ausgenutzt werden kann, ohne dabei auf sehr tiefe Frequenzen verzichten zu müssen.&lt;br /&gt;
&lt;br /&gt;
=== Die Programmierung des DDS-ICs ===&lt;br /&gt;
&lt;br /&gt;
In einem ersten Schritt soll der AD5930 über einen FT232 vollständig vom PC aus programmiert werden. Das macht Arbeiten im Bereich Mikrocontroller zunächst überflüssig.&lt;br /&gt;
Mit einem kleinen Tool kann der FT232 via Bit Banging als USB to SPI Programmer genutzt werden, sodass der Schwerpunkt zunächst vollständig im Bereich Schaltungsentwurf liegen kann.&lt;br /&gt;
Eine Adaptierung eines Mikrocontrollers ist dann in einer späteren Ausbaustufe &amp;quot;schnell&amp;quot; erledigt.&lt;br /&gt;
&lt;br /&gt;
Auf dieser [http://www.openschemes.com/modules/wordpress/2009/11/05/bit-banging-spi-on-arduinos-ft232rl/1/ Webseite] wird gezeigt, dass via Bit Banging der FT232 als USB to SPI Programmer verwendet werden kann. Dazu werden einfach die drei notwendigen SPI-Leitungen vom AD5930 mit dem FT232 wie folgt verbunden:&lt;br /&gt;
&lt;br /&gt;
* Beschreibung - AD5930 - FT232&lt;br /&gt;
*  ChipSelect - FSync  - RI&lt;br /&gt;
*    Clock    - SCLK   - CTS&lt;br /&gt;
*     Data    - SDATA  - MOSI&lt;br /&gt;
&lt;br /&gt;
und das [http://www.openschemes.com/uploads/wordpress/2009/11/ft232spi.zip SPI Demo Tool] gestartet.&lt;br /&gt;
Nachdem der FT232 erkannt wurde drückt man &amp;quot;Open Interface&amp;quot;. Man vergewissert sich noch einmal, dass die Einstellungen für die SPI-Leitungen auch stimmen und klickt auf &amp;quot;Do bitbang Setup&amp;quot;.&lt;br /&gt;
Nun braucht man nur noch die Bitlänge von 8 auf 16 umstellen und kann durch direktes Schreiben der Adressen den AD5930 programmieren.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel soll gezeigt werden, wie ein 1MHz Sinussignal schnell per Hand mit diesem Tool programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* 06db    - setzt die notwendigen Einstellungen in ControlRegister&lt;br /&gt;
* d051    - MSB der Startfrequenz für 1MHz&lt;br /&gt;
* ceb8    - LSB der Startfrequenz für 1MHz&lt;br /&gt;
* 3000    - MSB des Frequenzinkrements&lt;br /&gt;
* 2000    - LSB des Frequenzinkrements&lt;br /&gt;
* 1002    - minimalste Anzahl der Frequenzinkremente&lt;br /&gt;
&lt;br /&gt;
Die Programmierung ist kinderleicht und kann bequem als PC-Software ausgeführt werden, sodass hierfür kein Mikrocontroller zum Einsatz kommen muss.&lt;br /&gt;
Wie der AD5930/32 für einen Sweep oder eine Einzelfrequenz programmiert werden kann findet sich beispielhaft auch in der Application Note-1044 von Analog Devices.&lt;br /&gt;
&lt;br /&gt;
=== Der 1. Verstärker ===&lt;br /&gt;
&lt;br /&gt;
Das Datenblatt des AD5930 empfiehlt, dass an seinen DAC-Ausgängen ein mind. 200Ω Widerstand als Last angeschlossen wird, zu denen parallel ein Kondensator von 20pF spendiert werden soll, um ein Rekonstruktionsfilter 1. Ordnung auszubilden. Aus der Stromquelle des DAC wird somit eine Spannungsquelle.&lt;br /&gt;
Je nach Taktfrequenz muss der Wert der Kapazität angepasst werden. Gesetz dem Fall der AD5930 wird mit eine Taktfrequenz von 41,94304MHz gespeist erhöht sich der Wert der Kapazität auf 39pF.&lt;br /&gt;
Um die Vorteile eines differentiellen Ausgangs nutzen zu können kommen in aller Regel Übertrager zum Einsatz.&lt;br /&gt;
Analog Devices, CN-0142, &amp;quot;High CMRR Circuit for Converting Wideband Complementary DAC Outputs to Single-Ended Without Precision Resistors&amp;quot; schreibt zu der Thematik:&lt;br /&gt;
&amp;quot;...Traditional methods for converting wideband DAC comple-mentary current outputs to a single-ended signal are to either use a center-tapped transformer or a single op amp in a differential-to-single-ended configuration. However, the transformer low frequency nonlinearities may limit its use near dc; and the operational amplifier approach requires closely matched resistors to provide dc common-mode rejection, load impedance, and gain matching between the complementary DAC outputs. Errors in the matching will produce errors at the final output...&amp;quot;.&lt;br /&gt;
Abhilfe kann hier ein differentieller Verstärker wie der AD8129/AD8130 schaffen, der über einen differentiellen Eingang und einen Single-Ended Ausgang verfügt. Aus dem symmetrischen Signal wird somit ein unsymmetrisches, wie es in den meisten Anwendungen benötigt wird. Der Verstärker soll das Rekonstruktionsfilter treiben, mit dem es im nächsten Abschnitt weiter geht.&lt;br /&gt;
&lt;br /&gt;
=== Das Rekonstruktionsfilter ===&lt;br /&gt;
&lt;br /&gt;
Die DDS macht prinzipbedingt den Einsatz eines Rekonstruktionsfilters notwendig. Dieses sorgt dafür, dass das Taktsignal des DDS-ICs mit ausreichender Dämpfung unterdrückt wird.&lt;br /&gt;
In verschiedenen Papern findet man ganz unterschiedliche Angaben zu dieser notwendigen Dämpfung. Einige sprechen von -60dBr (bspw. Aufsatz zur Tiefpassfilter - Dimensionierung von Gehard Rohm) andere sogar von -70dBr (bspw. Application Note  #5 von www.thinkSRS.com) im Bereich der Funktionsgeneratoranwendungen. Die Einheit dBr heißt Decibel relativ und entspricht dem Verhältnis zweier Spannungspegel.&lt;br /&gt;
&lt;br /&gt;
Letzt genannte Quelle schlägt für den Einsatz von DDS-ICs die Verwendung elliptischer Filter vor, da sie mit einem steilen Übergangsbereich und kleinem Ripple im Durchlassbereich entworfen werden können.&lt;br /&gt;
Als Filter wird daher ein elliptisches Filter eingesetzt. Dieses wird mittels freien Tools (bsp. AADE Filter Design) dimensioniert und ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Wie im Abschnitt [http://www.mikrocontroller.net/articles/DDS_basierter_Funktionsgenerator_mit_AD5930#Taktquelle_f.C3.BCr_den_AD5930 Taktquelle für den AD5930] nachzulesen ist, soll zwischen zwei verschiedenen Taktfrequenzen umgeschaltet werden. Demzufolge sind zwei verschiedene Rekonstruktionsfilter erforderlich.&lt;br /&gt;
Für das Taktsignal 3,3554432 MHz kommt ein aktives Rekonstruktionsfilter zum Einsatz, da bei passiven Filtern große Induktivitäten notwendig würden, was mit höheren Filterverlusten einhergeht, da die DC-Widerstände großer Induktivitäten ebenfalls recht groß ausfallen.&lt;br /&gt;
Für das Taktsignal 50,331648 MHz kommt dagegen ein elliptisches Filter, auch Cauer-Filter genannt, zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Vielen graut es davor sich mit der Filterthematik zu beschäftigen, es soll jedoch gezeigt werden, dass der Entwurf eines ordentliches Filters mit modernen PC-gestützen Mitteln kein Geheimnis darstellt.&lt;br /&gt;
&lt;br /&gt;
Die erste Frage die sich jedem, der noch nie ein Filter entworfen hat, stellt ist, wo muss die Filtergrenze liegen. Dazu ein wenig Theorie:&lt;br /&gt;
&lt;br /&gt;
Es werde angenommen der DDS-IC ist mit fs=50MHz getaktet. Die maximale Ausgangsfrequenz ergibt sich laut Nyquist-Abtasttheorem zu fmax = 25 MHz. Das heißt, dass 25 MHz noch vom Filter durchgelassen werden sollen, aber das Stopband auch bereits bei fs-fmax = 25 MHz beginnen soll, ein Widerspruch in sich. Da es in der Realität keine unendlich steilen Filter gibt, trifft man einen Kompromiss und legt die maximale Ausgangsfrequenz auf fs/3. Dies würde bedeuten, dass uns nur etwa f = 16.67 MHz als maximale Ausgangsfrequenz der DDS zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
Wir wollen uns diesem Kompromiss ein wenig entgegensetzen und setzen die Filtergrenze etwas höher, also bei 20 MHz an. Innerhalb einer Dekade (fs-fmax = 30MHz) soll das Signal um -60 dBc bis -70 dBc (dBc - Decibel under Carrier) gedämpft werden.&lt;br /&gt;
Im Folgenden geht es also darum, ein Filter mit den getroffenen Annahmen zu entwerfen. Es wird geprüft, ob ein Filter 7. Ordnung diesem Anspruch gerecht werden kann oder ob ein Filter 9. Ordnung eingesetzt werden muss.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe des Programmes AADE Filter Design entwerfen wir einen Elliptic LowPass mit folgenden Parametern:&lt;br /&gt;
&lt;br /&gt;
F1 = 20 MHz&lt;br /&gt;
F2 = 30 MHz&lt;br /&gt;
Apass = 0,01 (warum 0,01 wird nachfolgend erklärt)&lt;br /&gt;
Order = 7 bzw. 9&lt;br /&gt;
Zin = 50 Ω&lt;br /&gt;
Zout = 50 Ω&lt;br /&gt;
&lt;br /&gt;
Das Passband Ripple wird bewusst sehr klein gewählt, da es durch die Annäherung der errechneten Bauteilwerte an erhältliche und parasitären Effekten wieder zunehmen wird. Wenn man ein Passband Ripple von 0,5 dB erreicht wäre das großartig, mit kleiner 1 dB wären man aber immer noch sehr zufrieden. Wieso?&lt;br /&gt;
&lt;br /&gt;
Das wird rechnerisch schnell deutlich:&lt;br /&gt;
&lt;br /&gt;
Geht man davon aus, dass das Filter mit einer Eingangsimpedanz von 50 Ω von einer Quelle mit 50 Ω Ausgangsimpedanz und einem Signal von 1 V (0 dB) Amplitude gespeist wird, so wird man, wenn das Filter eine Ausgangsimpedanz von 50 Ω hat und man das Filter mit 50 Ω abschließt noch die halbe Spannung messen können, also 500 mV (ca. -6,02 dB).&lt;br /&gt;
Lässt man nun 0,3 dB Ripple zu, so entspricht das einem Wert von -6.32 dB oder 483 mV, bei 0,5 dB sind es 472 mV und bei 1 dB noch rund 446 mV.&lt;br /&gt;
&lt;br /&gt;
Die Bauteile werden zunächst als verlustfrei betrachtet und das Programm schlägt für beide Filter eine Bauteilbemessung vor:&lt;br /&gt;
&lt;br /&gt;
Filter 7. Ordnung [[http://www.mikrocontroller.net/attachment/70868/FG-AD5930-3.png]], [[http://www.mikrocontroller.net/attachment/70869/FG-AD5930-4.png]]&lt;br /&gt;
&lt;br /&gt;
Filter 9. Ordnung [[http://www.mikrocontroller.net/attachment/70870/FG-AD5930-5.png]], [[http://www.mikrocontroller.net/attachment/70871/FG-AD5930-6.png]]&lt;br /&gt;
&lt;br /&gt;
Anhand der Bauteilbemessung wird schnell ersichtlich, dass es keine diskreten Kondensatoren mit 0,xxxpF gibt und auch keine Induktivitäten mit Werten unterhalb des nH-Bereiches.&lt;br /&gt;
&lt;br /&gt;
Das Entwurftool lässt es aber dennoch zu, dass man sich die Filterkurve anschauen kann. Im direkten Vergleich der beiden Filter zeigt sich, dass mit dem Filter 7. Ordnung gerade etwa -60 dBr gegenüber dem maximalen Ausgangssignal an Dämpfung erreicht werden. Wir konzentrieren uns daher auf das Filter 9. Ordnung, da es mit etwa -90 dBr deutlich vielversprechender ausschaut.&lt;br /&gt;
&lt;br /&gt;
Das Filter muss nun realen Bauteilwerten angenähert werden. Dies tut man, indem man einfach schaut, was die Hersteller für Bauteilwerte liefern können. Im einfachsten Fall gibt es genau den Wert, den man sucht, andernfalls kann man auch durch Verschaltung mehrerer Bauteile (Induktivitäten oder Kapazitäten in Serie oder parallel angeordnet) auf den gewünschten Bauteilwert kommen.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich, eine SpiceSimulation durchzuführen, in der man das errechnete Filter mit dem aus realen Bauteilwerten bestehenden vergleicht. Hier kann, durch Hinzufügen des Serienwiderstandes bzw. der Güte und der Resonanzfrequenz bzw. der parasitären Kapazität, schon abgeschätzt werden, wie das Filter in etwa real wirken wird. Dies setzt jedoch ein gut durchdachtes, kapazitätsarmes Layout vorraus.&lt;br /&gt;
&lt;br /&gt;
Wer sich das nicht antun möchte, der baut das Filter &amp;quot;einfach&amp;quot; auf und vermisst es bspw. mit einem Gain-Phase-Analyser, einem Netzwerkanalysator oder mit einem Spektrumanalyser mit integriertem Tracking Generator o.ä. brauchbarem Messequipment.&lt;br /&gt;
&lt;br /&gt;
Nähert man das mit den oben genannten Randbedingungen entworfene Filter 9. Ordnung an real erhältliche Bauteilwerte an, so erhält man bspw. das folgende Filter:&lt;br /&gt;
&lt;br /&gt;
*Dipol 1: &#039;&#039;&#039;120pF&#039;&#039;&#039;&lt;br /&gt;
*Dipol 2: &#039;&#039;&#039;8pF || 540nH&#039;&#039;&#039; (aus 270nH + 270nH)&lt;br /&gt;
*Dipol 3: &#039;&#039;&#039;250pF&#039;&#039;&#039;(aus 150pF || 100pF)&lt;br /&gt;
*Dipol 4: &#039;&#039;&#039;43p&#039;&#039;&#039; (aus 33pF || 10pF) &#039;&#039;&#039;|| 530nH&#039;&#039;&#039; (aus 330nH + 200nH)&lt;br /&gt;
*Dipol 5: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 6: &#039;&#039;&#039;56pF || 490nH&#039;&#039;&#039; (aus 270nH + 220nH)&lt;br /&gt;
*Dipol 7: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 8: &#039;&#039;&#039;30pF&#039;&#039;&#039; (aus 15pF || 15pF) &#039;&#039;&#039;|| 480nH&#039;&#039;&#039; (aus 330nH + 150nH)&lt;br /&gt;
*Dipol 9: &#039;&#039;&#039;100pF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies Filter ist in folgender Simulation noch einmal gezeigt [[http://www.mikrocontroller.net/attachment/70886/FG-AD5930-7.png]], [[http://www.mikrocontroller.net/attachment/70887/FG-AD5930-8.png]].&lt;br /&gt;
&lt;br /&gt;
Fügt man nun den Bauteilwerten noch ihre parasitären Elemente hinzu (Verluste in den Bauteilen), diese findet man in den Datenbättern der Bauteile, so kann man das Filter der Realität weiter annähern. Dies ist hier mal für Induktivitäten eines Herstellers unterschiedlicher Serien und Gehäusegrößen durchgeführt worden [[http://www.mikrocontroller.net/attachment/71186/FG-AD5930-9.png]].&lt;br /&gt;
&lt;br /&gt;
Nach diesen Ergebnissen fällt die Bauteilwahl auf die AS-Serie im Package 0805.&lt;br /&gt;
&lt;br /&gt;
Als Kondensatoren werden NPO-Typen in 0805 mit ±0,5pF bei kleinen Bauteilwerten und ±5% bei den größeren Werten für die Toleranz eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Nun geht es an den Aufbau des Filters. Hier findet sich das Testlayout, das speziell für dieses Filter [[http://www.mikrocontroller.net/attachment/74720/Filter.png]] verwendet wurde. Die in Serie geschalteten Induktivitäten werden im 90°-Winkel zueinander angeordnet, um die Kopplung der Induktivitäten untereinander zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
Nach dem Vermessen des Filters wird dessen Übertragungsfunktion (Uout/Uin in dB) dem ursprünglich simulierten Filter mit realen, verlustbehafteten Bauteilwerten graphisch gegenüber gestellt [[http://www.mikrocontroller.net/attachment/79100/Filtermessung.png]].&lt;br /&gt;
&lt;br /&gt;
Es zeigt sich, dass das reale Filter [[http://www.mikrocontroller.net/attachment/79034/Filter.JPG]] recht gut gelungen ist, sodass diese Bauteilwerte direkt im weiteren Projekt verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Für den fein aufgelösten Frequenzbereich soll die Taktfrequenz des DDS 3,3554432 MHz betragen.&lt;br /&gt;
Um ein aktives Filter zu entwerfen kommt das kostenlos Programm FilterPro von Texas Instruments zum Einsatz.&lt;br /&gt;
Wir legen folgende Randbedingungen fest:&lt;br /&gt;
&lt;br /&gt;
* Passband: Low-Pass&lt;br /&gt;
* Circuit-Type: MFB Single-Ended bzw. MFB Fully Differential&lt;br /&gt;
* Anzahl Pole: 4&lt;br /&gt;
* Cutoff Freq. 1,5M&lt;br /&gt;
* Filter Type: Butterworth&lt;br /&gt;
* Value Display: Component Values&lt;br /&gt;
* Components: Res. E48 und Cap. E12&lt;br /&gt;
&lt;br /&gt;
und erhalten sofort ein Filter mit der Bemessung der passiven Bauelemente und einer Dämpfung von 80 dB/Dekade.&lt;br /&gt;
Bei der Wahl der richtigen OPVs für das Filter hilft die Angabe Req. GBP (erfoderliches Verstärkungsbandbreiteprodukt).&lt;br /&gt;
&lt;br /&gt;
In diesem Abschnitt wurde gezeigt, dass die PC gestützte Auslegung eines Rekonstruktionsfilters bei Weitem nicht so kompliziert ist, wie es zunächst erscheinen mag, sodass jeder mit dem hier gezeigten Beispiel in der Lage sein sollte, sein eigenes Rekonstruktionsfilter auszulegen.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos zum Filter können der [http://www.mikrocontroller.net/topic/168134#1606968 Diskussionsrunde] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenkorrektur ===&lt;br /&gt;
&lt;br /&gt;
Der FSAdjust-Eingang ermöglicht eine Korrektur der Amplitude, sodass hier Verluste durch das Filter bzw. Passband Ripple, durch eine Rückkoppplung vom Verstärker zum DDS-IC, ausgeglichen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Endstufe ===&lt;br /&gt;
&lt;br /&gt;
Übliche Funktionsgeneratoren verfügen über eine Endstufe, mit der Ausgangspegel von 20Vpp möglich sind. Ähnliche Ausgangspegel sollen auch hier das Ziel sein.&lt;br /&gt;
&lt;br /&gt;
==== DC-Offsetverschiebung ====&lt;br /&gt;
&lt;br /&gt;
Eine Gleichspannungsoffsetverschiebung soll ebenfalls implementiert werden. Diese kann analog von einem Potentiometer aus erfolgen, soll später dann jedoch gegen einen DAC ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Selbstverständlich gehört auch eine durchdachte Spannungsversorgung in den Rahmen dieses Projektes, das den kompletten Funktionsgenerator mit den erforderlichen Spannungen versorgt.&lt;br /&gt;
&lt;br /&gt;
== Sonderfunktionen ==&lt;br /&gt;
&lt;br /&gt;
Hier sollen die Funktionen beleuchtet werden, die entweder nicht direkt oder gar nicht aus dem AD5930, jedoch mit etwas Controllerunterstützung dennoch gewonnen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenmodulation ===&lt;br /&gt;
&lt;br /&gt;
Über den bereits erwähnten FSAdjust am AD5930 kann eine Amplitudenmodulation vorgenommen werden. Diese soll separat nach außen geführt werden und es dem Benutzer erlauben Signale auf eine eingestellte Trägerfrequenz im AD5930 aufzumodelieren.&lt;br /&gt;
&lt;br /&gt;
=== Impuls-Signale ===&lt;br /&gt;
&lt;br /&gt;
Für die Ausgabe von Impulsen kann die Burst-Funktion des AD5930 verwendet werden. Die minimale Impulslänge wird dann durch die maximale Ausgangsfrequenz des AD5930 bestimmt. Dazu kann das Signal durch einen schnellen Baustein der 74er Reihe geschickt werden, sodass Impulse von 20ns vorstellbar sind.&lt;br /&gt;
&lt;br /&gt;
=== PWM-Signale ===&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Ausbaus zum Standalone-Gerät wird zwangsläufig auch ein Mikrocontroller zum Einsatz kommen, sodass hier grundsätzich die Möglichkeit besteht den Funktionsgenerator um Pulsweitenmodulation zu erweitern. Für die Ausgabe von PWM-Signalen bis 20MHz ist jedoch ein entsprechend schneller Mikrocontroller notwendig.&lt;br /&gt;
Macht man sich dagegen die Burst-Funktion des AD5930 in Kombination mit einem schnellem Baustein der 74er Reihe o.ä. zu Nutze, so sollte auch eine Pulsweitenmodulation mit langsameren Mikrocontrollern möglich sein. Hierzu ist aber die Programmierzeit des AD5930 mit zu berücksichtigen, da ständig neue Frequenzen geschrieben werden müssen.&lt;br /&gt;
&lt;br /&gt;
== Das Software Frontend ==&lt;br /&gt;
&lt;br /&gt;
Für die Programmierung des AD5930 ist, in der Ausbaustufe mit FT232, eine Softwareoberfläche notwendig, von der aus sämtliche Einstellungen für den Bediener nutzerfreundlich vorgenommen werden können.&lt;br /&gt;
&lt;br /&gt;
= Ausbau zum Standalone-Gerät =&lt;br /&gt;
&lt;br /&gt;
Als weitere Stufe steht der Ausbau zum Standalone-Gerät an. Hierzu wird ein Mikrontroller mit Anzeige und Menüsteuerung zum Einsatz kommen können, sodass sämtliche Einstellungen auch bequem direkt am Gerät erfolgen können und ein PC nicht zwingend erforderlich ist.&lt;br /&gt;
Hierfür ist die Programmierung eines Mikrocontrollers notwendig.&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung des Standalone-Gerätes ==&lt;br /&gt;
&lt;br /&gt;
== Controllerauswahl ==&lt;br /&gt;
&lt;br /&gt;
== Anzeige der Statusinformationen - LCD ==&lt;br /&gt;
&lt;br /&gt;
== Schaltung des Controllerboards ==&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
= Schaltpläne und Layoutdaten =&lt;br /&gt;
&lt;br /&gt;
Alle Schaltpläne und Layoutdaten sollen hier für jeden zugänglich gemacht werden. Es bietet sich daher an Eagle in der Light Version oder KiCAD zu verwenden.&lt;br /&gt;
&lt;br /&gt;
= Diskussionsrunde =&lt;br /&gt;
&lt;br /&gt;
Unter diesem [http://www.mikrocontroller.net/topic/168134#1606968 Link] sollen Diskussionen zum Projekt erfolgen.&lt;br /&gt;
&lt;br /&gt;
= Links zu bekannten Projekten mit dem AD5930/AD5932 =&lt;br /&gt;
&lt;br /&gt;
[http://mexlewiki.hs-heilbronn.de/UserFiles/File/Funktionsgenerator%20DDS/Documentation%20DDS.pdf DDS-Funktionsgenerator mit dem MiniMEXLE Version 3.0]&lt;br /&gt;
&lt;br /&gt;
[http://www.uchobby.com/index.php/2007/09/05/arduino-siggen1-boards-arrive/ Siggen1]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Signalgeneratoren]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59843</id>
		<title>DDS basierter Funktionsgenerator mit AD5930</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59843"/>
		<updated>2011-08-25T12:07:08Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Basisgerät */ tipp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite soll als Projektseite für einen DDS-basierten Funktionsgenerator dienen. Bekannte Funktionsgeneratoren auf Basis von DDS-ICs der Firma Analog Devices sind bekannt und im Internet einsehbar (bspw. DDS10, DDS20, DDS130).&lt;br /&gt;
Allen Funktionsgeneratoren ist eines gemein, sie sind sehr einfach gehalten und können es mit kommerziellen Funktionsgeneratoren nicht aufnehmen. Die Rekonstruktionsfilter sind zum Teil unbefriedigend dimensioniert und erfüllen insgesamt, nach Auffassung des Projektinitiators, nicht den Anspruch an einen Funktionsgenerator für die Messtechnik.&lt;br /&gt;
&lt;br /&gt;
Das Projekt nimmt bewusst Abstand von Projekten mit &amp;quot;großen&amp;quot; DDS-ICs, die beispielsweise für Eigenbau-Netzwerkanalysatoren, Signalgeneratoren, Antennenanpassgeräten oder Impedanzmessgeräten und ähnlichen Schaltungen zum Einsatz kommen. Derlei Projekte sind inspirierend, haben jedoch völlig andere Ansprüche.&lt;br /&gt;
Daher soll das erklärte Ziel dieses Projektes ein Funktionsgenerator sein, der das Optimum aus dem AD5930 herausholen kann und als Vorlage für eigene Schaltungen mit DDS-ICs dient.&lt;br /&gt;
Zunächst soll der Funktionsgenerator komplett via PC ansteuerbar sein, eine Erweiterung als Standalone-Gerät ist aber ebenso denkbar.&lt;br /&gt;
&lt;br /&gt;
= Worte vom Projektinitiator an die Gemeinde =&lt;br /&gt;
&lt;br /&gt;
Es wurde bewusst Mikrocontroller.net für das Projekt gewählt, da diese Plattform keinem kommerziellem Hintergedanken entspricht, für jeden auch ohne Anmeldung einsehbar ist und der Projektinitiator, nach eigener Erfahrung der Auffassung ist, dass viele sich gegenüber einer englischsprachigen Plattform mit qualifizierten Beiträgen zurückhalten.&lt;br /&gt;
Jeder der sich inspiriert fühlt sein Wissen mit anderen zu teilen und Lust hat am Projekt teilzunehmen ist aufgerufen, diese Projektseite mit Informationen zu füllen.&lt;br /&gt;
&lt;br /&gt;
= Basisgerät =&lt;br /&gt;
&lt;br /&gt;
Das Basisgerät soll als PC-Gerät ausgeführt sein. Da alle Schnittstellen jedoch auch über Pfostensteckeranschlüsse zugänglich gemacht werden, ist es problemlos möglich, den Funktionsgenerator zu einem Standalone-Gerät auszubauen.&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
* Signalarten: Sinus, Dreieck, Rampe, Rechteck, Puls&lt;br /&gt;
* minimale Frequenz: 3Hz&lt;br /&gt;
* maximale Frequenz: Sinus- und Rechtecksignale bis 20MHz, Dreieck und Rampe bis 2MHz&lt;br /&gt;
* Modi: Kontinuierlich, Burst, Sweep, Modulation (AM/FM)&lt;br /&gt;
* Signalausgang: 10Vpp&lt;br /&gt;
* Offset: ±5V&lt;br /&gt;
&lt;br /&gt;
== Die Schaltungsbaugruppen ==&lt;br /&gt;
&lt;br /&gt;
Der komplette Funktionsgenerator wird im Folgenden in einzelnen Baugruppen definiert und die Baugruppen kontinuierlich in ihrer Funktion erklärt. Sie stellen zugleich die einzelnen Baustellen des Projektes dar.&lt;br /&gt;
&lt;br /&gt;
=== Das Herzstück: DDS-IC AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Der AD5930 ist ein Signalgeneratorbaustein von Analog Devices, der nach dem DDS-Prinzip (Digital Direct Synthesis) arbeitet. Mit dem speziellen Exemplar lassen sich sinus- und dreieckförmige Signale erzeugen. Dazu wird ein Frequenzwort per SPI-Schnittstelle an das DDS-IC übertragen.&lt;br /&gt;
Im Gegensatz zu anderen DDS-Bausteinen von Analog Devices ist dieses Frequenzwort beim AD5930/5932 nur 24bit breit. Bei einer, laut Datenblatt angegebenen maximalen Taktfrequenz von 50MHz ergibt sich somit:&lt;br /&gt;
&lt;br /&gt;
kleinste auszugebende Frequenz/kleinstes Frequenzinkrement: 2,980232239 Hz&lt;br /&gt;
maximale Ausgangsfrequenz: 25 MHz&lt;br /&gt;
&lt;br /&gt;
Er ist der direkte Bruder des AD5932. Beide unterscheiden sich nur geringfügig. Der AD5930 verfügt über einen differentiellen Stromausgang, der AD5932 hingegen über einen einzelnen Spannungsausgang, bei dem ein 200Ω Abschlusswiderstand bereits integriert worden ist.&lt;br /&gt;
Außerdem wurde die Ansteuerung der Vollaussteuerung beim AD5932 eingespart.&lt;br /&gt;
&lt;br /&gt;
Beide verfügen über eine Sweepfunktion mit verschiedenen Modi. So ist es möglich den Sweep vollständig intern durchzuführen oder aber über einen Interrupt den nächsten Frequenzschritt zu setzen, sodass hier ein aufwändiges Neuschreiben der nächsten Frequenz entfäll. Damit minimiert sich die Ansteuerung erheblich und die Datenübertragung zum IC wird erheblich reduziert.&lt;br /&gt;
Zum Sweepen definiert man einfach nur die Startfrequenz, das Frequenzinkrement (positiv oder negativ) und die Anzahl von Inkrementen.&lt;br /&gt;
Darüber hinaus lässt ich definieren, ob eine bestimmte Anzahl an Sweeps durchgeführt oder kontinuierlich gesweept werden soll.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich lässt sich mit dem AD5930 ein Burstsignal mit einer definierten Anzahl an Schwingungen erzeugen. &lt;br /&gt;
&lt;br /&gt;
Der AD5930 verfügt über einen Eingang (FullScaleAdjust - FSADJUST) über den sich Amplitudenmodulation, aber auch Amplitudenkorrekturen durchführen ließe.&lt;br /&gt;
&lt;br /&gt;
Eine mikrocontroller-gestützte Frequenzmodulation ist ebenfalls denkbar.&lt;br /&gt;
&lt;br /&gt;
Programmiert werden beide Bausteine via SPI, mit maximalen Taktgeschwindigkeiten von bis zu 40MHz.&lt;br /&gt;
&lt;br /&gt;
All diese Eigenschaften und noch einige weitere hier vielleicht nicht erwähnte prädestinieren dieses DDS-IC als Herzstück für einen Funktionsgenerator.&lt;br /&gt;
&lt;br /&gt;
=== Taktquelle für den AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Dem Datenblatt zum AD5930 kann man entnehmen, dass der AD5930 mit einem Takt aus einem Quarzoszillator von 50MHz betrieben werden kann.&lt;br /&gt;
Da sich hiermit, wie man der [http://www.analog.com/static/imported-files/application_notes/AN-1044.pdf Application Note AN-1044] entnehmen kann, ein Frequenzinkrement von ungünstigen &amp;lt;math&amp;gt;50 MHz / 2 ^ {24} = 2,980232239 Hz&amp;lt;/math&amp;gt; ergibt, ist es sinnvoll den AD5930 leicht zu übertakten. Dazu wird von 3Hz pro Frequenzinkrement auf die notwendige Taktfrequenz zurück gerechnet.&lt;br /&gt;
Es ergeben sich &amp;lt;math&amp;gt;3 Hz * 2 ^ {24} = 50,331648 MHz&amp;lt;/math&amp;gt; für die Taktquelle.&lt;br /&gt;
&lt;br /&gt;
Da diese Frequenzschritte zumindest für kleine Frequenzen relativ groß erscheinen, ist vorgesehen zwischen zwei Taktfrequenzen umzuschalten, sodass mit einer Taktfrequenz von 3,3554432 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. erreicht wird. (Details siehe nachfolgender Text)&lt;br /&gt;
&lt;br /&gt;
Somit ergibt sich für den fein aufgelösten Frequenzbereich 0,2 Hz .. 1 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. und für den grob aufgelösten Frequenzbereich 3 Hz .. 20 MHz eine Frequenzauflösung von 3 Hz/Inkr.&lt;br /&gt;
&lt;br /&gt;
Um die Taktfrequenzen zu erzeugen, wird zunächst ein programmierbarer Synthesizer, der CDCE913 von Texas Instruments, eingesetzt. Mit diesem und einem extern angeschlossenen Quarz ist es möglich, die notwendige Taktfrequenz für den DDS-IC bereitzustellen. Er verfügt über eine 2-Wire I²C-Schnittstelle, sodass zur Programmierung lediglich eine Takt- (SCL) und eine Datenleitung (SDA) notwendig sind.&lt;br /&gt;
Findet sich ein ähnliches IC mit 3-Wire SPI-Schnittstelle, so ist vorgesehen den CDCE913 zu ersetzen, da dann nur noch eine ChipSelect-Leitung notwendig wird und Takt- bzw. Datenleitung für AD5930 und PLL-IC gemeinsam verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Es stehen eine Reihe von Quarzen zur Verfügung, mit denen sich die Taktfrequenz erzeugen lässt. Es sind lediglich ein paar wenige Randbedingung bei diesem IC zu beachten, um den richtigen Quarz auszuwählen:&lt;br /&gt;
&lt;br /&gt;
1.) &amp;lt;math&amp;gt;fmclk = fout = {fin / Pdiv} * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit M = 1 .. 511, N = 1 .. 4095 und Pdiv = 1 .. 127&lt;br /&gt;
&lt;br /&gt;
2.) &amp;lt;math&amp;gt;fVCO = fin * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit fVCO = 80 MHz .. 230 MHz und fin = 8 MHz .. 32 MHz&lt;br /&gt;
&lt;br /&gt;
Die Frequenz fout sind in unserem Fall die gewünschten 50,331648 MHz.&lt;br /&gt;
Mit den Randbedingungen ergibt sich für Pdiv = 2 .. 4 und daraus bspw. folgende mögliche Kombinationen für den zu verwendenden Quarz, wenn Pdiv = 2 gewählt wurde:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; &#039;&#039;f(Quarz) in [MHz]: &#039;&#039; M (1…511)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;8,192:&#039;&#039; 125, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;9,8304:&#039;&#039; 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;11,0592:&#039;&#039; 225&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;12,288:&#039;&#039; 125, 250, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;14,7456:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;16,384:&#039;&#039; 250, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;19,6608:&#039;&#039; 25, 50, 75, 100, 125, 150, 200, 225, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;22,1184:&#039;&#039; 225, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;24,576:&#039;&#039; 125, 250, 375, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;29,4912:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
Die M-Werte der Tabelle reduzieren sich, wenn man Pdiv = 3 oder 4 wählt.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich einen Quarz mit maximal möglicher Frequenz zu verwenden, da dann der Frequenzfehler minimal wird.&lt;br /&gt;
&lt;br /&gt;
Als leicht erhältlicher Standardquarz (Referenz sei bspw. Reichelt) kann daher derjenige mit 24,576 MHz zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
Mit diesem Quarz und dem Ändern des Teilers von Pdiv = 2 auf Pdiv = 6 ergibt sich eine Frequenzauflösung des AD5930 auf 1 Hz, respektive einer Taktfrequenz des AD5930 von fmclk = 16,777216 MHz und mit Pdiv = 12 eine Auflösung von 0,5 Hz, respektive einer Taktfrequenz von fmclk = 8,388608 MHz. Zu beachten ist dabei, dass sich dadurch natürlich die maximal auszugebende Frequenz ebenfalls reduziert. Mit Pdiv = 6 sind dies fmax = 8,388608 MHz und für Pdiv = 12 entsprechend fmax = 4,194304 MHz.&lt;br /&gt;
&lt;br /&gt;
Somit kann durch einfaches Ändern von Pdiv die Taktfrequenz bzw. die Frequenzauflösung verändert werden.&lt;br /&gt;
&lt;br /&gt;
Den Zusammenhang zwischen Taktfrequenz und Frequenzauflösung zeigt die nachfolgende Tabelle noch einmal:&lt;br /&gt;
&lt;br /&gt;
fmclk = 50,331648 MHz --&amp;gt; foutmin = 3 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 41,94304 MHz --&amp;gt; foutmin = 2,5 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 33,554432 MHz --&amp;gt; foutmin = 2 Hz --&amp;gt; Pdiv = 3&lt;br /&gt;
&lt;br /&gt;
fmclk = 25,165824 MHz --&amp;gt; foutmin = 1,5 Hz --&amp;gt; Pdiv = 4&lt;br /&gt;
&lt;br /&gt;
fmclk = 16,777216 MHz --&amp;gt; foutmin = 1 Hz --&amp;gt; Pdiv = 6&lt;br /&gt;
&lt;br /&gt;
fmclk = 8,388608 MHz --&amp;gt; foutmin = 0,5 Hz --&amp;gt; Pdiv = 12&lt;br /&gt;
&lt;br /&gt;
fmclk = 4,194304 MHz --&amp;gt; foutmin = 0,25 Hz --&amp;gt; Pdiv = 24&lt;br /&gt;
&lt;br /&gt;
fmclk = 3,3554432 MHz --&amp;gt; foutmin = 0,2 Hz --&amp;gt; Pdiv = 30&lt;br /&gt;
&lt;br /&gt;
fmclk = 2,0971515 MHz --&amp;gt; foutmin = 0,125 Hz --&amp;gt; Pdiv = 48&lt;br /&gt;
&lt;br /&gt;
fmclk = 1,6777216 MHz --&amp;gt; foutmin = 0,1 Hz --&amp;gt; Pdiv = 60&lt;br /&gt;
&lt;br /&gt;
Wer es genauer als ein Quarz braucht kann auch ein TCXO oder gar einen TCVCXO verwenden. Hierbei ist die Auswahl an Bausteinen jedoch deutlich eingeschränkter. Eine Möglichkeit ist die Verwendung eines TCXO mit einer Frequenz von 16,384 MHz.&lt;br /&gt;
Mit ihm lassen sich die aufgeführten Taktfrequenzen ebenfalls einstellen.&lt;br /&gt;
Es ist anzumerken, dass der CDCE913 über die Möglichkeit verfügt zwei PLL-Settings vorzuprogrammieren und im EEPROM zu hinterlegen, sodass zwischen zwei Ausgangsfrequenzen durch einfaches Umschalten eines Statusregisters umgeschaltet werden kann. Es kann aber auch zur Laufzeit auf die Register des PLL-Bausteins zugegriffen und Registerwerte neu geschrieben werden, sodass die maximale Ausgangsfrequenz des AD5930 voll ausgenutzt werden kann, ohne dabei auf sehr tiefe Frequenzen verzichten zu müssen.&lt;br /&gt;
&lt;br /&gt;
=== Die Programmierung des DDS-ICs ===&lt;br /&gt;
&lt;br /&gt;
In einem ersten Schritt soll der AD5930 über einen FT232 vollständig vom PC aus programmiert werden. Das macht Arbeiten im Bereich Mikrocontroller zunächst überflüssig.&lt;br /&gt;
Mit einem kleinen Tool kann der FT232 via Bit Banging als USB to SPI Programmer genutzt werden, sodass der Schwerpunkt zunächst vollständig im Bereich Schaltungsentwurf liegen kann.&lt;br /&gt;
Eine Adaptierung eines Mikrocontrollers ist dann in einer späteren Ausbaustufe &amp;quot;schnell&amp;quot; erledigt.&lt;br /&gt;
&lt;br /&gt;
Auf dieser [http://www.openschemes.com/modules/wordpress/2009/11/05/bit-banging-spi-on-arduinos-ft232rl/1/ Webseite] wird gezeigt, dass via Bit Banging der FT232 als USB to SPI Programmer verwendet werden kann. Dazu werden einfach die drei notwendigen SPI-Leitungen vom AD5930 mit dem FT232 wie folgt verbunden:&lt;br /&gt;
&lt;br /&gt;
* Beschreibung - AD5930 - FT232&lt;br /&gt;
*  ChipSelect - FSync  - RI&lt;br /&gt;
*    Clock    - SCLK   - CTS&lt;br /&gt;
*     Data    - SDATA  - MOSI&lt;br /&gt;
&lt;br /&gt;
und das [http://www.openschemes.com/uploads/wordpress/2009/11/ft232spi.zip SPI Demo Tool] gestartet.&lt;br /&gt;
Nachdem der FT232 erkannt wurde drückt man &amp;quot;Open Interface&amp;quot;. Man vergewissert sich noch einmal, dass die Einstellungen für die SPI-Leitungen auch stimmen und klickt auf &amp;quot;Do bitbang Setup&amp;quot;.&lt;br /&gt;
Nun braucht man nur noch die Bitlänge von 8 auf 16 umstellen und kann durch direktes Schreiben der Adressen den AD5930 programmieren.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel soll gezeigt werden, wie ein 1MHz Sinussignal schnell per Hand mit diesem Tool programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* 06db    - setzt die notwendigen Einstellungen in ControlRegister&lt;br /&gt;
* d051    - MSB der Startfrequenz für 1MHz&lt;br /&gt;
* ceb8    - LSB der Startfrequenz für 1MHz&lt;br /&gt;
* 3000    - MSB des Frequenzinkrements&lt;br /&gt;
* 2000    - LSB des Frequenzinkrements&lt;br /&gt;
* 1002    - minimalste Anzahl der Frequenzinkremente&lt;br /&gt;
&lt;br /&gt;
Die Programmierung ist kinderleicht und kann bequem als PC-Software ausgeführt werden, sodass hierfür kein Mikrocontroller zum Einsatz kommen muss.&lt;br /&gt;
Wie der AD5930/32 für einen Sweep oder eine Einzelfrequenz programmiert werden kann findet sich beispielhaft auch in der Application Note-1044 von Analog Devices.&lt;br /&gt;
&lt;br /&gt;
=== Der 1. Verstärker ===&lt;br /&gt;
&lt;br /&gt;
Das Datenblatt des AD5930 empfiehlt, dass an seinen DAC-Ausgängen ein mind. 200Ω Widerstand als Last angeschlossen wird, zu denen parallel ein Kondensator von 20pF spendiert werden soll, um ein Rekonstruktionsfilter 1. Ordnung auszubilden. Aus der Stromquelle des DAC wird somit eine Spannungsquelle.&lt;br /&gt;
Je nach Taktfrequenz muss der Wert der Kapazität angepasst werden. Gesetz dem Fall der AD5930 wird mit eine Taktfrequenz von 41,94304MHz gespeist erhöht sich der Wert der Kapazität auf 39pF.&lt;br /&gt;
Um die Vorteile eines differentiellen Ausgangs nutzen zu können kommen in aller Regel Übertrager zum Einsatz.&lt;br /&gt;
Analog Devices, CN-0142, &amp;quot;High CMRR Circuit for Converting Wideband Complementary DAC Outputs to Single-Ended Without Precision Resistors&amp;quot; schreibt zu der Thematik:&lt;br /&gt;
&amp;quot;...Traditional methods for converting wideband DAC comple-mentary current outputs to a single-ended signal are to either use a center-tapped transformer or a single op amp in a differential-to-single-ended configuration. However, the transformer low frequency nonlinearities may limit its use near dc; and the operational amplifier approach requires closely matched resistors to provide dc common-mode rejection, load impedance, and gain matching between the complementary DAC outputs. Errors in the matching will produce errors at the final output...&amp;quot;.&lt;br /&gt;
Abhilfe kann hier ein differentieller Verstärker wie der AD8129/AD8130 schaffen, der über einen differentiellen Eingang und einen Single-Ended Ausgang verfügt. Aus dem symmetrischen Signal wird somit ein unsymmetrisches, wie es in den meisten Anwendungen benötigt wird. Der Verstärker soll das Rekonstruktionsfilter treiben, mit dem es im nächsten Abschnitt weiter geht.&lt;br /&gt;
&lt;br /&gt;
=== Das Rekonstruktionsfilter ===&lt;br /&gt;
&lt;br /&gt;
Die DDS macht prinzipbedingt den Einsatz eines Rekonstruktionsfilters notwendig. Dieses sorgt dafür, dass das Taktsignal des DDS-ICs mit ausreichender Dämpfung unterdrückt wird.&lt;br /&gt;
In verschiedenen Papern findet man ganz unterschiedliche Angaben zu dieser notwendigen Dämpfung. Einige sprechen von -60dBr (bspw. Aufsatz zur Tiefpassfilter - Dimensionierung von Gehard Rohm) andere sogar von -70dBr (bspw. Application Note  #5 von www.thinkSRS.com) im Bereich der Funktionsgeneratoranwendungen. Die Einheit dBr heißt Decibel relativ und entspricht dem Verhältnis zweier Spannungspegel.&lt;br /&gt;
&lt;br /&gt;
Letzt genannte Quelle schlägt für den Einsatz von DDS-ICs die Verwendung elliptischer Filter vor, da sie mit einem steilen Übergangsbereich und kleinem Ripple im Durchlassbereich entworfen werden können.&lt;br /&gt;
Als Filter wird daher ein elliptisches Filter eingesetzt. Dieses wird mittels freien Tools (bsp. AADE Filter Design) dimensioniert und ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Wie im Abschnitt [http://www.mikrocontroller.net/articles/DDS_basierter_Funktionsgenerator_mit_AD5930#Taktquelle_f.C3.BCr_den_AD5930 Taktquelle für den AD5930] nachzulesen ist, soll zwischen zwei verschiedenen Taktfrequenzen umgeschaltet werden. Demzufolge sind zwei verschiedene Rekonstruktionsfilter erforderlich.&lt;br /&gt;
Für das Taktsignal 3,3554432 MHz kommt ein aktives Rekonstruktionsfilter zum Einsatz, da bei passiven Filtern große Induktivitäten notwendig würden, was mit höheren Filterverlusten einhergeht, da die DC-Widerstände großer Induktivitäten ebenfalls recht groß ausfallen.&lt;br /&gt;
Für das Taktsignal 50,331648 MHz kommt dagegen ein elliptisches Filter, auch Cauer-Filter genannt, zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Vielen graut es davor sich mit der Filterthematik zu beschäftigen, es soll jedoch gezeigt werden, dass der Entwurf eines ordentliches Filters mit modernen PC-gestützen Mitteln kein Geheimnis darstellt.&lt;br /&gt;
&lt;br /&gt;
Die erste Frage die sich jedem, der noch nie ein Filter entworfen hat, stellt ist, wo muss die Filtergrenze liegen. Dazu ein wenig Theorie:&lt;br /&gt;
&lt;br /&gt;
Es werde angenommen der DDS-IC ist mit fs=50MHz getaktet. Die maximale Ausgangsfrequenz ergibt sich laut Nyquist-Abtasttheorem zu fmax = 25 MHz. Das heißt, dass 25 MHz noch vom Filter durchgelassen werden sollen, aber das Stopband auch bereits bei fs-fmax = 25 MHz beginnen soll, ein Widerspruch in sich. Da es in der Realität keine unendlich steilen Filter gibt, trifft man einen Kompromiss und legt die maximale Ausgangsfrequenz auf fs/3. Dies würde bedeuten, dass uns nur etwa f = 16.67 MHz als maximale Ausgangsfrequenz der DDS zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
Wir wollen uns diesem Kompromiss ein wenig entgegensetzen und setzen die Filtergrenze etwas höher, also bei 20 MHz an. Innerhalb einer Dekade (fs-fmax = 30MHz) soll das Signal um -60 dBc bis -70 dBc (dBc - Decibel under Carrier) gedämpft werden.&lt;br /&gt;
Im Folgenden geht es also darum, ein Filter mit den getroffenen Annahmen zu entwerfen. Es wird geprüft, ob ein Filter 7. Ordnung diesem Anspruch gerecht werden kann oder ob ein Filter 9. Ordnung eingesetzt werden muss.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe des Programmes AADE Filter Design entwerfen wir einen Elliptic LowPass mit folgenden Parametern:&lt;br /&gt;
&lt;br /&gt;
F1 = 20 MHz&lt;br /&gt;
F2 = 30 MHz&lt;br /&gt;
Apass = 0,01 (warum 0,01 wird nachfolgend erklärt)&lt;br /&gt;
Order = 7 bzw. 9&lt;br /&gt;
Zin = 50 Ω&lt;br /&gt;
Zout = 50 Ω&lt;br /&gt;
&lt;br /&gt;
Das Passband Ripple wird bewusst sehr klein gewählt, da es durch die Annäherung der errechneten Bauteilwerte an erhältliche und parasitären Effekten wieder zunehmen wird. Wenn man ein Passband Ripple von 0,5 dB erreicht wäre das großartig, mit kleiner 1 dB wären man aber immer noch sehr zufrieden. Wieso?&lt;br /&gt;
&lt;br /&gt;
Das wird rechnerisch schnell deutlich:&lt;br /&gt;
&lt;br /&gt;
Geht man davon aus, dass das Filter mit einer Eingangsimpedanz von 50 Ω von einer Quelle mit 50 Ω Ausgangsimpedanz und einem Signal von 1 V (0 dB) Amplitude gespeist wird, so wird man, wenn das Filter eine Ausgangsimpedanz von 50 Ω hat und man das Filter mit 50 Ω abschließt noch die halbe Spannung messen können, also 500 mV (ca. -6,02 dB).&lt;br /&gt;
Lässt man nun 0,3 dB Ripple zu, so entspricht das einem Wert von -6.32 dB oder 483 mV, bei 0,5 dB sind es 472 mV und bei 1 dB noch rund 446 mV.&lt;br /&gt;
&lt;br /&gt;
Die Bauteile werden zunächst als verlustfrei betrachtet und das Programm schlägt für beide Filter eine Bauteilbemessung vor:&lt;br /&gt;
&lt;br /&gt;
Filter 7. Ordnung [[http://www.mikrocontroller.net/attachment/70868/FG-AD5930-3.png]], [[http://www.mikrocontroller.net/attachment/70869/FG-AD5930-4.png]]&lt;br /&gt;
&lt;br /&gt;
Filter 9. Ordnung [[http://www.mikrocontroller.net/attachment/70870/FG-AD5930-5.png]], [[http://www.mikrocontroller.net/attachment/70871/FG-AD5930-6.png]]&lt;br /&gt;
&lt;br /&gt;
Anhand der Bauteilbemessung wird schnell ersichtlich, dass es keine diskreten Kondensatoren mit 0,xxxpF gibt und auch keine Induktivitäten mit Werten unterhalb des nH-Bereiches.&lt;br /&gt;
&lt;br /&gt;
Das Entwurftool lässt es aber dennoch zu, dass man sich die Filterkurve anschauen kann. Im direkten Vergleich der beiden Filter zeigt sich, dass mit dem Filter 7. Ordnung gerade etwa -60 dBr gegenüber dem maximalen Ausgangssignal an Dämpfung erreicht werden. Wir konzentrieren uns daher auf das Filter 9. Ordnung, da es mit etwa -90 dBr deutlich vielversprechender ausschaut.&lt;br /&gt;
&lt;br /&gt;
Das Filter muss nun realen Bauteilwerten angenähert werden. Dies tut man, indem man einfach schaut, was die Hersteller für Bauteilwerte liefern können. Im einfachsten Fall gibt es genau den Wert, den man sucht, andernfalls kann man auch durch Verschaltung mehrerer Bauteile (Induktivitäten oder Kapazitäten in Serie oder parallel angeordnet) auf den gewünschten Bauteilwert kommen.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich, eine SpiceSimulation durchzuführen, in der man das errechnete Filter mit dem aus realen Bauteilwerten bestehenden vergleicht. Hier kann, durch Hinzufügen des Serienwiderstandes bzw. der Güte und der Resonanzfrequenz bzw. der parasitären Kapazität, schon abgeschätzt werden, wie das Filter in etwa real wirken wird. Dies setzt jedoch ein gut durchdachtes, kapazitätsarmes Layout vorraus.&lt;br /&gt;
&lt;br /&gt;
Wer sich das nicht antun möchte, der baut das Filter &amp;quot;einfach&amp;quot; auf und vermisst es bspw. mit einem Gain-Phase-Analyser, einem Netzwerkanalysator oder mit einem Spektrumanalyser mit integriertem Tracking Generator o.ä. brauchbarem Messequipment.&lt;br /&gt;
&lt;br /&gt;
Nähert man das mit den oben genannten Randbedingungen entworfene Filter 9. Ordnung an real erhältliche Bauteilwerte an, so erhält man bspw. das folgende Filter:&lt;br /&gt;
&lt;br /&gt;
*Dipol 1: &#039;&#039;&#039;120pF&#039;&#039;&#039;&lt;br /&gt;
*Dipol 2: &#039;&#039;&#039;8pF || 540nH&#039;&#039;&#039; (aus 270nH + 270nH)&lt;br /&gt;
*Dipol 3: &#039;&#039;&#039;250pF&#039;&#039;&#039;(aus 150pF || 100pF)&lt;br /&gt;
*Dipol 4: &#039;&#039;&#039;43p&#039;&#039;&#039; (aus 33pF || 10pF) &#039;&#039;&#039;|| 530nH&#039;&#039;&#039; (aus 330nH + 200nH)&lt;br /&gt;
*Dipol 5: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 6: &#039;&#039;&#039;56pF || 490nH&#039;&#039;&#039; (aus 270nH + 220nH)&lt;br /&gt;
*Dipol 7: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 8: &#039;&#039;&#039;30pF&#039;&#039;&#039; (aus 15pF || 15pF) &#039;&#039;&#039;|| 480nH&#039;&#039;&#039; (aus 330nH + 150nH)&lt;br /&gt;
*Dipol 9: &#039;&#039;&#039;100pF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies Filter ist in folgender Simulation noch einmal gezeigt [[http://www.mikrocontroller.net/attachment/70886/FG-AD5930-7.png]], [[http://www.mikrocontroller.net/attachment/70887/FG-AD5930-8.png]].&lt;br /&gt;
&lt;br /&gt;
Fügt man nun den Bauteilwerten noch ihre parasitären Elemente hinzu (Verluste in den Bauteilen), diese findet man in den Datenbättern der Bauteile, so kann man das Filter der Realität weiter annähern. Dies ist hier mal für Induktivitäten eines Herstellers unterschiedlicher Serien und Gehäusegrößen durchgeführt worden [[http://www.mikrocontroller.net/attachment/71186/FG-AD5930-9.png]].&lt;br /&gt;
&lt;br /&gt;
Nach diesen Ergebnissen fällt die Bauteilwahl auf die AS-Serie im Package 0805.&lt;br /&gt;
&lt;br /&gt;
Als Kondensatoren werden NPO-Typen in 0805 mit ±0,5pF bei kleinen Bauteilwerten und ±5% bei den größeren Werten für die Toleranz eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Nun geht es an den Aufbau des Filters. Hier findet sich das Testlayout, das speziell für dieses Filter [[http://www.mikrocontroller.net/attachment/74720/Filter.png]] verwendet wurde. Die in Serie geschalteten Induktivitäten werden im 90°-Winkel zueinander angeordnet, um die Kopplung der Induktivitäten untereinander zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
Nach dem Vermessen des Filters wird dessen Übertragungsfunktion (Uout/Uin in dB) dem ursprünglich simulierten Filter mit realen, verlustbehafteten Bauteilwerten graphisch gegenüber gestellt [[http://www.mikrocontroller.net/attachment/79100/Filtermessung.png]].&lt;br /&gt;
&lt;br /&gt;
Es zeigt sich, dass das reale Filter [[http://www.mikrocontroller.net/attachment/79034/Filter.JPG]] recht gut gelungen ist, sodass diese Bauteilwerte direkt im weiteren Projekt verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Für den fein aufgelösten Frequenzbereich soll die Taktfrequenz des DDS 3,3554432 MHz betragen.&lt;br /&gt;
Um ein aktives Filter zu entwerfen kommt das kostenlos Programm FilterPro von Texas Instruments zum Einsatz.&lt;br /&gt;
Wir legen folgende Randbedingungen fest:&lt;br /&gt;
&lt;br /&gt;
* Passband: Low-Pass&lt;br /&gt;
* Circuit-Type: MFB Single-Ended bzw. MFB Fully Differential&lt;br /&gt;
* Anzahl Pole: 4&lt;br /&gt;
* Cutoff Freq. 1,5M&lt;br /&gt;
* Filter Type: Butterworth&lt;br /&gt;
* Value Display: Component Values&lt;br /&gt;
* Components: Res. E48 und Cap. E12&lt;br /&gt;
&lt;br /&gt;
und erhalten sofort ein Filter mit der Bemessung der passiven Bauelemente und einer Dämpfung von 80 dB/Dekade.&lt;br /&gt;
Bei der Wahl der richtigen OPVs für das Filter hilft die Angabe Req. GBP (erfoderliches Verstärkungsbandbreiteprodukt).&lt;br /&gt;
&lt;br /&gt;
In diesem Abschnitt wurde gezeigt, dass die PC gestützte Auslegung eines Rekonstruktionsfilters bei Weitem nicht so kompliziert ist, wie es zunächst erscheinen mag, sodass jeder mit dem hier gezeigten Beispiel in der Lage sein sollte, sein eigenes Rekonstruktionsfilter auszulegen.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos zum Filter können der [http://www.mikrocontroller.net/topic/168134#1606968 Diskussionsrunde] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenkorrektur ===&lt;br /&gt;
&lt;br /&gt;
Der FSAdjust-Eingang ermöglicht eine Korrektur der Amplitude, sodass hier Verluste durch das Filter bzw. Passband Ripple, durch eine Rückkoppplung vom Verstärker zum DDS-IC, ausgeglichen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Endstufe ===&lt;br /&gt;
&lt;br /&gt;
Übliche Funktionsgeneratoren verfügen über eine Endstufe, mit der Ausgangspegel von 20Vpp möglich sind. Ähnliche Ausgangspegel sollen auch hier das Ziel sein.&lt;br /&gt;
&lt;br /&gt;
==== DC-Offsetverschiebung ====&lt;br /&gt;
&lt;br /&gt;
Eine Gleichspannungsoffsetverschiebung soll ebenfalls implementiert werden. Diese kann analog von einem Potentiometer aus erfolgen, soll später dann jedoch gegen einen DAC ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Selbstverständlich gehört auch eine durchdachte Spannungsversorgung in den Rahmen dieses Projektes, das den kompletten Funktionsgenerator mit den erforderlichen Spannungen versorgt.&lt;br /&gt;
&lt;br /&gt;
== Sonderfunktionen ==&lt;br /&gt;
&lt;br /&gt;
Hier sollen die Funktionen beleuchtet werden, die entweder nicht direkt oder gar nicht aus dem AD5930, jedoch mit etwas Controllerunterstützung dennoch gewonnen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenmodulation ===&lt;br /&gt;
&lt;br /&gt;
Über den bereits erwähnten FSAdjust am AD5930 kann eine Amplitudenmodulation vorgenommen werden. Diese soll separat nach außen geführt werden und es dem Benutzer erlauben Signale auf eine eingestellte Trägerfrequenz im AD5930 aufzumodelieren.&lt;br /&gt;
&lt;br /&gt;
=== Impuls-Signale ===&lt;br /&gt;
&lt;br /&gt;
Für die Ausgabe von Impulsen kann die Burst-Funktion des AD5930 verwendet werden. Die minimale Impulslänge wird dann durch die maximale Ausgangsfrequenz des AD5930 bestimmt. Dazu kann das Signal durch einen schnellen Baustein der 74er Reihe geschickt werden, sodass Impulse von 20ns vorstellbar sind.&lt;br /&gt;
&lt;br /&gt;
=== PWM-Signale ===&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Ausbaus zum Standalone-Gerät wird zwangsläufig auch ein Mikrocontroller zum Einsatz kommen, sodass hier grundsätzich die Möglichkeit besteht den Funktionsgenerator um Pulsweitenmodulation zu erweitern. Für die Ausgabe von PWM-Signalen bis 20MHz ist jedoch ein entsprechend schneller Mikrocontroller notwendig.&lt;br /&gt;
Macht man sich dagegen die Burst-Funktion des AD5930 in Kombination mit einem schnellem Baustein der 74er Reihe o.ä. zu Nutze, so sollte auch eine Pulsweitenmodulation mit langsameren Mikrocontrollern möglich sein. Hierzu ist aber die Programmierzeit des AD5930 mit zu berücksichtigen, da ständig neue Frequenzen geschrieben werden müssen.&lt;br /&gt;
&lt;br /&gt;
== Das Software Frontend ==&lt;br /&gt;
&lt;br /&gt;
Für die Programmierung des AD5930 ist, in der Ausbaustufe mit FT232, eine Softwareoberfläche notwendig, von der aus sämtliche Einstellungen für den Bediener nutzerfreundlich vorgenommen werden können.&lt;br /&gt;
&lt;br /&gt;
= Ausbau zum Standalone-Gerät =&lt;br /&gt;
&lt;br /&gt;
Als weitere Stufe steht der Ausbau zum Standalone-Gerät an. Hierzu wird ein Mikrontroller mit Anzeige und Menüsteuerung zum Einsatz kommen können, sodass sämtliche Einstellungen auch bequem direkt am Gerät erfolgen können und ein PC nicht zwingend erforderlich ist.&lt;br /&gt;
Hierfür ist die Programmierung eines Mikrocontrollers notwendig.&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung des Standalone-Gerätes ==&lt;br /&gt;
&lt;br /&gt;
== Controllerauswahl ==&lt;br /&gt;
&lt;br /&gt;
== Anzeige der Statusinformationen - LCD ==&lt;br /&gt;
&lt;br /&gt;
== Schaltung des Controllerboards ==&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
= Schaltpläne und Layoutdaten =&lt;br /&gt;
&lt;br /&gt;
Alle Schaltpläne und Layoutdaten sollen hier für jeden zugänglich gemacht werden. Es bietet sich daher an Eagle in der Light Version oder KiCAD zu verwenden.&lt;br /&gt;
&lt;br /&gt;
= Diskussionsrunde =&lt;br /&gt;
&lt;br /&gt;
Unter diesem [http://www.mikrocontroller.net/topic/168134#1606968 Link] sollen Diskussionen zum Projekt erfolgen.&lt;br /&gt;
&lt;br /&gt;
= Links zu bekannten Projekten mit dem AD5930/AD5932 =&lt;br /&gt;
&lt;br /&gt;
[http://mexlewiki.hs-heilbronn.de/UserFiles/File/Funktionsgenerator%20DDS/Documentation%20DDS.pdf DDS-Funktionsgenerator mit dem MiniMEXLE Version 3.0]&lt;br /&gt;
&lt;br /&gt;
[http://www.uchobby.com/index.php/2007/09/05/arduino-siggen1-boards-arrive/ Siggen1]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Signalgeneratoren]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59842</id>
		<title>DDS basierter Funktionsgenerator mit AD5930</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DDS_basierter_Funktionsgenerator_mit_AD5930&amp;diff=59842"/>
		<updated>2011-08-25T12:04:55Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Das Rekonstruktionfilter */ Tippfehler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite soll als Projektseite für einen DDS-basierten Funktionsgenerator dienen. Bekannte Funktionsgeneratoren auf Basis von DDS-ICs der Firma Analog Devices sind bekannt und im Internet einsehbar (bspw. DDS10, DDS20, DDS130).&lt;br /&gt;
Allen Funktionsgeneratoren ist eines gemein, sie sind sehr einfach gehalten und können es mit kommerziellen Funktionsgeneratoren nicht aufnehmen. Die Rekonstruktionsfilter sind zum Teil unbefriedigend dimensioniert und erfüllen insgesamt, nach Auffassung des Projektinitiators, nicht den Anspruch an einen Funktionsgenerator für die Messtechnik.&lt;br /&gt;
&lt;br /&gt;
Das Projekt nimmt bewusst Abstand von Projekten mit &amp;quot;großen&amp;quot; DDS-ICs, die beispielsweise für Eigenbau-Netzwerkanalysatoren, Signalgeneratoren, Antennenanpassgeräten oder Impedanzmessgeräten und ähnlichen Schaltungen zum Einsatz kommen. Derlei Projekte sind inspirierend, haben jedoch völlig andere Ansprüche.&lt;br /&gt;
Daher soll das erklärte Ziel dieses Projektes ein Funktionsgenerator sein, der das Optimum aus dem AD5930 herausholen kann und als Vorlage für eigene Schaltungen mit DDS-ICs dient.&lt;br /&gt;
Zunächst soll der Funktionsgenerator komplett via PC ansteuerbar sein, eine Erweiterung als Standalone-Gerät ist aber ebenso denkbar.&lt;br /&gt;
&lt;br /&gt;
= Worte vom Projektinitiator an die Gemeinde =&lt;br /&gt;
&lt;br /&gt;
Es wurde bewusst Mikrocontroller.net für das Projekt gewählt, da diese Plattform keinem kommerziellem Hintergedanken entspricht, für jeden auch ohne Anmeldung einsehbar ist und der Projektinitiator, nach eigener Erfahrung der Auffassung ist, dass viele sich gegenüber einer englischsprachigen Plattform mit qualifizierten Beiträgen zurückhalten.&lt;br /&gt;
Jeder der sich inspiriert fühlt sein Wissen mit anderen zu teilen und Lust hat am Projekt teilzunehmen ist aufgerufen, diese Projektseite mit Informationen zu füllen.&lt;br /&gt;
&lt;br /&gt;
= Basisgerät =&lt;br /&gt;
&lt;br /&gt;
Das Basisgerät soll als PC-Gerät ausgeführt sein. Da alle Schnittstellen jedoch auch über Pfostensteckeanschlüsse zugänglich gemacht werden ist es problemlos möglich, den Funktionsgenerator zu einem Standalone-Gerät auszubauen.&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
* Signalarten: Sinus, Dreieck, Rampe, Rechteck, Puls&lt;br /&gt;
* minimale Frequenz: 3Hz&lt;br /&gt;
* maximale Frequenz: Sinus- und Rechtecksignale bis 20MHz, Dreieck und Rampe bis 2MHz&lt;br /&gt;
* Modi: Kontinuierlich, Burst, Sweep, Modulation (AM/FM)&lt;br /&gt;
* Signalausgang: 10Vpp&lt;br /&gt;
* Offset: ±5V&lt;br /&gt;
&lt;br /&gt;
== Die Schaltungsbaugruppen ==&lt;br /&gt;
&lt;br /&gt;
Der komplette Funktionsgenerator wird im Folgenden in einzelnen Baugruppen definiert und die Baugruppen kontinuierlich in ihrer Funktion erklärt. Sie stellen zugleich die einzelnen Baustellen des Projektes dar.&lt;br /&gt;
&lt;br /&gt;
=== Das Herzstück: DDS-IC AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Der AD5930 ist ein Signalgeneratorbaustein von Analog Devices, der nach dem DDS-Prinzip (Digital Direct Synthesis) arbeitet. Mit dem speziellen Exemplar lassen sich sinus- und dreieckförmige Signale erzeugen. Dazu wird ein Frequenzwort per SPI-Schnittstelle an das DDS-IC übertragen.&lt;br /&gt;
Im Gegensatz zu anderen DDS-Bausteinen von Analog Devices ist dieses Frequenzwort beim AD5930/5932 nur 24bit breit. Bei einer, laut Datenblatt angegebenen maximalen Taktfrequenz von 50MHz ergibt sich somit:&lt;br /&gt;
&lt;br /&gt;
kleinste auszugebende Frequenz/kleinstes Frequenzinkrement: 2,980232239 Hz&lt;br /&gt;
maximale Ausgangsfrequenz: 25 MHz&lt;br /&gt;
&lt;br /&gt;
Er ist der direkte Bruder des AD5932. Beide unterscheiden sich nur geringfügig. Der AD5930 verfügt über einen differentiellen Stromausgang, der AD5932 hingegen über einen einzelnen Spannungsausgang, bei dem ein 200Ω Abschlusswiderstand bereits integriert worden ist.&lt;br /&gt;
Außerdem wurde die Ansteuerung der Vollaussteuerung beim AD5932 eingespart.&lt;br /&gt;
&lt;br /&gt;
Beide verfügen über eine Sweepfunktion mit verschiedenen Modi. So ist es möglich den Sweep vollständig intern durchzuführen oder aber über einen Interrupt den nächsten Frequenzschritt zu setzen, sodass hier ein aufwändiges Neuschreiben der nächsten Frequenz entfäll. Damit minimiert sich die Ansteuerung erheblich und die Datenübertragung zum IC wird erheblich reduziert.&lt;br /&gt;
Zum Sweepen definiert man einfach nur die Startfrequenz, das Frequenzinkrement (positiv oder negativ) und die Anzahl von Inkrementen.&lt;br /&gt;
Darüber hinaus lässt ich definieren, ob eine bestimmte Anzahl an Sweeps durchgeführt oder kontinuierlich gesweept werden soll.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich lässt sich mit dem AD5930 ein Burstsignal mit einer definierten Anzahl an Schwingungen erzeugen. &lt;br /&gt;
&lt;br /&gt;
Der AD5930 verfügt über einen Eingang (FullScaleAdjust - FSADJUST) über den sich Amplitudenmodulation, aber auch Amplitudenkorrekturen durchführen ließe.&lt;br /&gt;
&lt;br /&gt;
Eine mikrocontroller-gestützte Frequenzmodulation ist ebenfalls denkbar.&lt;br /&gt;
&lt;br /&gt;
Programmiert werden beide Bausteine via SPI, mit maximalen Taktgeschwindigkeiten von bis zu 40MHz.&lt;br /&gt;
&lt;br /&gt;
All diese Eigenschaften und noch einige weitere hier vielleicht nicht erwähnte prädestinieren dieses DDS-IC als Herzstück für einen Funktionsgenerator.&lt;br /&gt;
&lt;br /&gt;
=== Taktquelle für den AD5930 ===&lt;br /&gt;
&lt;br /&gt;
Dem Datenblatt zum AD5930 kann man entnehmen, dass der AD5930 mit einem Takt aus einem Quarzoszillator von 50MHz betrieben werden kann.&lt;br /&gt;
Da sich hiermit, wie man der [http://www.analog.com/static/imported-files/application_notes/AN-1044.pdf Application Note AN-1044] entnehmen kann, ein Frequenzinkrement von ungünstigen &amp;lt;math&amp;gt;50 MHz / 2 ^ {24} = 2,980232239 Hz&amp;lt;/math&amp;gt; ergibt, ist es sinnvoll den AD5930 leicht zu übertakten. Dazu wird von 3Hz pro Frequenzinkrement auf die notwendige Taktfrequenz zurück gerechnet.&lt;br /&gt;
Es ergeben sich &amp;lt;math&amp;gt;3 Hz * 2 ^ {24} = 50,331648 MHz&amp;lt;/math&amp;gt; für die Taktquelle.&lt;br /&gt;
&lt;br /&gt;
Da diese Frequenzschritte zumindest für kleine Frequenzen relativ groß erscheinen, ist vorgesehen zwischen zwei Taktfrequenzen umzuschalten, sodass mit einer Taktfrequenz von 3,3554432 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. erreicht wird. (Details siehe nachfolgender Text)&lt;br /&gt;
&lt;br /&gt;
Somit ergibt sich für den fein aufgelösten Frequenzbereich 0,2 Hz .. 1 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. und für den grob aufgelösten Frequenzbereich 3 Hz .. 20 MHz eine Frequenzauflösung von 3 Hz/Inkr.&lt;br /&gt;
&lt;br /&gt;
Um die Taktfrequenzen zu erzeugen, wird zunächst ein programmierbarer Synthesizer, der CDCE913 von Texas Instruments, eingesetzt. Mit diesem und einem extern angeschlossenen Quarz ist es möglich, die notwendige Taktfrequenz für den DDS-IC bereitzustellen. Er verfügt über eine 2-Wire I²C-Schnittstelle, sodass zur Programmierung lediglich eine Takt- (SCL) und eine Datenleitung (SDA) notwendig sind.&lt;br /&gt;
Findet sich ein ähnliches IC mit 3-Wire SPI-Schnittstelle, so ist vorgesehen den CDCE913 zu ersetzen, da dann nur noch eine ChipSelect-Leitung notwendig wird und Takt- bzw. Datenleitung für AD5930 und PLL-IC gemeinsam verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Es stehen eine Reihe von Quarzen zur Verfügung, mit denen sich die Taktfrequenz erzeugen lässt. Es sind lediglich ein paar wenige Randbedingung bei diesem IC zu beachten, um den richtigen Quarz auszuwählen:&lt;br /&gt;
&lt;br /&gt;
1.) &amp;lt;math&amp;gt;fmclk = fout = {fin / Pdiv} * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit M = 1 .. 511, N = 1 .. 4095 und Pdiv = 1 .. 127&lt;br /&gt;
&lt;br /&gt;
2.) &amp;lt;math&amp;gt;fVCO = fin * {N / M}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit fVCO = 80 MHz .. 230 MHz und fin = 8 MHz .. 32 MHz&lt;br /&gt;
&lt;br /&gt;
Die Frequenz fout sind in unserem Fall die gewünschten 50,331648 MHz.&lt;br /&gt;
Mit den Randbedingungen ergibt sich für Pdiv = 2 .. 4 und daraus bspw. folgende mögliche Kombinationen für den zu verwendenden Quarz, wenn Pdiv = 2 gewählt wurde:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; &#039;&#039;f(Quarz) in [MHz]: &#039;&#039; M (1…511)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;8,192:&#039;&#039; 125, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;9,8304:&#039;&#039; 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;11,0592:&#039;&#039; 225&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;12,288:&#039;&#039; 125, 250, 375&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;14,7456:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;16,384:&#039;&#039; 250, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;19,6608:&#039;&#039; 25, 50, 75, 100, 125, 150, 200, 225, 250&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;22,1184:&#039;&#039; 225, 450&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;24,576:&#039;&#039; 125, 250, 375, 500&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;29,4912:&#039;&#039; 75, 150, 225, 300, 375, 450&lt;br /&gt;
&lt;br /&gt;
Die M-Werte der Tabelle reduzieren sich, wenn man Pdiv = 3 oder 4 wählt.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich einen Quarz mit maximal möglicher Frequenz zu verwenden, da dann der Frequenzfehler minimal wird.&lt;br /&gt;
&lt;br /&gt;
Als leicht erhältlicher Standardquarz (Referenz sei bspw. Reichelt) kann daher derjenige mit 24,576 MHz zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
Mit diesem Quarz und dem Ändern des Teilers von Pdiv = 2 auf Pdiv = 6 ergibt sich eine Frequenzauflösung des AD5930 auf 1 Hz, respektive einer Taktfrequenz des AD5930 von fmclk = 16,777216 MHz und mit Pdiv = 12 eine Auflösung von 0,5 Hz, respektive einer Taktfrequenz von fmclk = 8,388608 MHz. Zu beachten ist dabei, dass sich dadurch natürlich die maximal auszugebende Frequenz ebenfalls reduziert. Mit Pdiv = 6 sind dies fmax = 8,388608 MHz und für Pdiv = 12 entsprechend fmax = 4,194304 MHz.&lt;br /&gt;
&lt;br /&gt;
Somit kann durch einfaches Ändern von Pdiv die Taktfrequenz bzw. die Frequenzauflösung verändert werden.&lt;br /&gt;
&lt;br /&gt;
Den Zusammenhang zwischen Taktfrequenz und Frequenzauflösung zeigt die nachfolgende Tabelle noch einmal:&lt;br /&gt;
&lt;br /&gt;
fmclk = 50,331648 MHz --&amp;gt; foutmin = 3 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 41,94304 MHz --&amp;gt; foutmin = 2,5 Hz --&amp;gt; Pdiv = 2&lt;br /&gt;
&lt;br /&gt;
fmclk = 33,554432 MHz --&amp;gt; foutmin = 2 Hz --&amp;gt; Pdiv = 3&lt;br /&gt;
&lt;br /&gt;
fmclk = 25,165824 MHz --&amp;gt; foutmin = 1,5 Hz --&amp;gt; Pdiv = 4&lt;br /&gt;
&lt;br /&gt;
fmclk = 16,777216 MHz --&amp;gt; foutmin = 1 Hz --&amp;gt; Pdiv = 6&lt;br /&gt;
&lt;br /&gt;
fmclk = 8,388608 MHz --&amp;gt; foutmin = 0,5 Hz --&amp;gt; Pdiv = 12&lt;br /&gt;
&lt;br /&gt;
fmclk = 4,194304 MHz --&amp;gt; foutmin = 0,25 Hz --&amp;gt; Pdiv = 24&lt;br /&gt;
&lt;br /&gt;
fmclk = 3,3554432 MHz --&amp;gt; foutmin = 0,2 Hz --&amp;gt; Pdiv = 30&lt;br /&gt;
&lt;br /&gt;
fmclk = 2,0971515 MHz --&amp;gt; foutmin = 0,125 Hz --&amp;gt; Pdiv = 48&lt;br /&gt;
&lt;br /&gt;
fmclk = 1,6777216 MHz --&amp;gt; foutmin = 0,1 Hz --&amp;gt; Pdiv = 60&lt;br /&gt;
&lt;br /&gt;
Wer es genauer als ein Quarz braucht kann auch ein TCXO oder gar einen TCVCXO verwenden. Hierbei ist die Auswahl an Bausteinen jedoch deutlich eingeschränkter. Eine Möglichkeit ist die Verwendung eines TCXO mit einer Frequenz von 16,384 MHz.&lt;br /&gt;
Mit ihm lassen sich die aufgeführten Taktfrequenzen ebenfalls einstellen.&lt;br /&gt;
Es ist anzumerken, dass der CDCE913 über die Möglichkeit verfügt zwei PLL-Settings vorzuprogrammieren und im EEPROM zu hinterlegen, sodass zwischen zwei Ausgangsfrequenzen durch einfaches Umschalten eines Statusregisters umgeschaltet werden kann. Es kann aber auch zur Laufzeit auf die Register des PLL-Bausteins zugegriffen und Registerwerte neu geschrieben werden, sodass die maximale Ausgangsfrequenz des AD5930 voll ausgenutzt werden kann, ohne dabei auf sehr tiefe Frequenzen verzichten zu müssen.&lt;br /&gt;
&lt;br /&gt;
=== Die Programmierung des DDS-ICs ===&lt;br /&gt;
&lt;br /&gt;
In einem ersten Schritt soll der AD5930 über einen FT232 vollständig vom PC aus programmiert werden. Das macht Arbeiten im Bereich Mikrocontroller zunächst überflüssig.&lt;br /&gt;
Mit einem kleinen Tool kann der FT232 via Bit Banging als USB to SPI Programmer genutzt werden, sodass der Schwerpunkt zunächst vollständig im Bereich Schaltungsentwurf liegen kann.&lt;br /&gt;
Eine Adaptierung eines Mikrocontrollers ist dann in einer späteren Ausbaustufe &amp;quot;schnell&amp;quot; erledigt.&lt;br /&gt;
&lt;br /&gt;
Auf dieser [http://www.openschemes.com/modules/wordpress/2009/11/05/bit-banging-spi-on-arduinos-ft232rl/1/ Webseite] wird gezeigt, dass via Bit Banging der FT232 als USB to SPI Programmer verwendet werden kann. Dazu werden einfach die drei notwendigen SPI-Leitungen vom AD5930 mit dem FT232 wie folgt verbunden:&lt;br /&gt;
&lt;br /&gt;
* Beschreibung - AD5930 - FT232&lt;br /&gt;
*  ChipSelect - FSync  - RI&lt;br /&gt;
*    Clock    - SCLK   - CTS&lt;br /&gt;
*     Data    - SDATA  - MOSI&lt;br /&gt;
&lt;br /&gt;
und das [http://www.openschemes.com/uploads/wordpress/2009/11/ft232spi.zip SPI Demo Tool] gestartet.&lt;br /&gt;
Nachdem der FT232 erkannt wurde drückt man &amp;quot;Open Interface&amp;quot;. Man vergewissert sich noch einmal, dass die Einstellungen für die SPI-Leitungen auch stimmen und klickt auf &amp;quot;Do bitbang Setup&amp;quot;.&lt;br /&gt;
Nun braucht man nur noch die Bitlänge von 8 auf 16 umstellen und kann durch direktes Schreiben der Adressen den AD5930 programmieren.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel soll gezeigt werden, wie ein 1MHz Sinussignal schnell per Hand mit diesem Tool programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* 06db    - setzt die notwendigen Einstellungen in ControlRegister&lt;br /&gt;
* d051    - MSB der Startfrequenz für 1MHz&lt;br /&gt;
* ceb8    - LSB der Startfrequenz für 1MHz&lt;br /&gt;
* 3000    - MSB des Frequenzinkrements&lt;br /&gt;
* 2000    - LSB des Frequenzinkrements&lt;br /&gt;
* 1002    - minimalste Anzahl der Frequenzinkremente&lt;br /&gt;
&lt;br /&gt;
Die Programmierung ist kinderleicht und kann bequem als PC-Software ausgeführt werden, sodass hierfür kein Mikrocontroller zum Einsatz kommen muss.&lt;br /&gt;
Wie der AD5930/32 für einen Sweep oder eine Einzelfrequenz programmiert werden kann findet sich beispielhaft auch in der Application Note-1044 von Analog Devices.&lt;br /&gt;
&lt;br /&gt;
=== Der 1. Verstärker ===&lt;br /&gt;
&lt;br /&gt;
Das Datenblatt des AD5930 empfiehlt, dass an seinen DAC-Ausgängen ein mind. 200Ω Widerstand als Last angeschlossen wird, zu denen parallel ein Kondensator von 20pF spendiert werden soll, um ein Rekonstruktionsfilter 1. Ordnung auszubilden. Aus der Stromquelle des DAC wird somit eine Spannungsquelle.&lt;br /&gt;
Je nach Taktfrequenz muss der Wert der Kapazität angepasst werden. Gesetz dem Fall der AD5930 wird mit eine Taktfrequenz von 41,94304MHz gespeist erhöht sich der Wert der Kapazität auf 39pF.&lt;br /&gt;
Um die Vorteile eines differentiellen Ausgangs nutzen zu können kommen in aller Regel Übertrager zum Einsatz.&lt;br /&gt;
Analog Devices, CN-0142, &amp;quot;High CMRR Circuit for Converting Wideband Complementary DAC Outputs to Single-Ended Without Precision Resistors&amp;quot; schreibt zu der Thematik:&lt;br /&gt;
&amp;quot;...Traditional methods for converting wideband DAC comple-mentary current outputs to a single-ended signal are to either use a center-tapped transformer or a single op amp in a differential-to-single-ended configuration. However, the transformer low frequency nonlinearities may limit its use near dc; and the operational amplifier approach requires closely matched resistors to provide dc common-mode rejection, load impedance, and gain matching between the complementary DAC outputs. Errors in the matching will produce errors at the final output...&amp;quot;.&lt;br /&gt;
Abhilfe kann hier ein differentieller Verstärker wie der AD8129/AD8130 schaffen, der über einen differentiellen Eingang und einen Single-Ended Ausgang verfügt. Aus dem symmetrischen Signal wird somit ein unsymmetrisches, wie es in den meisten Anwendungen benötigt wird. Der Verstärker soll das Rekonstruktionsfilter treiben, mit dem es im nächsten Abschnitt weiter geht.&lt;br /&gt;
&lt;br /&gt;
=== Das Rekonstruktionsfilter ===&lt;br /&gt;
&lt;br /&gt;
Die DDS macht prinzipbedingt den Einsatz eines Rekonstruktionsfilters notwendig. Dieses sorgt dafür, dass das Taktsignal des DDS-ICs mit ausreichender Dämpfung unterdrückt wird.&lt;br /&gt;
In verschiedenen Papern findet man ganz unterschiedliche Angaben zu dieser notwendigen Dämpfung. Einige sprechen von -60dBr (bspw. Aufsatz zur Tiefpassfilter - Dimensionierung von Gehard Rohm) andere sogar von -70dBr (bspw. Application Note  #5 von www.thinkSRS.com) im Bereich der Funktionsgeneratoranwendungen. Die Einheit dBr heißt Decibel relativ und entspricht dem Verhältnis zweier Spannungspegel.&lt;br /&gt;
&lt;br /&gt;
Letzt genannte Quelle schlägt für den Einsatz von DDS-ICs die Verwendung elliptischer Filter vor, da sie mit einem steilen Übergangsbereich und kleinem Ripple im Durchlassbereich entworfen werden können.&lt;br /&gt;
Als Filter wird daher ein elliptisches Filter eingesetzt. Dieses wird mittels freien Tools (bsp. AADE Filter Design) dimensioniert und ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Wie im Abschnitt [http://www.mikrocontroller.net/articles/DDS_basierter_Funktionsgenerator_mit_AD5930#Taktquelle_f.C3.BCr_den_AD5930 Taktquelle für den AD5930] nachzulesen ist, soll zwischen zwei verschiedenen Taktfrequenzen umgeschaltet werden. Demzufolge sind zwei verschiedene Rekonstruktionsfilter erforderlich.&lt;br /&gt;
Für das Taktsignal 3,3554432 MHz kommt ein aktives Rekonstruktionsfilter zum Einsatz, da bei passiven Filtern große Induktivitäten notwendig würden, was mit höheren Filterverlusten einhergeht, da die DC-Widerstände großer Induktivitäten ebenfalls recht groß ausfallen.&lt;br /&gt;
Für das Taktsignal 50,331648 MHz kommt dagegen ein elliptisches Filter, auch Cauer-Filter genannt, zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Vielen graut es davor sich mit der Filterthematik zu beschäftigen, es soll jedoch gezeigt werden, dass der Entwurf eines ordentliches Filters mit modernen PC-gestützen Mitteln kein Geheimnis darstellt.&lt;br /&gt;
&lt;br /&gt;
Die erste Frage die sich jedem, der noch nie ein Filter entworfen hat, stellt ist, wo muss die Filtergrenze liegen. Dazu ein wenig Theorie:&lt;br /&gt;
&lt;br /&gt;
Es werde angenommen der DDS-IC ist mit fs=50MHz getaktet. Die maximale Ausgangsfrequenz ergibt sich laut Nyquist-Abtasttheorem zu fmax = 25 MHz. Das heißt, dass 25 MHz noch vom Filter durchgelassen werden sollen, aber das Stopband auch bereits bei fs-fmax = 25 MHz beginnen soll, ein Widerspruch in sich. Da es in der Realität keine unendlich steilen Filter gibt, trifft man einen Kompromiss und legt die maximale Ausgangsfrequenz auf fs/3. Dies würde bedeuten, dass uns nur etwa f = 16.67 MHz als maximale Ausgangsfrequenz der DDS zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
Wir wollen uns diesem Kompromiss ein wenig entgegensetzen und setzen die Filtergrenze etwas höher, also bei 20 MHz an. Innerhalb einer Dekade (fs-fmax = 30MHz) soll das Signal um -60 dBc bis -70 dBc (dBc - Decibel under Carrier) gedämpft werden.&lt;br /&gt;
Im Folgenden geht es also darum, ein Filter mit den getroffenen Annahmen zu entwerfen. Es wird geprüft, ob ein Filter 7. Ordnung diesem Anspruch gerecht werden kann oder ob ein Filter 9. Ordnung eingesetzt werden muss.&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe des Programmes AADE Filter Design entwerfen wir einen Elliptic LowPass mit folgenden Parametern:&lt;br /&gt;
&lt;br /&gt;
F1 = 20 MHz&lt;br /&gt;
F2 = 30 MHz&lt;br /&gt;
Apass = 0,01 (warum 0,01 wird nachfolgend erklärt)&lt;br /&gt;
Order = 7 bzw. 9&lt;br /&gt;
Zin = 50 Ω&lt;br /&gt;
Zout = 50 Ω&lt;br /&gt;
&lt;br /&gt;
Das Passband Ripple wird bewusst sehr klein gewählt, da es durch die Annäherung der errechneten Bauteilwerte an erhältliche und parasitären Effekten wieder zunehmen wird. Wenn man ein Passband Ripple von 0,5 dB erreicht wäre das großartig, mit kleiner 1 dB wären man aber immer noch sehr zufrieden. Wieso?&lt;br /&gt;
&lt;br /&gt;
Das wird rechnerisch schnell deutlich:&lt;br /&gt;
&lt;br /&gt;
Geht man davon aus, dass das Filter mit einer Eingangsimpedanz von 50 Ω von einer Quelle mit 50 Ω Ausgangsimpedanz und einem Signal von 1 V (0 dB) Amplitude gespeist wird, so wird man, wenn das Filter eine Ausgangsimpedanz von 50 Ω hat und man das Filter mit 50 Ω abschließt noch die halbe Spannung messen können, also 500 mV (ca. -6,02 dB).&lt;br /&gt;
Lässt man nun 0,3 dB Ripple zu, so entspricht das einem Wert von -6.32 dB oder 483 mV, bei 0,5 dB sind es 472 mV und bei 1 dB noch rund 446 mV.&lt;br /&gt;
&lt;br /&gt;
Die Bauteile werden zunächst als verlustfrei betrachtet und das Programm schlägt für beide Filter eine Bauteilbemessung vor:&lt;br /&gt;
&lt;br /&gt;
Filter 7. Ordnung [[http://www.mikrocontroller.net/attachment/70868/FG-AD5930-3.png]], [[http://www.mikrocontroller.net/attachment/70869/FG-AD5930-4.png]]&lt;br /&gt;
&lt;br /&gt;
Filter 9. Ordnung [[http://www.mikrocontroller.net/attachment/70870/FG-AD5930-5.png]], [[http://www.mikrocontroller.net/attachment/70871/FG-AD5930-6.png]]&lt;br /&gt;
&lt;br /&gt;
Anhand der Bauteilbemessung wird schnell ersichtlich, dass es keine diskreten Kondensatoren mit 0,xxxpF gibt und auch keine Induktivitäten mit Werten unterhalb des nH-Bereiches.&lt;br /&gt;
&lt;br /&gt;
Das Entwurftool lässt es aber dennoch zu, dass man sich die Filterkurve anschauen kann. Im direkten Vergleich der beiden Filter zeigt sich, dass mit dem Filter 7. Ordnung gerade etwa -60 dBr gegenüber dem maximalen Ausgangssignal an Dämpfung erreicht werden. Wir konzentrieren uns daher auf das Filter 9. Ordnung, da es mit etwa -90 dBr deutlich vielversprechender ausschaut.&lt;br /&gt;
&lt;br /&gt;
Das Filter muss nun realen Bauteilwerten angenähert werden. Dies tut man, indem man einfach schaut, was die Hersteller für Bauteilwerte liefern können. Im einfachsten Fall gibt es genau den Wert, den man sucht, andernfalls kann man auch durch Verschaltung mehrerer Bauteile (Induktivitäten oder Kapazitäten in Serie oder parallel angeordnet) auf den gewünschten Bauteilwert kommen.&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich, eine SpiceSimulation durchzuführen, in der man das errechnete Filter mit dem aus realen Bauteilwerten bestehenden vergleicht. Hier kann, durch Hinzufügen des Serienwiderstandes bzw. der Güte und der Resonanzfrequenz bzw. der parasitären Kapazität, schon abgeschätzt werden, wie das Filter in etwa real wirken wird. Dies setzt jedoch ein gut durchdachtes, kapazitätsarmes Layout vorraus.&lt;br /&gt;
&lt;br /&gt;
Wer sich das nicht antun möchte, der baut das Filter &amp;quot;einfach&amp;quot; auf und vermisst es bspw. mit einem Gain-Phase-Analyser, einem Netzwerkanalysator oder mit einem Spektrumanalyser mit integriertem Tracking Generator o.ä. brauchbarem Messequipment.&lt;br /&gt;
&lt;br /&gt;
Nähert man das mit den oben genannten Randbedingungen entworfene Filter 9. Ordnung an real erhältliche Bauteilwerte an, so erhält man bspw. das folgende Filter:&lt;br /&gt;
&lt;br /&gt;
*Dipol 1: &#039;&#039;&#039;120pF&#039;&#039;&#039;&lt;br /&gt;
*Dipol 2: &#039;&#039;&#039;8pF || 540nH&#039;&#039;&#039; (aus 270nH + 270nH)&lt;br /&gt;
*Dipol 3: &#039;&#039;&#039;250pF&#039;&#039;&#039;(aus 150pF || 100pF)&lt;br /&gt;
*Dipol 4: &#039;&#039;&#039;43p&#039;&#039;&#039; (aus 33pF || 10pF) &#039;&#039;&#039;|| 530nH&#039;&#039;&#039; (aus 330nH + 200nH)&lt;br /&gt;
*Dipol 5: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 6: &#039;&#039;&#039;56pF || 490nH&#039;&#039;&#039; (aus 270nH + 220nH)&lt;br /&gt;
*Dipol 7: &#039;&#039;&#039;230pF&#039;&#039;&#039; (aus 220pF || 10pF)&lt;br /&gt;
*Dipol 8: &#039;&#039;&#039;30pF&#039;&#039;&#039; (aus 15pF || 15pF) &#039;&#039;&#039;|| 480nH&#039;&#039;&#039; (aus 330nH + 150nH)&lt;br /&gt;
*Dipol 9: &#039;&#039;&#039;100pF&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies Filter ist in folgender Simulation noch einmal gezeigt [[http://www.mikrocontroller.net/attachment/70886/FG-AD5930-7.png]], [[http://www.mikrocontroller.net/attachment/70887/FG-AD5930-8.png]].&lt;br /&gt;
&lt;br /&gt;
Fügt man nun den Bauteilwerten noch ihre parasitären Elemente hinzu (Verluste in den Bauteilen), diese findet man in den Datenbättern der Bauteile, so kann man das Filter der Realität weiter annähern. Dies ist hier mal für Induktivitäten eines Herstellers unterschiedlicher Serien und Gehäusegrößen durchgeführt worden [[http://www.mikrocontroller.net/attachment/71186/FG-AD5930-9.png]].&lt;br /&gt;
&lt;br /&gt;
Nach diesen Ergebnissen fällt die Bauteilwahl auf die AS-Serie im Package 0805.&lt;br /&gt;
&lt;br /&gt;
Als Kondensatoren werden NPO-Typen in 0805 mit ±0,5pF bei kleinen Bauteilwerten und ±5% bei den größeren Werten für die Toleranz eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Nun geht es an den Aufbau des Filters. Hier findet sich das Testlayout, das speziell für dieses Filter [[http://www.mikrocontroller.net/attachment/74720/Filter.png]] verwendet wurde. Die in Serie geschalteten Induktivitäten werden im 90°-Winkel zueinander angeordnet, um die Kopplung der Induktivitäten untereinander zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
Nach dem Vermessen des Filters wird dessen Übertragungsfunktion (Uout/Uin in dB) dem ursprünglich simulierten Filter mit realen, verlustbehafteten Bauteilwerten graphisch gegenüber gestellt [[http://www.mikrocontroller.net/attachment/79100/Filtermessung.png]].&lt;br /&gt;
&lt;br /&gt;
Es zeigt sich, dass das reale Filter [[http://www.mikrocontroller.net/attachment/79034/Filter.JPG]] recht gut gelungen ist, sodass diese Bauteilwerte direkt im weiteren Projekt verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Für den fein aufgelösten Frequenzbereich soll die Taktfrequenz des DDS 3,3554432 MHz betragen.&lt;br /&gt;
Um ein aktives Filter zu entwerfen kommt das kostenlos Programm FilterPro von Texas Instruments zum Einsatz.&lt;br /&gt;
Wir legen folgende Randbedingungen fest:&lt;br /&gt;
&lt;br /&gt;
* Passband: Low-Pass&lt;br /&gt;
* Circuit-Type: MFB Single-Ended bzw. MFB Fully Differential&lt;br /&gt;
* Anzahl Pole: 4&lt;br /&gt;
* Cutoff Freq. 1,5M&lt;br /&gt;
* Filter Type: Butterworth&lt;br /&gt;
* Value Display: Component Values&lt;br /&gt;
* Components: Res. E48 und Cap. E12&lt;br /&gt;
&lt;br /&gt;
und erhalten sofort ein Filter mit der Bemessung der passiven Bauelemente und einer Dämpfung von 80 dB/Dekade.&lt;br /&gt;
Bei der Wahl der richtigen OPVs für das Filter hilft die Angabe Req. GBP (erfoderliches Verstärkungsbandbreiteprodukt).&lt;br /&gt;
&lt;br /&gt;
In diesem Abschnitt wurde gezeigt, dass die PC gestützte Auslegung eines Rekonstruktionsfilters bei Weitem nicht so kompliziert ist, wie es zunächst erscheinen mag, sodass jeder mit dem hier gezeigten Beispiel in der Lage sein sollte, sein eigenes Rekonstruktionsfilter auszulegen.&lt;br /&gt;
&lt;br /&gt;
Weitere Infos zum Filter können der [http://www.mikrocontroller.net/topic/168134#1606968 Diskussionsrunde] entnommen werden.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenkorrektur ===&lt;br /&gt;
&lt;br /&gt;
Der FSAdjust-Eingang ermöglicht eine Korrektur der Amplitude, sodass hier Verluste durch das Filter bzw. Passband Ripple, durch eine Rückkoppplung vom Verstärker zum DDS-IC, ausgeglichen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Endstufe ===&lt;br /&gt;
&lt;br /&gt;
Übliche Funktionsgeneratoren verfügen über eine Endstufe, mit der Ausgangspegel von 20Vpp möglich sind. Ähnliche Ausgangspegel sollen auch hier das Ziel sein.&lt;br /&gt;
&lt;br /&gt;
==== DC-Offsetverschiebung ====&lt;br /&gt;
&lt;br /&gt;
Eine Gleichspannungsoffsetverschiebung soll ebenfalls implementiert werden. Diese kann analog von einem Potentiometer aus erfolgen, soll später dann jedoch gegen einen DAC ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Selbstverständlich gehört auch eine durchdachte Spannungsversorgung in den Rahmen dieses Projektes, das den kompletten Funktionsgenerator mit den erforderlichen Spannungen versorgt.&lt;br /&gt;
&lt;br /&gt;
== Sonderfunktionen ==&lt;br /&gt;
&lt;br /&gt;
Hier sollen die Funktionen beleuchtet werden, die entweder nicht direkt oder gar nicht aus dem AD5930, jedoch mit etwas Controllerunterstützung dennoch gewonnen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Amplitudenmodulation ===&lt;br /&gt;
&lt;br /&gt;
Über den bereits erwähnten FSAdjust am AD5930 kann eine Amplitudenmodulation vorgenommen werden. Diese soll separat nach außen geführt werden und es dem Benutzer erlauben Signale auf eine eingestellte Trägerfrequenz im AD5930 aufzumodelieren.&lt;br /&gt;
&lt;br /&gt;
=== Impuls-Signale ===&lt;br /&gt;
&lt;br /&gt;
Für die Ausgabe von Impulsen kann die Burst-Funktion des AD5930 verwendet werden. Die minimale Impulslänge wird dann durch die maximale Ausgangsfrequenz des AD5930 bestimmt. Dazu kann das Signal durch einen schnellen Baustein der 74er Reihe geschickt werden, sodass Impulse von 20ns vorstellbar sind.&lt;br /&gt;
&lt;br /&gt;
=== PWM-Signale ===&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Ausbaus zum Standalone-Gerät wird zwangsläufig auch ein Mikrocontroller zum Einsatz kommen, sodass hier grundsätzich die Möglichkeit besteht den Funktionsgenerator um Pulsweitenmodulation zu erweitern. Für die Ausgabe von PWM-Signalen bis 20MHz ist jedoch ein entsprechend schneller Mikrocontroller notwendig.&lt;br /&gt;
Macht man sich dagegen die Burst-Funktion des AD5930 in Kombination mit einem schnellem Baustein der 74er Reihe o.ä. zu Nutze, so sollte auch eine Pulsweitenmodulation mit langsameren Mikrocontrollern möglich sein. Hierzu ist aber die Programmierzeit des AD5930 mit zu berücksichtigen, da ständig neue Frequenzen geschrieben werden müssen.&lt;br /&gt;
&lt;br /&gt;
== Das Software Frontend ==&lt;br /&gt;
&lt;br /&gt;
Für die Programmierung des AD5930 ist, in der Ausbaustufe mit FT232, eine Softwareoberfläche notwendig, von der aus sämtliche Einstellungen für den Bediener nutzerfreundlich vorgenommen werden können.&lt;br /&gt;
&lt;br /&gt;
= Ausbau zum Standalone-Gerät =&lt;br /&gt;
&lt;br /&gt;
Als weitere Stufe steht der Ausbau zum Standalone-Gerät an. Hierzu wird ein Mikrontroller mit Anzeige und Menüsteuerung zum Einsatz kommen können, sodass sämtliche Einstellungen auch bequem direkt am Gerät erfolgen können und ein PC nicht zwingend erforderlich ist.&lt;br /&gt;
Hierfür ist die Programmierung eines Mikrocontrollers notwendig.&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung des Standalone-Gerätes ==&lt;br /&gt;
&lt;br /&gt;
== Controllerauswahl ==&lt;br /&gt;
&lt;br /&gt;
== Anzeige der Statusinformationen - LCD ==&lt;br /&gt;
&lt;br /&gt;
== Schaltung des Controllerboards ==&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
= Schaltpläne und Layoutdaten =&lt;br /&gt;
&lt;br /&gt;
Alle Schaltpläne und Layoutdaten sollen hier für jeden zugänglich gemacht werden. Es bietet sich daher an Eagle in der Light Version oder KiCAD zu verwenden.&lt;br /&gt;
&lt;br /&gt;
= Diskussionsrunde =&lt;br /&gt;
&lt;br /&gt;
Unter diesem [http://www.mikrocontroller.net/topic/168134#1606968 Link] sollen Diskussionen zum Projekt erfolgen.&lt;br /&gt;
&lt;br /&gt;
= Links zu bekannten Projekten mit dem AD5930/AD5932 =&lt;br /&gt;
&lt;br /&gt;
[http://mexlewiki.hs-heilbronn.de/UserFiles/File/Funktionsgenerator%20DDS/Documentation%20DDS.pdf DDS-Funktionsgenerator mit dem MiniMEXLE Version 3.0]&lt;br /&gt;
&lt;br /&gt;
[http://www.uchobby.com/index.php/2007/09/05/arduino-siggen1-boards-arrive/ Siggen1]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Signalgeneratoren]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Diode&amp;diff=59841</id>
		<title>Diskussion:Diode</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Diode&amp;diff=59841"/>
		<updated>2011-08-25T11:48:49Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: Die Seite wurde neu angelegt: „== Lawineneffekt ==  Das hier müsste nochmals genauer erörtert werden: &amp;quot;Dieser Effekt wird nach dem Entdecker Zener-Effekt genannt und ist bis ca. 5 V dominiere…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Lawineneffekt ==&lt;br /&gt;
&lt;br /&gt;
Das hier müsste nochmals genauer erörtert werden:&lt;br /&gt;
&amp;quot;Dieser Effekt wird nach dem Entdecker Zener-Effekt genannt und ist bis ca. 5 V dominierend. Danach überweigt der Lawineneffekt&amp;quot;&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diode&amp;diff=59840</id>
		<title>Diode</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diode&amp;diff=59840"/>
		<updated>2011-08-25T11:48:13Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Z-Diode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Bezeichung Diode wurde ursprünglich für Elektronenröhren mit zwei Elektroden verwendet, später für das Halbleiter-Bauteil mit dem selben elektrischen Verhalten. &amp;quot;Di&amp;quot; wegen &#039;&#039;&#039;zwei&#039;&#039;&#039; und &amp;quot;ode&amp;quot; vermutlich wegen Elektr&#039;&#039;&#039;ode&#039;&#039;&#039;, auch wenn bei Wikipedia was anderes steht (Es gibt bei den Elektronenröhren z.&amp;amp;nbsp;B. auch &#039;&#039;Tri&#039;&#039;oden mit drei oder &#039;&#039;Pent&#039;&#039;oden mit fünf Elektroden).&lt;br /&gt;
&lt;br /&gt;
Eine Diode sperrt den Stromfluss in einer Richtung und erlaubt ihn in der anderen. Als diskretes Bauteil besitzen (Halbleiter-) Dioden i.d.R. einen aufgedruckten Ring, der die Kathode kennzeichnet. Liegt an diesem Anschluss  eine negative Spannung, ist die Diode in Durchlassrichtung geschaltet, d.h. sobald die [[Durchlass-Spannung]] überschritten wird, setzt der Stromfluss ein. Bei der umgekehrten Polarität &amp;quot;sperrt&amp;quot; die Diode den Stromfluss. &lt;br /&gt;
&lt;br /&gt;
Beim Betrieb von Dioden sind insbesondere drei wichtige Kenngrößen zu beachten:&lt;br /&gt;
* max. Durchlassstrom (temperaturabhängig) in Durchlassrichtung,&lt;br /&gt;
* max. Sperrspannung in Sperrrichtung und &lt;br /&gt;
* größte zulässige Verlustleistung aufgrund des Spannungsabfalls in Durchlassrichtung.&lt;br /&gt;
&lt;br /&gt;
Das Überschreiten der zulässigen Grenzwerte führt zur Überlastung der Diode.&lt;br /&gt;
&lt;br /&gt;
Dioden werden in elektronischen Schaltungen sehr häufig und zu ganz unterschiedlichen Zwecken eingesetzt, z.&amp;amp;nbsp;B.&lt;br /&gt;
* zur Gleichrichtung,&lt;br /&gt;
* als [[Spannungsreferenz]] (siehe auch Z-Diode),&lt;br /&gt;
* als elektrisch veränderliche Kapazität (Varaktor), oder&lt;br /&gt;
* zum Schutz gegen falsche Polung und Überspannung (Beispiel: [[Relais_mit_Logik_ansteuern#Freilaufdiode|Freilaufdiode]]).&lt;br /&gt;
&lt;br /&gt;
Dioden mit der letzteren Funktion sind heute auch oft in ICs wie [[Mikrocontroller]]n integriert und helfen, die Ein- und Ausgangs-Pins dieser teilweise sehr teuren Bauelemente vor moderater Fehlbehandlung zu schützen.&lt;br /&gt;
&lt;br /&gt;
Eine Sonderform der Dioden sind [[LED]]s, die elektrisch zwar auch Diodenverhalten besitzen, deren eigentlicher Zweck aber die Erzeugung von sichtbarem oder infrarotem Licht ist.&lt;br /&gt;
&lt;br /&gt;
== Z-Diode ==&lt;br /&gt;
&lt;br /&gt;
Dieses ehemals &#039;&#039;Zener-Diode&#039;&#039; genannte Bauteil ist eine spezielle Sorte einer Halbleiter-[[Diode]], die produktionstechnisch so ausgelegt sind, dass sie nach Überschreiten der Durchbruchsspannun unbeschadet einen bestimmten Strom in Sperrichtung aushalten. Sie machen sich dabei den sog. Lawineneffekt zunutze:&lt;br /&gt;
&lt;br /&gt;
Halbleiter haben grundsätzlich die Eigenschaft, ab einer bestimmten Schwellspannung einen Stromfluss zu ermöglichen, was auch bei Z-Dioden der Fall ist. Sie sind damit wie normale Siliziumdioden verwendbar. In Sperrichtung können sie aber nicht so hohe negative Spannungen sperren, (-&amp;gt; Durchbruch- oder Sperrspannung) -  besitzen dafür aber eine besonders scharf definierte Durchbruchspannung, die einen abrupten Stromfluss ermöglicht. Dieser Effekt wird nach dem Entdecker Zener-Effekt genannt und ist bis ca. 5 V dominierend. Danach überweigt der Lawineneffekt. Diese Effekte treten auch bei Leuchtdioden und Diodenstrecken in Transistoren auf, sind dort aber nicht der angestrebte Arbeitspunkt, da dies zur Zerstörung der Bauteile führt.&lt;br /&gt;
&lt;br /&gt;
Die Durchbruchspannung - auch Z-Spannung genannt - kann zur Spannungsstabilisierung verwendet werden und ist bei diesem Diodentyp der normale Arbeitspunkt.  &lt;br /&gt;
&lt;br /&gt;
Als [[Spannungsreferenz]] sind Band-Gap Referenzen einer Z-Diode wegen ihrer Temperatur-Drift von 20mV/K vorzuziehen.&lt;br /&gt;
&lt;br /&gt;
Z-Dioden werden neben der Anwendung in Spannungs-Stabilisierungs-Schaltungen auch gerne als Spannungsbegrenzer eingesetzt. Beispiel: RS232-Pegel =&amp;gt; TTL-Pegel (+-15V =&amp;gt; 5.6V/-0.6V), das sind zwar die Maximalwerte von typischen Logik-Eingängen, funktioniert aber meist tadellos. Z-Dioden müssen immer mit einer Strombegrenzung betrieben werden, praktisch ist das meist ein Vorwiderstand.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Dioden-Übersicht]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Diode Diode] bei Wikipedia&lt;br /&gt;
&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
[[Category:Grundlagen]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Operationsverst%C3%A4rker-Grundschaltungen&amp;diff=59838</id>
		<title>Operationsverstärker-Grundschaltungen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Operationsverst%C3%A4rker-Grundschaltungen&amp;diff=59838"/>
		<updated>2011-08-25T11:36:57Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Der Subtrahierer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idealisiertes Modell eines OPV ==&lt;br /&gt;
&lt;br /&gt;
=== Anschlüsse ===&lt;br /&gt;
Ein Operationsverstärker hat zwei Eingänge (+) und (-) und einen Ausgang&lt;br /&gt;
(UA). Außerdem verfügt er über eine positive und eine negative&lt;br /&gt;
Spannungsversorgung (V+) und (V-).&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgungen ===&lt;br /&gt;
Die Spannungsversorgungen sollen zunächst nicht interessieren. Sie&lt;br /&gt;
werden in Schaltungen oft nicht eingezeichnet. &lt;br /&gt;
In der Praxis ist es jedoch wichtig zu wissen, dass die Ausgangsspannung immer zwischen (V+) und (V-) liegt. Die Ausgangsspannung des OPV kommt schließlich  dadurch zustande, dass der Ausgang über einen Transistor mehr oder weniger hochohmig mit den beiden Versorgungsspannungen verbunden wird.&lt;br /&gt;
&lt;br /&gt;
Wenn man einen OPV also mit +5V versorgt, so kann der OPV im besten Fall am Ausgang +5V erzeugen. Man würde in diesem Fall von einem &amp;quot;Rail-to-Rail&amp;quot; Operationsverstärker sprechen.&lt;br /&gt;
Bei vielen Operationsverstärkern ist die maximal mögliche Ausgangsspannung geringer als die Versorgungsspannung. Ein mit +5V Spannungsversorgung beschalteter OPV kann dann beispielsweise nur +4V Ausgangsspannung erzeugen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    | \&lt;br /&gt;
    |  \&lt;br /&gt;
 -- | - \&lt;br /&gt;
    |    \_______&lt;br /&gt;
    |    /&lt;br /&gt;
 -- | + /&lt;br /&gt;
    |  /&lt;br /&gt;
    | /&lt;br /&gt;
&lt;br /&gt;
=== Ausgang ===&lt;br /&gt;
Der Ausgang des OPV ist eine ideale Spannungsquelle. Das bedeutet, dass die&lt;br /&gt;
Ausgangsspannung unabhängig davon ist, was ausgangsseitig an den OPV&lt;br /&gt;
angeschlossen wird.&lt;br /&gt;
In der Praxis gilt dieses Modell häufig nur bei &amp;quot;sinnvollen Anwendungen&amp;quot;. So ist beispielsweise der Ausgangsstrom des OPV nach oben begrenzt (typischerweise im mA-Bereich), und manche OPV schwingen sehr leicht, wenn man sie kapazitiv belastet.&lt;br /&gt;
&lt;br /&gt;
=== Eingänge ===&lt;br /&gt;
Die Eingänge eines OPV sind hochohmig, d. h., es handelt sich nur um &amp;quot;Messfühler&amp;quot;, die keinen Strom führen.&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise ===&lt;br /&gt;
Der OPV mißt zu jeder Zeit die Differenz &amp;lt;math&amp;gt;U_D = U(+) - U(-)&amp;lt;/math&amp;gt; der&lt;br /&gt;
Eingangsspannungen.&lt;br /&gt;
&lt;br /&gt;
Ist die Spannung an (+) größer als an (-), so erhöht der OPV die&lt;br /&gt;
Ausgangsspannung.&lt;br /&gt;
Ist die Spannung an (+) niedriger als an (-), so vermindert der OPV die&lt;br /&gt;
Ausgangsspannung.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Vorgangs wird häufig über die Gleichung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_a = v \cdot U_D&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
beschrieben, wobei &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; eine sehr große Zahl (10^4...10^6) ist. &lt;br /&gt;
&lt;br /&gt;
Mit Hilfe der beschriebenen Funktionsweise lassen sich alle grundlegenden Schaltungen herleiten.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
&lt;br /&gt;
Betrachtet wird die invertierende Grundschaltung nach Abbildung a) im Abschnitt &amp;quot;Verstärkergrundschaltungen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Für die Pfeilrichtungen der Spannungen und Ströme gilt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_e&amp;lt;/math&amp;gt;: von oben nach unten&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;I_{R3}&amp;lt;/math&amp;gt;: von links nach rechts&lt;br /&gt;
&lt;br /&gt;
Die Spannung am (+)Eingang ist gleich Null. Die Spannung am (-)Eingang wird durch die Spannungsquelle &amp;lt;math&amp;gt;U_e&amp;lt;/math&amp;gt; und durch die im OPV befindliche und mit dem Ausgang verbundene Spannungsquelle des OPV manipuliert.&lt;br /&gt;
&lt;br /&gt;
* Ist die Spannung am (-)Eingang negativ, so erhöht der Operationsverstärker die Ausgangsspannung. Dadurch wird auch die Spannung am (-)Eingang positiver. Und zwar so lange, bis die Spannung am (-)Eingang gleich groß ist, wie die Spannung am (+)Eingang, also U(-)=0V.&lt;br /&gt;
* Ist die Spannung am (-)Eingang positiv, so vermindert der Operationsverstärker die Ausgangsspannung. Dadurch wird auch die Spannung am (-)Eingang negativer. Und zwar so lange, bis die Spannung am (-)Eingang gleich groß ist, wie die Spannung am (+)Eingang, also U(-)=0V.&lt;br /&gt;
&lt;br /&gt;
Der Operationsverstärker wird also die Spannungen an (+) und (-)&lt;br /&gt;
angleichen. Das passiert immer dann, wenn der Ausgang mit dem (-)Eingang&lt;br /&gt;
verbunden ist. Man nennt das Prinzip &amp;quot;Gegenkopplung&amp;quot;. Auf diese Art und&lt;br /&gt;
Weise funktionieren alle analogen OPV-Schaltungen.&lt;br /&gt;
&lt;br /&gt;
Da an (+) Massepotential anliegt, liegt an &amp;lt;math&amp;gt;R_3&amp;lt;/math&amp;gt; die Spannung &amp;lt;math&amp;gt;U_e&amp;lt;/math&amp;gt; an, und es gilt: &lt;br /&gt;
&amp;lt;math&amp;gt;I_{R3}=\frac{U_e}{R_3}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da der (-)Eingang hochohmig ist, fließt &amp;lt;math&amp;gt;I_{R3}&amp;lt;/math&amp;gt; über &amp;lt;math&amp;gt;R_4&amp;lt;/math&amp;gt; weiter zum OPV-Ausgang.&lt;br /&gt;
&lt;br /&gt;
Ua ist die Spannung vom Ausgang zur (virtuellen) Masse am (-)Eingang.&lt;br /&gt;
(--&amp;gt; Pfeil einzeichnen und klarmachen, daß es egal ist, ob der Pfeil vom&lt;br /&gt;
Ausgang zur Masse geht oder vom Ausgang &amp;quot;entgegen der Stromrichtung&amp;quot; zur&lt;br /&gt;
virtuellen Masse an (-)!)&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von &amp;lt;math&amp;gt;I_{R3}=\frac{U_e}{R_3}&amp;lt;/math&amp;gt; ergibt sich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_a = -R_4 \cdot I_{R3} = -{{R_4} \over {R_3}} \cdot U_e.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Energie für den Stromtransport über &amp;lt;math&amp;gt;R_4&amp;lt;/math&amp;gt; stammt vom OPV! Sobald die Ladungen ausgehend von der Spannungsquelle &amp;lt;math&amp;gt;U_e&amp;lt;/math&amp;gt; die virtuelle Masse an (-) erreicht haben, hat &amp;lt;math&amp;gt;U_e&amp;lt;/math&amp;gt; seine gesamte Energie abgegeben.&lt;br /&gt;
&lt;br /&gt;
== Verstärkergrundschaltungen ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Op-verstaerker-a.png]] [[Bild:Op-verstaerker-b.png]]&lt;br /&gt;
&lt;br /&gt;
In a) und b) verwenden wir den OP als Verstärker und nutzen hier die Möglichkeit der Gegenkopplung, um definierte Verstärkungen zu erhalten. Wir gehen wieder davon aus, dass der OP ein ideales Bauteil ist und daher seine Leerlaufverstärkung unendlich ist. Ebenso betrachten wir den Eingangswiderstand als unendlich.&lt;br /&gt;
&lt;br /&gt;
In a) ist ein invertierender Verstärker mit einem OP dargestellt. Durch die Widerstände R3 und R4 wird die Verstärkung bestimmt:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;V = \frac{U_a}{U_e} = -\frac{R_4}{R_3}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Verhältnis der beiden Widerstände bestimmt also die Verstärkung und somit die Ausgangsspannung:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = -\frac{R_4}{R_3} \cdot U_e &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder auch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = V \cdot U_e&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das negative Vorzeichen drückt aus, dass es sich um einen invertierenden Verstärker handelt.&lt;br /&gt;
&lt;br /&gt;
Beim nichtinvertierenden Verstärker b) finden wir auch eine Rückkopplung über R6 zum invertierenden Eingang des OP. Die Verstärkung wird durch das Gegenkopplungsnetzwerk R6 und R7 exakt definiert. Hier ist:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;V = 1 + \frac{R6}{R7}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Verstärkung von 1 ist sinnvoll, wenn eingangsseitig eine Spannungsquelle mit hohem Innenwiderstand verwendet wird. Für &amp;lt;math&amp;gt;\frac{R6}{R7} \to 0&amp;lt;/math&amp;gt; heißt die Schaltung &amp;quot;Spannungsfolger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kleinere Werte als 1 lassen sich nicht realisieren. Die Ausgangsspannung errechnet sich also so:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = U_e \cdot \left (1 + \frac{R_6}{R_7}\right )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel: Eine Eingangsspannung von 0,5 V soll auf den Wert 5 V verstärkt werden, es ist also eine Verstärkung V von 10 benötigt. R7 ist mit 10 k&amp;amp;Omega; vorgegeben. Also ist das Verhältnis&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{R_6}{R_7} = V - 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei einem Wert von 10 k&amp;amp;Omega; für R7 errechnet sich R6 zu&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
R6 = (V - 1) \cdot R7&lt;br /&gt;
   = (10 - 1) \cdot 10\,\mathrm{k\Omega}&lt;br /&gt;
   = 90\,\mathrm{k\Omega}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgangsspannung Ua wird also:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
U_a =   U_e \cdot \left (1 + \frac{R_6}{R_7}\right )&lt;br /&gt;
   = 0,5\,\mathrm{V} \cdot \left (1 + \frac{90\,\mathrm{k\Omega}}{10\,\mathrm{k\Omega}}\right)&lt;br /&gt;
   = 5\,\mathrm{V}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spannungsfolger (Impedanzwandler) ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Op-spannungsfolger1.png]]&lt;br /&gt;
&lt;br /&gt;
Eine Abart des nichtinvertierenden Verstärkers stellt der Spannungsfolger dar. Beim nichtinvertierenden Verstärker errechnet sich die Ausgangsspannung aus:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = U_e \cdot \left (1 + \frac{R_2}{R_1}\right )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn wir R2 auf 0 Ohm (mit R1 &amp;gt; 0) oder R1 auf unendlich (mit R2 &amp;lt; ∞) ändern, erhalten wir daher:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;V = 1 + \frac{R_2}{R_1} = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Spannungsfolger hat also eine Verstärkung V von 1.&lt;br /&gt;
&lt;br /&gt;
Umgezeichnet sieht die Schaltung so aus: &lt;br /&gt;
&lt;br /&gt;
[[Bild:Op-spannungsfolger2.png]]&lt;br /&gt;
&lt;br /&gt;
Was soll das nun? Wir nutzen die Eigenschaft, dass ein idealer OP einen unendlichen Eingangswiderstand und einen Ausgangswiderstand von 0 Ohm hat. Real sieht das natürlich anders aus: so liegt der Eingangswiderstand Re bei normalen OPs in der Größenordnung von 1MOhm bis &amp;lt;math&amp;gt;10^{15} \Omega&amp;lt;/math&amp;gt;, der Ausgangswiderstand Ra im Bereich 20 Ohm bis 1kOhm. Deshalb spricht man bei dieser Schaltung von einem Impedanzwandler. Eine solche Schaltung kann also aus einer relativ hochohmigen Spannungsquelle eine niederohmige, durch Folgeschaltungen belastbare Spannungsquelle machen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Op-spannungsfolger3.png|left]]&lt;br /&gt;
&lt;br /&gt;
In dem nebenstehenden Beispiel ist eine einfache Möglichkeit zur Erzeugung einer Referenzspannung gezeigt. Es kommt eine normale Stabilisierungsschaltung mit einer Zenerdiode zur Anwendung, die aber nicht mehr die schlechten Eigenschaften der Standardbeschaltung hat.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:Op-spannungsfolger4.png|right]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine weitere Anwendungsmöglichkeit wäre das hochohmige Auskoppeln einer Brückenspannung. Die Brückenschaltung selbst wird durch Folgeschaltungen nicht mehr belastet, alle anderen Eigenschaften bleiben erhalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Der Komparator ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Op-komp-a.png]] [[Bild:Op-komp-b.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der einfachsten Beschaltung des Operationsverstärkers erhält man einen Komparator. Es fällt auf, dass kein Gegenkopplungsnetzwerk vorhanden ist. Der OP arbeitet daher mit seiner vollen Leerlaufverstärkung Vo. Dies bedeutet, dass bereits eine kleine Eingangsspannung genügt, um den OP in die Begrenzung zu treiben. Das heißt, die Ausgangsspannung Ua wird annähernd die Betriebsspannung erreichen.&lt;br /&gt;
&lt;br /&gt;
Beim Komparator gibt es zwei Möglichkeiten der Beschaltung: die invertierende nach a) und die nichtinvertierende Beschaltung nach b). &lt;br /&gt;
&lt;br /&gt;
=== Berechnungsbeispiel für Schaltung b) ===&lt;br /&gt;
&lt;br /&gt;
Angenommen die Leerlaufverstärkung Vo von 40000 und eine Eingangsspannung von 0,1 Volt. Die Betriebsspannungen Vcc und Vee legen wir auf +/- 24 V fest. Damit ergibt sich theoretisch für Ua:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a =  V_0 \cdot U_e = 40000 \cdot 0,1\,\mathrm{V} = 4000\,\mathrm{V}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ist natürlich ein unrealistischer Wert, da Ua nicht höher sein kann als die Betriebsspannung. Also anders ausgedrückt: Bei welcher Spannung Ue erreicht der OP seine Aussteuerungsgrenze?&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_e = V_{cc} / V_0 = 24\,\mathrm{V} / 40000 = 0,6\,\mathrm{mV}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass eine Spannung von 0,6 mV ausreicht um den Komparator in die Begrenzung zu treiben.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt auch für den invertierenden Komparator, allerdings wird hier der OP in die negative Begrenzung gebracht.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;-U_a = V_0 \cdot U_e&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Der Addierer (Summierverstärker) ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Op-addierer.png]]&lt;br /&gt;
&lt;br /&gt;
Ein als invertierender Verstärker beschalteter OP lässt sich so beschalten, dass ein Summensignal aus den Eingangsspannungen gebildet wird. Um die Funktion deutlich zu machen, ist eine Betrachtung der einzelnen Ströme nötig.&lt;br /&gt;
&lt;br /&gt;
In einem invertierenden Verstärker wird sich die Ausgangsspannung immer so einstellen, dass der invertierende Eingang Massepotential hat. Die virtuelle Masse (VM) unterscheidet sich von einer &amp;quot;normalen&amp;quot; Masse dadurch, dass das Potential durch einen Regelungsvorgang zustande kommt. &lt;br /&gt;
An der virtuellen Masse (VM) gilt die Knotenpunktregel, wonach die Summe der zufließenden Ströme gleich der Summe der abfließenden Ströme ist.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;I_1 + I_2 = -I_3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sofern &amp;lt;math&amp;gt;U_{e1}&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;U_{e2}&amp;lt;/math&amp;gt; bekannt sind, lässt sich die Gleichung umformen in:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{U_{e1}}{R_1} + \frac{U_{e2}}{R_2} = -\frac{U_a}{R_3}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Ua aufgelöst ergibt sich:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;-U_a = \left (U_{e1} \cdot \frac{R_3}{R_1}\right ) + \left (U_{e2} \cdot \frac{R_3}{R_2}\right ) + ... + \left (U_{en} \cdot \frac{R_3}{R_n}\right )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s eigentlich schon. Einen Sonderfall gibt es, wenn die Widerstände R1 und R2 gleich sind. Dann gilt&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;R_1 = R_2 = R_x&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
und damit&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;-U_a = \frac{R_3}{R_x} \cdot (U_{e1} + U_{e2})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Der Subtrahierer (Differenzverstärker) ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Op-subtrahierer.png]]&lt;br /&gt;
&lt;br /&gt;
Ein Subtrahierer ist die Zusammenschaltung eines invertierenden und eines nichtinvertierenden Verstärkers. Schliessen wir Punkt Ue1 nach Masse kurz und steuern Ue2 an, arbeitet die Schaltung als nichtinvertierender Verstärker. Wird Ue2 nach Masse verbunden und Ue1 angesteuert, verhält sich die Schaltung als invertierender Verstärker (R7 vorerst nicht beachten).&lt;br /&gt;
&lt;br /&gt;
Für den 1. Fall gilt:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = U_{e2} \cdot \left (1 + \frac{R_6}{R_4}\right )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den 2. Fall:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = -U_{e1} \cdot \frac{R_6}{R_4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der dritte Fall ist die Ansteuerung beider Eingänge:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = -U_{e1} \cdot \frac{R_6}{R_4} + U_{e_2} \cdot \left (1 + \frac{R_6}{R_4}\right )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Schaltung ist gut für eine Erklärung, praktisch aber taugt sie nichts. Denn liegen an den Eingängen gleiche Spannungen an, ist die Ausgangsspannung nicht 0, wie eigentlich zu vermuten wäre. Deshalb ändern wir die Schaltung und fügen R7 ein. Jetzt stellt sich am Punkt + des OPs die Spannung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_{e2+} = U_{e2} \cdot \frac{R_7}{R_5 + R_7}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ein. Wenn wir das berücksichtigen, erhalten wir endlich einen richtigen Subtrahierer:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = U_{e2} \cdot \left (1 + \frac{R_6}{R_4}\right ) \cdot \frac{R_7}{R_5 + R_7} - \frac{R_6}{R_4} \cdot U_{e1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies gilt für alle Subtrahierer, obwohl es natürlich auch hier wieder zwei Sonderfälle gibt; nämlich a) wenn alle Gegenkopplungswiderstände gleich sind:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;R_6 = R_7 = R_4 = R_5&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dann ist &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = U_{e2} - U_{e1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder b) wenn die Widerstandsverhältnisse gleich sind  :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{R_6}{R_4} = \frac{R_7}{R_5}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann ergibt sich für Ua:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = \left (U_{e2} \cdot \frac{R_6}{R_4}\right ) - \left (U_{e1} \cdot \frac{R_6}{R_4}\right )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder noch einfacher:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a = (U_{e2} - U_{e1}) \cdot \frac{R_6}{R_4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Addition und Subtraktion mit unterschiedlichen Faktoren ==&lt;br /&gt;
[[Bild:Op-addsub.png]]&lt;br /&gt;
&lt;br /&gt;
Hier die Schaltung die addieren und subtrahieren kann, mit unterschiedlichen Faktoren.&lt;br /&gt;
Sie kann verwendet werden für Aufgaben wie: Gesucht ist eine Schaltung, die aus 0...2.56 V eine Spannung von -10V...10V macht. Für dieses Beispiel wird hier die Dimensionierung durchgeführt:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left&amp;quot; &lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 1&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Um = Ue2&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Gleichgewicht am Eingang&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 2&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Ia+Ib = Ic&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | In den Eingang fließt &amp;quot;kein&amp;quot; Strom&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 3&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | (Ua-Ue2)/R6 + (Ue1-Ue2)/R4 = Ue2/Rc&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 4&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Ua/R6 - Ue2/R6 + Ue1/R4 - Ue2/R4 = Ue2/Rc&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 5&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &#039;&#039;&#039;R6 = 200k&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Einfach festgelegt, könnte auch 100k oder 500k sein&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 6&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Ue1 = 5V&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | könnte auch 15V oder 10V sein&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 7&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | -10/200k - 0/200k + 5/R4 - 0/R4 = 0/Rc&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Wenn Ue2=0V, wollen wir Ua=-10V&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 8&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | -10/200k + 5/R4 = 0&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 9&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 10/200k = 5/R4&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 10&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | R4 = 5/10*200k = 100k&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &#039;&#039;&#039;R4 = 100k&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; rowspan=&amp;quot;1&amp;quot; colspan=&amp;quot;2&amp;quot; | &amp;lt;br /&amp;gt; Wir hatten Ue1=5V festgelegt, Damit wollen wir -10V...10V Am Ausgang erreichen. &amp;lt;br /&amp;gt; Wenn wir jetzt annehmen Ue1=0V, dann würde der Eingang Ue2 0...xV am Ausgang 0...20V erzeugen.&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 4&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Ua/R6 - Ue2/R6 + Ue1/R4 - Ue2/R4 = Ue2/Rc&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Ua/R6 - Ue2/R6 + 0/R4 - Ue2/R4 = Ue2/Rc&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 41&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 20/200k - x/200k + 0/100k - x/100k = x/Rc&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 42&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | ( 20/200k - x/200k - x/100k ) / x = 1/Rc&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Das ist die Formel für 1/Rc&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 43&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 20/(200k*x) - 1/200k - 1/100k = 1/Rc&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 44&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Wir setzen z.B 2.56V ein und erhalten&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | 45&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Rc = 1/(20/(200000*2.56)-1/200000-1/100000)=&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | Den String 1/(20/(200000*2.56)-1/200000-1/100000)= kopieren wir in in den Windows Taschenrechner (mit Ctrl-C - Ctrl-V) und erhalten: Rc=41,558k&amp;lt;br /&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Der Instrumenten-Verstärker ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Instrument.png]]&lt;br /&gt;
&lt;br /&gt;
Ein Nachteil des Subtrahierer ist sein geringer Eingangswiderstand. Um den nahezu unendlichen Eingangswiderstand des verwendeten Operationsverstärkers zu erreichen, kann man einfach vor beide Eingänge je einen Impedanzwandler vorschalten.&lt;br /&gt;
Die hier beschriebene Schaltung ist um drei Widerstände erweitert und ermöglicht die Einstellung der Differenz-Verstärkung über nur einen Widerstand, nämlich R2.&lt;br /&gt;
&lt;br /&gt;
Am invertierenden Eingang von IC1A gilt (Knotenregel):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{U_{a1}-U_{e1}}{R_1}-\frac{U_{e1}-U_{e2}}{R_2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am invertierenden Eingang von IC1C gilt (Knotenregel):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{U_{a2}-U_{e2}}{R_1}+\frac{U_{e1}-U_{e2}}{R_2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Subtrahiert man die beiden Gleichungen voneinander, erhält man:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_{a2}-U_{a1}=(U_{e2}-U_{e1})\cdot\left (1+\frac{2\cdot R_1}{R_2}\right )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Letztere Differenz ist die Eingangsspannung eines normalen Subtrahierers mit der Verstärkung 1.&lt;br /&gt;
&lt;br /&gt;
Also ergibt sich als Ausgangsspannung:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_a=(U_{e2}-U_{e1}) \cdot \left (1+\frac{2\cdot R_1}{R_2}\right )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Differenzverstärkung beträgt demnach:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;V=\left (1+\frac{2\cdot R_1}{R_2} \right )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anwendung: Auswertung von Brückenschaltungen, wie Drucksensoren oder Dehnungsmessstreifen, die durch den Eingangswiderstand der Messschaltung nicht belastet werden dürfen.&amp;lt;br&amp;gt;&lt;br /&gt;
Instrumenten-Verstärker kann man auch fertig kaufen. Im INA102 ist die komplette Schaltung integriert. Für R2 sind 3 verschiedene Werte eingebaut, die bei passender Verschaltung eine Verstärkung von 1, 10, 100 oder 1000 ermöglichen.&lt;br /&gt;
&lt;br /&gt;
= Spannungsversorgung und Beschaltung =&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit einfacher Versorgungsspannung ==&lt;br /&gt;
&lt;br /&gt;
Häufig möchte man Wechselspannung (z. B. Audiosignale) die auch negative Spannungen enthält mit einem Opamp verstärken, hat aber nur eine einfache Versorgungsspannung, eine positive in Bezug zu Masse, zur Verfügung. Dafür bieten sich folgende Schaltungen an, die in der Literatur leider häufig vernachlässigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Nichtinvertierender Verstärker ===&lt;br /&gt;
&lt;br /&gt;
[[Bild: Ss_opamp1.png]]&lt;br /&gt;
&lt;br /&gt;
Der negative Eingang wird mit einem Spannungsteiler auf die halbe Betriebsspannung gelegt und das Signal mit Kondensatoren am Ein- und Ausgang entkoppelt.&lt;br /&gt;
Die Verstärkung ist in diesem Beispiel für Wechselspannung 11 (Formel wie oben), für Gleichspannung aber 1, da C4 für Gleichspannung einen unendlichen Widerstand darstellt. C3 sollte dorthin gehen, wo das Eingangssignal seinen Bezugspunkt hat, also die Abschirmung der Chinch-Buchse, während R5 dorthin geht, wo der Operationsverstärker seine negative Versorgungsspannung her bekommt, falls das nicht die gleichen Pontentiale, hier GND, sein sollten.&lt;br /&gt;
&lt;br /&gt;
=== Invertierender Verstärker ===&lt;br /&gt;
&lt;br /&gt;
[[Bild: Ss_opamp2.png]]&lt;br /&gt;
&lt;br /&gt;
Das Prinzip funktioniert analog . auch für die invertierende Beschaltung.&lt;br /&gt;
&lt;br /&gt;
== Kaufempfehlung ==&lt;br /&gt;
LM 158/258/358 2 OPs in einem Gehäuse Preis ca. 0,30€.&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[Standardbauelemente#Operationsverst.C3.A4rker|Standardbauelemente - Operationsverstärker]].&lt;br /&gt;
&lt;br /&gt;
Wer Audio OpAmps sucht - tangentsoft.net hat mal welche unter die Lupe genommen: [http://www.tangentsoft.net/audio/opamps.html Notes on Audio OpAmps]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
*[http://www.eetkorea.com/ARTICLES/2003SEP/A/2003SEP19_AMD_AN07.PDF Op Amp Circuit Collection] - National Semiconductor Application Note 31 mit vielen weiteren OP-Schaltungen&lt;br /&gt;
*[http://www-s.ti.com/sc/psheets/slod006b/slod006b.pdf Op Amps for Everyone] - englischsprachiges, sehr umfangreiches Dokument zu OPV und deren Anwendung (empfehlenswert)&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/bau/0209092.htm Operationsverstärker im ElKo]&lt;br /&gt;
*[http://www.inf.fu-berlin.de/lehre/WS00/peg/folien/Peg_v7a.pdf OP Teil 1], [http://www.inf.fu-berlin.de/lehre/WS00/peg/folien/Peg_v7b.pdf OP Teil 2] - OP-Schaltungen (deutsch)&lt;br /&gt;
*[http://www.blecken.de/download/opverst.zip Schaltungstechnik mit Operationsverstärkern] - Prof. K. Blecken, Skript zur Vorlesung (deutsch, *.doc-Format)&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Operationsverst%C3%A4rker RN-Wissen Operationsverstärker]&lt;br /&gt;
* [http://www.national.com/onlineseminar/#amps Online Seminar] von National Semiconductor&lt;br /&gt;
* [http://www.franzis.de/elo-das-magazin/grundlagen-und-ausbildung/operationsverstaerker/der-operationsverstaerker ELO-Online-Magazin, Franzis-Verlag], [http://www.franzis.de/online-shop/elektronik/lernpakete-elektronik/lernpaket-elektronik-mit-ics Lernpaket Elektronik mit ICs] &amp;quot;Elektronische Experimente mit integriertem Schaltkreis&amp;quot;, Kasten mit Steckbrett/Bauelementen (ca. 40EUR), &lt;br /&gt;
* [[Schmitt-Trigger]]&lt;br /&gt;
* [[Aktiver RC-Bandpass|Aktiver RC-Bandpass auf Operationsverstärker-Basis]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Grundlagen]]&lt;br /&gt;
[[Category:Bauteile]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LIFO&amp;diff=59837</id>
		<title>LIFO</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LIFO&amp;diff=59837"/>
		<updated>2011-08-25T11:34:15Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Weblinks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein LIFO (*L*ast-*I*n-*F*irst-*O*ut) ist ein Pufferspeicher nach dem &amp;quot;Stapel-Prinzip&amp;quot;. Diese Pufferspeicher dienen meistens dazu, Verschachtelte Operationen druchzuführen und Daten für spätere Aktionen aufzubehalten.&lt;br /&gt;
&lt;br /&gt;
Ein LIFO funktioniert so, dass das erste Element (First In), welches &amp;quot;von vorn&amp;quot; in die Warteschlange eingefügt wird, später auch als erstes wieder herausgeholt wird (First Out). Das Gegenstück zum LIFO ist [[FIFO]]. &lt;br /&gt;
&lt;br /&gt;
Ein bekanntes Beispiel für einen LIFO-Speicher ist der stack in Mikroprozesoren. Bei Interrupts werden auf ihm die Register gerettet und für das spätere Verwenden gemerkt. Mit jedem Interrupt werden neue Registerzustände aufgestapelt, sodass eine zeitlich richtige Abarbeitung beim späteren Wiederaufnahmen eines gestoppten Prozesses möglich wird.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist die ausreichende stack Größe, sodass nach geforderter Interraupttiefe und Registerspeicherbedarf immer ausreichend Platz vorhanden ist und kein Überlauf eintritt.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LIFO&amp;diff=59836</id>
		<title>LIFO</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LIFO&amp;diff=59836"/>
		<updated>2011-08-25T11:32:46Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein LIFO (*L*ast-*I*n-*F*irst-*O*ut) ist ein Pufferspeicher nach dem &amp;quot;Stapel-Prinzip&amp;quot;. Diese Pufferspeicher dienen meistens dazu, Verschachtelte Operationen druchzuführen und Daten für spätere Aktionen aufzubehalten.&lt;br /&gt;
&lt;br /&gt;
Ein LIFO funktioniert so, dass das erste Element (First In), welches &amp;quot;von vorn&amp;quot; in die Warteschlange eingefügt wird, später auch als erstes wieder herausgeholt wird (First Out). Das Gegenstück zum LIFO ist [[FIFO]]. &lt;br /&gt;
&lt;br /&gt;
Ein bekanntes Beispiel für einen LIFO-Speicher ist der stack in Mikroprozesoren. Bei Interrupts werden auf ihm die Register gerettet und für das spätere Verwenden gemerkt. Mit jedem Interrupt werden neue Registerzustände aufgestapelt, sodass eine zeitlich richtige Abarbeitung beim späteren Wiederaufnahmen eines gestoppten Prozesses möglich wird.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LIFO&amp;diff=59835</id>
		<title>LIFO</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LIFO&amp;diff=59835"/>
		<updated>2011-08-25T11:31:35Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: Die Seite wurde neu angelegt: „Ein LIFO (*L*ast-*I*n-*F*irst-*O*ut) ist ein Pufferspeicher nach dem &amp;quot;Stapel-Prinzip&amp;quot;. Diese Pufferspeicher dienen meistens dazu, Verschachtelte Operationen druch…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein LIFO (*L*ast-*I*n-*F*irst-*O*ut) ist ein Pufferspeicher nach dem &amp;quot;Stapel-Prinzip&amp;quot;. Diese Pufferspeicher dienen meistens dazu, Verschachtelte Operationen druchzuführen und Daten für spätere Aktionen aufzubehalten.&lt;br /&gt;
&lt;br /&gt;
Ein LIFO funktioniert so, dass das erste Element (First In), welches &amp;quot;von vorn&amp;quot; in die Warteschlange eingefügt wird, später auch als erstes wieder herausgeholt wird (First Out). Das Gegenstück zum LIFO ist [[LIFO]]. &lt;br /&gt;
&lt;br /&gt;
Ein bekanntes Beispiel für einen LIFO-Speicher ist der stack in Mikroprozesoren. Bei Interrupts werden auf ihm die Register gerettet und für das spätere Verwenden gemerkt. Mit jedem Interrupt werden neue Registerzustände aufgestapelt, sodass eine zeitlich richtige Abarbeitung beim späteren Wiederaufnahmen eines gestoppten Prozesses möglich wird.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FIFO&amp;diff=59834</id>
		<title>FIFO</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FIFO&amp;diff=59834"/>
		<updated>2011-08-25T11:26:13Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: LIFO&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein FIFO (&amp;lt;b&amp;gt;F&amp;lt;/b&amp;gt;irst-&amp;lt;b&amp;gt;I&amp;lt;/b&amp;gt;n-&amp;lt;b&amp;gt;F&amp;lt;/b&amp;gt;irst-&amp;lt;b&amp;gt;O&amp;lt;/b&amp;gt;ut) ist ein Pufferspeicher nach dem &amp;quot;Warteschlangen-Prinzip&amp;quot;. Pufferspeicher dienen dazu, für einen Prozessor Daten aufzufangen, die er noch nicht verarbeiten kann. Ein FIFO funktioniert definitionsgemäß so, dass das erste Element (First In), welches &amp;quot;hinten&amp;quot; in die Warteschlange eingefügt wird, später auch als erstes &amp;quot;vorne&amp;quot; herausgeholt wird (First Out). Das Gegenstück zum FIFO ist [[LIFO]].&lt;br /&gt;
&lt;br /&gt;
Ein bekanntes Beispiel für einen FIFO-Speicher ist der des [[UART]]s im PC. Dieser sammelt ankommende Daten solange, bis er fast voll ist (meist 14 Bytes). Dann wird ein [[Interrupt]] ausgelöst und der Prozessor kann &amp;quot;auf einen Rutsch&amp;quot; alle Daten auf einmal auslesen. Ganz am Anfang hatten UARTs keinen FIFO und erzeugten für jedes empfangene Byte einen Interrupt, so wie es heute noch die meisten Mikrocontroller machen. Damit ist aber die CPU-Belastung wesentlich höher, was bei höheren Datenraten zu Problemen führen kann.&lt;br /&gt;
&lt;br /&gt;
Die Umsetzung eines FIFOs in Software heißt Ringpuffer und weist auch eine feste Puffergröße auf. Wesentlicher Vorteil gegenüber der verketteten Liste ist die schnellere Ausführungszeit und der geringere Aufwand.&lt;br /&gt;
&lt;br /&gt;
== Standard-Ringpuffer ==&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Simpel&lt;br /&gt;
* Leicht verständlich&lt;br /&gt;
* Daten können auch vom Typ struct sein&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* Schnell aber nicht optimal&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Bild:Ringpuffer.png|300px]]&lt;br /&gt;
|&lt;br /&gt;
[[Bild:Circular buffer.png|200px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Inhalte des Puffers werden in einem schlichten Array gespeichert und der Zugriff erfolgt über einen Integer-Index. Erreicht ein Index die Obergrenze springt dieser auf Null zurück. Ein größer-gleich statt nur eines ist-gleich Vergleichs ist sicherer gegenüber Programmfehlern, bei denen der Index verstellt wurde.&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
write = write + 1;&lt;br /&gt;
if (write &amp;gt;= BUFFER_SIZE)&lt;br /&gt;
  write = 0;&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
Haben Lese- und Schreib-Index den gleichen Wert wird der Puffer als leer angesehen. Wenn write+1 und read identisch sind wird der Puffer als voll angesehen. Nun fehlt noch der Sonderfall bei dem read gleich Null ist, hier funktioniert der write+1-Vergleich nicht mehr und die Abfrage einer zusätzlichen Bedingung ist zur voll-Abfrage erforderlich.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
read == write =&amp;gt; leer&lt;br /&gt;
&lt;br /&gt;
write + 1 == read || read == 0 &amp;amp;&amp;amp; write+1 == BUFFER_SIZE =&amp;gt; voll&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei gleichzeitigem Zugriff zwischen UART-ISR und Hauptprogramm muss ausgeschlossen werden, dass das Hauptprogramm beim Lesen aus dem Puffer nicht durch den Interrupt unterbrochen werden kann. Ansonsten können Programmabstürze passieren, deren Ursache oft nicht nachvollziehbar ist. Als Abhilfe dienen [[Interrupt#Atomarer_Datenzugriff|Atomare Abschnitte]], solche können durch keinen Interrupt unterbrochen werden. Die Radialkur deaktiviert alle Interrupts, besser ist die Deaktivierung eines einzelnen Interrupts. Im Allgemeinen werden versäumte Interrupte nach erneuter Aktivierung nachgeholt, da ein Flag gesetzt wurde. Wichtig ist vorallem, dass die Ausführungszeit des Atomaren Abschnitts und der ISR geringer ist als der Intervall in dem Interrupte erfolgen, da ansonsten ein Interrupt verloren gehen könnte.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
cli()&lt;br /&gt;
ret = BufferOut(&amp;amp;var);&lt;br /&gt;
sei()&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Code-Beispiel ===&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define BUFFER_SIZE 23&lt;br /&gt;
&lt;br /&gt;
struct Buffer {&lt;br /&gt;
  uint8_t data[BUFFER_SIZE];&lt;br /&gt;
  uint8_t read; // zeigt auf das Feld mit dem ältesten Inhalt&lt;br /&gt;
  uint8_t write; // zeigt immer auf leeres Feld&lt;br /&gt;
} buffer = {{}, 0, 0};&lt;br /&gt;
&lt;br /&gt;
uint8_t BufferIn(uint8_t byte)&lt;br /&gt;
{&lt;br /&gt;
  //if (buffer.write &amp;gt;= BUFFER_SIZE)&lt;br /&gt;
  //  buffer.write = 0; // erhöht sicherheit&lt;br /&gt;
&lt;br /&gt;
  if (buffer.write + 1 == buffer.read || buffer.read == 0 &amp;amp;&amp;amp; buffer.write + 1 == BUFFER_SIZE)&lt;br /&gt;
    return FAIL; // voll&lt;br /&gt;
&lt;br /&gt;
  buffer.data[buffer.write] = byte;&lt;br /&gt;
&lt;br /&gt;
  buffer.write = buffer.write + 1;&lt;br /&gt;
  if (buffer.write &amp;gt;= BUFFER_SIZE)&lt;br /&gt;
    buffer.write = 0;&lt;br /&gt;
  return SUCCESS;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t BufferOut(uint8_t *pByte)&lt;br /&gt;
{&lt;br /&gt;
  if (buffer.read == buffer.write)&lt;br /&gt;
    return FAIL;&lt;br /&gt;
  *pByte = buffer.data[buffer.read];&lt;br /&gt;
&lt;br /&gt;
  buffer.read = buffer.read + 1;&lt;br /&gt;
  if (buffer.read &amp;gt;= BUFFER_SIZE)&lt;br /&gt;
    buffer.read = 0;&lt;br /&gt;
  return SUCCESS;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-Ringpuffer - die schnellste Lösung ==&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Durch Bitmaske auf den Feld-Index &#039;&#039;write&#039;&#039; kann der nicht &amp;quot;Amoklaufen&amp;quot; und beliebige Inhalte im Speicher überschreiben&lt;br /&gt;
* Sehr einfach, sehr schnell&lt;br /&gt;
* Daten können auch vom Typ &#039;&#039;struct&#039;&#039; sein&lt;br /&gt;
Nachteile:&lt;br /&gt;
* Nur Größenfaktoren von 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; möglich&lt;br /&gt;
* Nur in speziellen Fällen Pointerreferenz möglich&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
&lt;br /&gt;
Wenn der Index am oberen Ende angekommen ist springt er an den Anfang zurück. Die Definition der Obergrenze wird nicht durch einen Vergleich realisiert, sondern durch Modulo-Arithmetik. Dies kann sehr einfach und schnell durch Maskieren des Index-Werts umgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
( write + 1 ) &amp;amp; MASK&lt;br /&gt;
&lt;br /&gt;
15 = 0b00001111&lt;br /&gt;
15 + 1 = 16 = 0b000010000&lt;br /&gt;
16 &amp;amp; MASK = 0b000010000 &amp;amp; 0b000001111 = 0b000000000&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daraus folgt das &#039;&#039;write&#039;&#039; nur einen Wert zwischen 0 und 15 einnehmen kann. Das ganze funktioniert nur mit Zahlen der Reihe 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Da der Puffer nur eine endliche Größe aufweist, muss eine voll/leer Indikation verfügbar sein. read == write bedeutet Puffer leer, entsprechend bedeutet write + 1 == read, dass keine weiteren Elemente mehr hinzugefügt werden können, denn sonst würde das Hinzufügen weiterer Daten einen Pufferüberlauf hervorrufen. Für die Behandlung des Pufferüberlaufs gibt es zwei Methoden, nichts tun und Fehler zurück geben oder ältesten Puffer-Inhalt verwerfen (read+1).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
read == ((write + 1) &amp;amp; MASK)&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch hier verhindert die Bitmaske einen möglichen Überlauf. Weiter zu beachten ist, dass ein Byte durch die voll/leer Indikation verloren geht, der Puffer hat hier nur eine größe von 15 statt 16 Byte&lt;br /&gt;
&lt;br /&gt;
Und noch ein kleiner Trick. Bei einer Zahl der Reihe 2^n lässt sich auf einfache Weise immer eine passende Bitmaske erzeugen und man sieht gleichzeitig klar die Anzahl der genutzten Bytes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
# define SIZE 16&lt;br /&gt;
# define MASK (SIZE-1)&lt;br /&gt;
&lt;br /&gt;
16 = 0b010000&lt;br /&gt;
16 - 1 = 0b001111&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Normalbetrieb sollte der Puffer nie voll ausgereizt sein und wenn der Puffer bereits überläuft ist es für die Systemstabilität und Fehleranlyse oft schon zu spät, denn von einem nicht mehr funktionierenden Gerät lässt sich nur wenig Information herauskitzeln. Da kann ein Frühwarmsystem mehr bieten, wobei zwei Ausprägungen typisch sind, Höchstwert merken und eine Meldeschwelle einführen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
 freeMemory =  (read - write - 1 ) &amp;amp; MASK);&lt;br /&gt;
 if (freeMemory &amp;lt; floodmark)&lt;br /&gt;
   floodmark = freeMemory;&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
 if ( (read - write - 1 ) &amp;amp; MASK) &amp;lt;= FLOODMARK;&lt;br /&gt;
   FloodmarkExcess();&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Code-Beispiel ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define BUFFER_SIZE 16 // muss 2^n betragen (8, 16, 32, 64 ...)&lt;br /&gt;
#define BUFFER_MASK (BUFFER_SIZE-1) // Klammern auf keinen Fall vergessen&lt;br /&gt;
&lt;br /&gt;
struct Buffer {&lt;br /&gt;
  uint8_t data[BUFFER_SIZE];&lt;br /&gt;
  uint8_t read; // zeigt auf das Feld mit dem ältesten Inhalt&lt;br /&gt;
  uint8_t write; // zeigt immer auf leeres Feld&lt;br /&gt;
} buffer = {{}, 0, 0};&lt;br /&gt;
&lt;br /&gt;
uint8_t BufferIn(uint8_t byte)&lt;br /&gt;
{&lt;br /&gt;
  uint8_t next = ((buffer.write + 1) &amp;amp; BUFFER_MASK);&lt;br /&gt;
  if (buffer.read == next)&lt;br /&gt;
    return FAIL;&lt;br /&gt;
  buffer.data[buffer.write] = byte;&lt;br /&gt;
  // buffer.data[buffer.write &amp;amp; BUFFER_MASK] = byte; // absolut Sicher&lt;br /&gt;
  buffer.write = next;&lt;br /&gt;
  return SUCCESS;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t BufferOut(uint8_t *pByte)&lt;br /&gt;
{&lt;br /&gt;
  if (buffer.read == buffer.write)&lt;br /&gt;
    return FAIL;&lt;br /&gt;
  *pByte = buffer.data[buffer.read];&lt;br /&gt;
  buffer.read = (buffer.read+1) &amp;amp; BUFFER_MASK;&lt;br /&gt;
  return SUCCESS;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FIFO mit C-Präprozessor ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#ifndef FIFO_H_&lt;br /&gt;
#define FIFO_H_&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
	uint8_t _read;&lt;br /&gt;
	uint8_t _write;&lt;br /&gt;
	uint8_t _buffer[64];&lt;br /&gt;
} FIFO64_t;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
	uint8_t _read;&lt;br /&gt;
	uint8_t _write;&lt;br /&gt;
	uint8_t _buffer[128];&lt;br /&gt;
} FIFO128_t;&lt;br /&gt;
&lt;br /&gt;
#define FIFO_init(fifo)		{ fifo._read = 0; fifo._write = 0; }&lt;br /&gt;
&lt;br /&gt;
#define FIFO_available(fifo)	( fifo._read != fifo._write )&lt;br /&gt;
&lt;br /&gt;
#define FIFO_read(fifo, size) (						\&lt;br /&gt;
	(FIFO_available(fifo)) ?					\&lt;br /&gt;
	fifo._buffer[fifo._read = (fifo._read + 1) &amp;amp; (size-1)] : 0	\&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#define FIFO_write(fifo, data, size) {								\&lt;br /&gt;
	uint8_t tmphead = ( fifo._write + 1 ) &amp;amp; (size-1); 	/* calculate buffer index */	\&lt;br /&gt;
	if(tmphead != fifo._read) {				/* if buffer is not full */	\&lt;br /&gt;
		fifo._write = tmphead;				/* store new index */		\&lt;br /&gt;
		fifo._buffer[tmphead] = data;			/* store data in buffer */	\&lt;br /&gt;
	}											\&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define FIFO64_read(fifo)			FIFO_read(fifo, 64)&lt;br /&gt;
#define FIFO64_write(fifo, data)		FIFO_write(fifo, data, 64)&lt;br /&gt;
&lt;br /&gt;
#define FIFO128_read(fifo)			FIFO_read(fifo, 128)&lt;br /&gt;
#define FIFO128_write(fifo, data)		FIFO_write(fifo, data, 128)&lt;br /&gt;
&lt;br /&gt;
#endif /*FIFO_H_*/&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Circular_buffer Circular buffer], englische Wikipedia&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;br /&gt;
[[Kategorie:Algorithmen und Arithmetik]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LPC2000&amp;diff=59833</id>
		<title>LPC2000</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LPC2000&amp;diff=59833"/>
		<updated>2011-08-25T11:21:37Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Allgemeine Hinweise */ Fehler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die LPC2000 von NXP (ehemals Philips) waren die ersten wegen ihrer einfachen Handhabung hobbytauglichen [[ARM]]-basierten Mikrocontroller. Entsprechend sind auch zum LPC2000 mehr Informationen verfügbar als z.&amp;amp;nbsp;B. zum [[AT91SAM]]7, und man findet leichter Hilfe bei Problemen. Ein weiterer Vorteil des LPC2000 ist der einfach zu benutzende serielle Bootloader, mit dem sich der Controller auch ohne JTAG-Interface einfach programmieren lässt. Ansonsten ist die Hardwareausstattung recht ähnlich im Vergleich zum AT91SAM7. Hervorzuhebende Unterschiede sind das schnellere Flash-ROM des LPC2000, die etwas höhere Taktfrequenz, beim gleichen Gehäuse mehr I/O-Pins und die größere Auswahl von Modellen im Low-End-Bereich (LPC2103).&lt;br /&gt;
&lt;br /&gt;
* 2-96 kB [[RAM|SRAM]].&lt;br /&gt;
* bis zu 512 kB [[Flash-ROM]]-Programmspeicher (LPC2138/2148/2368/2378/LPC2387/LPC2388/2468/2478)&lt;br /&gt;
* vorinstallierter serieller [[Bootloader]] mit automatischer [[Baud]]rate-Erkennung&lt;br /&gt;
* [[JTAG]]-Interface&lt;br /&gt;
* ETM Trace-Interface&lt;br /&gt;
* 2-4 [[UART]]-Schnittstellen (bei einigen Modellen auch mit allen &amp;quot;Modem&amp;quot;-Leitungen (Handshake, Ring, DTR etc.)&lt;br /&gt;
* 1-2 [[SPI]]-Schnittstelle(n), bei einigen Modellen auch SSP-Schnittstelle(n) (erweiterte Konfigurationsmöglichkeiten und Funktionen)&lt;br /&gt;
* Hardware-[[I2C]](I²C)-Schnittstelle(n)&lt;br /&gt;
* teilw. mit CAN-Schnittstellen&lt;br /&gt;
* Mit Ausnahme der ersten Chips LPC2104/5/6 haben alle Typen einen integrierten A/D-Wandler&lt;br /&gt;
* teilw. mit D/A-Wandler (LPC2132/34/36/38, LPC2142/44/46/48)&lt;br /&gt;
* 2 32 Bit [[Timer]], zusätzlicher 32-bit [[Timer]] mit 6 [[Pulsweitenmodulation|PWM]]-Ausgängen, RTC, [[Watchdog]]&lt;br /&gt;
* bis 75 MHz Taktfrequenz&lt;br /&gt;
* [[IC-Gehäuseformen|LQFP48]]-Gehäuse (LPC210x) bis LQFP208 (LPC24xx)&lt;br /&gt;
* LPC213x und LPC214x benötigen zum Betrieb 3V&lt;br /&gt;
* Für die anderen Typen werden Core-Spannung 1,65-1,95V und IO-Spannung 3,0-3,6V benötigt (d.h. zum Betrieb sind 2 Versorgungsspannungen erforderlich)&lt;br /&gt;
* geringe Leistungsaufnahme (ca. 60 mW bei 60 MHz und Endlosschleife)&lt;br /&gt;
* 5V-tolerante IOs&lt;br /&gt;
* USB 2.0 Full-Speed (LPC214x und LPC23xx/24xx)&lt;br /&gt;
* Ethernet MAC (LPC23xx/24xx)&lt;br /&gt;
* Jeweils eigene DMA und eigener AHB-Bus für Ethernet, USB und sonstige schnelle Schnittstellen (LPC23xx und LPC24xx)&lt;br /&gt;
* RTC (teilweise mit eigenem Oszillator)&lt;br /&gt;
&lt;br /&gt;
== Verwendung des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu anderen Produkten ist der Bootlader bei den LPC2xxx fest eingebaut und geht beim Programmieren nicht verloren. Man kann ihn auch mittels Terminalprogramm (z.B. Hyperterminal bei Windows) ansprechen und von ihm z.B. den Produkt-ID erfragen. Manchmal ist das wichtig, denn es gibt im Handel downgelabelte IC&#039;s (z.B. LPC2101, wo tatsächlich ein LPC2103 drinsteckt), die sich zum Beseitigen eines Ausleseschutzes nur dann generallöschen lassen, wenn man den echten Typ im Flash-Tool einstellt. Benötigte Software gibt es unter http://sourceforge.net/projects/lpc21isp/ zum Download.&lt;br /&gt;
&lt;br /&gt;
# BSL-Jumper setzen&lt;br /&gt;
# Reset-Knopf drücken&lt;br /&gt;
# lpc21isp starten&lt;br /&gt;
#* Linux: lpc21isp programm.hex /dev/ttyS0 115200 14746&lt;br /&gt;
#* Windows: lpc21isp programm.hex com1 115200 14746&lt;br /&gt;
&lt;br /&gt;
Die Übertragung des Programms zum Controller sollte jetzt beginnen. Um das Programm zu starten den &#039;&#039;&#039;BSL-Jumper entfernen&#039;&#039;&#039; und Reset drücken.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann unter MS-Windows das von Philips bereitgestellte &amp;quot;Flash-Tool&amp;quot; oder Flash Magic (http://www.flashmagictool.com/) von Embedded Systems Academy genutzt werden. Diese Programmiersoftware bieten eine grafische Benutzeroberfläche.&lt;br /&gt;
&lt;br /&gt;
Sowohl lpc21isp also auch das Philips-Tool und Flash Magic können Reset und BSL per DTR/RTS-Signal steuern, bei entsprechender Beschaltung auf dem Board muss man somit keine Jumper setzen (vgl. z.&amp;amp;nbsp;B. Schaltpläne der Evaluation-Boards von [http://www.keil.com Keil]).&lt;br /&gt;
&lt;br /&gt;
Eine weitere Alternative ist [http://home.arcor.de/bernhard.michelis/LPC/index.html LPCProg 0.3], welches speziel für auf die Verwendung eines FTDI-232 Chips hin optimiert wurde. Auf der Website gibt es auch ein Layout für einen USB-zu-Seriel-Adapter. Die Software/Hardware ist zu den obigen Programmen Pinkompatibel und kann beliebig damit gemixt werden.&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Hinweise ==&lt;br /&gt;
* Der Softwareschutz bei den LPC2104/5/6 war anfänglich nicht implementiert (Stand 4/2005). Dies wurde 2007 geändert. Ein Schutz des geistigen Eigentums war also bei diesen 3 Controllern zunächst nicht gewährleistet. Andere Controller aus der LPC2000-Serie waren davon nicht betroffen.&lt;br /&gt;
* Auf vielen (Stand 4/2005) LPC2000 existiert ein Fehler bei der Verwaltung der Interrupt-Flags (&amp;quot;race condition&amp;quot;, &amp;quot;timer issue&amp;quot;). Der Fehler und mögliche Abhilfen sind in den Errata von NXP erläutert.&lt;br /&gt;
* Die CAN Controller in den LPC2100,2200 sind so gründlich mit Bugs und Designfehlern gespickt, dass letztlich nur ein kleiner Bruchteil der dokumentierten Funktionen nutzbar ist. Die Bugs finden sich im Errata Sheet, die Konstruktionsfehler darf man selber finden. &lt;br /&gt;
* Bei Nutzung des SPI-Interfaces im &amp;quot;Master-Mode&amp;quot; ist bei einigen LPC2000-Typen auf die richtige Beschaltung des &amp;quot;Chip-Select&amp;quot;-Pins zu achten (vgl. Manuals und Erratas). &lt;br /&gt;
* Viele Fehler in der &amp;quot;ersten Generation&amp;quot; der ICs wurden bei neueren Versionen behoben. Vgl. Datenblätter/Errata zu LPC2xxx/01.&lt;br /&gt;
* Bei neueren LPCs (LPC213x/4x) sollte die aktuelle Fassung der NXP ISP-Software genutzt werden (Stand 3/2006: V2.2.2, erhältlich auf der NXP Web-Site). Ältere Versionen funktionieren nicht zuverlässig oder garnicht.&lt;br /&gt;
* LPC23xx/24xx werden von der Philips ISP-Software nicht unterstützt. Alternativen: Flashmagic oder lpc21isp.&lt;br /&gt;
* Bei Problemen immer auch das Archiv der LPC2000 yahoo-Gruppe absuchen. Dort finden sich, leider oft etwas zerstreut, sehr nützliche Hinweise. Die Anmeldung bei der Gruppe (yahoo-Account erforderlich) gewährt Zugang zum Download-Bereich der Gruppe. Dort finden sich sehr nützliche Beispielprogramme, Libraries und Dokumente.&lt;br /&gt;
* Bei Entwicklungen mit der GNU-Toolchain erweisen sich Beispiele von kommerziellen Compiler/IDE-Anbietern, die ebenfalls den GNU-Compiler nutzen, oft als gute Informationsquelle vor allem bei Einstellungen zum Startup-Code oder im Linker-Script. (vgl. u.a. Rowley, Keil, Anglia-Designs)&lt;br /&gt;
* siehe auch: [http://www.open-research.org.uk/ARMuC/index.cgi?LPC2100Tips LPC2100-Tips] im ARMuC Wiki (englisch)&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[ARM-elf-GCC-Tutorial]]&lt;br /&gt;
* [[Linksammlung#ARM|Linksammlung Abschnitt ARM]]&lt;br /&gt;
* [[LPC2000-Boards von Olimex]]&lt;br /&gt;
* [[MP2103-Stick: Ein Mini-Mikrocontroller-Board mit USB und bis zu 4MB Datenspeicher]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.standardics.nxp.com/products/lpc2000/all/ Philips / NXP LPC2000]&lt;br /&gt;
* [http://groups.yahoo.com/group/lpc2000/ LPC2000 Yahoo Group]&lt;br /&gt;
* [http://www.dreamislife.com/arm/ LPC210x ARM7 Microcontroller Tutorial]&lt;br /&gt;
* [http://www.dontronics-shop.com/tutorials.html Dontronics Tutorials] u.a. &amp;quot;ARM Cross Development with Eclipse Version 3&amp;quot; von James P. Lynch&lt;br /&gt;
* [http://www.hitex.co.uk/arm/lpc2000book/free_downloadpage.html The Insider&#039;s Guide To The Philips ARM7-Based Microcontrollers (LPC21xx)] bei http://www.hitex.co.uk&lt;br /&gt;
* [http://groups.yahoo.com/group/lpc21isp lpc21isp] -  Kommandozeilen-ISP-Tool für Linux und MS-Windows&lt;br /&gt;
* [http://www.esacademy.com/software/flashmagic/ Flash Magic] ISP-Tool&lt;br /&gt;
* [http://www.pjrc.com/arm/lpc2k_pgm/ LPC2K_PGM] - ISP-Tool mit GUI für Linux/GTK&lt;br /&gt;
* [http://www.sandring-systems.de/index.php5?lang=en&amp;amp;p=lf4l lpcflash4linux] - ISP-Tool für Linux (Kommandozeile)&lt;br /&gt;
* [http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/ ARM projects] - LPC2000-Projekte und -Beispiele von Martin Thomas&lt;br /&gt;
* [http://www.jandspromotions.com/philips2005/DE-list.htm LPC2138 Design Contest] - Viele Beispiele mit Hard- and Software&lt;br /&gt;
* [http://www.ixbat.de/index.php?page_id=94 LPC2103 unter Linux entwickeln] - LED blink mit gcc unter Linux&lt;br /&gt;
* [http://www.thegnar.org/nav/LPCgettingstarted.html Bringing up the LPC-P212x] - Bauen einer Toolchain mit Newlib, ISP, JTAG&lt;br /&gt;
* [http://home.arcor.de/bernhard.michelis/LPC/index.html LPCProg 0.3] - Geschwindigkeitsoptimierte Version für USB-zu-Seriell-Wandler, Kommandozeilen-ISP-Tool für MS-Windows; Einfaches Demo-Board verfügbar &lt;br /&gt;
&lt;br /&gt;
== Hersteller von Demo- und Evaluation-Boards mit ARM-basierten Mikrocontrollern von NXP ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.keil.com/boards/arm.asp Keil/ARM] (UK)&lt;br /&gt;
* [http://www.embeddedartists.com/ Embedded Artists] (Schweden)&lt;br /&gt;
* [http://www.embedinfo.com/en Embest] (China)&lt;br /&gt;
* [http://www.etteam.com/ ETT] (Thailand)&lt;br /&gt;
* [http://www.olimex.com/dev/index.html Olimex] (Bulgarien)&lt;br /&gt;
* u.v.a.m&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:FPGA&amp;diff=59217</id>
		<title>Diskussion:FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:FPGA&amp;diff=59217"/>
		<updated>2011-08-04T12:35:08Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das XSA-50 ist auf der angegebenen Seite als &amp;quot;Discontinued&amp;quot; gekennzeichnet und der Hersteller scheint kein 䨮lich g?es Board anzubieten. Andere M?chkeiten?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auslagerung der Boardliste:  Es soll ja eine eigene Liste erstellt werden. sollte man nicht vorab einfach den passenden Teil rüberkopieren und von hierl linken ? [[Benutzer:194.120.84.9|194.120.84.9]] 19:12, 30. Jul 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
Die Liste soll schon hier bleiben, aber in eine Tabelle überführt werden. --[[Benutzer:Andreas|andreas]] 12:54, 8. Aug 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
:Ich finde die total unübersichtlich&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=59214</id>
		<title>Hardwarebeschreibungssprachen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=59214"/>
		<updated>2011-08-04T11:01:39Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* AHDL */ GHDL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit einer Hardwarebeschreibungssprache lässt sich das Verhalten von digitalen Schaltkreisen in Textform beschreiben. Aus dem Quelltext können dann z.&amp;amp;nbsp;B. Daten für die Programmierung von Logikbausteinen ([[FPGA]], [[CPLD]], [[GAL]]) gewonnen werden (Synthese), oder es lassen sich Simulationen durchführen.&lt;br /&gt;
Dabei muss man beachten, dass Hardwarebeschreibungssprachen zwar wie &amp;quot;normale&amp;quot; Programmiersprachen aussehen, es aber nicht sind! Sie beschreiben im wesentlichen eine parallel arbeitende Hardwarestruktur, im Gegensatz zu sequenziellen Ablauf einer Programmiersprache. Natürlich kann man auch sequentielle Abläufe in einer Hardwarebeschreibungssprache ausdrücken. Dazu verwendet man endliche Zustandsautomaten (engl. Finite State Machines).&lt;br /&gt;
&lt;br /&gt;
== ABEL ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A&#039;&#039;&#039;dvanced &#039;&#039;&#039;B&#039;&#039;&#039;oolean &#039;&#039;&#039;E&#039;&#039;&#039;quation &#039;&#039;&#039;L&#039;&#039;&#039;anguage&lt;br /&gt;
&lt;br /&gt;
ABEL wird hauptsächlich für kleinere Aufgaben wie die Programmierung von [[GAL]]s und [[ISP]]s verwendet. Xilinx unterstützt ABEL als Beschreibungssprache für CPLDs (CoolRunner-Familie, XC95xxx-Familie)&lt;br /&gt;
&lt;br /&gt;
* [http://www.seas.upenn.edu/~ese201/abel/abel_primer.html ABEL-HDL Primer] - englischsprachige ABEL-Einführung von der University of Pennsylvania&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Advanced_Boolean_Equation_Language Eintrag deutsche Wikipedia] - Geschichte und Beispiel&lt;br /&gt;
&lt;br /&gt;
== AHDL == &lt;br /&gt;
Die &#039;&#039;&#039;A&#039;&#039;&#039;ltera &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;D&#039;&#039;&#039;escription &#039;&#039;&#039;L&#039;&#039;&#039;anguage AHDL ist eine Weiterentwicklung von ABEL. Sie wird heute noch zur direkten Instanziierung von Altera Primitiven verwendet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GHDL == &lt;br /&gt;
Die &#039;&#039;&#039;Ge&#039;&#039;&#039;nrad &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;D&#039;&#039;&#039;escription &#039;&#039;&#039;L&#039;&#039;&#039;anguage ist eine frühe Beschreibungssprache für GALs, PALs und PLDs von der Firma Genrad. Sie wird heute praktisch nicht mehr verwendet.&lt;br /&gt;
&lt;br /&gt;
== Verilog ==&lt;br /&gt;
[[Verilog]] wurde 1983 von der Firma Gateway Design Automation entwickelt. Zu diesem Zeitpunkt diente sie der Simulation/Verifikation, aber nicht der Synthese digitaler Schaltungen. Das gab dieser Sprache auch den Namen: &#039;&#039;Verifying Logic - Veri Log&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Verilog]] ist vornehmlich auf dem amerikanischen Kontinent verbreitet.&lt;br /&gt;
&lt;br /&gt;
* [http://www.eg.bucknell.edu/~cs320/1995-fall/verilog-manual.html Verilog Handbook] nicht mehr online, als HTML und PDF noch hier zu finden:&lt;br /&gt;
http://web.archive.org/web/20060805053107/http://www.eg.bucknell.edu/~cs320/1995-fall/verilog-manual.html&lt;br /&gt;
http://web.archive.org/web/20060805053107/http://www.eg.bucknell.edu/~cs320/1995-fall/manual.pdf&lt;br /&gt;
* [http://www.stanford.edu/class/ee183/handouts_win2003/VerilogQuickRef.pdf Verilog Quick Reference]&lt;br /&gt;
* [http://www.fpga4fun.com/VerilogTips.html Verilog Tips and Tricks]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-398050.html Websites für Lernende]&lt;br /&gt;
* [http://www.pyroelectro.com/tutorials/verilog_intro/index.html An Introduction To Verilog] bei www.pyroelectro.com&lt;br /&gt;
&lt;br /&gt;
== VHDL ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V&#039;&#039;&#039;ery High Speed Integrated Circuit &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;D&#039;&#039;&#039;escription &#039;&#039;&#039;L&#039;&#039;&#039;anguage&lt;br /&gt;
&lt;br /&gt;
[[VHDL]] ist die in Europa vorwiegend verwendete Beschreibungssprache für digitale Schaltungen.&lt;br /&gt;
&lt;br /&gt;
* [[VHDL|FAQ, Kurzreferenzen, weitere Links]]&lt;br /&gt;
* [[VHDL_Schnipsel|kurze Beispiele]]&lt;br /&gt;
* [[Rechnen in VHDL]]&lt;br /&gt;
&lt;br /&gt;
== SystemC ==&lt;br /&gt;
[[SystemC]] ist im Gegensatz zu VHDL oder Verilog keine eigene Hardware-Beschreibungssprache sondern eine Klassenbibliothek für C++.&lt;br /&gt;
Mit SystemC ist es möglich Hardware abstrakt und auf der Register Transfer Ebene (RTL) zu beschreiben. Für eine Beschreibung auf RTL wurde ein VHDL ähnlicher Dialekt gebildet. Für SystemC gibt es zahlreiche Erweiterung wie zB. das Transaction-Level Modeling ([[TLM]]) mit dem es möglich ist komplette Protokolle nachzubilden, ohne sich Gedanken über die unteren Abstraktions Ebenen zu machen. Bisher ist es jedoch so, dass SystemC nicht ohne weiteres synthesefähig ist, dieses wird sich jedoch mittelfristig ändern. Schon jetzt ist es möglich mit highlevel Synthesen, C oder auch C++ Programme zu synthetisieren und diese auf einen FPGA zu programmieren.&lt;br /&gt;
&lt;br /&gt;
== VHDL-AMS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VHDL&#039;&#039;&#039; mit Erweiterungen für die &#039;&#039;&#039;A&#039;&#039;&#039;nalog/&#039;&#039;&#039;M&#039;&#039;&#039;ixed &#039;&#039;&#039;S&#039;&#039;&#039;ignal - Simulation. Diese Beschreibungssprache wird z.&amp;amp;nbsp;B. benutzt, um elektrodynamische und mechanische Modelle wie Bremsen, Motoren und Ähnliches in elektrische Schaltungssimulationen zu integrieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* Hiesiger thread: http://www.mikrocontroller.net/forum/read-9-358956.html&lt;br /&gt;
* http://www.syssim.ecs.soton.ac.uk/&lt;br /&gt;
* http://www.vhdl-ams.org/Tools/tools.html&lt;br /&gt;
* VHDL-AMS simulator (SEAMS), Version 1.1c (23 March 99): http://www.ececs.uc.edu/~dpl/distribution/packages/packages.html&lt;br /&gt;
* SMASH: http://www.dolphin-integration.com/medal/smash/smash_overview.html&lt;br /&gt;
* Simplorer oder hAMSter: http://www.ansoft.com/about/academics/simplorer_sv/index.cfm&lt;br /&gt;
* Linkliste: http://www.vlsi.informatik.tu-darmstadt.de/staff/klupsch/steffen-vhdlams_links.html&lt;br /&gt;
&lt;br /&gt;
=== Bücher ===&lt;br /&gt;
* VHDL-AMS. Mit CD. Anwendungen und industrieller Einsatz (Broschiert) von Yannick Herve, ISBN: 3486577875, 34,80 EUR, März 2006&lt;br /&gt;
&lt;br /&gt;
== Sonstige ==&lt;br /&gt;
* CUPL: Zu ABEL verwandte Sprache, wird von Atmel noch als WinCUPL für Atmel-CPLDs kostenlos bereitgestellt, aber nicht mehr gepflegt. (Der Texteditor stürzt beim Speichern ab und beendet das Programm - Abhilfe: Wordpad o.ä. benutzen)&lt;br /&gt;
* GHDL: Genrad&#039;s hardware description langugage, eine boolsche Sprache zur Beschreibung von [[GAL]]s und [[PAL]]s.&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co| ]]&lt;br /&gt;
[[Kategorie:Programmiersprachen]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59213</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59213"/>
		<updated>2011-08-04T10:58:20Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Weblinks */ spaces&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt.&lt;br /&gt;
&lt;br /&gt;
=== Unipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
=== Bipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
&lt;br /&gt;
Der Anker (Innenläufer) kann z.&amp;amp;nbsp;B. aus einem gezahnten Permanentmagneten bestehen. Kohlebürsten oder Schleifringe braucht der Motor nicht. Es gibt auch noch andere Ausführungen.&lt;br /&gt;
&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn die Sollvorgabe vom Motor nicht erreicht wird und der Motor dem Drehfeld nicht folgen kann.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
====Häufigster Fehler====&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
====Tipps zur Rampe====&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben. Damit ergibt sich ein beschleunigter Zeitverlauf.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59212</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59212"/>
		<updated>2011-08-04T10:57:37Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Tipps zur Rampe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt.&lt;br /&gt;
&lt;br /&gt;
=== Unipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
=== Bipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
&lt;br /&gt;
Der Anker (Innenläufer) kann z.&amp;amp;nbsp;B. aus einem gezahnten Permanentmagneten bestehen. Kohlebürsten oder Schleifringe braucht der Motor nicht. Es gibt auch noch andere Ausführungen.&lt;br /&gt;
&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn die Sollvorgabe vom Motor nicht erreicht wird und der Motor dem Drehfeld nicht folgen kann.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
====Häufigster Fehler====&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
====Tipps zur Rampe====&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben. Damit ergibt sich ein beschleunigter Zeitverlauf.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59211</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59211"/>
		<updated>2011-08-04T10:57:03Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Häufigster Fehler */ einrücken&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt.&lt;br /&gt;
&lt;br /&gt;
=== Unipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
=== Bipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
&lt;br /&gt;
Der Anker (Innenläufer) kann z.&amp;amp;nbsp;B. aus einem gezahnten Permanentmagneten bestehen. Kohlebürsten oder Schleifringe braucht der Motor nicht. Es gibt auch noch andere Ausführungen.&lt;br /&gt;
&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn die Sollvorgabe vom Motor nicht erreicht wird und der Motor dem Drehfeld nicht folgen kann.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
====Häufigster Fehler====&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
===Tipps zur Rampe===&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59210</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59210"/>
		<updated>2011-08-04T10:56:08Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Weblinks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt.&lt;br /&gt;
&lt;br /&gt;
=== Unipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
=== Bipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
&lt;br /&gt;
Der Anker (Innenläufer) kann z.&amp;amp;nbsp;B. aus einem gezahnten Permanentmagneten bestehen. Kohlebürsten oder Schleifringe braucht der Motor nicht. Es gibt auch noch andere Ausführungen.&lt;br /&gt;
&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn die Sollvorgabe vom Motor nicht erreicht wird und der Motor dem Drehfeld nicht folgen kann.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
===Häufigster Fehler===&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
===Tipps zur Rampe===&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59209</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59209"/>
		<updated>2011-08-04T10:55:52Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Beschleunigungsrampen richtig wählen und berechnen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt.&lt;br /&gt;
&lt;br /&gt;
=== Unipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
=== Bipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
&lt;br /&gt;
Der Anker (Innenläufer) kann z.&amp;amp;nbsp;B. aus einem gezahnten Permanentmagneten bestehen. Kohlebürsten oder Schleifringe braucht der Motor nicht. Es gibt auch noch andere Ausführungen.&lt;br /&gt;
&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn die Sollvorgabe vom Motor nicht erreicht wird und der Motor dem Drehfeld nicht folgen kann.&lt;br /&gt;
&lt;br /&gt;
===Beschleunigungsrampen richtig wählen und berechnen===&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
===Häufigster Fehler===&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
===Tipps zur Rampe===&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59208</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59208"/>
		<updated>2011-08-04T10:55:38Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Alternative Stellantriebe */ nach unten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt.&lt;br /&gt;
&lt;br /&gt;
=== Unipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
=== Bipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
&lt;br /&gt;
Der Anker (Innenläufer) kann z.&amp;amp;nbsp;B. aus einem gezahnten Permanentmagneten bestehen. Kohlebürsten oder Schleifringe braucht der Motor nicht. Es gibt auch noch andere Ausführungen.&lt;br /&gt;
&lt;br /&gt;
=== Schrittverlust ===&lt;br /&gt;
Das Hauptziel einer sinnvollen Ansteuerung ist neben dem schnellen Erreichen der Endposition bei möglichst geringem Stromaufwand die Vermeidung des so genannten Schrittverlustes, der auftritt, wenn die Sollvorgabe vom Motor nicht erreicht wird und der Motor dem Drehfeld nicht folgen kann.&lt;br /&gt;
&lt;br /&gt;
==Beschleunigungsrampen richtig wählen und berechnen==&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
===Häufigster Fehler===&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
===Tipps zur Rampe===&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59207</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59207"/>
		<updated>2011-08-04T10:53:05Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Weblinks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt.&lt;br /&gt;
&lt;br /&gt;
=== Unipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
=== Bipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
&lt;br /&gt;
Der Anker (Innenläufer) kann z.&amp;amp;nbsp;B. aus einem gezahnten Permanentmagneten bestehen. Kohlebürsten oder Schleifringe braucht der Motor nicht. Es gibt auch noch andere Ausführungen.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
==Beschleunigungsrampen richtig wählen und berechnen==&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
===Häufigster Fehler===&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
===Tipps zur Rampe===&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59206</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59206"/>
		<updated>2011-08-04T10:52:48Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Weblinks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt.&lt;br /&gt;
&lt;br /&gt;
=== Unipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
=== Bipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
&lt;br /&gt;
Der Anker (Innenläufer) kann z.&amp;amp;nbsp;B. aus einem gezahnten Permanentmagneten bestehen. Kohlebürsten oder Schleifringe braucht der Motor nicht. Es gibt auch noch andere Ausführungen.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
==Beschleunigungsrampen richtig wählen und berechnen==&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
===Häufigster Fehler===&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
===Tipps zur Rampe===&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-113751.html#new Bipolare Schrittmotoren] Forumsbeitrag zum Thema&lt;br /&gt;
* [[Schrittmotor-Controller (Stepper)]] Mikrocontrollerprojekt für die Anwendung von (unipolaren) Schrittmotoren als Strahlschalter&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Schrittmotoren Ausführlicher Grundlagenartikel auf roboternetz.de]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Folgende 2 Beiträge beziehen sich auf http://www.mikrocontroller.net/forum/read-1-309923.html?reload=yes#310455&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59205</id>
		<title>Schrittmotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schrittmotoren&amp;diff=59205"/>
		<updated>2011-08-04T10:52:12Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Links */ links nach unten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Schrittmotoren eignen sich als Stellmotoren. Sie können eine vorherbestimmte Anzahl von Schritten drehen und dann stehen bleiben. Ein Positionsgeber für die Rückmeldung, ob die gewünschte Position erreicht ist wird nicht zwingend benötigt. Einsatzgebiete sind Robotik und Stellantriebe. Man findet sie auch in alten 5,25 Zöllern (Floppy-Laufwerken), in sehr alten Festplatten, in Faxgeräten, Druckern und Plottern. Die größeren Motoren erreichen teils sehr hohe Drehmomente, die ein Untersetzungsgetriebe unnötig machen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei grundlegende Typen von Schrittmotoren. Unipolare und bipolare Schrittmotoren. Die einfachsten Typen haben zwei getrennte Wicklungen, auch Phasen genannt.&lt;br /&gt;
&lt;br /&gt;
=== Unipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Unipolare Schrittmotoren haben Wicklungen mit Mittelanzapfungen. Die Mittelanzapfungen sind mit der Versorgungsspannung verbunden, die Spulenendanschlüsse über Leistungstransistoren auf Masse. Durch das Einschalten der Transistoren kann man die Spulen jeweils zur Hälfte mit Strom durchfluten.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* einfache Ansteuerung durch Transistoren (Low Side Driver)&lt;br /&gt;
* kann auch wie ein bipolarer Schrittmotor angesteuert werden, erreicht dann aber nicht ganz das Drehmoment eines vergleichbaren Bipolartyps&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* veringertes Drehmoment, da immer nur eine halbe Spule vom Strom durchflossen ist&lt;br /&gt;
&lt;br /&gt;
=== Bipolare Schrittmotoren ===&lt;br /&gt;
&lt;br /&gt;
Bipolare Schrittmotoren haben einfache Wicklungen. Die Spulen werden über H-Brücken angesteuert, um sie umpolen zu können. Dadurch fliesst der Strom immer durch die ganzen Spulen.&lt;br /&gt;
&lt;br /&gt;
Vorteil&lt;br /&gt;
* hohes Drehmoment&lt;br /&gt;
&lt;br /&gt;
Nachteil&lt;br /&gt;
* erhöhter Ansteuerungsaufwand durch H-Brücken&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung ==&lt;br /&gt;
&lt;br /&gt;
Es ist etwas Logik und ein Leistungstreiber nötig, damit sich ein Schrittmotor in Bewegung setzt. Bekannteste Vertreter sind die ICs L297 (Ansteuerlogik) und L293/L298 (2fache H-Brücke). Alternativ zur Kombination aus L297/L298 gibt es auch leistungsfähige DMOS ICs wie z.B. [http://www.allegromicro.com/en/products/part_numbers/4988/4988.pdf| Allegromicro A4988] &lt;br /&gt;
&lt;br /&gt;
Der Anker (Innenläufer) kann z.&amp;amp;nbsp;B. aus einem gezahnten Permanentmagneten bestehen. Kohlebürsten oder Schleifringe braucht der Motor nicht. Es gibt auch noch andere Ausführungen.&lt;br /&gt;
&lt;br /&gt;
== Alternative Stellantriebe ==&lt;br /&gt;
&lt;br /&gt;
Eine preiswerte Alternative zu Schrittmotoren sind die [[Servo|Modellbau-Servos]], die es schon ab 5,- &amp;amp;#8364; gibt. Sie sind im Vergleich geradezu spielend einfach auch von µC anzusteuern und ermöglichen das exakte Anfahren bestimmter (speicherbarer) Winkel. Da sie nicht den Schrittmotor-typischen Schlupf haben, der gerne beim Anfahren unter mechanischer Last auftritt, eignen sie sich auch gut für größere Kräfte. Das integrierte Getriebe und die Stellautomatik blockieren die angefahrene Position, was bei kleineren Schrittmotoren mitunter problematischer ist. Für höhere Genauigkeit sollte man sogenannte digitale Servos nehmen. Eine Sonderform sind die Servowinden, mit denen man auch mehrere Umdrehungen erreichen kann. (&amp;quot;Segelwinden&amp;quot; bei Modellsegelbooten).&lt;br /&gt;
&lt;br /&gt;
==Beschleunigungsrampen richtig wählen und berechnen==&lt;br /&gt;
Dazu ein kurzer Ausflug zu meinen ersten Schrittmotor-Untersuchungen:&amp;lt;br&amp;gt;&lt;br /&gt;
In einem Matrix-Nadeldrucker der stabilen Bauart (1980: ca. 70 kg) wird der Druckkopf mittels Stepper und Zahnriemen angetrieben. Auf der Welle des Motors sitzt ein Drehgeber (Zahnrad mit Hallsensor). Dieser gibt zum Einen den Takt für die Nadeln, zum Anderen den Zeitpunkt für den nächsten Schritt vor. Das ist ideal, denn der neue Schritt wird im günstigsten Moment ausgeführt und der Motor beschleunigt mit seiner vollen Leistung, auch bei dynamischer Belastung. Der Drehgeber ist natürlich zusätzlicher Aufwand, den man gerne einsparen wollte. Später wurden typische Beschleunigungskurven aufgezeichnet und in SW nachgebildet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Einfache Rampen wie lineares Dekrementieren der Periode von Schritt zu Schritt sind bestenfalls für kleine Beschleunigungen von sagen wir mal 1-2kHz ausreichend. Will man auf 5-8 kHz drehen, muss vieles bedacht werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. Das größte Manko vorneweg: das sinkende Drehmoment bei hoher Drehzahl bedingt durch den Abfall der Stromanstiegsgeschwindigkeit und durch steigende Verluste in Eisen und Wicklung (Wirbelstrom).&amp;lt;br&amp;gt;&lt;br /&gt;
d.h. die Kurve muss oben flacher verlaufen, da weniger Kraft zum Beschleunigen zur Verfügung steht.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2. Trotzdem im unteren Drehzahlbereich viel Kraft zur Verfügung steht, ist es aus dynamisch-mechanischen Überlegungen manchmal nicht wünschenswert, voll loszubeschleunigen: Eine plötzlich einsetzende oder ausbleibende Kraft (Ruck) kann mechanische Resonanzen in der restlichen Mechanik (Getriebe, Motoraufhängung, Rahmen...) auslösen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wünschenswert ist ein sin(0..2pi) -förmiger Verlauf der Kraft, also der Beschleunigung. Da diese die erste Ableitung der Geschwindigkeit nach der Zeit ist, ist der Verlauf der Geschwindigkeit 1-cos(0..2pi) = 1+cos(pi..3pi)&amp;lt;br&amp;gt;&lt;br /&gt;
Nachteil: Maximale Beschleunigung in der Mitte 55% höher als bei linear.&amp;lt;br&amp;gt;&lt;br /&gt;
Kompromiss: Quadratische Rampe (Beschleunigung steigt linear an): 33% höheres Drehmoment erforderlich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dazu sehr anschauliche Beschreibungen finden sich hier:&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/09191704.pdf (2,28MB) S.30/116&amp;lt;br&amp;gt;&lt;br /&gt;
http://corporate.sew-eurodrive.com/download/pdf/11220201.pdf (2,68MB) S.37-51/72&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Atmel bietet für Steppermotoren eine Application Note (AVR446) und ein entsprechendes Demoprogramm für lineare Rampen:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.atmel.com/products/avr/mc/default.asp?family_id=607&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Den fertigen Funktionen kann die Beschleunigung, Verlangsamung, gewünschte Geschwindigkeit und Anzahl der zu fahrenden Schritte übergeben werden. Es werden automatisch die Rampen berechnet und die Timersteuerung für 16-bit Timer berechnet.&lt;br /&gt;
Das Programm ist sehr ausführlich dokumentiert (u.a. mit Doxygen) und kann fast komplett in eigene Applikationen übernommen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Achtung:&amp;lt;/b&amp;gt; Das Programm ist für den IAR-Compiler und muss ggf. leicht abgeändert werden.&lt;br /&gt;
&lt;br /&gt;
===Häufigster Fehler===&lt;br /&gt;
&lt;br /&gt;
Die Rampe wird unter der Prämisse erstellt, die Zeit zwischen den Einträgen sei konstant, man könne also die linear berechneten Frequenz- oder Timerwerte einfach so eintragen. DEM IST NICHT SO. Die Mitte der Liste ist bei Weitem nicht nach der halben Rampenzeit erreicht, da Schritte am Anfang wesentlich langsamer ausgeführt werden. Die Liste muss bei niedrigen Geschwindigkeiten grobe, bei hohen Geschwindigkeiten feine Abstufungen haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Richtig&amp;lt;/b&amp;gt; ist: nach jedem Step die &amp;lt;b&amp;gt;Zeit seit Beschleunigungsbeginn&amp;lt;/b&amp;gt; (einfach die Timer-Werte aufaddieren), daraus die &amp;lt;b&amp;gt;gewünschte Frequenz&amp;lt;/b&amp;gt; und daraus den benötigten &amp;lt;b&amp;gt;Timer-Wert&amp;lt;/b&amp;gt; berechnen.&lt;br /&gt;
&lt;br /&gt;
===Tipps zur Rampe===&lt;br /&gt;
&lt;br /&gt;
Eine einfache Methode ist es, kontinuierlich steigende Werte auf die Sollfrequenz zu geben.&lt;br /&gt;
&lt;br /&gt;
==Treibermodule==&lt;br /&gt;
&lt;br /&gt;
===Oriental Motor: Vexta AlphaStep ASD16AC und ASD20AC (230 VAC -&amp;gt; 324 VDC, Preisklasse 220-700)===&lt;br /&gt;
&lt;br /&gt;
* Vorteile&lt;br /&gt;
**verhält sich wie ein Servo, regelt Schlupf und auch statische Laständerungen aus&lt;br /&gt;
** neue AlphaStepPlus sind frei programmierbar; ist extrem gutmütig, läuft ohne mechanische Last auch mal mit 50kHz (!) Schrittfrequenz = 6000 U/Min&lt;br /&gt;
** Drehmomentverlauf über Drehzahl sehr gut wegen hoher Spannung&lt;br /&gt;
** Opto-trennung&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** 500, 1000, 5000 oder 10000 Schritte pro Umdrehung einstellbar&lt;br /&gt;
** hoher Wirkungsgrad&lt;br /&gt;
** Strom in 16 Stufen einstellbar&lt;br /&gt;
&lt;br /&gt;
*Nachteile&lt;br /&gt;
**passender Motor (Preis~100-200) mit Resolver nötig&lt;br /&gt;
**eingebauter v-Filter kann zwar beschleunigen, aber nicht abbremsen, das müßte er ja vorher wissen, leider macht er deshalb zu viel gemachte Schritte nicht zurück -&amp;gt; Rampen müssen doch selbst programmiert werden&lt;br /&gt;
**teuer&lt;br /&gt;
**Motorspannung netzgekoppelt -&amp;gt; VDE&lt;br /&gt;
&lt;br /&gt;
===RTA Deutschland / Italy: GMD03, HGD06 (32-85V, Preisklasse 140-180)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**sehr günstig&lt;br /&gt;
**wenig EMV-Probleme&lt;br /&gt;
** kann auch 8tel-Schritt&lt;br /&gt;
** HGD-Ein-und Ausgänge über Optokoppler&lt;br /&gt;
** automatische Ruhe-Stromabsenkung&lt;br /&gt;
** Enable-Eingang&lt;br /&gt;
** Error-Ausgang&lt;br /&gt;
** Strom in 8 Stufen einstellbar&lt;br /&gt;
*Nachteile&lt;br /&gt;
**nur die blanke Platine mit Kühlkörper, ohne Gehäuse, gibt es vermutlich als Zubehör)&lt;br /&gt;
&lt;br /&gt;
===IMS IB104, IB106, IB110 (Preisklasse 160-300)===&lt;br /&gt;
&lt;br /&gt;
*Vorteile&lt;br /&gt;
**mechanisch geschickt gelöst&lt;br /&gt;
**Digitaleingänge opto-isoliert&lt;br /&gt;
*Nachteile&lt;br /&gt;
**analoger StromSet nicht galvanisch getrennt&lt;br /&gt;
**schlechte EMV&lt;br /&gt;
**weder home noch reset des eingebauten L297 sind herausgeführt, sodass man z.&amp;amp;nbsp;B. zum Umschalten in den Wave-Mode nicht weiß, ob er in einem geraden oder ungeraden Schritt ist&lt;br /&gt;
**Ruhe-Verlustleistung zu hoch (bei 60V 150mA 9W, Linearregler)&lt;br /&gt;
**teurer als RTA&lt;br /&gt;
**IB106 und IB110 wesentlich teurer als IB104, trotzdem nur ein paar Bauteile andere Werte haben&lt;br /&gt;
&lt;br /&gt;
=== Anregungen ===&lt;br /&gt;
&lt;br /&gt;
*Hohe Versorgungsspannung erforderlich&lt;br /&gt;
*Abbremsrampe ist schneller möglich wg. mechanischer Verluste (Reibung).&lt;br /&gt;
*Besonderheiten der Last (Drehmomentverlauf über Drehzahl) beachten.&lt;br /&gt;
*Startfrequenz knapp oberhalb der Hauptresonanzfrequenz. Nicht so hoch wie es möglich wäre, wg. Ruck beim Starten / Stoppen.&lt;br /&gt;
*Effekte bei Resonanz: kein Drehmoment, sogar Rückwärtslauf.&lt;br /&gt;
*Leistungsverbrauch sehr wohl lastabhängig.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/schrittmotor_animation.html Schrittmotor - Animation] - Onlinetool zu Darstellung verschiedener Ansteuerungsarten von Nanotec.de (Flash erforderlich)&lt;br /&gt;
&lt;br /&gt;
* [http://de.nanotec.com/assistant.php Motor-Assistent] - Onlinetool zu Berechnung von Motorkennzahlen anhand von Drehzahl und Drehmoment von Nanotec.de .&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf Microchip AN907: Stepping Motors Fundamentals] - Gute und allgemeine Einführung zum Thema Schrittmotoren.&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=55994</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=55994"/>
		<updated>2011-03-23T12:46:55Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Altera DE2-11 - Development and Education Board V3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FPGA ist die Abkürzung für &amp;quot;&#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
=== Grundelemente  ===&lt;br /&gt;
&lt;br /&gt;
Ein FPGA besteht, ähnlich wie ein [[CPLD]], aus vielen Logikelementen, hauptsächlich [[FlipFlop]]s (FF) und davor geschalteten Logikelementen. Diese Logikelemente sind entweder Verschaltungen verschiedener Logikgatter (Actel) oder aber kleine LUTs (LUT = Lookup-Table), die über elektronische &amp;quot;Schalter&amp;quot; entsprechend der vom Entwickler gewünschten Funktion miteinander verknüpft werden können.&lt;br /&gt;
&lt;br /&gt;
Eine &#039;&#039;&#039;LUT&#039;&#039;&#039; kann eine beliebige kombinatorische Funktion (NAND, XOR, AND, Multiplexer etc.) aus den Eingangssignalen realisieren. Die Anzahl der Eingangssignale pro LUT ist vom FPGA abhängig und liegt meist zwischen 4 und 6. Für Funktionen die mehr Eingänge erfordern als eine einzige LUT besitzt (hohes Fan-In), werden mehrere LUTs direkt miteinander verschaltet. Die [[FlipFlop]]s dienen dazu, Signalwerte zwischenzuspeichern, um sie im nächsten Takt weiterverarbeiten zu können. Das Verhältnis zwischen der Anzahl der LUTs und der Anzahl der Flip-Flops ist meist 1:1. Aktuelle FPGAs bestehen aus bis zu einigen zehntausend Logikelementen.&lt;br /&gt;
&lt;br /&gt;
Die logischen Schalter und Speicher sind in den meisten FPGAs durch [[Speicher#SRAM | SRAM]]-Speicherzellen realisiert, welche beim Bootprozess passend geladen werden. Das Laden dieser Konfigurationsdaten bzw. Verknüpfungsregeln geschieht dabei in der Regel aus einem speziellen [[Speicher#Flash | Flash-ROM]]-Baustein heraus. Es kann aber auch ein Mikrocontroller benutzt werden. Die meisten FPGAs bieten daher für diesen Konfigurationsvorgang mehrere Modi an (seriell, parallel, Master/Slave). Da die SRAM-Zellen ihren Inhalt beim Abschalten der Versorgungsspannung verlieren, muss ein SRAM-basierter FPGA bei jedem Einschalten neu konfiguriert werden. Daher benötigt ein solcher FPGA einige Millisekunden bis zur Betriebsbereitschaft.&lt;br /&gt;
&lt;br /&gt;
Eine FPGA-Familie beinhaltet Typen mit unterschiedlicher Anzahl und Komplexität von Logikzellen. So enthält ein Spartan3-1000 ca. 2,5 mal so viel Logik (FF, LUTs) wie ein Spartan3-400.  &lt;br /&gt;
&lt;br /&gt;
FPGAs mit nichtflüchtigem Speicher basieren auf [[Speicher#EEPROM | EEPROM]]-, [[Speicher#Flash | Flash]]-Speicher (einige Familien von Lattice und Actel) oder AntiFuse- Technologie (Actel). Die sogenannten AntiFuse FPGAs sind nur einmalig programmierbar.&lt;br /&gt;
&lt;br /&gt;
=== I/O Anschlüsse ===&lt;br /&gt;
&lt;br /&gt;
FPGAs unterstützen als universal einsetzbare Digital-ICs eine Vielzahl von Signalstandards. Üblich sind verschiedene TTL-Pegel (5V, 3,3V, 2,5V), differentielle Signalstandards (LVDS, GTL) und im Hochpreisbereich serielle Hochgeschwindigkeitsstandards mit bis zu 28 Gbit/s. Oftmals sind weitere Eigenschaften wie Treiberstärke und Flankensteilheit für jeden benutzerdefinierbaren Anschluss (User-IO) einstellbar. Meist sind die Pins zu Bänken mit gleichem I/O Standard zusammengefasst. Innerhalb einer solchen Bank arbeiten alle Pins im gleichen I/O Standard und mit der selben I/O Spannung.&lt;br /&gt;
&lt;br /&gt;
Bei komplexeren FPGAs sind die Ein- und Ausgänge mit Delaygliedern versehen, die ein Anpassen des Timings bei Bussen wie z.B. schnellen Speichern ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Ebenso können FPGA-interne Pull-Up und Pull-Down-Widerstände zugeschaltet werden, [[Wellenwiderstand | Terminierung]] wird ebenfalls unterstützt. Zudem befinden sich hinter vielen IO-Pads sog. [[Boundary_scan| Boundary Scan]] Zellen.&lt;br /&gt;
&lt;br /&gt;
Das I/O Verhalten wird zusammen mit vielen anderen Parametern in einer Datei festgelegt (Xilinx *.ucf, Altera *.acf, Lattice *.lpf). Alternativ können diese auch als Syntheseoption im Kommentarfeld des [[Verilog]]/[[VHDL]] Codes mit angegeben werden.&lt;br /&gt;
&lt;br /&gt;
[[Ausgangsstufen Logik-ICs | Tristatebuffer]] werden implizit über VHDL definiert, indem einem Ausgang zeitabhängig der Zustand &amp;quot;Z&amp;quot; zugewiesen wird. Alternativ kann er explizit als Komponente eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
Einige Pins übernehmen besondere Funktionen und sind somit vom Anwender nicht uneingeschränkt oder z.T. auch gar nicht nutzbar. Dazu zählen neben der [[JTAG]]-Schnittstelle z.&amp;amp;nbsp;B. die Pins zum Einlesen der Konfigurationsdaten. &lt;br /&gt;
&lt;br /&gt;
Ferner sind einige wenige Pins (2 - 8) zum Einspeisen des Taktes für das Design vorgesehen. Für schnelle Schaltungen müssen diese reservierten Pins benutzt werden. Sie enthalten kein Eingangs-FF und wirken direkt auf Taktnetze / PLLs.&lt;br /&gt;
&lt;br /&gt;
Die Hersteller bieten FPGAs mit gleicher Anzahl von Logikelementen in unterschiedlichen Gehäusen an. So kann der FPGA mit der passenden Anzahl von Pins eingesetzt werden. Das obere Ende markieren Chips mit über 1000 I/Os, die kleinsten bieten ca. 80 User-I/O. Oft werden nur [[IC-Geh%C3%A4useformen#BGA|BGA]] und [[IC-Geh%C3%A4useformen#QFP|QFP]] Gehäuse (bis ca. 240 Pins) angeboten.&lt;br /&gt;
&lt;br /&gt;
=== Komplexe Funktionsblöcke ===&lt;br /&gt;
&lt;br /&gt;
Neben den einfachen FlipFlops beinhalten FPGAs darüber hinaus komplexe Routing- und Speicherkonfigurationsoptionen innerhalb und außerhalb der logischen Elemente (LEs), die es gestatten, komplexe Schalt- und Rechenstrukturen aufzubauen. Für rechenintensive Designs, z.&amp;amp;nbsp;B. in der Signalverarbeitung, enthalten viele FPGAs &#039;&#039;&#039;Multiplizierer&#039;&#039;&#039; direkt auf dem Chip, die in einem einzigen Taktzyklus Multiplikationen durchführen können.&lt;br /&gt;
&lt;br /&gt;
Ferner haben FPGAs oft einen von den LEs getrennt verfügbaren &#039;&#039;&#039;RAM&#039;&#039;&#039;-Bereich integriert, der sich in vielfältiger Weise ansprechen lässt. So können damit Single- oder Dualport-RAMs mit variabler Bitbreite erzeugt werden. Üblich sind mehrere (4 - 30) kleinere Dualport [[Speicher#BRAM | RAM-Blöcke]] von 4 - 16 kbit. Einige Familien besitzen einen größeren internen RAM, andere spezielle FIFO-Blöcke.&lt;br /&gt;
&lt;br /&gt;
Zur Generierung spezieller Takte sind &#039;&#039;&#039;PLL&#039;&#039;&#039;s (Phase Locked Loop) auf dem FPGA integriert. Einige Hersteller setzen mit dem selben Ziel &#039;&#039;&#039;DLL&#039;&#039;&#039;s (Delay Locked Loop) ein. Mittels dieser Blöcke können aus einem Taktsignal weitere erzeugt werden. Typisch sind Taktverdopplung oder -vervielfachung. Ebenso kann der Takt geteilt werden oder ein Signal gleicher Frequenz, aber um eine halbe, viertel usw. Periode verschoben erzeugt werden. Typische Anwendungen sind die Ansteuerung von [[Speicher#DDR-RAM | DDR-RAMs]] oder die Kompensation von Laufzeitunterschieden zwischen Takt und mit diesem getakteten Steuersignalen. Meist sind 2 - 8 Taktnetzwerke und PLL/DLLs gleicher Anzahl integriert. Siehe auch [[Taktung FPGA/CPLD]].&lt;br /&gt;
&lt;br /&gt;
=== CPU im FPGA ===&lt;br /&gt;
&lt;br /&gt;
Programmierbare Prozessoren sind auch bei FPGA-Designs immer häufiger anzutreffen. CPUs sind zwar im Allgemeinen langsamer und weniger effizient, als eine vollständige Implementation aus Logik-Primitiven - aber bei komplexen Abläufen auch deutlich einfacher zu entwickeln. Insbesondere bei sequentiellen Aufgaben (Benutzerinterface, komplexe Steueraufgaben etc.) wird man gerne auf eine klassische CPU zurückgreifen. &lt;br /&gt;
&lt;br /&gt;
Manche FPGAs integrieren dazu einen oder mehrere Prozessorkerne (z. B. [[AVR]] bei Atmels FPSLIC oder PowerPC bei Xilinx&#039; Virtex) als &#039;&#039;HardCores&#039;&#039; auf einem IC.&lt;br /&gt;
&lt;br /&gt;
Auf der anderen Seite gibt es auch [[FPGA Soft Core | SoftCores]] (z. B. ARM-Cortex-M1 bei IGLOO-FPGA von [http://www.actel.com ACTEL]), Prozessorkerne die als Quelltext oder als vorsynthetisierte Netzliste vorliegen. In Abhängigkeit von den zur Verfügung stehenden Ressourcen können diese &#039;&#039;SoftCores&#039;&#039; beliebig instanziiert werden. Es gibt eine Vielzahl verschiedener &#039;&#039;SoftCores&#039;&#039;. &lt;br /&gt;
 &lt;br /&gt;
Teilweise kompatibel zu etablierten Prozessorarchitekturen (MIPS, SPARC, AVR), zum Teil optimiert auf die FPGAs einzelner Hersteller. Auch auf vergleichsweise &lt;br /&gt;
kleinen aktuellen FPGAs kann man problemlos eine 32bit-RISC-CPU integrieren.&lt;br /&gt;
&lt;br /&gt;
Als Programmspeicher werden die FPGA-internen [[Speicher#BRAM | RAM-Blöcke]] oder externe [[Speicher]] (SDRAM, SRAM) genutzt. Für einige Prozessorkerne stehen Hochsprachen wie C, C++ etc. zur Verfügung, andere werden in Assembler programmiert.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
=== Geschwindigkeit ===&lt;br /&gt;
&lt;br /&gt;
Die maximale „Geschwindigkeit“ eines FPGAs ist von der verwendeten Halbleitertechnologie (Prozess, Strukturgrößen), der internen Schaltungstopologie (Komplexität der LEs), Vorhandensein von harten Strukturen und vor allem vom Design abhängig. Dabei sind der sogenannte Datendurchsatz und die rein maximale Systemtaktfrequenz zu unterscheiden. Die erreichbare Taktfrequenz lässt sich ohne detaillierte Kenntnis des Designs nicht abschätzen, möglich sind je nach »Speed Grade« des ICs typischerweise Taktfrequenzen von 300-600 MHz für die Schaltgeschwindigkeit der reinen Logikelemente. Je nach der Anzahl und Komplexität der pro Takt durchzuführenden Operationen ergeben sich dann reale Systemtaktfrequenzen von meist 10-100 MHz für global operierende Einheiten und bis zu 300 MHz für schnelle lokale Module. Maßgeblich ist in wieweit das Design auf Fläche bzw. Geschwindigkeit hin optimiert und vom Tool synthetisiert wurde: Durch das Einbringen von zusätzlichen Registerstufen lassen sich z.&amp;amp;nbsp;B. zeitkritische Pfade entschärfen (Pipelining), sodass die Frequenz des Chips angehoben werden kann und somit der effektive Datendurchsatz erhöht wird, mit dem Nachteil der gesteigerten Latenz durch das Mehr an Takten. Der Datendurchsatz lässt sich darüber hinaus durch die Nutzung paralleler Architekturen verbessern.&lt;br /&gt;
&lt;br /&gt;
Die Systemfrequenz kann-, muss aber nicht der Frequenz entsprechen, mit der Daten zyklisch eingetaktet und verarbeitet werden; zudem sind Schaltungsteile mit unterschiedlichen Taktfrequenzen zu unterscheiden: Mit einem Systemtakt von 20 MHz lassen sich z.&amp;amp;nbsp;B. 18-Bit AD-Wandler auslesen, die so z.&amp;amp;nbsp;B. alle 1 µs neue Daten liefern, die verarbeitet werden müssen. Bei der Nutzung von 5 solchen Wandlern, die sequentiell verarbeitet werden, lägen 5 MHz Datenfrequenz vor. Für andere Schaltungsteile, die z.&amp;amp;nbsp;B. asynchron an die Peripherie andocken, sowie reine »state machines« können Schaltungsteile auf der 2-4 fachen Frequenz betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Generell sind Fläche und Geschwindigkeit konkurrierende Größen, zwischen denen ein Optimum gefunden werden muss. Für die preiswerten FPGA-Serien wie Spartan (Xilinx) und Cyclone (Altera) sind aufgrund technologischer Randbedingungen etwa 10-30% weniger Taktgeschwindigkeit bei gleichem Design zu erwarten als bei den großen Brüdern der Virtex- (Xilinx) bzw. Stratix-Familie (Altera). Es muss mit mehr Verbrauch an Logikelementen und Taktzyklen gerechnet werden (weniger Routingreserven, geringere Zahl von LUT-Eingängen, langsamere Logikelemente). Dafür sind sie sehr preiswert.&lt;br /&gt;
&lt;br /&gt;
Funktionstechnisch identische Chips werden oft in zwei oder mehr Geschwindigkeitsklassen (speed grades) angeboten, die sich meist durch Bauteilselektion bei der Produktion ergeben. Grob kann man ca. 5%-10% höhere Taktung zwischen zwei speed grades erwarten.&lt;br /&gt;
&lt;br /&gt;
== Hersteller ==&lt;br /&gt;
&lt;br /&gt;
Die größten Hersteller von FPGAs sind [http://www.altera.com Altera] und [http://www.xilinx.com Xilinx]. Weitere Hersteller sind [http://www.latticesemi.com/ Lattice], [http://www.actel.com Actel] und [http://www.atmel.com Atmel].&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau komplizierter, applikationsnaher Strukturen wird meist durch automatische Routing- und Synthesewerkzeuge erledigt, welche mit einer logischen, funktionellen Beschreibung der Architektur in einer Hardwarebeschreibungssprache wie z.&amp;amp;nbsp;B. VHDL &amp;quot;gefüttert&amp;quot; werden. Die Hardwarebeschreibung in [[VHDL]] gelingt ihrerseits z.&amp;amp;nbsp;B. mit VHDL-generierenden Werkzeugen, mittels derer zuvor Logikstrukturen, hardwarenahe Strukturen, Ablaufdiagramme und Zustandsautomaten formuliert wurden.&lt;br /&gt;
&lt;br /&gt;
Durch die Standardisierung der Architektur einerseits und die Entkoppplung von applikationsorientierter Beschreibung sowie Chip- und Hersteller-spezifischer Synthese andererseits, wird die Hardware quasi als Software gebaut. Dies wiederum schafft alle Optionen der Wiederverwendung und Austausch von &amp;quot;Hardwareteilen&amp;quot;. So stehen inzwischen komplett nutzbare Schaltungen wie serielle Bausteine, RAM-Controller und vieles mehr als Open Source zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsboards und Starterkits ==&lt;br /&gt;
=== Boards für Xilinx-FPGAs ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;sortable&amp;quot; id=&amp;quot;fpgaevalboards&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichn.&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! FPGA&lt;br /&gt;
! RAM (MByte)&lt;br /&gt;
! Flash (MByte)&lt;br /&gt;
! USB&lt;br /&gt;
! Ethernet&lt;br /&gt;
! RS-232&lt;br /&gt;
! µC&lt;br /&gt;
! Eingabe&lt;br /&gt;
! sonst.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.knjn.com/board_Xylo.html Xylo-L]&lt;br /&gt;
| 130&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 2.0&lt;br /&gt;
| 10base-T&lt;br /&gt;
| -&lt;br /&gt;
| LPC213x&lt;br /&gt;
| -&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.xilinx.com/s3estarter Spartan3e Starter Kit]&lt;br /&gt;
| 180&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| 64 MB DDR-SDRAM&lt;br /&gt;
| 16&lt;br /&gt;
| (JTAG)&lt;br /&gt;
| 10/100&lt;br /&gt;
| 2x&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 1 Drehgeber, 4 Schalter&lt;br /&gt;
| Coolrunner CPLD, LCD, 3-Bit VGA, PS/2&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.digilentinc.com/Products/Detail.cfm?Nav1=Products&amp;amp;Nav2=Programmable&amp;amp;Prod=S3BOARD Digilent Spartan-3]&lt;br /&gt;
| 100&lt;br /&gt;
| XC3S200/400/1000&lt;br /&gt;
| 1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 1x&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| VGA, PS/2, 7seg&lt;br /&gt;
|-&lt;br /&gt;
| [[Digilent Nexys]]&lt;br /&gt;
| 100&lt;br /&gt;
| XC3S200/400/1000&lt;br /&gt;
| 16&lt;br /&gt;
| 4&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| 7seg, Programmierung &amp;amp; Stromversorgung über USB&lt;br /&gt;
|-&lt;br /&gt;
| [[Digilent Nexys 2]]&lt;br /&gt;
| 121&lt;br /&gt;
| XC3S500E/1200E&lt;br /&gt;
| 16&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| 1x&lt;br /&gt;
| Cypress FX2 &lt;br /&gt;
| 4 Taster, 8 Schalter, 8 LEDs&lt;br /&gt;
| 4x7Seg, Programmierung &amp;amp; Stromversorgung über USB oder über Netzteil (5V-15V)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.uxibo.de Uxibo]&lt;br /&gt;
| 88&lt;br /&gt;
| XC2S200E&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 1.1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| VGA I/O, Videomux, dual PS/2, 7seg, Buzzer, IOs auf Pinleisten, dual-channel FTDI2232C, 48 MHz + prog. Oszillator, Programmierung &amp;amp; Stromversorgung über USB&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.fpgaz.com/wiki/doku.php?id=fpgaz:usbp:hw FPGAz USBP]&lt;br /&gt;
| $135&lt;br /&gt;
| XC3S400&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Cypress FX2&lt;br /&gt;
| 2 Taster&lt;br /&gt;
| 8 LEDs, I2C-EEPROM&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cesys.com/fpga_produktmatrix.html USBS6] Cesys &lt;br /&gt;
| 399&lt;br /&gt;
| XC6SLX16&lt;br /&gt;
| 128&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| FX-2&lt;br /&gt;
| Drehschalter, Leds.&lt;br /&gt;
|115 I/O signale, einstellbarer IO Standard, zweiter USB Port (FT232), WIN 32&amp;amp;64 Bit und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cesys.com/fpga/spartan/efm01_de.html EFM 01] Cesys &lt;br /&gt;
| 145&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| -&lt;br /&gt;
| 4&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| FX-2&lt;br /&gt;
| -&lt;br /&gt;
| 28 x 44mm, 50 I/O auf 2.54mm Stiftleiste, WIN und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://shop.trenz-electronic.de/catalog/product_info.php?products_id=456 Avnet Spartan 3A Evaluation Kit]&lt;br /&gt;
| 50&lt;br /&gt;
| XC3S400A&lt;br /&gt;
| -&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| WIN und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ct-lab.de FPGA-Karte aus dem c´t-Lab]&lt;br /&gt;
| 92&lt;br /&gt;
| XC3S400&lt;br /&gt;
| -&lt;br /&gt;
| SD-Kartenslot (Bitstream-File wird über µC ins FPGA geladen, Dateiauswahl via Systembus oder Panel oder fest einstellbar)&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| ATmega644&lt;br /&gt;
| optionales Bedienpanel mit LCD-Display, Drehgeber und Taster&lt;br /&gt;
| Bestandteil des Laborsystems c´t-Lab der Zeitschrift c´t.&lt;br /&gt;
VGA-Buchse, SD-Kartenslot (u.a. auch zum Laden des FPGA). Preis für FPGA-Platine mit verlöteten SMD-Bauteilen und Teilesatz. Optionale Erweiterungskarten mit schnellen DACs, Eingangskomparator, SRAM, Echtzeituhr, PS/2, RS232 (am FPGA). Optionaler JTAG-Adapter. &lt;br /&gt;
http://www.ct-lab.de, http://www.segor.de, http://thoralt.ehecht.com/phpbb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Raggedstone 1 - Spartan-3 Development PCI-Karte ====&lt;br /&gt;
* Spartan-3 FPGA FG456-Package&lt;br /&gt;
* 32 bit, 33 MHz, 3.3/5V PCI interface&lt;br /&gt;
* 4Mbit Flash Memory&lt;br /&gt;
* 16KBit serielles EEprom&lt;br /&gt;
* 4 x 7 Segment Anzeigen LED, abnehmbar&lt;br /&gt;
* LM75 Temperatursensor&lt;br /&gt;
* viele DIL-Header für eigene Erweiterungen, verschiedene werden auch durch Hersteller angeboten&lt;br /&gt;
* 2 Drucktaster&lt;br /&gt;
* Mit dem PCI-Interface kann bei entsprechender Programmierung des FPGA auf den PCI-Bus eines Hostrechners zugegriffen werden, Beispieldesign unter http://projects.varxec.net/raggedstone1&lt;br /&gt;
* Webseite: http://www.enterpoint.co.uk/moelbryn/raggedstone1.html&lt;br /&gt;
* Preis mit XC3S400 ca. €145,- (inkl MwSt.)&lt;br /&gt;
* Preis mit XC3S1500 ca. €255,-  (inkl. MwSt.)&lt;br /&gt;
&lt;br /&gt;
==== LiveDesign Evaluation Board von Altium ====&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Xilinx-Version direkt mit ISE Webpack nutzbar&lt;br /&gt;
* Xilinx XC3S1000-4FG456C, wahlweise aber auch mit Altera EP1C12F324C8 (s.u.)&lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung (Druckerport) sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs&lt;br /&gt;
* &#039;&#039;kein&#039;&#039; on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für allgemeine Zwecke &lt;br /&gt;
* Listenpreis $99,- Endpreis: ~150 Euro (inkl. MwSt. und Versand)&lt;br /&gt;
&lt;br /&gt;
==== Trenz-Electronic ====&lt;br /&gt;
http://www.trenz-electronic.de/products.html&lt;br /&gt;
* Kleines FPGA Board mit ucLinux und Virtex-II PowerPC, optional: ucLinux und Microblaze Softprozessor im Spartan-3 FPGA&lt;br /&gt;
* Pal/Gal kompatible FPGA und CPLD Module&lt;br /&gt;
* Spartan-3 FPGA Mikromodul mit 200K bis 1000K Systemgattern&lt;br /&gt;
* Spartan-3A DSP Mikromodul mit bis zu 34000K Systemgattern&lt;br /&gt;
&lt;br /&gt;
==== Simple-Solutions ====&lt;br /&gt;
http://www.simple-solutions.de/de/products/index.php&lt;br /&gt;
Mehrere Spartan3-FPGAs - Boards&lt;br /&gt;
&lt;br /&gt;
==== CESYS ====&lt;br /&gt;
http://www.cesys.com&lt;br /&gt;
&lt;br /&gt;
Cesys ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland.&lt;br /&gt;
&lt;br /&gt;
* Verschiedene FPGA boards mit USB, PCI und PCIe Schnittstellen im Lieferprogramm&lt;br /&gt;
* Je nach Ausführung mit Spartan-2/3/3E/6, Virtex2/2PRO/4&lt;br /&gt;
* verschiedene Speicherkonfigurationen (SO-DIMM, SRAM, SDRAM, DDR2)&lt;br /&gt;
* Auftragsentwicklungen nach Kundenwunsch möglich&lt;br /&gt;
&lt;br /&gt;
==== ZTEX ====&lt;br /&gt;
&lt;br /&gt;
http://www.ztex.de/&lt;br /&gt;
&lt;br /&gt;
Cesys ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland.&lt;br /&gt;
&lt;br /&gt;
* Xilinx Spartan 6 FPGA, High-Speed USB interface, Cypress CY7C68013A EZ-USB Microcontroller, 90 GPIO ports, 15 SIO ports, 64 MByte DDR SDRAM, microSD socket, EEPROM.&lt;br /&gt;
* Xilinx Spartan 3 XC3S400 FPGA, High-Speed (480 MBit/s) USB interface, Cypress CY7C68013A EZ-USB Microcontroller, 60 GPIO ports, 20 SIO ports, EEPROM und optionally mit Flash memory&lt;br /&gt;
* High-Speed (480 MBit/s) USB interface, Cypress CY7C68013A/14A EZ-USB Microcontroller, microSD socket mit bis zu 2GB Flash memory, 36 GPIO ports, 28 SIO ports, EEPROM und on-board Schaltregler&lt;br /&gt;
&lt;br /&gt;
* Open Source Firmware Kit zum Programmieren&lt;br /&gt;
&lt;br /&gt;
=== Boards für Altera-FPGAs ===&lt;br /&gt;
==== LiveDesign Evaluation Board von Altium ====&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* * Wahlweise mit Altera EP1C12F324C8 oder Xilinx XC3S1000-4FG456C&lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung (Druckerport) sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs&lt;br /&gt;
* &#039;&#039;kein&#039;&#039; on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für allgemeine Zwecke &lt;br /&gt;
* Endpreis: ~150 Euro (inkl. MwSt. und Versand)&lt;br /&gt;
&lt;br /&gt;
==== Terasic TREX C1 Multimedia Development Kit ====&lt;br /&gt;
* Altera EP1C6Q240C8 &amp;amp; EP1S Serial Configuration Device&lt;br /&gt;
* Built-in USB Blaster programming circuitry (JTAG and AS mode)&lt;br /&gt;
* 1 MiB Flash Memory &amp;amp; 8 MiB SDRAM (1M x 4 x 16)&lt;br /&gt;
* CF Card Socket, 16-bit CD-quality Audio DAC&lt;br /&gt;
* TV Encoder, VGA, RS-232, PS/2, and more&lt;br /&gt;
* Many reference designs and C++ applications&lt;br /&gt;
* [http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&amp;amp;CategoryNo=39&amp;amp;No=14 www.terasic.com.tw]&lt;br /&gt;
* fertiger Core eines CPC6128 (8-Bit Homecomputer von 1984) für dieses Board, inlusive Sourcecode (eigener Z80 in AHDL, mit 24MHz eingesetzt): [http://www.symbos.de/trex.htm http://www.symbos.de/trex.htm]&lt;br /&gt;
* Listenpreis $149,-&lt;br /&gt;
&lt;br /&gt;
==== Altera Cyclone II 2C20 ====&lt;br /&gt;
* Altera Cyclone II EP2C20F484C7N FPGA mit 20000 LEs&lt;br /&gt;
* USB-BlasterTM download cable (integriert)&lt;br /&gt;
* EPCS4 serial configuration Flash&lt;br /&gt;
* 8-Mbyte SDRAM, 512-Kb SRAM, 4-Mbyte flash &lt;br /&gt;
* externer SMA - Clock-Eingang&lt;br /&gt;
* 24-bit Audio coder/decoder (CODEC) &lt;br /&gt;
* 10 Schalter, 4 Druckknöpfe inkl Reset &lt;br /&gt;
* 4St. 7-Segmentanzeigen, 10 rote LEDs + 8 grüne LEDs&lt;br /&gt;
* VGA, RS-232, and PS/2 Stecker&lt;br /&gt;
* Zwei 40-pin expansion ports + SD/MMC socket&lt;br /&gt;
* USB-Kabel, externes Steckernetztteil, CD-Rom&lt;br /&gt;
* Reference designs&lt;br /&gt;
* Qartus II Web Edition + NIOS II Web Edition&lt;br /&gt;
* http://www.altera.com/products/devkits/altera/kit-cyc2-2C20N.html&lt;br /&gt;
* Listenpreis $150,-&lt;br /&gt;
&lt;br /&gt;
==== Hpe Mini AC II - Cyclone II board von Gleichmann Research ====&lt;br /&gt;
* Altera Cyclone II EP2C35 FPGA (speed grade 6)&lt;br /&gt;
* Mit reprogrammierbarem Flash zur automatischen FPGA-Konfiguration&lt;br /&gt;
* 25 pin SUB-D connector (parallel) für direktes FPGA-Programmieren&lt;br /&gt;
* RS232 (9 pin SUB-D) &lt;br /&gt;
* VGA (15 pin SUB-D) mit 64 möglichen Farben&lt;br /&gt;
* Ethernet 10/100 Mbit/s, full/half duplex&lt;br /&gt;
* 1 USB 2.0 compatible full-speed target connector&lt;br /&gt;
* 3 USB 2.0 compatible full-speed host connectors&lt;br /&gt;
* Santa Cruz connector mit 40 nutzbaren I/Os&lt;br /&gt;
* Audio interface (line-in and line-out) mit CODEC&lt;br /&gt;
* SODIMM144 Sockel für (SDRAM) 256MB&lt;br /&gt;
* SDRAM-Speichersockel mit nur 32-Bit angebunden, die Hälfte des Speichers bleibt nicht nutzbar&lt;br /&gt;
* 25 MHz oscillator&lt;br /&gt;
* Prototyping area, Lötfläche&lt;br /&gt;
* 8 LEDs, grün, blau, 3x4 key matrix, 4-bit DIP switch&lt;br /&gt;
* LCD connector, 2-character 7-segment display&lt;br /&gt;
* Single step Knopf und Reset Knopf&lt;br /&gt;
* Parallelportkabel für PC&lt;br /&gt;
* Beispieldesign, Testprogramme, Datenblätter&lt;br /&gt;
* LEON3-CPU Design inkl. Source Code, Quartus IDE, SnapGear Linux&lt;br /&gt;
* Nicht mehr im Programm - war ca 399,-&lt;br /&gt;
&lt;br /&gt;
==== Altera DE2 - Development and Education Board V2 ====&lt;br /&gt;
* Altera Cyclone II 2C35 FPGA mit 35000 LEs&lt;br /&gt;
* Altera Serial Configuration devices (EPCS16) für Cyclone II 2C35&lt;br /&gt;
* USB Blaster board zur Programmierung und User API&lt;br /&gt;
* 8 MB SDRAM, 4 MB Flash Memory, 512KB SRAM&lt;br /&gt;
* SD Card Sockel, RS-232, Ethernet, 10-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* Viele Besipiel mit Source Code wie TV, SD Music Player)&lt;br /&gt;
* [http://www.fh-wedel.de/fileadmin/mitarbeiter/bos/files/VHDL/VhdlEinfuehrung.pdf Kleines aber nettes Tutorial zum Altera DE2 Dev. Board]&lt;br /&gt;
* Listenpreis US $495,-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Altera DE2-115 - Development and Education Board V3 ====&lt;br /&gt;
* Altera Cyclone IV FPGA mit 115000 LEs&lt;br /&gt;
* Altera Serial Configuration device EPCS64&lt;br /&gt;
* USB Blaster zur Programmierung und für User API&lt;br /&gt;
* User-Applikations und Steuerungssoftware&lt;br /&gt;
* 64 MB SDRAM, 4 MB Flash Memory, 512KB SRAM&lt;br /&gt;
* SD Card Sockel, RS-232, 2x GB-Ethernet, &lt;br /&gt;
* 8-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* 18 Schalter, 4 Drucktasten, PS2-Maus-Anschluss&lt;br /&gt;
* 18 LEDs, 16x2-LCD-Display, 8 7-Segment-Anzeigen&lt;br /&gt;
* IR-Fernsteuerung&lt;br /&gt;
* HSMC-Stecker&lt;br /&gt;
* Viele Besipiel mit Source Code wie TV, SD Music Player, Audiorecorder&lt;br /&gt;
* Listenpreis US $595,- (academic = $395,-)&lt;br /&gt;
&lt;br /&gt;
==== Cyclone III embedded Development Kit====&lt;br /&gt;
* Altera Cyclone III EP3C25 FPGA&lt;br /&gt;
* 640x480 LCD Display mit touch screen function&lt;br /&gt;
* MiniSD-Card Sockel&lt;br /&gt;
* Audio Interface ADC CODEC&lt;br /&gt;
* 10/100 Mbit Fast Ethernet Schnittstelle&lt;br /&gt;
* FPGA-Konfiguration über USB&lt;br /&gt;
* NIOS II EVAL Lizenz&lt;br /&gt;
* IP LIB Altera&lt;br /&gt;
* Listenpreis US $495,-  über ALtera Webseite&lt;br /&gt;
* Bei EBV €349,- inkl. MwSt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NanoBoard-NB1 von Altium ====&lt;br /&gt;
* kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Unterstützt eine breite Palette von Ziel-FPGAs durch Aufsteckplatinen &lt;br /&gt;
* Altera Cyclone (EP1C12-Q240C7) Aufsteckplatine enthalten &lt;br /&gt;
* Xilinx Spartan IIE (XC2S300E-PQ208) im Lieferumfang enthalten &lt;br /&gt;
* Enthält Stromversorgung mit verschiedenen Steckern für unterschiedliche Konfigurationen &lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* NanoBoard-NB1 Reference-Handbuch zur Hardware &lt;br /&gt;
* Peripherie: LCD, LEDs, Dip-Schalter, Tastenblock, Summer, ADC/DAC, 256K x 8 RAM, 8 MiB Serial Flash RAM, on-board Serial Flash RAM für FPGA-Konfig.&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, CAN, VGA, I2C, IO Stecker für allg. Zwecke &lt;br /&gt;
* Upgradefähige NanoBoard Controller Firmware &lt;br /&gt;
* Stabiler NanoBard-Sockel&lt;br /&gt;
* Listenpreis €995,-&lt;br /&gt;
&lt;br /&gt;
=== Boards für Lattice-FPGAs ===&lt;br /&gt;
==== www.hardware-design.de ====&lt;br /&gt;
* bietet verschiedene einfache Boards mit Lattice-Bausteinen an&lt;br /&gt;
* FPGA-Board mit XP2-17/XP2-8/XP2-5 -&amp;gt; 113,- bis 101,- Euro&lt;br /&gt;
* CPLD-Boards u.a. mit MachXO640 -&amp;gt; 89,- Euro&lt;br /&gt;
&lt;br /&gt;
=== Debugging-Hilfen ===&lt;br /&gt;
Gerade beim [[Debugging]] größerer FPGA-Designs ist es oft notwendig, auf interne Signale und Busse zuzugreifen, die aus routing- oder Platzgründen nicht an Pins des FPGAs gelegt - und mit konventionellen Analysatoren beobachtet werden können. Nebst den einschlägigen Tools der Hersteller, welche Signal probing über JTAG gestatten (z.&amp;amp;nbsp;B. ChipsScope und SignalTap), werden in FPGAs oft mehr oder weniger komplexe [[Logic Analyzer]] integriert, welche die internen Signale in vielfältiger Weise aufzeichnen. Diese werden in Block-RAMs oder FIFOs gespeichert und durch externe Master ausgelesen. Hier kommen auf der Platine befindliche MCUs oder fremd zugreifende FPGAs / CPUs in Betracht, welche über unterschiedliche Kommunikationsverbindungen (seriell, parallel, LVDS) angeschlossen sind. Dazu werden in die FPGAs entsprechende Cores / Treiber eininstanziiert.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
====Proprietärer serieller Logic Analyzer ====&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist die direkte Instanziierung eines Blockrams als FIFO mit &amp;quot;breitem&amp;quot; Busanschluss: Linksseitig besitzt das FIFO eine Breite von z.&amp;amp;nbsp;B. 256 Bit (Xilinx-Rams lassen sich ohne weitere Umbeschaltung über den Wizzard mit bis zu 1024 Bits deklarieren und nutzen). Rechtsseitig einen 16- oder 32 Bit breiten Busanschluss für einen Prozessor bzw Parallelinterface oder einen 1 Bit breiten Anschluss für ein serielles streaming interface. Mit einem FiFo-enable können die zu sampelnden Zeiten (Busphasen) festgelegt werden, z.&amp;amp;nbsp;B. anhand eines Kriteriums wie die Erfüllung einer bestimmten mathematischen Bedingung, die man in VHDL formuliert, oder es wird einfach ein Trigger gesetzt. Solange das FiFo nicht voll ist, kann geschrieben werden, was durch die interne FiFo-Verwaltung selbst bereits komplett geregelt wird.&lt;br /&gt;
&lt;br /&gt;
Beim einfachen seriellen Logic Analyzer benötigt man nur noch einen kleinen Core, der permanent das FiFo liest, und den seriellen Overhead (Startbit, Stoppbit, Parity und gfs CRC) hinzufügt. Mit einem einfach Pegelwandler kann so ein PC direkt angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Auch denkbar ist die Anbindung an ein fremdes FPGA-board mit viel Speicher über (LV-)DS-Kommunikation. In komplexeren Systemen wird ein CAN- oder USB-Core eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Wenn mittels des Kriteriums nur ganz bestimmte kritische Phasen herausgesampelt werden (z.&amp;amp;nbsp;B. das Auftauchen eines bestimmten Rechenfehlers im FPGA) und so das Datenaufkommen je Zeiteinheit über längere Zeit betrachtet eher gering ist, kann bei geeignetem Datendurchsatz in Echtzeit dauerhaft mitprotokolliert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== BusProbe, der Debugging Core von abaxor engineering  ====&lt;br /&gt;
Mit der BusProbe kann der Entwickler den Signalfluss im FPGA-Design auch über einen längeren Zeitraum überwachen und am PC aufzeichnen. Der Core verarbeitet an jedem Eingang einen kompletten Bus. &lt;br /&gt;
&lt;br /&gt;
Die Daten werden gemultiplext zum PC geschickt und dort per Software demultiplext. Im PC erfolgt auch die Auswertung mit beliebigen Analyse-Tools.&lt;br /&gt;
&lt;br /&gt;
Gegenüber dem Betriebssystem verhält sich die BusProbe wie eine Festplatte, von der die Daten mit gewöhnlichen Zugriffen gelesen werden können.&lt;br /&gt;
&lt;br /&gt;
* Streaming der Daten zum PC mit mehr als 20 MByte/s&lt;br /&gt;
* keine Treiber im PC da Nutzung von Standardschnittstellen (USB oder IDE)&lt;br /&gt;
* Hot-Plugging&lt;br /&gt;
* Visualisierung mit beliebigen Programmen&lt;br /&gt;
* geringer Logikaufwand&lt;br /&gt;
&lt;br /&gt;
[http://www.abaxor.de/produkte.html abaxor.de-Webseite]&lt;br /&gt;
&lt;br /&gt;
==== open source Logikanalysator von sump.org====&lt;br /&gt;
Ein einfacher, übersichtlicher Logikanalysator findet sich auf sump.org. Er liegt im Quelltext vor wird mit ins Design einsynthetisiert. Als Speicher dient wahlweise SRAM oder internes RAM. Es können 32 Kanäle mit 100 MHz (oder weniger) gesampelt werden. Die Bediensoftware läuft platformunabhängig unter Java und benötigt eine serielle Schnittstelle (auch über USB-seriell Wandler) zum Core.&lt;br /&gt;
&lt;br /&gt;
[http://de.sump.org/projects/analyzer/ sump.org-Webseite]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Hardwarebeschreibungssprachen]]&lt;br /&gt;
* [[Reset für FPGA/CPLD]]&lt;br /&gt;
* [[Taktung FPGA/CPLD]]&lt;br /&gt;
* Projekt [[Audio-DSP mit Spartan 3-FPGA]]&lt;br /&gt;
* Projekt [[FPGA Lab]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.fpga4fun.com/index.html FPGA4Fun] - FPGA-Projekte, größtenteils mit Altera und Verilog&lt;br /&gt;
* [http://video.google.com/videoplay?docid=-4969729965240981475 Ein Vortrag, auf Englisch: General Purpose, Low Power Supercomputing Using Reconfiguration Logic]&lt;br /&gt;
* http://www.opencores.org - FPGA-Projekte, Opensource, jeder kann seine Eigenen einstellen und an anderen mitarbeiten. U.a. gibt es verschiedene CPUs für FPGAs.&lt;br /&gt;
* [http://members.optushome.com.au/jekent/FPGA.htm John&#039;s FPGA Page]&lt;br /&gt;
* [http://www.embedded.com/columns/whatsnew/197003073 More about designing with embedded FPGAs] by Bernard Cole, Embedded.com&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=55993</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=55993"/>
		<updated>2011-03-23T12:37:29Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Altera DE2 - Development and Education Board V3 */  C4!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FPGA ist die Abkürzung für &amp;quot;&#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
=== Grundelemente  ===&lt;br /&gt;
&lt;br /&gt;
Ein FPGA besteht, ähnlich wie ein [[CPLD]], aus vielen Logikelementen, hauptsächlich [[FlipFlop]]s (FF) und davor geschalteten Logikelementen. Diese Logikelemente sind entweder Verschaltungen verschiedener Logikgatter (Actel) oder aber kleine LUTs (LUT = Lookup-Table), die über elektronische &amp;quot;Schalter&amp;quot; entsprechend der vom Entwickler gewünschten Funktion miteinander verknüpft werden können.&lt;br /&gt;
&lt;br /&gt;
Eine &#039;&#039;&#039;LUT&#039;&#039;&#039; kann eine beliebige kombinatorische Funktion (NAND, XOR, AND, Multiplexer etc.) aus den Eingangssignalen realisieren. Die Anzahl der Eingangssignale pro LUT ist vom FPGA abhängig und liegt meist zwischen 4 und 6. Für Funktionen die mehr Eingänge erfordern als eine einzige LUT besitzt (hohes Fan-In), werden mehrere LUTs direkt miteinander verschaltet. Die [[FlipFlop]]s dienen dazu, Signalwerte zwischenzuspeichern, um sie im nächsten Takt weiterverarbeiten zu können. Das Verhältnis zwischen der Anzahl der LUTs und der Anzahl der Flip-Flops ist meist 1:1. Aktuelle FPGAs bestehen aus bis zu einigen zehntausend Logikelementen.&lt;br /&gt;
&lt;br /&gt;
Die logischen Schalter und Speicher sind in den meisten FPGAs durch [[Speicher#SRAM | SRAM]]-Speicherzellen realisiert, welche beim Bootprozess passend geladen werden. Das Laden dieser Konfigurationsdaten bzw. Verknüpfungsregeln geschieht dabei in der Regel aus einem speziellen [[Speicher#Flash | Flash-ROM]]-Baustein heraus. Es kann aber auch ein Mikrocontroller benutzt werden. Die meisten FPGAs bieten daher für diesen Konfigurationsvorgang mehrere Modi an (seriell, parallel, Master/Slave). Da die SRAM-Zellen ihren Inhalt beim Abschalten der Versorgungsspannung verlieren, muss ein SRAM-basierter FPGA bei jedem Einschalten neu konfiguriert werden. Daher benötigt ein solcher FPGA einige Millisekunden bis zur Betriebsbereitschaft.&lt;br /&gt;
&lt;br /&gt;
Eine FPGA-Familie beinhaltet Typen mit unterschiedlicher Anzahl und Komplexität von Logikzellen. So enthält ein Spartan3-1000 ca. 2,5 mal so viel Logik (FF, LUTs) wie ein Spartan3-400.  &lt;br /&gt;
&lt;br /&gt;
FPGAs mit nichtflüchtigem Speicher basieren auf [[Speicher#EEPROM | EEPROM]]-, [[Speicher#Flash | Flash]]-Speicher (einige Familien von Lattice und Actel) oder AntiFuse- Technologie (Actel). Die sogenannten AntiFuse FPGAs sind nur einmalig programmierbar.&lt;br /&gt;
&lt;br /&gt;
=== I/O Anschlüsse ===&lt;br /&gt;
&lt;br /&gt;
FPGAs unterstützen als universal einsetzbare Digital-ICs eine Vielzahl von Signalstandards. Üblich sind verschiedene TTL-Pegel (5V, 3,3V, 2,5V), differentielle Signalstandards (LVDS, GTL) und im Hochpreisbereich serielle Hochgeschwindigkeitsstandards mit bis zu 28 Gbit/s. Oftmals sind weitere Eigenschaften wie Treiberstärke und Flankensteilheit für jeden benutzerdefinierbaren Anschluss (User-IO) einstellbar. Meist sind die Pins zu Bänken mit gleichem I/O Standard zusammengefasst. Innerhalb einer solchen Bank arbeiten alle Pins im gleichen I/O Standard und mit der selben I/O Spannung.&lt;br /&gt;
&lt;br /&gt;
Bei komplexeren FPGAs sind die Ein- und Ausgänge mit Delaygliedern versehen, die ein Anpassen des Timings bei Bussen wie z.B. schnellen Speichern ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Ebenso können FPGA-interne Pull-Up und Pull-Down-Widerstände zugeschaltet werden, [[Wellenwiderstand | Terminierung]] wird ebenfalls unterstützt. Zudem befinden sich hinter vielen IO-Pads sog. [[Boundary_scan| Boundary Scan]] Zellen.&lt;br /&gt;
&lt;br /&gt;
Das I/O Verhalten wird zusammen mit vielen anderen Parametern in einer Datei festgelegt (Xilinx *.ucf, Altera *.acf, Lattice *.lpf). Alternativ können diese auch als Syntheseoption im Kommentarfeld des [[Verilog]]/[[VHDL]] Codes mit angegeben werden.&lt;br /&gt;
&lt;br /&gt;
[[Ausgangsstufen Logik-ICs | Tristatebuffer]] werden implizit über VHDL definiert, indem einem Ausgang zeitabhängig der Zustand &amp;quot;Z&amp;quot; zugewiesen wird. Alternativ kann er explizit als Komponente eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
Einige Pins übernehmen besondere Funktionen und sind somit vom Anwender nicht uneingeschränkt oder z.T. auch gar nicht nutzbar. Dazu zählen neben der [[JTAG]]-Schnittstelle z.&amp;amp;nbsp;B. die Pins zum Einlesen der Konfigurationsdaten. &lt;br /&gt;
&lt;br /&gt;
Ferner sind einige wenige Pins (2 - 8) zum Einspeisen des Taktes für das Design vorgesehen. Für schnelle Schaltungen müssen diese reservierten Pins benutzt werden. Sie enthalten kein Eingangs-FF und wirken direkt auf Taktnetze / PLLs.&lt;br /&gt;
&lt;br /&gt;
Die Hersteller bieten FPGAs mit gleicher Anzahl von Logikelementen in unterschiedlichen Gehäusen an. So kann der FPGA mit der passenden Anzahl von Pins eingesetzt werden. Das obere Ende markieren Chips mit über 1000 I/Os, die kleinsten bieten ca. 80 User-I/O. Oft werden nur [[IC-Geh%C3%A4useformen#BGA|BGA]] und [[IC-Geh%C3%A4useformen#QFP|QFP]] Gehäuse (bis ca. 240 Pins) angeboten.&lt;br /&gt;
&lt;br /&gt;
=== Komplexe Funktionsblöcke ===&lt;br /&gt;
&lt;br /&gt;
Neben den einfachen FlipFlops beinhalten FPGAs darüber hinaus komplexe Routing- und Speicherkonfigurationsoptionen innerhalb und außerhalb der logischen Elemente (LEs), die es gestatten, komplexe Schalt- und Rechenstrukturen aufzubauen. Für rechenintensive Designs, z.&amp;amp;nbsp;B. in der Signalverarbeitung, enthalten viele FPGAs &#039;&#039;&#039;Multiplizierer&#039;&#039;&#039; direkt auf dem Chip, die in einem einzigen Taktzyklus Multiplikationen durchführen können.&lt;br /&gt;
&lt;br /&gt;
Ferner haben FPGAs oft einen von den LEs getrennt verfügbaren &#039;&#039;&#039;RAM&#039;&#039;&#039;-Bereich integriert, der sich in vielfältiger Weise ansprechen lässt. So können damit Single- oder Dualport-RAMs mit variabler Bitbreite erzeugt werden. Üblich sind mehrere (4 - 30) kleinere Dualport [[Speicher#BRAM | RAM-Blöcke]] von 4 - 16 kbit. Einige Familien besitzen einen größeren internen RAM, andere spezielle FIFO-Blöcke.&lt;br /&gt;
&lt;br /&gt;
Zur Generierung spezieller Takte sind &#039;&#039;&#039;PLL&#039;&#039;&#039;s (Phase Locked Loop) auf dem FPGA integriert. Einige Hersteller setzen mit dem selben Ziel &#039;&#039;&#039;DLL&#039;&#039;&#039;s (Delay Locked Loop) ein. Mittels dieser Blöcke können aus einem Taktsignal weitere erzeugt werden. Typisch sind Taktverdopplung oder -vervielfachung. Ebenso kann der Takt geteilt werden oder ein Signal gleicher Frequenz, aber um eine halbe, viertel usw. Periode verschoben erzeugt werden. Typische Anwendungen sind die Ansteuerung von [[Speicher#DDR-RAM | DDR-RAMs]] oder die Kompensation von Laufzeitunterschieden zwischen Takt und mit diesem getakteten Steuersignalen. Meist sind 2 - 8 Taktnetzwerke und PLL/DLLs gleicher Anzahl integriert. Siehe auch [[Taktung FPGA/CPLD]].&lt;br /&gt;
&lt;br /&gt;
=== CPU im FPGA ===&lt;br /&gt;
&lt;br /&gt;
Programmierbare Prozessoren sind auch bei FPGA-Designs immer häufiger anzutreffen. CPUs sind zwar im Allgemeinen langsamer und weniger effizient, als eine vollständige Implementation aus Logik-Primitiven - aber bei komplexen Abläufen auch deutlich einfacher zu entwickeln. Insbesondere bei sequentiellen Aufgaben (Benutzerinterface, komplexe Steueraufgaben etc.) wird man gerne auf eine klassische CPU zurückgreifen. &lt;br /&gt;
&lt;br /&gt;
Manche FPGAs integrieren dazu einen oder mehrere Prozessorkerne (z. B. [[AVR]] bei Atmels FPSLIC oder PowerPC bei Xilinx&#039; Virtex) als &#039;&#039;HardCores&#039;&#039; auf einem IC.&lt;br /&gt;
&lt;br /&gt;
Auf der anderen Seite gibt es auch [[FPGA Soft Core | SoftCores]] (z. B. ARM-Cortex-M1 bei IGLOO-FPGA von [http://www.actel.com ACTEL]), Prozessorkerne die als Quelltext oder als vorsynthetisierte Netzliste vorliegen. In Abhängigkeit von den zur Verfügung stehenden Ressourcen können diese &#039;&#039;SoftCores&#039;&#039; beliebig instanziiert werden. Es gibt eine Vielzahl verschiedener &#039;&#039;SoftCores&#039;&#039;. &lt;br /&gt;
 &lt;br /&gt;
Teilweise kompatibel zu etablierten Prozessorarchitekturen (MIPS, SPARC, AVR), zum Teil optimiert auf die FPGAs einzelner Hersteller. Auch auf vergleichsweise &lt;br /&gt;
kleinen aktuellen FPGAs kann man problemlos eine 32bit-RISC-CPU integrieren.&lt;br /&gt;
&lt;br /&gt;
Als Programmspeicher werden die FPGA-internen [[Speicher#BRAM | RAM-Blöcke]] oder externe [[Speicher]] (SDRAM, SRAM) genutzt. Für einige Prozessorkerne stehen Hochsprachen wie C, C++ etc. zur Verfügung, andere werden in Assembler programmiert.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
=== Geschwindigkeit ===&lt;br /&gt;
&lt;br /&gt;
Die maximale „Geschwindigkeit“ eines FPGAs ist von der verwendeten Halbleitertechnologie (Prozess, Strukturgrößen), der internen Schaltungstopologie (Komplexität der LEs), Vorhandensein von harten Strukturen und vor allem vom Design abhängig. Dabei sind der sogenannte Datendurchsatz und die rein maximale Systemtaktfrequenz zu unterscheiden. Die erreichbare Taktfrequenz lässt sich ohne detaillierte Kenntnis des Designs nicht abschätzen, möglich sind je nach »Speed Grade« des ICs typischerweise Taktfrequenzen von 300-600 MHz für die Schaltgeschwindigkeit der reinen Logikelemente. Je nach der Anzahl und Komplexität der pro Takt durchzuführenden Operationen ergeben sich dann reale Systemtaktfrequenzen von meist 10-100 MHz für global operierende Einheiten und bis zu 300 MHz für schnelle lokale Module. Maßgeblich ist in wieweit das Design auf Fläche bzw. Geschwindigkeit hin optimiert und vom Tool synthetisiert wurde: Durch das Einbringen von zusätzlichen Registerstufen lassen sich z.&amp;amp;nbsp;B. zeitkritische Pfade entschärfen (Pipelining), sodass die Frequenz des Chips angehoben werden kann und somit der effektive Datendurchsatz erhöht wird, mit dem Nachteil der gesteigerten Latenz durch das Mehr an Takten. Der Datendurchsatz lässt sich darüber hinaus durch die Nutzung paralleler Architekturen verbessern.&lt;br /&gt;
&lt;br /&gt;
Die Systemfrequenz kann-, muss aber nicht der Frequenz entsprechen, mit der Daten zyklisch eingetaktet und verarbeitet werden; zudem sind Schaltungsteile mit unterschiedlichen Taktfrequenzen zu unterscheiden: Mit einem Systemtakt von 20 MHz lassen sich z.&amp;amp;nbsp;B. 18-Bit AD-Wandler auslesen, die so z.&amp;amp;nbsp;B. alle 1 µs neue Daten liefern, die verarbeitet werden müssen. Bei der Nutzung von 5 solchen Wandlern, die sequentiell verarbeitet werden, lägen 5 MHz Datenfrequenz vor. Für andere Schaltungsteile, die z.&amp;amp;nbsp;B. asynchron an die Peripherie andocken, sowie reine »state machines« können Schaltungsteile auf der 2-4 fachen Frequenz betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Generell sind Fläche und Geschwindigkeit konkurrierende Größen, zwischen denen ein Optimum gefunden werden muss. Für die preiswerten FPGA-Serien wie Spartan (Xilinx) und Cyclone (Altera) sind aufgrund technologischer Randbedingungen etwa 10-30% weniger Taktgeschwindigkeit bei gleichem Design zu erwarten als bei den großen Brüdern der Virtex- (Xilinx) bzw. Stratix-Familie (Altera). Es muss mit mehr Verbrauch an Logikelementen und Taktzyklen gerechnet werden (weniger Routingreserven, geringere Zahl von LUT-Eingängen, langsamere Logikelemente). Dafür sind sie sehr preiswert.&lt;br /&gt;
&lt;br /&gt;
Funktionstechnisch identische Chips werden oft in zwei oder mehr Geschwindigkeitsklassen (speed grades) angeboten, die sich meist durch Bauteilselektion bei der Produktion ergeben. Grob kann man ca. 5%-10% höhere Taktung zwischen zwei speed grades erwarten.&lt;br /&gt;
&lt;br /&gt;
== Hersteller ==&lt;br /&gt;
&lt;br /&gt;
Die größten Hersteller von FPGAs sind [http://www.altera.com Altera] und [http://www.xilinx.com Xilinx]. Weitere Hersteller sind [http://www.latticesemi.com/ Lattice], [http://www.actel.com Actel] und [http://www.atmel.com Atmel].&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau komplizierter, applikationsnaher Strukturen wird meist durch automatische Routing- und Synthesewerkzeuge erledigt, welche mit einer logischen, funktionellen Beschreibung der Architektur in einer Hardwarebeschreibungssprache wie z.&amp;amp;nbsp;B. VHDL &amp;quot;gefüttert&amp;quot; werden. Die Hardwarebeschreibung in [[VHDL]] gelingt ihrerseits z.&amp;amp;nbsp;B. mit VHDL-generierenden Werkzeugen, mittels derer zuvor Logikstrukturen, hardwarenahe Strukturen, Ablaufdiagramme und Zustandsautomaten formuliert wurden.&lt;br /&gt;
&lt;br /&gt;
Durch die Standardisierung der Architektur einerseits und die Entkoppplung von applikationsorientierter Beschreibung sowie Chip- und Hersteller-spezifischer Synthese andererseits, wird die Hardware quasi als Software gebaut. Dies wiederum schafft alle Optionen der Wiederverwendung und Austausch von &amp;quot;Hardwareteilen&amp;quot;. So stehen inzwischen komplett nutzbare Schaltungen wie serielle Bausteine, RAM-Controller und vieles mehr als Open Source zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsboards und Starterkits ==&lt;br /&gt;
=== Boards für Xilinx-FPGAs ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;sortable&amp;quot; id=&amp;quot;fpgaevalboards&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichn.&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! FPGA&lt;br /&gt;
! RAM (MByte)&lt;br /&gt;
! Flash (MByte)&lt;br /&gt;
! USB&lt;br /&gt;
! Ethernet&lt;br /&gt;
! RS-232&lt;br /&gt;
! µC&lt;br /&gt;
! Eingabe&lt;br /&gt;
! sonst.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.knjn.com/board_Xylo.html Xylo-L]&lt;br /&gt;
| 130&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 2.0&lt;br /&gt;
| 10base-T&lt;br /&gt;
| -&lt;br /&gt;
| LPC213x&lt;br /&gt;
| -&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.xilinx.com/s3estarter Spartan3e Starter Kit]&lt;br /&gt;
| 180&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| 64 MB DDR-SDRAM&lt;br /&gt;
| 16&lt;br /&gt;
| (JTAG)&lt;br /&gt;
| 10/100&lt;br /&gt;
| 2x&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 1 Drehgeber, 4 Schalter&lt;br /&gt;
| Coolrunner CPLD, LCD, 3-Bit VGA, PS/2&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.digilentinc.com/Products/Detail.cfm?Nav1=Products&amp;amp;Nav2=Programmable&amp;amp;Prod=S3BOARD Digilent Spartan-3]&lt;br /&gt;
| 100&lt;br /&gt;
| XC3S200/400/1000&lt;br /&gt;
| 1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 1x&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| VGA, PS/2, 7seg&lt;br /&gt;
|-&lt;br /&gt;
| [[Digilent Nexys]]&lt;br /&gt;
| 100&lt;br /&gt;
| XC3S200/400/1000&lt;br /&gt;
| 16&lt;br /&gt;
| 4&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| 7seg, Programmierung &amp;amp; Stromversorgung über USB&lt;br /&gt;
|-&lt;br /&gt;
| [[Digilent Nexys 2]]&lt;br /&gt;
| 121&lt;br /&gt;
| XC3S500E/1200E&lt;br /&gt;
| 16&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| 1x&lt;br /&gt;
| Cypress FX2 &lt;br /&gt;
| 4 Taster, 8 Schalter, 8 LEDs&lt;br /&gt;
| 4x7Seg, Programmierung &amp;amp; Stromversorgung über USB oder über Netzteil (5V-15V)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.uxibo.de Uxibo]&lt;br /&gt;
| 88&lt;br /&gt;
| XC2S200E&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 1.1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| VGA I/O, Videomux, dual PS/2, 7seg, Buzzer, IOs auf Pinleisten, dual-channel FTDI2232C, 48 MHz + prog. Oszillator, Programmierung &amp;amp; Stromversorgung über USB&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.fpgaz.com/wiki/doku.php?id=fpgaz:usbp:hw FPGAz USBP]&lt;br /&gt;
| $135&lt;br /&gt;
| XC3S400&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Cypress FX2&lt;br /&gt;
| 2 Taster&lt;br /&gt;
| 8 LEDs, I2C-EEPROM&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cesys.com/fpga_produktmatrix.html USBS6] Cesys &lt;br /&gt;
| 399&lt;br /&gt;
| XC6SLX16&lt;br /&gt;
| 128&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| FX-2&lt;br /&gt;
| Drehschalter, Leds.&lt;br /&gt;
|115 I/O signale, einstellbarer IO Standard, zweiter USB Port (FT232), WIN 32&amp;amp;64 Bit und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cesys.com/fpga/spartan/efm01_de.html EFM 01] Cesys &lt;br /&gt;
| 145&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| -&lt;br /&gt;
| 4&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| FX-2&lt;br /&gt;
| -&lt;br /&gt;
| 28 x 44mm, 50 I/O auf 2.54mm Stiftleiste, WIN und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://shop.trenz-electronic.de/catalog/product_info.php?products_id=456 Avnet Spartan 3A Evaluation Kit]&lt;br /&gt;
| 50&lt;br /&gt;
| XC3S400A&lt;br /&gt;
| -&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| WIN und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ct-lab.de FPGA-Karte aus dem c´t-Lab]&lt;br /&gt;
| 92&lt;br /&gt;
| XC3S400&lt;br /&gt;
| -&lt;br /&gt;
| SD-Kartenslot (Bitstream-File wird über µC ins FPGA geladen, Dateiauswahl via Systembus oder Panel oder fest einstellbar)&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| ATmega644&lt;br /&gt;
| optionales Bedienpanel mit LCD-Display, Drehgeber und Taster&lt;br /&gt;
| Bestandteil des Laborsystems c´t-Lab der Zeitschrift c´t.&lt;br /&gt;
VGA-Buchse, SD-Kartenslot (u.a. auch zum Laden des FPGA). Preis für FPGA-Platine mit verlöteten SMD-Bauteilen und Teilesatz. Optionale Erweiterungskarten mit schnellen DACs, Eingangskomparator, SRAM, Echtzeituhr, PS/2, RS232 (am FPGA). Optionaler JTAG-Adapter. &lt;br /&gt;
http://www.ct-lab.de, http://www.segor.de, http://thoralt.ehecht.com/phpbb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Raggedstone 1 - Spartan-3 Development PCI-Karte ====&lt;br /&gt;
* Spartan-3 FPGA FG456-Package&lt;br /&gt;
* 32 bit, 33 MHz, 3.3/5V PCI interface&lt;br /&gt;
* 4Mbit Flash Memory&lt;br /&gt;
* 16KBit serielles EEprom&lt;br /&gt;
* 4 x 7 Segment Anzeigen LED, abnehmbar&lt;br /&gt;
* LM75 Temperatursensor&lt;br /&gt;
* viele DIL-Header für eigene Erweiterungen, verschiedene werden auch durch Hersteller angeboten&lt;br /&gt;
* 2 Drucktaster&lt;br /&gt;
* Mit dem PCI-Interface kann bei entsprechender Programmierung des FPGA auf den PCI-Bus eines Hostrechners zugegriffen werden, Beispieldesign unter http://projects.varxec.net/raggedstone1&lt;br /&gt;
* Webseite: http://www.enterpoint.co.uk/moelbryn/raggedstone1.html&lt;br /&gt;
* Preis mit XC3S400 ca. €145,- (inkl MwSt.)&lt;br /&gt;
* Preis mit XC3S1500 ca. €255,-  (inkl. MwSt.)&lt;br /&gt;
&lt;br /&gt;
==== LiveDesign Evaluation Board von Altium ====&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Xilinx-Version direkt mit ISE Webpack nutzbar&lt;br /&gt;
* Xilinx XC3S1000-4FG456C, wahlweise aber auch mit Altera EP1C12F324C8 (s.u.)&lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung (Druckerport) sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs&lt;br /&gt;
* &#039;&#039;kein&#039;&#039; on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für allgemeine Zwecke &lt;br /&gt;
* Listenpreis $99,- Endpreis: ~150 Euro (inkl. MwSt. und Versand)&lt;br /&gt;
&lt;br /&gt;
==== Trenz-Electronic ====&lt;br /&gt;
http://www.trenz-electronic.de/products.html&lt;br /&gt;
* Kleines FPGA Board mit ucLinux und Virtex-II PowerPC, optional: ucLinux und Microblaze Softprozessor im Spartan-3 FPGA&lt;br /&gt;
* Pal/Gal kompatible FPGA und CPLD Module&lt;br /&gt;
* Spartan-3 FPGA Mikromodul mit 200K bis 1000K Systemgattern&lt;br /&gt;
* Spartan-3A DSP Mikromodul mit bis zu 34000K Systemgattern&lt;br /&gt;
&lt;br /&gt;
==== Simple-Solutions ====&lt;br /&gt;
http://www.simple-solutions.de/de/products/index.php&lt;br /&gt;
Mehrere Spartan3-FPGAs - Boards&lt;br /&gt;
&lt;br /&gt;
==== CESYS ====&lt;br /&gt;
http://www.cesys.com&lt;br /&gt;
&lt;br /&gt;
Cesys ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland.&lt;br /&gt;
&lt;br /&gt;
* Verschiedene FPGA boards mit USB, PCI und PCIe Schnittstellen im Lieferprogramm&lt;br /&gt;
* Je nach Ausführung mit Spartan-2/3/3E/6, Virtex2/2PRO/4&lt;br /&gt;
* verschiedene Speicherkonfigurationen (SO-DIMM, SRAM, SDRAM, DDR2)&lt;br /&gt;
* Auftragsentwicklungen nach Kundenwunsch möglich&lt;br /&gt;
&lt;br /&gt;
==== ZTEX ====&lt;br /&gt;
&lt;br /&gt;
http://www.ztex.de/&lt;br /&gt;
&lt;br /&gt;
Cesys ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland.&lt;br /&gt;
&lt;br /&gt;
* Xilinx Spartan 6 FPGA, High-Speed USB interface, Cypress CY7C68013A EZ-USB Microcontroller, 90 GPIO ports, 15 SIO ports, 64 MByte DDR SDRAM, microSD socket, EEPROM.&lt;br /&gt;
* Xilinx Spartan 3 XC3S400 FPGA, High-Speed (480 MBit/s) USB interface, Cypress CY7C68013A EZ-USB Microcontroller, 60 GPIO ports, 20 SIO ports, EEPROM und optionally mit Flash memory&lt;br /&gt;
* High-Speed (480 MBit/s) USB interface, Cypress CY7C68013A/14A EZ-USB Microcontroller, microSD socket mit bis zu 2GB Flash memory, 36 GPIO ports, 28 SIO ports, EEPROM und on-board Schaltregler&lt;br /&gt;
&lt;br /&gt;
* Open Source Firmware Kit zum Programmieren&lt;br /&gt;
&lt;br /&gt;
=== Boards für Altera-FPGAs ===&lt;br /&gt;
==== LiveDesign Evaluation Board von Altium ====&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* * Wahlweise mit Altera EP1C12F324C8 oder Xilinx XC3S1000-4FG456C&lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung (Druckerport) sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs&lt;br /&gt;
* &#039;&#039;kein&#039;&#039; on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für allgemeine Zwecke &lt;br /&gt;
* Endpreis: ~150 Euro (inkl. MwSt. und Versand)&lt;br /&gt;
&lt;br /&gt;
==== Terasic TREX C1 Multimedia Development Kit ====&lt;br /&gt;
* Altera EP1C6Q240C8 &amp;amp; EP1S Serial Configuration Device&lt;br /&gt;
* Built-in USB Blaster programming circuitry (JTAG and AS mode)&lt;br /&gt;
* 1 MiB Flash Memory &amp;amp; 8 MiB SDRAM (1M x 4 x 16)&lt;br /&gt;
* CF Card Socket, 16-bit CD-quality Audio DAC&lt;br /&gt;
* TV Encoder, VGA, RS-232, PS/2, and more&lt;br /&gt;
* Many reference designs and C++ applications&lt;br /&gt;
* [http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&amp;amp;CategoryNo=39&amp;amp;No=14 www.terasic.com.tw]&lt;br /&gt;
* fertiger Core eines CPC6128 (8-Bit Homecomputer von 1984) für dieses Board, inlusive Sourcecode (eigener Z80 in AHDL, mit 24MHz eingesetzt): [http://www.symbos.de/trex.htm http://www.symbos.de/trex.htm]&lt;br /&gt;
* Listenpreis $149,-&lt;br /&gt;
&lt;br /&gt;
==== Altera Cyclone II 2C20 ====&lt;br /&gt;
* Altera Cyclone II EP2C20F484C7N FPGA mit 20000 LEs&lt;br /&gt;
* USB-BlasterTM download cable (integriert)&lt;br /&gt;
* EPCS4 serial configuration Flash&lt;br /&gt;
* 8-Mbyte SDRAM, 512-Kb SRAM, 4-Mbyte flash &lt;br /&gt;
* externer SMA - Clock-Eingang&lt;br /&gt;
* 24-bit Audio coder/decoder (CODEC) &lt;br /&gt;
* 10 Schalter, 4 Druckknöpfe inkl Reset &lt;br /&gt;
* 4St. 7-Segmentanzeigen, 10 rote LEDs + 8 grüne LEDs&lt;br /&gt;
* VGA, RS-232, and PS/2 Stecker&lt;br /&gt;
* Zwei 40-pin expansion ports + SD/MMC socket&lt;br /&gt;
* USB-Kabel, externes Steckernetztteil, CD-Rom&lt;br /&gt;
* Reference designs&lt;br /&gt;
* Qartus II Web Edition + NIOS II Web Edition&lt;br /&gt;
* http://www.altera.com/products/devkits/altera/kit-cyc2-2C20N.html&lt;br /&gt;
* Listenpreis $150,-&lt;br /&gt;
&lt;br /&gt;
==== Hpe Mini AC II - Cyclone II board von Gleichmann Research ====&lt;br /&gt;
* Altera Cyclone II EP2C35 FPGA (speed grade 6)&lt;br /&gt;
* Mit reprogrammierbarem Flash zur automatischen FPGA-Konfiguration&lt;br /&gt;
* 25 pin SUB-D connector (parallel) für direktes FPGA-Programmieren&lt;br /&gt;
* RS232 (9 pin SUB-D) &lt;br /&gt;
* VGA (15 pin SUB-D) mit 64 möglichen Farben&lt;br /&gt;
* Ethernet 10/100 Mbit/s, full/half duplex&lt;br /&gt;
* 1 USB 2.0 compatible full-speed target connector&lt;br /&gt;
* 3 USB 2.0 compatible full-speed host connectors&lt;br /&gt;
* Santa Cruz connector mit 40 nutzbaren I/Os&lt;br /&gt;
* Audio interface (line-in and line-out) mit CODEC&lt;br /&gt;
* SODIMM144 Sockel für (SDRAM) 256MB&lt;br /&gt;
* SDRAM-Speichersockel mit nur 32-Bit angebunden, die Hälfte des Speichers bleibt nicht nutzbar&lt;br /&gt;
* 25 MHz oscillator&lt;br /&gt;
* Prototyping area, Lötfläche&lt;br /&gt;
* 8 LEDs, grün, blau, 3x4 key matrix, 4-bit DIP switch&lt;br /&gt;
* LCD connector, 2-character 7-segment display&lt;br /&gt;
* Single step Knopf und Reset Knopf&lt;br /&gt;
* Parallelportkabel für PC&lt;br /&gt;
* Beispieldesign, Testprogramme, Datenblätter&lt;br /&gt;
* LEON3-CPU Design inkl. Source Code, Quartus IDE, SnapGear Linux&lt;br /&gt;
* Nicht mehr im Programm - war ca 399,-&lt;br /&gt;
&lt;br /&gt;
==== Altera DE2 - Development and Education Board V2 ====&lt;br /&gt;
* Altera Cyclone II 2C35 FPGA mit 35000 LEs&lt;br /&gt;
* Altera Serial Configuration devices (EPCS16) für Cyclone II 2C35&lt;br /&gt;
* USB Blaster board zur Programmierung und User API&lt;br /&gt;
* 8 MB SDRAM, 4 MB Flash Memory, 512KB SRAM&lt;br /&gt;
* SD Card Sockel, RS-232, Ethernet, 10-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* Viele Besipiel mit Source Code wie TV, SD Music Player)&lt;br /&gt;
* [http://www.fh-wedel.de/fileadmin/mitarbeiter/bos/files/VHDL/VhdlEinfuehrung.pdf Kleines aber nettes Tutorial zum Altera DE2 Dev. Board]&lt;br /&gt;
* Listenpreis US $495,-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Altera DE2-11 - Development and Education Board V3 ====&lt;br /&gt;
* Altera Cyclone IV FPGA mit 115000 LEs&lt;br /&gt;
* Altera Serial Configuration device EPCS64&lt;br /&gt;
* USB Blaster zur Programmierung und für User API&lt;br /&gt;
* User-Applikations und Steuerungssoftware&lt;br /&gt;
* 64 MB SDRAM, 4 MB Flash Memory, 512KB SRAM&lt;br /&gt;
* SD Card Sockel, RS-232, 2x GB-Ethernet, &lt;br /&gt;
* 8-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* 18 Schalter, 4 Drucktasten, PS2-Maus-Anschluss&lt;br /&gt;
* 18 LEDs, 16x2-LCD-Display, 8 7-Segment-Anzeigen&lt;br /&gt;
* IR-Fernsteuerung&lt;br /&gt;
* HSMC-Stecker&lt;br /&gt;
* Viele Besipiel mit Source Code wie TV, SD Music Player, Audiorecorder&lt;br /&gt;
* Listenpreis US $595,- (academic = $395,-)&lt;br /&gt;
&lt;br /&gt;
==== Cyclone III embedded Development Kit====&lt;br /&gt;
* Altera Cyclone III EP3C25 FPGA&lt;br /&gt;
* 640x480 LCD Display mit touch screen function&lt;br /&gt;
* MiniSD-Card Sockel&lt;br /&gt;
* Audio Interface ADC CODEC&lt;br /&gt;
* 10/100 Mbit Fast Ethernet Schnittstelle&lt;br /&gt;
* FPGA-Konfiguration über USB&lt;br /&gt;
* NIOS II EVAL Lizenz&lt;br /&gt;
* IP LIB Altera&lt;br /&gt;
* Listenpreis US $495,-  über ALtera Webseite&lt;br /&gt;
* Bei EBV €349,- inkl. MwSt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NanoBoard-NB1 von Altium ====&lt;br /&gt;
* kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Unterstützt eine breite Palette von Ziel-FPGAs durch Aufsteckplatinen &lt;br /&gt;
* Altera Cyclone (EP1C12-Q240C7) Aufsteckplatine enthalten &lt;br /&gt;
* Xilinx Spartan IIE (XC2S300E-PQ208) im Lieferumfang enthalten &lt;br /&gt;
* Enthält Stromversorgung mit verschiedenen Steckern für unterschiedliche Konfigurationen &lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* NanoBoard-NB1 Reference-Handbuch zur Hardware &lt;br /&gt;
* Peripherie: LCD, LEDs, Dip-Schalter, Tastenblock, Summer, ADC/DAC, 256K x 8 RAM, 8 MiB Serial Flash RAM, on-board Serial Flash RAM für FPGA-Konfig.&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, CAN, VGA, I2C, IO Stecker für allg. Zwecke &lt;br /&gt;
* Upgradefähige NanoBoard Controller Firmware &lt;br /&gt;
* Stabiler NanoBard-Sockel&lt;br /&gt;
* Listenpreis €995,-&lt;br /&gt;
&lt;br /&gt;
=== Boards für Lattice-FPGAs ===&lt;br /&gt;
==== www.hardware-design.de ====&lt;br /&gt;
* bietet verschiedene einfache Boards mit Lattice-Bausteinen an&lt;br /&gt;
* FPGA-Board mit XP2-17/XP2-8/XP2-5 -&amp;gt; 113,- bis 101,- Euro&lt;br /&gt;
* CPLD-Boards u.a. mit MachXO640 -&amp;gt; 89,- Euro&lt;br /&gt;
&lt;br /&gt;
=== Debugging-Hilfen ===&lt;br /&gt;
Gerade beim [[Debugging]] größerer FPGA-Designs ist es oft notwendig, auf interne Signale und Busse zuzugreifen, die aus routing- oder Platzgründen nicht an Pins des FPGAs gelegt - und mit konventionellen Analysatoren beobachtet werden können. Nebst den einschlägigen Tools der Hersteller, welche Signal probing über JTAG gestatten (z.&amp;amp;nbsp;B. ChipsScope und SignalTap), werden in FPGAs oft mehr oder weniger komplexe [[Logic Analyzer]] integriert, welche die internen Signale in vielfältiger Weise aufzeichnen. Diese werden in Block-RAMs oder FIFOs gespeichert und durch externe Master ausgelesen. Hier kommen auf der Platine befindliche MCUs oder fremd zugreifende FPGAs / CPUs in Betracht, welche über unterschiedliche Kommunikationsverbindungen (seriell, parallel, LVDS) angeschlossen sind. Dazu werden in die FPGAs entsprechende Cores / Treiber eininstanziiert.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
====Proprietärer serieller Logic Analyzer ====&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist die direkte Instanziierung eines Blockrams als FIFO mit &amp;quot;breitem&amp;quot; Busanschluss: Linksseitig besitzt das FIFO eine Breite von z.&amp;amp;nbsp;B. 256 Bit (Xilinx-Rams lassen sich ohne weitere Umbeschaltung über den Wizzard mit bis zu 1024 Bits deklarieren und nutzen). Rechtsseitig einen 16- oder 32 Bit breiten Busanschluss für einen Prozessor bzw Parallelinterface oder einen 1 Bit breiten Anschluss für ein serielles streaming interface. Mit einem FiFo-enable können die zu sampelnden Zeiten (Busphasen) festgelegt werden, z.&amp;amp;nbsp;B. anhand eines Kriteriums wie die Erfüllung einer bestimmten mathematischen Bedingung, die man in VHDL formuliert, oder es wird einfach ein Trigger gesetzt. Solange das FiFo nicht voll ist, kann geschrieben werden, was durch die interne FiFo-Verwaltung selbst bereits komplett geregelt wird.&lt;br /&gt;
&lt;br /&gt;
Beim einfachen seriellen Logic Analyzer benötigt man nur noch einen kleinen Core, der permanent das FiFo liest, und den seriellen Overhead (Startbit, Stoppbit, Parity und gfs CRC) hinzufügt. Mit einem einfach Pegelwandler kann so ein PC direkt angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Auch denkbar ist die Anbindung an ein fremdes FPGA-board mit viel Speicher über (LV-)DS-Kommunikation. In komplexeren Systemen wird ein CAN- oder USB-Core eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Wenn mittels des Kriteriums nur ganz bestimmte kritische Phasen herausgesampelt werden (z.&amp;amp;nbsp;B. das Auftauchen eines bestimmten Rechenfehlers im FPGA) und so das Datenaufkommen je Zeiteinheit über längere Zeit betrachtet eher gering ist, kann bei geeignetem Datendurchsatz in Echtzeit dauerhaft mitprotokolliert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== BusProbe, der Debugging Core von abaxor engineering  ====&lt;br /&gt;
Mit der BusProbe kann der Entwickler den Signalfluss im FPGA-Design auch über einen längeren Zeitraum überwachen und am PC aufzeichnen. Der Core verarbeitet an jedem Eingang einen kompletten Bus. &lt;br /&gt;
&lt;br /&gt;
Die Daten werden gemultiplext zum PC geschickt und dort per Software demultiplext. Im PC erfolgt auch die Auswertung mit beliebigen Analyse-Tools.&lt;br /&gt;
&lt;br /&gt;
Gegenüber dem Betriebssystem verhält sich die BusProbe wie eine Festplatte, von der die Daten mit gewöhnlichen Zugriffen gelesen werden können.&lt;br /&gt;
&lt;br /&gt;
* Streaming der Daten zum PC mit mehr als 20 MByte/s&lt;br /&gt;
* keine Treiber im PC da Nutzung von Standardschnittstellen (USB oder IDE)&lt;br /&gt;
* Hot-Plugging&lt;br /&gt;
* Visualisierung mit beliebigen Programmen&lt;br /&gt;
* geringer Logikaufwand&lt;br /&gt;
&lt;br /&gt;
[http://www.abaxor.de/produkte.html abaxor.de-Webseite]&lt;br /&gt;
&lt;br /&gt;
==== open source Logikanalysator von sump.org====&lt;br /&gt;
Ein einfacher, übersichtlicher Logikanalysator findet sich auf sump.org. Er liegt im Quelltext vor wird mit ins Design einsynthetisiert. Als Speicher dient wahlweise SRAM oder internes RAM. Es können 32 Kanäle mit 100 MHz (oder weniger) gesampelt werden. Die Bediensoftware läuft platformunabhängig unter Java und benötigt eine serielle Schnittstelle (auch über USB-seriell Wandler) zum Core.&lt;br /&gt;
&lt;br /&gt;
[http://de.sump.org/projects/analyzer/ sump.org-Webseite]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Hardwarebeschreibungssprachen]]&lt;br /&gt;
* [[Reset für FPGA/CPLD]]&lt;br /&gt;
* [[Taktung FPGA/CPLD]]&lt;br /&gt;
* Projekt [[Audio-DSP mit Spartan 3-FPGA]]&lt;br /&gt;
* Projekt [[FPGA Lab]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.fpga4fun.com/index.html FPGA4Fun] - FPGA-Projekte, größtenteils mit Altera und Verilog&lt;br /&gt;
* [http://video.google.com/videoplay?docid=-4969729965240981475 Ein Vortrag, auf Englisch: General Purpose, Low Power Supercomputing Using Reconfiguration Logic]&lt;br /&gt;
* http://www.opencores.org - FPGA-Projekte, Opensource, jeder kann seine Eigenen einstellen und an anderen mitarbeiten. U.a. gibt es verschiedene CPUs für FPGAs.&lt;br /&gt;
* [http://members.optushome.com.au/jekent/FPGA.htm John&#039;s FPGA Page]&lt;br /&gt;
* [http://www.embedded.com/columns/whatsnew/197003073 More about designing with embedded FPGAs] by Bernard Cole, Embedded.com&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=55992</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=55992"/>
		<updated>2011-03-23T12:35:09Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Altera DE2 - Development and Education Board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FPGA ist die Abkürzung für &amp;quot;&#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
=== Grundelemente  ===&lt;br /&gt;
&lt;br /&gt;
Ein FPGA besteht, ähnlich wie ein [[CPLD]], aus vielen Logikelementen, hauptsächlich [[FlipFlop]]s (FF) und davor geschalteten Logikelementen. Diese Logikelemente sind entweder Verschaltungen verschiedener Logikgatter (Actel) oder aber kleine LUTs (LUT = Lookup-Table), die über elektronische &amp;quot;Schalter&amp;quot; entsprechend der vom Entwickler gewünschten Funktion miteinander verknüpft werden können.&lt;br /&gt;
&lt;br /&gt;
Eine &#039;&#039;&#039;LUT&#039;&#039;&#039; kann eine beliebige kombinatorische Funktion (NAND, XOR, AND, Multiplexer etc.) aus den Eingangssignalen realisieren. Die Anzahl der Eingangssignale pro LUT ist vom FPGA abhängig und liegt meist zwischen 4 und 6. Für Funktionen die mehr Eingänge erfordern als eine einzige LUT besitzt (hohes Fan-In), werden mehrere LUTs direkt miteinander verschaltet. Die [[FlipFlop]]s dienen dazu, Signalwerte zwischenzuspeichern, um sie im nächsten Takt weiterverarbeiten zu können. Das Verhältnis zwischen der Anzahl der LUTs und der Anzahl der Flip-Flops ist meist 1:1. Aktuelle FPGAs bestehen aus bis zu einigen zehntausend Logikelementen.&lt;br /&gt;
&lt;br /&gt;
Die logischen Schalter und Speicher sind in den meisten FPGAs durch [[Speicher#SRAM | SRAM]]-Speicherzellen realisiert, welche beim Bootprozess passend geladen werden. Das Laden dieser Konfigurationsdaten bzw. Verknüpfungsregeln geschieht dabei in der Regel aus einem speziellen [[Speicher#Flash | Flash-ROM]]-Baustein heraus. Es kann aber auch ein Mikrocontroller benutzt werden. Die meisten FPGAs bieten daher für diesen Konfigurationsvorgang mehrere Modi an (seriell, parallel, Master/Slave). Da die SRAM-Zellen ihren Inhalt beim Abschalten der Versorgungsspannung verlieren, muss ein SRAM-basierter FPGA bei jedem Einschalten neu konfiguriert werden. Daher benötigt ein solcher FPGA einige Millisekunden bis zur Betriebsbereitschaft.&lt;br /&gt;
&lt;br /&gt;
Eine FPGA-Familie beinhaltet Typen mit unterschiedlicher Anzahl und Komplexität von Logikzellen. So enthält ein Spartan3-1000 ca. 2,5 mal so viel Logik (FF, LUTs) wie ein Spartan3-400.  &lt;br /&gt;
&lt;br /&gt;
FPGAs mit nichtflüchtigem Speicher basieren auf [[Speicher#EEPROM | EEPROM]]-, [[Speicher#Flash | Flash]]-Speicher (einige Familien von Lattice und Actel) oder AntiFuse- Technologie (Actel). Die sogenannten AntiFuse FPGAs sind nur einmalig programmierbar.&lt;br /&gt;
&lt;br /&gt;
=== I/O Anschlüsse ===&lt;br /&gt;
&lt;br /&gt;
FPGAs unterstützen als universal einsetzbare Digital-ICs eine Vielzahl von Signalstandards. Üblich sind verschiedene TTL-Pegel (5V, 3,3V, 2,5V), differentielle Signalstandards (LVDS, GTL) und im Hochpreisbereich serielle Hochgeschwindigkeitsstandards mit bis zu 28 Gbit/s. Oftmals sind weitere Eigenschaften wie Treiberstärke und Flankensteilheit für jeden benutzerdefinierbaren Anschluss (User-IO) einstellbar. Meist sind die Pins zu Bänken mit gleichem I/O Standard zusammengefasst. Innerhalb einer solchen Bank arbeiten alle Pins im gleichen I/O Standard und mit der selben I/O Spannung.&lt;br /&gt;
&lt;br /&gt;
Bei komplexeren FPGAs sind die Ein- und Ausgänge mit Delaygliedern versehen, die ein Anpassen des Timings bei Bussen wie z.B. schnellen Speichern ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Ebenso können FPGA-interne Pull-Up und Pull-Down-Widerstände zugeschaltet werden, [[Wellenwiderstand | Terminierung]] wird ebenfalls unterstützt. Zudem befinden sich hinter vielen IO-Pads sog. [[Boundary_scan| Boundary Scan]] Zellen.&lt;br /&gt;
&lt;br /&gt;
Das I/O Verhalten wird zusammen mit vielen anderen Parametern in einer Datei festgelegt (Xilinx *.ucf, Altera *.acf, Lattice *.lpf). Alternativ können diese auch als Syntheseoption im Kommentarfeld des [[Verilog]]/[[VHDL]] Codes mit angegeben werden.&lt;br /&gt;
&lt;br /&gt;
[[Ausgangsstufen Logik-ICs | Tristatebuffer]] werden implizit über VHDL definiert, indem einem Ausgang zeitabhängig der Zustand &amp;quot;Z&amp;quot; zugewiesen wird. Alternativ kann er explizit als Komponente eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
Einige Pins übernehmen besondere Funktionen und sind somit vom Anwender nicht uneingeschränkt oder z.T. auch gar nicht nutzbar. Dazu zählen neben der [[JTAG]]-Schnittstelle z.&amp;amp;nbsp;B. die Pins zum Einlesen der Konfigurationsdaten. &lt;br /&gt;
&lt;br /&gt;
Ferner sind einige wenige Pins (2 - 8) zum Einspeisen des Taktes für das Design vorgesehen. Für schnelle Schaltungen müssen diese reservierten Pins benutzt werden. Sie enthalten kein Eingangs-FF und wirken direkt auf Taktnetze / PLLs.&lt;br /&gt;
&lt;br /&gt;
Die Hersteller bieten FPGAs mit gleicher Anzahl von Logikelementen in unterschiedlichen Gehäusen an. So kann der FPGA mit der passenden Anzahl von Pins eingesetzt werden. Das obere Ende markieren Chips mit über 1000 I/Os, die kleinsten bieten ca. 80 User-I/O. Oft werden nur [[IC-Geh%C3%A4useformen#BGA|BGA]] und [[IC-Geh%C3%A4useformen#QFP|QFP]] Gehäuse (bis ca. 240 Pins) angeboten.&lt;br /&gt;
&lt;br /&gt;
=== Komplexe Funktionsblöcke ===&lt;br /&gt;
&lt;br /&gt;
Neben den einfachen FlipFlops beinhalten FPGAs darüber hinaus komplexe Routing- und Speicherkonfigurationsoptionen innerhalb und außerhalb der logischen Elemente (LEs), die es gestatten, komplexe Schalt- und Rechenstrukturen aufzubauen. Für rechenintensive Designs, z.&amp;amp;nbsp;B. in der Signalverarbeitung, enthalten viele FPGAs &#039;&#039;&#039;Multiplizierer&#039;&#039;&#039; direkt auf dem Chip, die in einem einzigen Taktzyklus Multiplikationen durchführen können.&lt;br /&gt;
&lt;br /&gt;
Ferner haben FPGAs oft einen von den LEs getrennt verfügbaren &#039;&#039;&#039;RAM&#039;&#039;&#039;-Bereich integriert, der sich in vielfältiger Weise ansprechen lässt. So können damit Single- oder Dualport-RAMs mit variabler Bitbreite erzeugt werden. Üblich sind mehrere (4 - 30) kleinere Dualport [[Speicher#BRAM | RAM-Blöcke]] von 4 - 16 kbit. Einige Familien besitzen einen größeren internen RAM, andere spezielle FIFO-Blöcke.&lt;br /&gt;
&lt;br /&gt;
Zur Generierung spezieller Takte sind &#039;&#039;&#039;PLL&#039;&#039;&#039;s (Phase Locked Loop) auf dem FPGA integriert. Einige Hersteller setzen mit dem selben Ziel &#039;&#039;&#039;DLL&#039;&#039;&#039;s (Delay Locked Loop) ein. Mittels dieser Blöcke können aus einem Taktsignal weitere erzeugt werden. Typisch sind Taktverdopplung oder -vervielfachung. Ebenso kann der Takt geteilt werden oder ein Signal gleicher Frequenz, aber um eine halbe, viertel usw. Periode verschoben erzeugt werden. Typische Anwendungen sind die Ansteuerung von [[Speicher#DDR-RAM | DDR-RAMs]] oder die Kompensation von Laufzeitunterschieden zwischen Takt und mit diesem getakteten Steuersignalen. Meist sind 2 - 8 Taktnetzwerke und PLL/DLLs gleicher Anzahl integriert. Siehe auch [[Taktung FPGA/CPLD]].&lt;br /&gt;
&lt;br /&gt;
=== CPU im FPGA ===&lt;br /&gt;
&lt;br /&gt;
Programmierbare Prozessoren sind auch bei FPGA-Designs immer häufiger anzutreffen. CPUs sind zwar im Allgemeinen langsamer und weniger effizient, als eine vollständige Implementation aus Logik-Primitiven - aber bei komplexen Abläufen auch deutlich einfacher zu entwickeln. Insbesondere bei sequentiellen Aufgaben (Benutzerinterface, komplexe Steueraufgaben etc.) wird man gerne auf eine klassische CPU zurückgreifen. &lt;br /&gt;
&lt;br /&gt;
Manche FPGAs integrieren dazu einen oder mehrere Prozessorkerne (z. B. [[AVR]] bei Atmels FPSLIC oder PowerPC bei Xilinx&#039; Virtex) als &#039;&#039;HardCores&#039;&#039; auf einem IC.&lt;br /&gt;
&lt;br /&gt;
Auf der anderen Seite gibt es auch [[FPGA Soft Core | SoftCores]] (z. B. ARM-Cortex-M1 bei IGLOO-FPGA von [http://www.actel.com ACTEL]), Prozessorkerne die als Quelltext oder als vorsynthetisierte Netzliste vorliegen. In Abhängigkeit von den zur Verfügung stehenden Ressourcen können diese &#039;&#039;SoftCores&#039;&#039; beliebig instanziiert werden. Es gibt eine Vielzahl verschiedener &#039;&#039;SoftCores&#039;&#039;. &lt;br /&gt;
 &lt;br /&gt;
Teilweise kompatibel zu etablierten Prozessorarchitekturen (MIPS, SPARC, AVR), zum Teil optimiert auf die FPGAs einzelner Hersteller. Auch auf vergleichsweise &lt;br /&gt;
kleinen aktuellen FPGAs kann man problemlos eine 32bit-RISC-CPU integrieren.&lt;br /&gt;
&lt;br /&gt;
Als Programmspeicher werden die FPGA-internen [[Speicher#BRAM | RAM-Blöcke]] oder externe [[Speicher]] (SDRAM, SRAM) genutzt. Für einige Prozessorkerne stehen Hochsprachen wie C, C++ etc. zur Verfügung, andere werden in Assembler programmiert.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
=== Geschwindigkeit ===&lt;br /&gt;
&lt;br /&gt;
Die maximale „Geschwindigkeit“ eines FPGAs ist von der verwendeten Halbleitertechnologie (Prozess, Strukturgrößen), der internen Schaltungstopologie (Komplexität der LEs), Vorhandensein von harten Strukturen und vor allem vom Design abhängig. Dabei sind der sogenannte Datendurchsatz und die rein maximale Systemtaktfrequenz zu unterscheiden. Die erreichbare Taktfrequenz lässt sich ohne detaillierte Kenntnis des Designs nicht abschätzen, möglich sind je nach »Speed Grade« des ICs typischerweise Taktfrequenzen von 300-600 MHz für die Schaltgeschwindigkeit der reinen Logikelemente. Je nach der Anzahl und Komplexität der pro Takt durchzuführenden Operationen ergeben sich dann reale Systemtaktfrequenzen von meist 10-100 MHz für global operierende Einheiten und bis zu 300 MHz für schnelle lokale Module. Maßgeblich ist in wieweit das Design auf Fläche bzw. Geschwindigkeit hin optimiert und vom Tool synthetisiert wurde: Durch das Einbringen von zusätzlichen Registerstufen lassen sich z.&amp;amp;nbsp;B. zeitkritische Pfade entschärfen (Pipelining), sodass die Frequenz des Chips angehoben werden kann und somit der effektive Datendurchsatz erhöht wird, mit dem Nachteil der gesteigerten Latenz durch das Mehr an Takten. Der Datendurchsatz lässt sich darüber hinaus durch die Nutzung paralleler Architekturen verbessern.&lt;br /&gt;
&lt;br /&gt;
Die Systemfrequenz kann-, muss aber nicht der Frequenz entsprechen, mit der Daten zyklisch eingetaktet und verarbeitet werden; zudem sind Schaltungsteile mit unterschiedlichen Taktfrequenzen zu unterscheiden: Mit einem Systemtakt von 20 MHz lassen sich z.&amp;amp;nbsp;B. 18-Bit AD-Wandler auslesen, die so z.&amp;amp;nbsp;B. alle 1 µs neue Daten liefern, die verarbeitet werden müssen. Bei der Nutzung von 5 solchen Wandlern, die sequentiell verarbeitet werden, lägen 5 MHz Datenfrequenz vor. Für andere Schaltungsteile, die z.&amp;amp;nbsp;B. asynchron an die Peripherie andocken, sowie reine »state machines« können Schaltungsteile auf der 2-4 fachen Frequenz betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Generell sind Fläche und Geschwindigkeit konkurrierende Größen, zwischen denen ein Optimum gefunden werden muss. Für die preiswerten FPGA-Serien wie Spartan (Xilinx) und Cyclone (Altera) sind aufgrund technologischer Randbedingungen etwa 10-30% weniger Taktgeschwindigkeit bei gleichem Design zu erwarten als bei den großen Brüdern der Virtex- (Xilinx) bzw. Stratix-Familie (Altera). Es muss mit mehr Verbrauch an Logikelementen und Taktzyklen gerechnet werden (weniger Routingreserven, geringere Zahl von LUT-Eingängen, langsamere Logikelemente). Dafür sind sie sehr preiswert.&lt;br /&gt;
&lt;br /&gt;
Funktionstechnisch identische Chips werden oft in zwei oder mehr Geschwindigkeitsklassen (speed grades) angeboten, die sich meist durch Bauteilselektion bei der Produktion ergeben. Grob kann man ca. 5%-10% höhere Taktung zwischen zwei speed grades erwarten.&lt;br /&gt;
&lt;br /&gt;
== Hersteller ==&lt;br /&gt;
&lt;br /&gt;
Die größten Hersteller von FPGAs sind [http://www.altera.com Altera] und [http://www.xilinx.com Xilinx]. Weitere Hersteller sind [http://www.latticesemi.com/ Lattice], [http://www.actel.com Actel] und [http://www.atmel.com Atmel].&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau komplizierter, applikationsnaher Strukturen wird meist durch automatische Routing- und Synthesewerkzeuge erledigt, welche mit einer logischen, funktionellen Beschreibung der Architektur in einer Hardwarebeschreibungssprache wie z.&amp;amp;nbsp;B. VHDL &amp;quot;gefüttert&amp;quot; werden. Die Hardwarebeschreibung in [[VHDL]] gelingt ihrerseits z.&amp;amp;nbsp;B. mit VHDL-generierenden Werkzeugen, mittels derer zuvor Logikstrukturen, hardwarenahe Strukturen, Ablaufdiagramme und Zustandsautomaten formuliert wurden.&lt;br /&gt;
&lt;br /&gt;
Durch die Standardisierung der Architektur einerseits und die Entkoppplung von applikationsorientierter Beschreibung sowie Chip- und Hersteller-spezifischer Synthese andererseits, wird die Hardware quasi als Software gebaut. Dies wiederum schafft alle Optionen der Wiederverwendung und Austausch von &amp;quot;Hardwareteilen&amp;quot;. So stehen inzwischen komplett nutzbare Schaltungen wie serielle Bausteine, RAM-Controller und vieles mehr als Open Source zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsboards und Starterkits ==&lt;br /&gt;
=== Boards für Xilinx-FPGAs ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;sortable&amp;quot; id=&amp;quot;fpgaevalboards&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichn.&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! FPGA&lt;br /&gt;
! RAM (MByte)&lt;br /&gt;
! Flash (MByte)&lt;br /&gt;
! USB&lt;br /&gt;
! Ethernet&lt;br /&gt;
! RS-232&lt;br /&gt;
! µC&lt;br /&gt;
! Eingabe&lt;br /&gt;
! sonst.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.knjn.com/board_Xylo.html Xylo-L]&lt;br /&gt;
| 130&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 2.0&lt;br /&gt;
| 10base-T&lt;br /&gt;
| -&lt;br /&gt;
| LPC213x&lt;br /&gt;
| -&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.xilinx.com/s3estarter Spartan3e Starter Kit]&lt;br /&gt;
| 180&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| 64 MB DDR-SDRAM&lt;br /&gt;
| 16&lt;br /&gt;
| (JTAG)&lt;br /&gt;
| 10/100&lt;br /&gt;
| 2x&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 1 Drehgeber, 4 Schalter&lt;br /&gt;
| Coolrunner CPLD, LCD, 3-Bit VGA, PS/2&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.digilentinc.com/Products/Detail.cfm?Nav1=Products&amp;amp;Nav2=Programmable&amp;amp;Prod=S3BOARD Digilent Spartan-3]&lt;br /&gt;
| 100&lt;br /&gt;
| XC3S200/400/1000&lt;br /&gt;
| 1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 1x&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| VGA, PS/2, 7seg&lt;br /&gt;
|-&lt;br /&gt;
| [[Digilent Nexys]]&lt;br /&gt;
| 100&lt;br /&gt;
| XC3S200/400/1000&lt;br /&gt;
| 16&lt;br /&gt;
| 4&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| 7seg, Programmierung &amp;amp; Stromversorgung über USB&lt;br /&gt;
|-&lt;br /&gt;
| [[Digilent Nexys 2]]&lt;br /&gt;
| 121&lt;br /&gt;
| XC3S500E/1200E&lt;br /&gt;
| 16&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| 1x&lt;br /&gt;
| Cypress FX2 &lt;br /&gt;
| 4 Taster, 8 Schalter, 8 LEDs&lt;br /&gt;
| 4x7Seg, Programmierung &amp;amp; Stromversorgung über USB oder über Netzteil (5V-15V)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.uxibo.de Uxibo]&lt;br /&gt;
| 88&lt;br /&gt;
| XC2S200E&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 1.1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| VGA I/O, Videomux, dual PS/2, 7seg, Buzzer, IOs auf Pinleisten, dual-channel FTDI2232C, 48 MHz + prog. Oszillator, Programmierung &amp;amp; Stromversorgung über USB&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.fpgaz.com/wiki/doku.php?id=fpgaz:usbp:hw FPGAz USBP]&lt;br /&gt;
| $135&lt;br /&gt;
| XC3S400&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Cypress FX2&lt;br /&gt;
| 2 Taster&lt;br /&gt;
| 8 LEDs, I2C-EEPROM&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cesys.com/fpga_produktmatrix.html USBS6] Cesys &lt;br /&gt;
| 399&lt;br /&gt;
| XC6SLX16&lt;br /&gt;
| 128&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| FX-2&lt;br /&gt;
| Drehschalter, Leds.&lt;br /&gt;
|115 I/O signale, einstellbarer IO Standard, zweiter USB Port (FT232), WIN 32&amp;amp;64 Bit und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cesys.com/fpga/spartan/efm01_de.html EFM 01] Cesys &lt;br /&gt;
| 145&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| -&lt;br /&gt;
| 4&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| FX-2&lt;br /&gt;
| -&lt;br /&gt;
| 28 x 44mm, 50 I/O auf 2.54mm Stiftleiste, WIN und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://shop.trenz-electronic.de/catalog/product_info.php?products_id=456 Avnet Spartan 3A Evaluation Kit]&lt;br /&gt;
| 50&lt;br /&gt;
| XC3S400A&lt;br /&gt;
| -&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| WIN und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ct-lab.de FPGA-Karte aus dem c´t-Lab]&lt;br /&gt;
| 92&lt;br /&gt;
| XC3S400&lt;br /&gt;
| -&lt;br /&gt;
| SD-Kartenslot (Bitstream-File wird über µC ins FPGA geladen, Dateiauswahl via Systembus oder Panel oder fest einstellbar)&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| ATmega644&lt;br /&gt;
| optionales Bedienpanel mit LCD-Display, Drehgeber und Taster&lt;br /&gt;
| Bestandteil des Laborsystems c´t-Lab der Zeitschrift c´t.&lt;br /&gt;
VGA-Buchse, SD-Kartenslot (u.a. auch zum Laden des FPGA). Preis für FPGA-Platine mit verlöteten SMD-Bauteilen und Teilesatz. Optionale Erweiterungskarten mit schnellen DACs, Eingangskomparator, SRAM, Echtzeituhr, PS/2, RS232 (am FPGA). Optionaler JTAG-Adapter. &lt;br /&gt;
http://www.ct-lab.de, http://www.segor.de, http://thoralt.ehecht.com/phpbb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Raggedstone 1 - Spartan-3 Development PCI-Karte ====&lt;br /&gt;
* Spartan-3 FPGA FG456-Package&lt;br /&gt;
* 32 bit, 33 MHz, 3.3/5V PCI interface&lt;br /&gt;
* 4Mbit Flash Memory&lt;br /&gt;
* 16KBit serielles EEprom&lt;br /&gt;
* 4 x 7 Segment Anzeigen LED, abnehmbar&lt;br /&gt;
* LM75 Temperatursensor&lt;br /&gt;
* viele DIL-Header für eigene Erweiterungen, verschiedene werden auch durch Hersteller angeboten&lt;br /&gt;
* 2 Drucktaster&lt;br /&gt;
* Mit dem PCI-Interface kann bei entsprechender Programmierung des FPGA auf den PCI-Bus eines Hostrechners zugegriffen werden, Beispieldesign unter http://projects.varxec.net/raggedstone1&lt;br /&gt;
* Webseite: http://www.enterpoint.co.uk/moelbryn/raggedstone1.html&lt;br /&gt;
* Preis mit XC3S400 ca. €145,- (inkl MwSt.)&lt;br /&gt;
* Preis mit XC3S1500 ca. €255,-  (inkl. MwSt.)&lt;br /&gt;
&lt;br /&gt;
==== LiveDesign Evaluation Board von Altium ====&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Xilinx-Version direkt mit ISE Webpack nutzbar&lt;br /&gt;
* Xilinx XC3S1000-4FG456C, wahlweise aber auch mit Altera EP1C12F324C8 (s.u.)&lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung (Druckerport) sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs&lt;br /&gt;
* &#039;&#039;kein&#039;&#039; on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für allgemeine Zwecke &lt;br /&gt;
* Listenpreis $99,- Endpreis: ~150 Euro (inkl. MwSt. und Versand)&lt;br /&gt;
&lt;br /&gt;
==== Trenz-Electronic ====&lt;br /&gt;
http://www.trenz-electronic.de/products.html&lt;br /&gt;
* Kleines FPGA Board mit ucLinux und Virtex-II PowerPC, optional: ucLinux und Microblaze Softprozessor im Spartan-3 FPGA&lt;br /&gt;
* Pal/Gal kompatible FPGA und CPLD Module&lt;br /&gt;
* Spartan-3 FPGA Mikromodul mit 200K bis 1000K Systemgattern&lt;br /&gt;
* Spartan-3A DSP Mikromodul mit bis zu 34000K Systemgattern&lt;br /&gt;
&lt;br /&gt;
==== Simple-Solutions ====&lt;br /&gt;
http://www.simple-solutions.de/de/products/index.php&lt;br /&gt;
Mehrere Spartan3-FPGAs - Boards&lt;br /&gt;
&lt;br /&gt;
==== CESYS ====&lt;br /&gt;
http://www.cesys.com&lt;br /&gt;
&lt;br /&gt;
Cesys ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland.&lt;br /&gt;
&lt;br /&gt;
* Verschiedene FPGA boards mit USB, PCI und PCIe Schnittstellen im Lieferprogramm&lt;br /&gt;
* Je nach Ausführung mit Spartan-2/3/3E/6, Virtex2/2PRO/4&lt;br /&gt;
* verschiedene Speicherkonfigurationen (SO-DIMM, SRAM, SDRAM, DDR2)&lt;br /&gt;
* Auftragsentwicklungen nach Kundenwunsch möglich&lt;br /&gt;
&lt;br /&gt;
==== ZTEX ====&lt;br /&gt;
&lt;br /&gt;
http://www.ztex.de/&lt;br /&gt;
&lt;br /&gt;
Cesys ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland.&lt;br /&gt;
&lt;br /&gt;
* Xilinx Spartan 6 FPGA, High-Speed USB interface, Cypress CY7C68013A EZ-USB Microcontroller, 90 GPIO ports, 15 SIO ports, 64 MByte DDR SDRAM, microSD socket, EEPROM.&lt;br /&gt;
* Xilinx Spartan 3 XC3S400 FPGA, High-Speed (480 MBit/s) USB interface, Cypress CY7C68013A EZ-USB Microcontroller, 60 GPIO ports, 20 SIO ports, EEPROM und optionally mit Flash memory&lt;br /&gt;
* High-Speed (480 MBit/s) USB interface, Cypress CY7C68013A/14A EZ-USB Microcontroller, microSD socket mit bis zu 2GB Flash memory, 36 GPIO ports, 28 SIO ports, EEPROM und on-board Schaltregler&lt;br /&gt;
&lt;br /&gt;
* Open Source Firmware Kit zum Programmieren&lt;br /&gt;
&lt;br /&gt;
=== Boards für Altera-FPGAs ===&lt;br /&gt;
==== LiveDesign Evaluation Board von Altium ====&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* * Wahlweise mit Altera EP1C12F324C8 oder Xilinx XC3S1000-4FG456C&lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung (Druckerport) sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs&lt;br /&gt;
* &#039;&#039;kein&#039;&#039; on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für allgemeine Zwecke &lt;br /&gt;
* Endpreis: ~150 Euro (inkl. MwSt. und Versand)&lt;br /&gt;
&lt;br /&gt;
==== Terasic TREX C1 Multimedia Development Kit ====&lt;br /&gt;
* Altera EP1C6Q240C8 &amp;amp; EP1S Serial Configuration Device&lt;br /&gt;
* Built-in USB Blaster programming circuitry (JTAG and AS mode)&lt;br /&gt;
* 1 MiB Flash Memory &amp;amp; 8 MiB SDRAM (1M x 4 x 16)&lt;br /&gt;
* CF Card Socket, 16-bit CD-quality Audio DAC&lt;br /&gt;
* TV Encoder, VGA, RS-232, PS/2, and more&lt;br /&gt;
* Many reference designs and C++ applications&lt;br /&gt;
* [http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&amp;amp;CategoryNo=39&amp;amp;No=14 www.terasic.com.tw]&lt;br /&gt;
* fertiger Core eines CPC6128 (8-Bit Homecomputer von 1984) für dieses Board, inlusive Sourcecode (eigener Z80 in AHDL, mit 24MHz eingesetzt): [http://www.symbos.de/trex.htm http://www.symbos.de/trex.htm]&lt;br /&gt;
* Listenpreis $149,-&lt;br /&gt;
&lt;br /&gt;
==== Altera Cyclone II 2C20 ====&lt;br /&gt;
* Altera Cyclone II EP2C20F484C7N FPGA mit 20000 LEs&lt;br /&gt;
* USB-BlasterTM download cable (integriert)&lt;br /&gt;
* EPCS4 serial configuration Flash&lt;br /&gt;
* 8-Mbyte SDRAM, 512-Kb SRAM, 4-Mbyte flash &lt;br /&gt;
* externer SMA - Clock-Eingang&lt;br /&gt;
* 24-bit Audio coder/decoder (CODEC) &lt;br /&gt;
* 10 Schalter, 4 Druckknöpfe inkl Reset &lt;br /&gt;
* 4St. 7-Segmentanzeigen, 10 rote LEDs + 8 grüne LEDs&lt;br /&gt;
* VGA, RS-232, and PS/2 Stecker&lt;br /&gt;
* Zwei 40-pin expansion ports + SD/MMC socket&lt;br /&gt;
* USB-Kabel, externes Steckernetztteil, CD-Rom&lt;br /&gt;
* Reference designs&lt;br /&gt;
* Qartus II Web Edition + NIOS II Web Edition&lt;br /&gt;
* http://www.altera.com/products/devkits/altera/kit-cyc2-2C20N.html&lt;br /&gt;
* Listenpreis $150,-&lt;br /&gt;
&lt;br /&gt;
==== Hpe Mini AC II - Cyclone II board von Gleichmann Research ====&lt;br /&gt;
* Altera Cyclone II EP2C35 FPGA (speed grade 6)&lt;br /&gt;
* Mit reprogrammierbarem Flash zur automatischen FPGA-Konfiguration&lt;br /&gt;
* 25 pin SUB-D connector (parallel) für direktes FPGA-Programmieren&lt;br /&gt;
* RS232 (9 pin SUB-D) &lt;br /&gt;
* VGA (15 pin SUB-D) mit 64 möglichen Farben&lt;br /&gt;
* Ethernet 10/100 Mbit/s, full/half duplex&lt;br /&gt;
* 1 USB 2.0 compatible full-speed target connector&lt;br /&gt;
* 3 USB 2.0 compatible full-speed host connectors&lt;br /&gt;
* Santa Cruz connector mit 40 nutzbaren I/Os&lt;br /&gt;
* Audio interface (line-in and line-out) mit CODEC&lt;br /&gt;
* SODIMM144 Sockel für (SDRAM) 256MB&lt;br /&gt;
* SDRAM-Speichersockel mit nur 32-Bit angebunden, die Hälfte des Speichers bleibt nicht nutzbar&lt;br /&gt;
* 25 MHz oscillator&lt;br /&gt;
* Prototyping area, Lötfläche&lt;br /&gt;
* 8 LEDs, grün, blau, 3x4 key matrix, 4-bit DIP switch&lt;br /&gt;
* LCD connector, 2-character 7-segment display&lt;br /&gt;
* Single step Knopf und Reset Knopf&lt;br /&gt;
* Parallelportkabel für PC&lt;br /&gt;
* Beispieldesign, Testprogramme, Datenblätter&lt;br /&gt;
* LEON3-CPU Design inkl. Source Code, Quartus IDE, SnapGear Linux&lt;br /&gt;
* Nicht mehr im Programm - war ca 399,-&lt;br /&gt;
&lt;br /&gt;
==== Altera DE2 - Development and Education Board V2 ====&lt;br /&gt;
* Altera Cyclone II 2C35 FPGA mit 35000 LEs&lt;br /&gt;
* Altera Serial Configuration devices (EPCS16) für Cyclone II 2C35&lt;br /&gt;
* USB Blaster board zur Programmierung und User API&lt;br /&gt;
* 8 MB SDRAM, 4 MB Flash Memory, 512KB SRAM&lt;br /&gt;
* SD Card Sockel, RS-232, Ethernet, 10-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* Viele Besipiel mit Source Code wie TV, SD Music Player)&lt;br /&gt;
* [http://www.fh-wedel.de/fileadmin/mitarbeiter/bos/files/VHDL/VhdlEinfuehrung.pdf Kleines aber nettes Tutorial zum Altera DE2 Dev. Board]&lt;br /&gt;
* Listenpreis US $495,-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Altera DE2 - Development and Education Board V3 ====&lt;br /&gt;
* Altera Cyclone III 3C35 FPGA mit 115000 LEs&lt;br /&gt;
* Altera Serial Configuration device EPCS64&lt;br /&gt;
* USB Blaster zur Programmierung und für User API&lt;br /&gt;
* User-Applikations und Steuerungssoftware&lt;br /&gt;
* 64 MB SDRAM, 4 MB Flash Memory, 512KB SRAM&lt;br /&gt;
* SD Card Sockel, RS-232, 2x GB-Ethernet, &lt;br /&gt;
* 8-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* 18 Schalter, 4 Drucktasten, PS2-Maus-Anschluss&lt;br /&gt;
* 18 LEDs, 16x2-LCD-Display, 8 7-Segment-Anzeigen&lt;br /&gt;
* IR-Fernsteuerung&lt;br /&gt;
* HSMC-Stecker&lt;br /&gt;
* Viele Besipiel mit Source Code wie TV, SD Music Player, Audiorecorder&lt;br /&gt;
* Listenpreis US $595,- (academic = $395,-)&lt;br /&gt;
&lt;br /&gt;
==== Cyclone III embedded Development Kit====&lt;br /&gt;
* Altera Cyclone III EP3C25 FPGA&lt;br /&gt;
* 640x480 LCD Display mit touch screen function&lt;br /&gt;
* MiniSD-Card Sockel&lt;br /&gt;
* Audio Interface ADC CODEC&lt;br /&gt;
* 10/100 Mbit Fast Ethernet Schnittstelle&lt;br /&gt;
* FPGA-Konfiguration über USB&lt;br /&gt;
* NIOS II EVAL Lizenz&lt;br /&gt;
* IP LIB Altera&lt;br /&gt;
* Listenpreis US $495,-  über ALtera Webseite&lt;br /&gt;
* Bei EBV €349,- inkl. MwSt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NanoBoard-NB1 von Altium ====&lt;br /&gt;
* kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Unterstützt eine breite Palette von Ziel-FPGAs durch Aufsteckplatinen &lt;br /&gt;
* Altera Cyclone (EP1C12-Q240C7) Aufsteckplatine enthalten &lt;br /&gt;
* Xilinx Spartan IIE (XC2S300E-PQ208) im Lieferumfang enthalten &lt;br /&gt;
* Enthält Stromversorgung mit verschiedenen Steckern für unterschiedliche Konfigurationen &lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* NanoBoard-NB1 Reference-Handbuch zur Hardware &lt;br /&gt;
* Peripherie: LCD, LEDs, Dip-Schalter, Tastenblock, Summer, ADC/DAC, 256K x 8 RAM, 8 MiB Serial Flash RAM, on-board Serial Flash RAM für FPGA-Konfig.&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, CAN, VGA, I2C, IO Stecker für allg. Zwecke &lt;br /&gt;
* Upgradefähige NanoBoard Controller Firmware &lt;br /&gt;
* Stabiler NanoBard-Sockel&lt;br /&gt;
* Listenpreis €995,-&lt;br /&gt;
&lt;br /&gt;
=== Boards für Lattice-FPGAs ===&lt;br /&gt;
==== www.hardware-design.de ====&lt;br /&gt;
* bietet verschiedene einfache Boards mit Lattice-Bausteinen an&lt;br /&gt;
* FPGA-Board mit XP2-17/XP2-8/XP2-5 -&amp;gt; 113,- bis 101,- Euro&lt;br /&gt;
* CPLD-Boards u.a. mit MachXO640 -&amp;gt; 89,- Euro&lt;br /&gt;
&lt;br /&gt;
=== Debugging-Hilfen ===&lt;br /&gt;
Gerade beim [[Debugging]] größerer FPGA-Designs ist es oft notwendig, auf interne Signale und Busse zuzugreifen, die aus routing- oder Platzgründen nicht an Pins des FPGAs gelegt - und mit konventionellen Analysatoren beobachtet werden können. Nebst den einschlägigen Tools der Hersteller, welche Signal probing über JTAG gestatten (z.&amp;amp;nbsp;B. ChipsScope und SignalTap), werden in FPGAs oft mehr oder weniger komplexe [[Logic Analyzer]] integriert, welche die internen Signale in vielfältiger Weise aufzeichnen. Diese werden in Block-RAMs oder FIFOs gespeichert und durch externe Master ausgelesen. Hier kommen auf der Platine befindliche MCUs oder fremd zugreifende FPGAs / CPUs in Betracht, welche über unterschiedliche Kommunikationsverbindungen (seriell, parallel, LVDS) angeschlossen sind. Dazu werden in die FPGAs entsprechende Cores / Treiber eininstanziiert.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
====Proprietärer serieller Logic Analyzer ====&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist die direkte Instanziierung eines Blockrams als FIFO mit &amp;quot;breitem&amp;quot; Busanschluss: Linksseitig besitzt das FIFO eine Breite von z.&amp;amp;nbsp;B. 256 Bit (Xilinx-Rams lassen sich ohne weitere Umbeschaltung über den Wizzard mit bis zu 1024 Bits deklarieren und nutzen). Rechtsseitig einen 16- oder 32 Bit breiten Busanschluss für einen Prozessor bzw Parallelinterface oder einen 1 Bit breiten Anschluss für ein serielles streaming interface. Mit einem FiFo-enable können die zu sampelnden Zeiten (Busphasen) festgelegt werden, z.&amp;amp;nbsp;B. anhand eines Kriteriums wie die Erfüllung einer bestimmten mathematischen Bedingung, die man in VHDL formuliert, oder es wird einfach ein Trigger gesetzt. Solange das FiFo nicht voll ist, kann geschrieben werden, was durch die interne FiFo-Verwaltung selbst bereits komplett geregelt wird.&lt;br /&gt;
&lt;br /&gt;
Beim einfachen seriellen Logic Analyzer benötigt man nur noch einen kleinen Core, der permanent das FiFo liest, und den seriellen Overhead (Startbit, Stoppbit, Parity und gfs CRC) hinzufügt. Mit einem einfach Pegelwandler kann so ein PC direkt angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Auch denkbar ist die Anbindung an ein fremdes FPGA-board mit viel Speicher über (LV-)DS-Kommunikation. In komplexeren Systemen wird ein CAN- oder USB-Core eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Wenn mittels des Kriteriums nur ganz bestimmte kritische Phasen herausgesampelt werden (z.&amp;amp;nbsp;B. das Auftauchen eines bestimmten Rechenfehlers im FPGA) und so das Datenaufkommen je Zeiteinheit über längere Zeit betrachtet eher gering ist, kann bei geeignetem Datendurchsatz in Echtzeit dauerhaft mitprotokolliert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== BusProbe, der Debugging Core von abaxor engineering  ====&lt;br /&gt;
Mit der BusProbe kann der Entwickler den Signalfluss im FPGA-Design auch über einen längeren Zeitraum überwachen und am PC aufzeichnen. Der Core verarbeitet an jedem Eingang einen kompletten Bus. &lt;br /&gt;
&lt;br /&gt;
Die Daten werden gemultiplext zum PC geschickt und dort per Software demultiplext. Im PC erfolgt auch die Auswertung mit beliebigen Analyse-Tools.&lt;br /&gt;
&lt;br /&gt;
Gegenüber dem Betriebssystem verhält sich die BusProbe wie eine Festplatte, von der die Daten mit gewöhnlichen Zugriffen gelesen werden können.&lt;br /&gt;
&lt;br /&gt;
* Streaming der Daten zum PC mit mehr als 20 MByte/s&lt;br /&gt;
* keine Treiber im PC da Nutzung von Standardschnittstellen (USB oder IDE)&lt;br /&gt;
* Hot-Plugging&lt;br /&gt;
* Visualisierung mit beliebigen Programmen&lt;br /&gt;
* geringer Logikaufwand&lt;br /&gt;
&lt;br /&gt;
[http://www.abaxor.de/produkte.html abaxor.de-Webseite]&lt;br /&gt;
&lt;br /&gt;
==== open source Logikanalysator von sump.org====&lt;br /&gt;
Ein einfacher, übersichtlicher Logikanalysator findet sich auf sump.org. Er liegt im Quelltext vor wird mit ins Design einsynthetisiert. Als Speicher dient wahlweise SRAM oder internes RAM. Es können 32 Kanäle mit 100 MHz (oder weniger) gesampelt werden. Die Bediensoftware läuft platformunabhängig unter Java und benötigt eine serielle Schnittstelle (auch über USB-seriell Wandler) zum Core.&lt;br /&gt;
&lt;br /&gt;
[http://de.sump.org/projects/analyzer/ sump.org-Webseite]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Hardwarebeschreibungssprachen]]&lt;br /&gt;
* [[Reset für FPGA/CPLD]]&lt;br /&gt;
* [[Taktung FPGA/CPLD]]&lt;br /&gt;
* Projekt [[Audio-DSP mit Spartan 3-FPGA]]&lt;br /&gt;
* Projekt [[FPGA Lab]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.fpga4fun.com/index.html FPGA4Fun] - FPGA-Projekte, größtenteils mit Altera und Verilog&lt;br /&gt;
* [http://video.google.com/videoplay?docid=-4969729965240981475 Ein Vortrag, auf Englisch: General Purpose, Low Power Supercomputing Using Reconfiguration Logic]&lt;br /&gt;
* http://www.opencores.org - FPGA-Projekte, Opensource, jeder kann seine Eigenen einstellen und an anderen mitarbeiten. U.a. gibt es verschiedene CPUs für FPGAs.&lt;br /&gt;
* [http://members.optushome.com.au/jekent/FPGA.htm John&#039;s FPGA Page]&lt;br /&gt;
* [http://www.embedded.com/columns/whatsnew/197003073 More about designing with embedded FPGAs] by Bernard Cole, Embedded.com&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=55991</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=55991"/>
		<updated>2011-03-23T12:26:58Z</updated>

		<summary type="html">&lt;p&gt;62.225.145.235: /* Trenz-Electronic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FPGA ist die Abkürzung für &amp;quot;&#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
=== Grundelemente  ===&lt;br /&gt;
&lt;br /&gt;
Ein FPGA besteht, ähnlich wie ein [[CPLD]], aus vielen Logikelementen, hauptsächlich [[FlipFlop]]s (FF) und davor geschalteten Logikelementen. Diese Logikelemente sind entweder Verschaltungen verschiedener Logikgatter (Actel) oder aber kleine LUTs (LUT = Lookup-Table), die über elektronische &amp;quot;Schalter&amp;quot; entsprechend der vom Entwickler gewünschten Funktion miteinander verknüpft werden können.&lt;br /&gt;
&lt;br /&gt;
Eine &#039;&#039;&#039;LUT&#039;&#039;&#039; kann eine beliebige kombinatorische Funktion (NAND, XOR, AND, Multiplexer etc.) aus den Eingangssignalen realisieren. Die Anzahl der Eingangssignale pro LUT ist vom FPGA abhängig und liegt meist zwischen 4 und 6. Für Funktionen die mehr Eingänge erfordern als eine einzige LUT besitzt (hohes Fan-In), werden mehrere LUTs direkt miteinander verschaltet. Die [[FlipFlop]]s dienen dazu, Signalwerte zwischenzuspeichern, um sie im nächsten Takt weiterverarbeiten zu können. Das Verhältnis zwischen der Anzahl der LUTs und der Anzahl der Flip-Flops ist meist 1:1. Aktuelle FPGAs bestehen aus bis zu einigen zehntausend Logikelementen.&lt;br /&gt;
&lt;br /&gt;
Die logischen Schalter und Speicher sind in den meisten FPGAs durch [[Speicher#SRAM | SRAM]]-Speicherzellen realisiert, welche beim Bootprozess passend geladen werden. Das Laden dieser Konfigurationsdaten bzw. Verknüpfungsregeln geschieht dabei in der Regel aus einem speziellen [[Speicher#Flash | Flash-ROM]]-Baustein heraus. Es kann aber auch ein Mikrocontroller benutzt werden. Die meisten FPGAs bieten daher für diesen Konfigurationsvorgang mehrere Modi an (seriell, parallel, Master/Slave). Da die SRAM-Zellen ihren Inhalt beim Abschalten der Versorgungsspannung verlieren, muss ein SRAM-basierter FPGA bei jedem Einschalten neu konfiguriert werden. Daher benötigt ein solcher FPGA einige Millisekunden bis zur Betriebsbereitschaft.&lt;br /&gt;
&lt;br /&gt;
Eine FPGA-Familie beinhaltet Typen mit unterschiedlicher Anzahl und Komplexität von Logikzellen. So enthält ein Spartan3-1000 ca. 2,5 mal so viel Logik (FF, LUTs) wie ein Spartan3-400.  &lt;br /&gt;
&lt;br /&gt;
FPGAs mit nichtflüchtigem Speicher basieren auf [[Speicher#EEPROM | EEPROM]]-, [[Speicher#Flash | Flash]]-Speicher (einige Familien von Lattice und Actel) oder AntiFuse- Technologie (Actel). Die sogenannten AntiFuse FPGAs sind nur einmalig programmierbar.&lt;br /&gt;
&lt;br /&gt;
=== I/O Anschlüsse ===&lt;br /&gt;
&lt;br /&gt;
FPGAs unterstützen als universal einsetzbare Digital-ICs eine Vielzahl von Signalstandards. Üblich sind verschiedene TTL-Pegel (5V, 3,3V, 2,5V), differentielle Signalstandards (LVDS, GTL) und im Hochpreisbereich serielle Hochgeschwindigkeitsstandards mit bis zu 28 Gbit/s. Oftmals sind weitere Eigenschaften wie Treiberstärke und Flankensteilheit für jeden benutzerdefinierbaren Anschluss (User-IO) einstellbar. Meist sind die Pins zu Bänken mit gleichem I/O Standard zusammengefasst. Innerhalb einer solchen Bank arbeiten alle Pins im gleichen I/O Standard und mit der selben I/O Spannung.&lt;br /&gt;
&lt;br /&gt;
Bei komplexeren FPGAs sind die Ein- und Ausgänge mit Delaygliedern versehen, die ein Anpassen des Timings bei Bussen wie z.B. schnellen Speichern ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Ebenso können FPGA-interne Pull-Up und Pull-Down-Widerstände zugeschaltet werden, [[Wellenwiderstand | Terminierung]] wird ebenfalls unterstützt. Zudem befinden sich hinter vielen IO-Pads sog. [[Boundary_scan| Boundary Scan]] Zellen.&lt;br /&gt;
&lt;br /&gt;
Das I/O Verhalten wird zusammen mit vielen anderen Parametern in einer Datei festgelegt (Xilinx *.ucf, Altera *.acf, Lattice *.lpf). Alternativ können diese auch als Syntheseoption im Kommentarfeld des [[Verilog]]/[[VHDL]] Codes mit angegeben werden.&lt;br /&gt;
&lt;br /&gt;
[[Ausgangsstufen Logik-ICs | Tristatebuffer]] werden implizit über VHDL definiert, indem einem Ausgang zeitabhängig der Zustand &amp;quot;Z&amp;quot; zugewiesen wird. Alternativ kann er explizit als Komponente eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
Einige Pins übernehmen besondere Funktionen und sind somit vom Anwender nicht uneingeschränkt oder z.T. auch gar nicht nutzbar. Dazu zählen neben der [[JTAG]]-Schnittstelle z.&amp;amp;nbsp;B. die Pins zum Einlesen der Konfigurationsdaten. &lt;br /&gt;
&lt;br /&gt;
Ferner sind einige wenige Pins (2 - 8) zum Einspeisen des Taktes für das Design vorgesehen. Für schnelle Schaltungen müssen diese reservierten Pins benutzt werden. Sie enthalten kein Eingangs-FF und wirken direkt auf Taktnetze / PLLs.&lt;br /&gt;
&lt;br /&gt;
Die Hersteller bieten FPGAs mit gleicher Anzahl von Logikelementen in unterschiedlichen Gehäusen an. So kann der FPGA mit der passenden Anzahl von Pins eingesetzt werden. Das obere Ende markieren Chips mit über 1000 I/Os, die kleinsten bieten ca. 80 User-I/O. Oft werden nur [[IC-Geh%C3%A4useformen#BGA|BGA]] und [[IC-Geh%C3%A4useformen#QFP|QFP]] Gehäuse (bis ca. 240 Pins) angeboten.&lt;br /&gt;
&lt;br /&gt;
=== Komplexe Funktionsblöcke ===&lt;br /&gt;
&lt;br /&gt;
Neben den einfachen FlipFlops beinhalten FPGAs darüber hinaus komplexe Routing- und Speicherkonfigurationsoptionen innerhalb und außerhalb der logischen Elemente (LEs), die es gestatten, komplexe Schalt- und Rechenstrukturen aufzubauen. Für rechenintensive Designs, z.&amp;amp;nbsp;B. in der Signalverarbeitung, enthalten viele FPGAs &#039;&#039;&#039;Multiplizierer&#039;&#039;&#039; direkt auf dem Chip, die in einem einzigen Taktzyklus Multiplikationen durchführen können.&lt;br /&gt;
&lt;br /&gt;
Ferner haben FPGAs oft einen von den LEs getrennt verfügbaren &#039;&#039;&#039;RAM&#039;&#039;&#039;-Bereich integriert, der sich in vielfältiger Weise ansprechen lässt. So können damit Single- oder Dualport-RAMs mit variabler Bitbreite erzeugt werden. Üblich sind mehrere (4 - 30) kleinere Dualport [[Speicher#BRAM | RAM-Blöcke]] von 4 - 16 kbit. Einige Familien besitzen einen größeren internen RAM, andere spezielle FIFO-Blöcke.&lt;br /&gt;
&lt;br /&gt;
Zur Generierung spezieller Takte sind &#039;&#039;&#039;PLL&#039;&#039;&#039;s (Phase Locked Loop) auf dem FPGA integriert. Einige Hersteller setzen mit dem selben Ziel &#039;&#039;&#039;DLL&#039;&#039;&#039;s (Delay Locked Loop) ein. Mittels dieser Blöcke können aus einem Taktsignal weitere erzeugt werden. Typisch sind Taktverdopplung oder -vervielfachung. Ebenso kann der Takt geteilt werden oder ein Signal gleicher Frequenz, aber um eine halbe, viertel usw. Periode verschoben erzeugt werden. Typische Anwendungen sind die Ansteuerung von [[Speicher#DDR-RAM | DDR-RAMs]] oder die Kompensation von Laufzeitunterschieden zwischen Takt und mit diesem getakteten Steuersignalen. Meist sind 2 - 8 Taktnetzwerke und PLL/DLLs gleicher Anzahl integriert. Siehe auch [[Taktung FPGA/CPLD]].&lt;br /&gt;
&lt;br /&gt;
=== CPU im FPGA ===&lt;br /&gt;
&lt;br /&gt;
Programmierbare Prozessoren sind auch bei FPGA-Designs immer häufiger anzutreffen. CPUs sind zwar im Allgemeinen langsamer und weniger effizient, als eine vollständige Implementation aus Logik-Primitiven - aber bei komplexen Abläufen auch deutlich einfacher zu entwickeln. Insbesondere bei sequentiellen Aufgaben (Benutzerinterface, komplexe Steueraufgaben etc.) wird man gerne auf eine klassische CPU zurückgreifen. &lt;br /&gt;
&lt;br /&gt;
Manche FPGAs integrieren dazu einen oder mehrere Prozessorkerne (z. B. [[AVR]] bei Atmels FPSLIC oder PowerPC bei Xilinx&#039; Virtex) als &#039;&#039;HardCores&#039;&#039; auf einem IC.&lt;br /&gt;
&lt;br /&gt;
Auf der anderen Seite gibt es auch [[FPGA Soft Core | SoftCores]] (z. B. ARM-Cortex-M1 bei IGLOO-FPGA von [http://www.actel.com ACTEL]), Prozessorkerne die als Quelltext oder als vorsynthetisierte Netzliste vorliegen. In Abhängigkeit von den zur Verfügung stehenden Ressourcen können diese &#039;&#039;SoftCores&#039;&#039; beliebig instanziiert werden. Es gibt eine Vielzahl verschiedener &#039;&#039;SoftCores&#039;&#039;. &lt;br /&gt;
 &lt;br /&gt;
Teilweise kompatibel zu etablierten Prozessorarchitekturen (MIPS, SPARC, AVR), zum Teil optimiert auf die FPGAs einzelner Hersteller. Auch auf vergleichsweise &lt;br /&gt;
kleinen aktuellen FPGAs kann man problemlos eine 32bit-RISC-CPU integrieren.&lt;br /&gt;
&lt;br /&gt;
Als Programmspeicher werden die FPGA-internen [[Speicher#BRAM | RAM-Blöcke]] oder externe [[Speicher]] (SDRAM, SRAM) genutzt. Für einige Prozessorkerne stehen Hochsprachen wie C, C++ etc. zur Verfügung, andere werden in Assembler programmiert.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
=== Geschwindigkeit ===&lt;br /&gt;
&lt;br /&gt;
Die maximale „Geschwindigkeit“ eines FPGAs ist von der verwendeten Halbleitertechnologie (Prozess, Strukturgrößen), der internen Schaltungstopologie (Komplexität der LEs), Vorhandensein von harten Strukturen und vor allem vom Design abhängig. Dabei sind der sogenannte Datendurchsatz und die rein maximale Systemtaktfrequenz zu unterscheiden. Die erreichbare Taktfrequenz lässt sich ohne detaillierte Kenntnis des Designs nicht abschätzen, möglich sind je nach »Speed Grade« des ICs typischerweise Taktfrequenzen von 300-600 MHz für die Schaltgeschwindigkeit der reinen Logikelemente. Je nach der Anzahl und Komplexität der pro Takt durchzuführenden Operationen ergeben sich dann reale Systemtaktfrequenzen von meist 10-100 MHz für global operierende Einheiten und bis zu 300 MHz für schnelle lokale Module. Maßgeblich ist in wieweit das Design auf Fläche bzw. Geschwindigkeit hin optimiert und vom Tool synthetisiert wurde: Durch das Einbringen von zusätzlichen Registerstufen lassen sich z.&amp;amp;nbsp;B. zeitkritische Pfade entschärfen (Pipelining), sodass die Frequenz des Chips angehoben werden kann und somit der effektive Datendurchsatz erhöht wird, mit dem Nachteil der gesteigerten Latenz durch das Mehr an Takten. Der Datendurchsatz lässt sich darüber hinaus durch die Nutzung paralleler Architekturen verbessern.&lt;br /&gt;
&lt;br /&gt;
Die Systemfrequenz kann-, muss aber nicht der Frequenz entsprechen, mit der Daten zyklisch eingetaktet und verarbeitet werden; zudem sind Schaltungsteile mit unterschiedlichen Taktfrequenzen zu unterscheiden: Mit einem Systemtakt von 20 MHz lassen sich z.&amp;amp;nbsp;B. 18-Bit AD-Wandler auslesen, die so z.&amp;amp;nbsp;B. alle 1 µs neue Daten liefern, die verarbeitet werden müssen. Bei der Nutzung von 5 solchen Wandlern, die sequentiell verarbeitet werden, lägen 5 MHz Datenfrequenz vor. Für andere Schaltungsteile, die z.&amp;amp;nbsp;B. asynchron an die Peripherie andocken, sowie reine »state machines« können Schaltungsteile auf der 2-4 fachen Frequenz betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Generell sind Fläche und Geschwindigkeit konkurrierende Größen, zwischen denen ein Optimum gefunden werden muss. Für die preiswerten FPGA-Serien wie Spartan (Xilinx) und Cyclone (Altera) sind aufgrund technologischer Randbedingungen etwa 10-30% weniger Taktgeschwindigkeit bei gleichem Design zu erwarten als bei den großen Brüdern der Virtex- (Xilinx) bzw. Stratix-Familie (Altera). Es muss mit mehr Verbrauch an Logikelementen und Taktzyklen gerechnet werden (weniger Routingreserven, geringere Zahl von LUT-Eingängen, langsamere Logikelemente). Dafür sind sie sehr preiswert.&lt;br /&gt;
&lt;br /&gt;
Funktionstechnisch identische Chips werden oft in zwei oder mehr Geschwindigkeitsklassen (speed grades) angeboten, die sich meist durch Bauteilselektion bei der Produktion ergeben. Grob kann man ca. 5%-10% höhere Taktung zwischen zwei speed grades erwarten.&lt;br /&gt;
&lt;br /&gt;
== Hersteller ==&lt;br /&gt;
&lt;br /&gt;
Die größten Hersteller von FPGAs sind [http://www.altera.com Altera] und [http://www.xilinx.com Xilinx]. Weitere Hersteller sind [http://www.latticesemi.com/ Lattice], [http://www.actel.com Actel] und [http://www.atmel.com Atmel].&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau komplizierter, applikationsnaher Strukturen wird meist durch automatische Routing- und Synthesewerkzeuge erledigt, welche mit einer logischen, funktionellen Beschreibung der Architektur in einer Hardwarebeschreibungssprache wie z.&amp;amp;nbsp;B. VHDL &amp;quot;gefüttert&amp;quot; werden. Die Hardwarebeschreibung in [[VHDL]] gelingt ihrerseits z.&amp;amp;nbsp;B. mit VHDL-generierenden Werkzeugen, mittels derer zuvor Logikstrukturen, hardwarenahe Strukturen, Ablaufdiagramme und Zustandsautomaten formuliert wurden.&lt;br /&gt;
&lt;br /&gt;
Durch die Standardisierung der Architektur einerseits und die Entkoppplung von applikationsorientierter Beschreibung sowie Chip- und Hersteller-spezifischer Synthese andererseits, wird die Hardware quasi als Software gebaut. Dies wiederum schafft alle Optionen der Wiederverwendung und Austausch von &amp;quot;Hardwareteilen&amp;quot;. So stehen inzwischen komplett nutzbare Schaltungen wie serielle Bausteine, RAM-Controller und vieles mehr als Open Source zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsboards und Starterkits ==&lt;br /&gt;
=== Boards für Xilinx-FPGAs ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;sortable&amp;quot; id=&amp;quot;fpgaevalboards&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichn.&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! FPGA&lt;br /&gt;
! RAM (MByte)&lt;br /&gt;
! Flash (MByte)&lt;br /&gt;
! USB&lt;br /&gt;
! Ethernet&lt;br /&gt;
! RS-232&lt;br /&gt;
! µC&lt;br /&gt;
! Eingabe&lt;br /&gt;
! sonst.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.knjn.com/board_Xylo.html Xylo-L]&lt;br /&gt;
| 130&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 2.0&lt;br /&gt;
| 10base-T&lt;br /&gt;
| -&lt;br /&gt;
| LPC213x&lt;br /&gt;
| -&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.xilinx.com/s3estarter Spartan3e Starter Kit]&lt;br /&gt;
| 180&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| 64 MB DDR-SDRAM&lt;br /&gt;
| 16&lt;br /&gt;
| (JTAG)&lt;br /&gt;
| 10/100&lt;br /&gt;
| 2x&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 1 Drehgeber, 4 Schalter&lt;br /&gt;
| Coolrunner CPLD, LCD, 3-Bit VGA, PS/2&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.digilentinc.com/Products/Detail.cfm?Nav1=Products&amp;amp;Nav2=Programmable&amp;amp;Prod=S3BOARD Digilent Spartan-3]&lt;br /&gt;
| 100&lt;br /&gt;
| XC3S200/400/1000&lt;br /&gt;
| 1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 1x&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| VGA, PS/2, 7seg&lt;br /&gt;
|-&lt;br /&gt;
| [[Digilent Nexys]]&lt;br /&gt;
| 100&lt;br /&gt;
| XC3S200/400/1000&lt;br /&gt;
| 16&lt;br /&gt;
| 4&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| 7seg, Programmierung &amp;amp; Stromversorgung über USB&lt;br /&gt;
|-&lt;br /&gt;
| [[Digilent Nexys 2]]&lt;br /&gt;
| 121&lt;br /&gt;
| XC3S500E/1200E&lt;br /&gt;
| 16&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| 1x&lt;br /&gt;
| Cypress FX2 &lt;br /&gt;
| 4 Taster, 8 Schalter, 8 LEDs&lt;br /&gt;
| 4x7Seg, Programmierung &amp;amp; Stromversorgung über USB oder über Netzteil (5V-15V)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.uxibo.de Uxibo]&lt;br /&gt;
| 88&lt;br /&gt;
| XC2S200E&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 1.1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| VGA I/O, Videomux, dual PS/2, 7seg, Buzzer, IOs auf Pinleisten, dual-channel FTDI2232C, 48 MHz + prog. Oszillator, Programmierung &amp;amp; Stromversorgung über USB&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.fpgaz.com/wiki/doku.php?id=fpgaz:usbp:hw FPGAz USBP]&lt;br /&gt;
| $135&lt;br /&gt;
| XC3S400&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Cypress FX2&lt;br /&gt;
| 2 Taster&lt;br /&gt;
| 8 LEDs, I2C-EEPROM&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cesys.com/fpga_produktmatrix.html USBS6] Cesys &lt;br /&gt;
| 399&lt;br /&gt;
| XC6SLX16&lt;br /&gt;
| 128&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| FX-2&lt;br /&gt;
| Drehschalter, Leds.&lt;br /&gt;
|115 I/O signale, einstellbarer IO Standard, zweiter USB Port (FT232), WIN 32&amp;amp;64 Bit und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cesys.com/fpga/spartan/efm01_de.html EFM 01] Cesys &lt;br /&gt;
| 145&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| -&lt;br /&gt;
| 4&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| FX-2&lt;br /&gt;
| -&lt;br /&gt;
| 28 x 44mm, 50 I/O auf 2.54mm Stiftleiste, WIN und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://shop.trenz-electronic.de/catalog/product_info.php?products_id=456 Avnet Spartan 3A Evaluation Kit]&lt;br /&gt;
| 50&lt;br /&gt;
| XC3S400A&lt;br /&gt;
| -&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| WIN und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ct-lab.de FPGA-Karte aus dem c´t-Lab]&lt;br /&gt;
| 92&lt;br /&gt;
| XC3S400&lt;br /&gt;
| -&lt;br /&gt;
| SD-Kartenslot (Bitstream-File wird über µC ins FPGA geladen, Dateiauswahl via Systembus oder Panel oder fest einstellbar)&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| ATmega644&lt;br /&gt;
| optionales Bedienpanel mit LCD-Display, Drehgeber und Taster&lt;br /&gt;
| Bestandteil des Laborsystems c´t-Lab der Zeitschrift c´t.&lt;br /&gt;
VGA-Buchse, SD-Kartenslot (u.a. auch zum Laden des FPGA). Preis für FPGA-Platine mit verlöteten SMD-Bauteilen und Teilesatz. Optionale Erweiterungskarten mit schnellen DACs, Eingangskomparator, SRAM, Echtzeituhr, PS/2, RS232 (am FPGA). Optionaler JTAG-Adapter. &lt;br /&gt;
http://www.ct-lab.de, http://www.segor.de, http://thoralt.ehecht.com/phpbb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Raggedstone 1 - Spartan-3 Development PCI-Karte ====&lt;br /&gt;
* Spartan-3 FPGA FG456-Package&lt;br /&gt;
* 32 bit, 33 MHz, 3.3/5V PCI interface&lt;br /&gt;
* 4Mbit Flash Memory&lt;br /&gt;
* 16KBit serielles EEprom&lt;br /&gt;
* 4 x 7 Segment Anzeigen LED, abnehmbar&lt;br /&gt;
* LM75 Temperatursensor&lt;br /&gt;
* viele DIL-Header für eigene Erweiterungen, verschiedene werden auch durch Hersteller angeboten&lt;br /&gt;
* 2 Drucktaster&lt;br /&gt;
* Mit dem PCI-Interface kann bei entsprechender Programmierung des FPGA auf den PCI-Bus eines Hostrechners zugegriffen werden, Beispieldesign unter http://projects.varxec.net/raggedstone1&lt;br /&gt;
* Webseite: http://www.enterpoint.co.uk/moelbryn/raggedstone1.html&lt;br /&gt;
* Preis mit XC3S400 ca. €145,- (inkl MwSt.)&lt;br /&gt;
* Preis mit XC3S1500 ca. €255,-  (inkl. MwSt.)&lt;br /&gt;
&lt;br /&gt;
==== LiveDesign Evaluation Board von Altium ====&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Xilinx-Version direkt mit ISE Webpack nutzbar&lt;br /&gt;
* Xilinx XC3S1000-4FG456C, wahlweise aber auch mit Altera EP1C12F324C8 (s.u.)&lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung (Druckerport) sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs&lt;br /&gt;
* &#039;&#039;kein&#039;&#039; on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für allgemeine Zwecke &lt;br /&gt;
* Listenpreis $99,- Endpreis: ~150 Euro (inkl. MwSt. und Versand)&lt;br /&gt;
&lt;br /&gt;
==== Trenz-Electronic ====&lt;br /&gt;
http://www.trenz-electronic.de/products.html&lt;br /&gt;
* Kleines FPGA Board mit ucLinux und Virtex-II PowerPC, optional: ucLinux und Microblaze Softprozessor im Spartan-3 FPGA&lt;br /&gt;
* Pal/Gal kompatible FPGA und CPLD Module&lt;br /&gt;
* Spartan-3 FPGA Mikromodul mit 200K bis 1000K Systemgattern&lt;br /&gt;
* Spartan-3A DSP Mikromodul mit bis zu 34000K Systemgattern&lt;br /&gt;
&lt;br /&gt;
==== Simple-Solutions ====&lt;br /&gt;
http://www.simple-solutions.de/de/products/index.php&lt;br /&gt;
Mehrere Spartan3-FPGAs - Boards&lt;br /&gt;
&lt;br /&gt;
==== CESYS ====&lt;br /&gt;
http://www.cesys.com&lt;br /&gt;
&lt;br /&gt;
Cesys ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland.&lt;br /&gt;
&lt;br /&gt;
* Verschiedene FPGA boards mit USB, PCI und PCIe Schnittstellen im Lieferprogramm&lt;br /&gt;
* Je nach Ausführung mit Spartan-2/3/3E/6, Virtex2/2PRO/4&lt;br /&gt;
* verschiedene Speicherkonfigurationen (SO-DIMM, SRAM, SDRAM, DDR2)&lt;br /&gt;
* Auftragsentwicklungen nach Kundenwunsch möglich&lt;br /&gt;
&lt;br /&gt;
==== ZTEX ====&lt;br /&gt;
&lt;br /&gt;
http://www.ztex.de/&lt;br /&gt;
&lt;br /&gt;
Cesys ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland.&lt;br /&gt;
&lt;br /&gt;
* Xilinx Spartan 6 FPGA, High-Speed USB interface, Cypress CY7C68013A EZ-USB Microcontroller, 90 GPIO ports, 15 SIO ports, 64 MByte DDR SDRAM, microSD socket, EEPROM.&lt;br /&gt;
* Xilinx Spartan 3 XC3S400 FPGA, High-Speed (480 MBit/s) USB interface, Cypress CY7C68013A EZ-USB Microcontroller, 60 GPIO ports, 20 SIO ports, EEPROM und optionally mit Flash memory&lt;br /&gt;
* High-Speed (480 MBit/s) USB interface, Cypress CY7C68013A/14A EZ-USB Microcontroller, microSD socket mit bis zu 2GB Flash memory, 36 GPIO ports, 28 SIO ports, EEPROM und on-board Schaltregler&lt;br /&gt;
&lt;br /&gt;
* Open Source Firmware Kit zum Programmieren&lt;br /&gt;
&lt;br /&gt;
=== Boards für Altera-FPGAs ===&lt;br /&gt;
==== LiveDesign Evaluation Board von Altium ====&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* * Wahlweise mit Altera EP1C12F324C8 oder Xilinx XC3S1000-4FG456C&lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung (Druckerport) sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs&lt;br /&gt;
* &#039;&#039;kein&#039;&#039; on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für allgemeine Zwecke &lt;br /&gt;
* Endpreis: ~150 Euro (inkl. MwSt. und Versand)&lt;br /&gt;
&lt;br /&gt;
==== Terasic TREX C1 Multimedia Development Kit ====&lt;br /&gt;
* Altera EP1C6Q240C8 &amp;amp; EP1S Serial Configuration Device&lt;br /&gt;
* Built-in USB Blaster programming circuitry (JTAG and AS mode)&lt;br /&gt;
* 1 MiB Flash Memory &amp;amp; 8 MiB SDRAM (1M x 4 x 16)&lt;br /&gt;
* CF Card Socket, 16-bit CD-quality Audio DAC&lt;br /&gt;
* TV Encoder, VGA, RS-232, PS/2, and more&lt;br /&gt;
* Many reference designs and C++ applications&lt;br /&gt;
* [http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&amp;amp;CategoryNo=39&amp;amp;No=14 www.terasic.com.tw]&lt;br /&gt;
* fertiger Core eines CPC6128 (8-Bit Homecomputer von 1984) für dieses Board, inlusive Sourcecode (eigener Z80 in AHDL, mit 24MHz eingesetzt): [http://www.symbos.de/trex.htm http://www.symbos.de/trex.htm]&lt;br /&gt;
* Listenpreis $149,-&lt;br /&gt;
&lt;br /&gt;
==== Altera Cyclone II 2C20 ====&lt;br /&gt;
* Altera Cyclone II EP2C20F484C7N FPGA mit 20000 LEs&lt;br /&gt;
* USB-BlasterTM download cable (integriert)&lt;br /&gt;
* EPCS4 serial configuration Flash&lt;br /&gt;
* 8-Mbyte SDRAM, 512-Kb SRAM, 4-Mbyte flash &lt;br /&gt;
* externer SMA - Clock-Eingang&lt;br /&gt;
* 24-bit Audio coder/decoder (CODEC) &lt;br /&gt;
* 10 Schalter, 4 Druckknöpfe inkl Reset &lt;br /&gt;
* 4St. 7-Segmentanzeigen, 10 rote LEDs + 8 grüne LEDs&lt;br /&gt;
* VGA, RS-232, and PS/2 Stecker&lt;br /&gt;
* Zwei 40-pin expansion ports + SD/MMC socket&lt;br /&gt;
* USB-Kabel, externes Steckernetztteil, CD-Rom&lt;br /&gt;
* Reference designs&lt;br /&gt;
* Qartus II Web Edition + NIOS II Web Edition&lt;br /&gt;
* http://www.altera.com/products/devkits/altera/kit-cyc2-2C20N.html&lt;br /&gt;
* Listenpreis $150,-&lt;br /&gt;
&lt;br /&gt;
==== Hpe Mini AC II - Cyclone II board von Gleichmann Research ====&lt;br /&gt;
* Altera Cyclone II EP2C35 FPGA (speed grade 6)&lt;br /&gt;
* Mit reprogrammierbarem Flash zur automatischen FPGA-Konfiguration&lt;br /&gt;
* 25 pin SUB-D connector (parallel) für direktes FPGA-Programmieren&lt;br /&gt;
* RS232 (9 pin SUB-D) &lt;br /&gt;
* VGA (15 pin SUB-D) mit 64 möglichen Farben&lt;br /&gt;
* Ethernet 10/100 Mbit/s, full/half duplex&lt;br /&gt;
* 1 USB 2.0 compatible full-speed target connector&lt;br /&gt;
* 3 USB 2.0 compatible full-speed host connectors&lt;br /&gt;
* Santa Cruz connector mit 40 nutzbaren I/Os&lt;br /&gt;
* Audio interface (line-in and line-out) mit CODEC&lt;br /&gt;
* SODIMM144 Sockel für (SDRAM) 256MB&lt;br /&gt;
* SDRAM-Speichersockel mit nur 32-Bit angebunden, die Hälfte des Speichers bleibt nicht nutzbar&lt;br /&gt;
* 25 MHz oscillator&lt;br /&gt;
* Prototyping area, Lötfläche&lt;br /&gt;
* 8 LEDs, grün, blau, 3x4 key matrix, 4-bit DIP switch&lt;br /&gt;
* LCD connector, 2-character 7-segment display&lt;br /&gt;
* Single step Knopf und Reset Knopf&lt;br /&gt;
* Parallelportkabel für PC&lt;br /&gt;
* Beispieldesign, Testprogramme, Datenblätter&lt;br /&gt;
* LEON3-CPU Design inkl. Source Code, Quartus IDE, SnapGear Linux&lt;br /&gt;
* Nicht mehr im Programm - war ca 399,-&lt;br /&gt;
&lt;br /&gt;
==== Altera DE2 - Development and Education Board ====&lt;br /&gt;
* Altera Cyclone II 2C35 FPGA mit 35000 LEs&lt;br /&gt;
* Altera Serial Configuration devices (EPCS16) für Cyclone II 2C35&lt;br /&gt;
* USB Blaster board zur Programmierung und User API&lt;br /&gt;
* 8 MB SDRAM, 4 MB Flash Memory, 512KB SRAM&lt;br /&gt;
* SD Card Sockel, RS-232, Ethernet, 10-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* Viele Besipiel mit Source Code wie TV, SD Music Player)&lt;br /&gt;
* [http://www.fh-wedel.de/fileadmin/mitarbeiter/bos/files/VHDL/VhdlEinfuehrung.pdf Kleines aber nettes Tutorial zum Altera DE2 Dev. Board]&lt;br /&gt;
* Listenpreis US $495,-&lt;br /&gt;
&lt;br /&gt;
==== Cyclone III embedded Development Kit====&lt;br /&gt;
* Altera Cyclone III EP3C25 FPGA&lt;br /&gt;
* 640x480 LCD Display mit touch screen function&lt;br /&gt;
* MiniSD-Card Sockel&lt;br /&gt;
* Audio Interface ADC CODEC&lt;br /&gt;
* 10/100 Mbit Fast Ethernet Schnittstelle&lt;br /&gt;
* FPGA-Konfiguration über USB&lt;br /&gt;
* NIOS II EVAL Lizenz&lt;br /&gt;
* IP LIB Altera&lt;br /&gt;
* Listenpreis US $495,-  über ALtera Webseite&lt;br /&gt;
* Bei EBV €349,- inkl. MwSt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NanoBoard-NB1 von Altium ====&lt;br /&gt;
* kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Unterstützt eine breite Palette von Ziel-FPGAs durch Aufsteckplatinen &lt;br /&gt;
* Altera Cyclone (EP1C12-Q240C7) Aufsteckplatine enthalten &lt;br /&gt;
* Xilinx Spartan IIE (XC2S300E-PQ208) im Lieferumfang enthalten &lt;br /&gt;
* Enthält Stromversorgung mit verschiedenen Steckern für unterschiedliche Konfigurationen &lt;br /&gt;
* Mit Flachbandkabel für PC-Verbindung sowie weiteren Kabeln und Verbindern &lt;br /&gt;
* NanoBoard-NB1 Reference-Handbuch zur Hardware &lt;br /&gt;
* Peripherie: LCD, LEDs, Dip-Schalter, Tastenblock, Summer, ADC/DAC, 256K x 8 RAM, 8 MiB Serial Flash RAM, on-board Serial Flash RAM für FPGA-Konfig.&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, CAN, VGA, I2C, IO Stecker für allg. Zwecke &lt;br /&gt;
* Upgradefähige NanoBoard Controller Firmware &lt;br /&gt;
* Stabiler NanoBard-Sockel&lt;br /&gt;
* Listenpreis €995,-&lt;br /&gt;
&lt;br /&gt;
=== Boards für Lattice-FPGAs ===&lt;br /&gt;
==== www.hardware-design.de ====&lt;br /&gt;
* bietet verschiedene einfache Boards mit Lattice-Bausteinen an&lt;br /&gt;
* FPGA-Board mit XP2-17/XP2-8/XP2-5 -&amp;gt; 113,- bis 101,- Euro&lt;br /&gt;
* CPLD-Boards u.a. mit MachXO640 -&amp;gt; 89,- Euro&lt;br /&gt;
&lt;br /&gt;
=== Debugging-Hilfen ===&lt;br /&gt;
Gerade beim [[Debugging]] größerer FPGA-Designs ist es oft notwendig, auf interne Signale und Busse zuzugreifen, die aus routing- oder Platzgründen nicht an Pins des FPGAs gelegt - und mit konventionellen Analysatoren beobachtet werden können. Nebst den einschlägigen Tools der Hersteller, welche Signal probing über JTAG gestatten (z.&amp;amp;nbsp;B. ChipsScope und SignalTap), werden in FPGAs oft mehr oder weniger komplexe [[Logic Analyzer]] integriert, welche die internen Signale in vielfältiger Weise aufzeichnen. Diese werden in Block-RAMs oder FIFOs gespeichert und durch externe Master ausgelesen. Hier kommen auf der Platine befindliche MCUs oder fremd zugreifende FPGAs / CPUs in Betracht, welche über unterschiedliche Kommunikationsverbindungen (seriell, parallel, LVDS) angeschlossen sind. Dazu werden in die FPGAs entsprechende Cores / Treiber eininstanziiert.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
====Proprietärer serieller Logic Analyzer ====&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist die direkte Instanziierung eines Blockrams als FIFO mit &amp;quot;breitem&amp;quot; Busanschluss: Linksseitig besitzt das FIFO eine Breite von z.&amp;amp;nbsp;B. 256 Bit (Xilinx-Rams lassen sich ohne weitere Umbeschaltung über den Wizzard mit bis zu 1024 Bits deklarieren und nutzen). Rechtsseitig einen 16- oder 32 Bit breiten Busanschluss für einen Prozessor bzw Parallelinterface oder einen 1 Bit breiten Anschluss für ein serielles streaming interface. Mit einem FiFo-enable können die zu sampelnden Zeiten (Busphasen) festgelegt werden, z.&amp;amp;nbsp;B. anhand eines Kriteriums wie die Erfüllung einer bestimmten mathematischen Bedingung, die man in VHDL formuliert, oder es wird einfach ein Trigger gesetzt. Solange das FiFo nicht voll ist, kann geschrieben werden, was durch die interne FiFo-Verwaltung selbst bereits komplett geregelt wird.&lt;br /&gt;
&lt;br /&gt;
Beim einfachen seriellen Logic Analyzer benötigt man nur noch einen kleinen Core, der permanent das FiFo liest, und den seriellen Overhead (Startbit, Stoppbit, Parity und gfs CRC) hinzufügt. Mit einem einfach Pegelwandler kann so ein PC direkt angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Auch denkbar ist die Anbindung an ein fremdes FPGA-board mit viel Speicher über (LV-)DS-Kommunikation. In komplexeren Systemen wird ein CAN- oder USB-Core eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Wenn mittels des Kriteriums nur ganz bestimmte kritische Phasen herausgesampelt werden (z.&amp;amp;nbsp;B. das Auftauchen eines bestimmten Rechenfehlers im FPGA) und so das Datenaufkommen je Zeiteinheit über längere Zeit betrachtet eher gering ist, kann bei geeignetem Datendurchsatz in Echtzeit dauerhaft mitprotokolliert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== BusProbe, der Debugging Core von abaxor engineering  ====&lt;br /&gt;
Mit der BusProbe kann der Entwickler den Signalfluss im FPGA-Design auch über einen längeren Zeitraum überwachen und am PC aufzeichnen. Der Core verarbeitet an jedem Eingang einen kompletten Bus. &lt;br /&gt;
&lt;br /&gt;
Die Daten werden gemultiplext zum PC geschickt und dort per Software demultiplext. Im PC erfolgt auch die Auswertung mit beliebigen Analyse-Tools.&lt;br /&gt;
&lt;br /&gt;
Gegenüber dem Betriebssystem verhält sich die BusProbe wie eine Festplatte, von der die Daten mit gewöhnlichen Zugriffen gelesen werden können.&lt;br /&gt;
&lt;br /&gt;
* Streaming der Daten zum PC mit mehr als 20 MByte/s&lt;br /&gt;
* keine Treiber im PC da Nutzung von Standardschnittstellen (USB oder IDE)&lt;br /&gt;
* Hot-Plugging&lt;br /&gt;
* Visualisierung mit beliebigen Programmen&lt;br /&gt;
* geringer Logikaufwand&lt;br /&gt;
&lt;br /&gt;
[http://www.abaxor.de/produkte.html abaxor.de-Webseite]&lt;br /&gt;
&lt;br /&gt;
==== open source Logikanalysator von sump.org====&lt;br /&gt;
Ein einfacher, übersichtlicher Logikanalysator findet sich auf sump.org. Er liegt im Quelltext vor wird mit ins Design einsynthetisiert. Als Speicher dient wahlweise SRAM oder internes RAM. Es können 32 Kanäle mit 100 MHz (oder weniger) gesampelt werden. Die Bediensoftware läuft platformunabhängig unter Java und benötigt eine serielle Schnittstelle (auch über USB-seriell Wandler) zum Core.&lt;br /&gt;
&lt;br /&gt;
[http://de.sump.org/projects/analyzer/ sump.org-Webseite]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Hardwarebeschreibungssprachen]]&lt;br /&gt;
* [[Reset für FPGA/CPLD]]&lt;br /&gt;
* [[Taktung FPGA/CPLD]]&lt;br /&gt;
* Projekt [[Audio-DSP mit Spartan 3-FPGA]]&lt;br /&gt;
* Projekt [[FPGA Lab]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.fpga4fun.com/index.html FPGA4Fun] - FPGA-Projekte, größtenteils mit Altera und Verilog&lt;br /&gt;
* [http://video.google.com/videoplay?docid=-4969729965240981475 Ein Vortrag, auf Englisch: General Purpose, Low Power Supercomputing Using Reconfiguration Logic]&lt;br /&gt;
* http://www.opencores.org - FPGA-Projekte, Opensource, jeder kann seine Eigenen einstellen und an anderen mitarbeiten. U.a. gibt es verschiedene CPUs für FPGAs.&lt;br /&gt;
* [http://members.optushome.com.au/jekent/FPGA.htm John&#039;s FPGA Page]&lt;br /&gt;
* [http://www.embedded.com/columns/whatsnew/197003073 More about designing with embedded FPGAs] by Bernard Cole, Embedded.com&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co| ]]&lt;/div&gt;</summary>
		<author><name>62.225.145.235</name></author>
	</entry>
</feed>