<?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=95.157.9.244</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=95.157.9.244"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/95.157.9.244"/>
	<updated>2026-04-10T21:36:46Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Multimeter&amp;diff=89821</id>
		<title>Multimeter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Multimeter&amp;diff=89821"/>
		<updated>2015-09-24T11:44:19Z</updated>

		<summary type="html">&lt;p&gt;95.157.9.244: /* Auflösung */ Was ist die 1/2-Stelle einer Digitalanzeige? (vgl. http://www.brix.de/elektrik/digitalanzeige_messgeraet.html)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Multimeter dient zur Messung verschiedener elektrischer Größen. Die Grundfunktionen sind Messung von Spannung, Strom, Widerstand. Darüber hinaus bieten viele Geräte noch weitere Funktionen wie Diodentest, Durchgangsprüfer, Kapazitätsmessung, Temperaturmessung, Frequenz und noch mehr.&lt;br /&gt;
&lt;br /&gt;
== Wichtige Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Bei der Auswahl eines Multimeters sollte man sich zuerst einmal überlegen, was man damit machen möchte und welche Eigenschaften/Funktionen dafür benötigt werden.  Neben der Funktionalität ist Sicherheit ein wichtiges Thema. Je nach Anwendungszweck sollte das Multimeter auch bestimmten Sicherheitsanforderungen genügen.&lt;br /&gt;
&lt;br /&gt;
=== Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
=== Spannungsfestigkeit ===&lt;br /&gt;
&lt;br /&gt;
Eine wesentliche Eigenschaft ist die Spannungfestigkeit des Geräts. Dazu gibt es üblicherweise eine Angabe der Nennspannung zusammen mit der [[Leiterbahnabstände#Überspannungskategorien|Überspannungskategorie]]. Diese Angabe bezieht sich nicht auf den Messbereich intern im Gerät, sondern auf die Stärke der Isolation nach außen.&lt;br /&gt;
&lt;br /&gt;
Solange man nur mit Kleinspannung (&amp;lt; 50V AC bzw 120V DC) und kleinen Strömen arbeitet, sind die Sicherheitsanforderungen an das Multimeter nicht groß; da kann man eigentlich jedes Gerät einsetzen. So ziemlich alle Messgeräte sind für mindestens 300V Cat II spezifiziert, was auch für Messungen an Geräten, die über eine Steckdose am Niederspannungsnetz (230V) betrieben werden, ausreichend ist.&lt;br /&gt;
&lt;br /&gt;
Für Messungen an Geräten, die fest mit dem Niederspannungsnetz verbunden sind, ist die Überspannungskategorie III notwendig. Kategorie IV braucht man für Messungen direkt an oder in der Nähe der Einspeisung in die elektrische Installation von Gebäuden, z.B. im bzw. vor dem Hauptverteiler.&lt;br /&gt;
&lt;br /&gt;
Die Nennspannung bezieht sich dabei auf die Spannung Leiter gegen Erde. Einen guten Sicherheitsstandard bieten üblicherweise Geräte mit 600V Cat III/1000V Cat II; noch bessere Geräte haben 600V Cat IV/1000V Cat III oder sogar 1000V Cat IV.&lt;br /&gt;
&lt;br /&gt;
=== Sicherung ===&lt;br /&gt;
&lt;br /&gt;
Weiterhin ist die Sicherung bei der Strommessung ein sicherheitsrelevantes Bauteil. Viele preiswerte Multimeter haben eine einfache Glasrohrsicherung (5 x 20 mm) mit einer Nennspannung von 250V. &lt;br /&gt;
&lt;br /&gt;
Diese Sicherungen haben nur eine begrenzte Abschaltfähigkeit, vor allem bei Messungen mit Gleichstrom und hoher Spannung bildet sich in so einer Sicherung ein Lichtbogen und die Sicherung trennt nicht. Das kann zur Zerstörung des Multimeters (Brand, Explosion) und ernsthaften Verletzungen führen.&lt;br /&gt;
&lt;br /&gt;
Vor allem bei Strommessungen bei hoher Gleichspannung sollte darauf geachtet werden, dass im Multimeter eine Sicherung eingebaut ist, die ein Trennvermögen von 1000V und 20 kA hat. Diese Sicherungen haben meistens die Abmessungen 10 x 38 mm.&lt;br /&gt;
&lt;br /&gt;
=== Analog oder Digital ===&lt;br /&gt;
&lt;br /&gt;
Die große Masse an Multimetern heute ist digital, daher auch die weit verbreitete Abkürzung DMM (&#039;&#039;&#039;D&#039;&#039;&#039;igital&#039;&#039;&#039;m&#039;&#039;&#039;ulti&#039;&#039;&#039;m&#039;&#039;&#039;eter). Dennoch gibt es noch ein paar wenige, neue Analoggeräte. Wo liegen nun die Vor- und Nachteile?&lt;br /&gt;
&lt;br /&gt;
==== Analoges Multimeter ====&lt;br /&gt;
&lt;br /&gt;
Diese Geräte sind rein passiv aufgebaut und bestehen nur aus einem Drehspulmesswerk und vielen Widerständen zur Messbereichsumschaltung.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* keine Stromversorgung nötig&lt;br /&gt;
* Intuitive Anzeige von Schwankungen des Messwerts, Trendanzeige&lt;br /&gt;
* unempfindlich gegen elektromagnetische Störungen&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* deutlich niedrigerer Innenwiderstand bei Spannungsmessungen&lt;br /&gt;
* Ablesefehler&lt;br /&gt;
* geringere Auflösung des Messwerts beim Ablesen&lt;br /&gt;
* keine automatische Bereichswahl möglich&lt;br /&gt;
* bedingt durch die Ablesefehler und mechanische Probleme nur eine begrenzte Genauigkeit erreichbar&lt;br /&gt;
&lt;br /&gt;
==== Digitales Multimeter ====&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Kein Ablesefehler&lt;br /&gt;
* Deutlich bessere Auflösung, dadurch mehr Genauigkeit möglich&lt;br /&gt;
* durch geeignete [[AD-Wandler]] sehr hohe [[Auflösung und Genauigkeit]] möglich&lt;br /&gt;
* sehr hoher Eingangswiderstand bei Spannungsmessungen&lt;br /&gt;
* hohe Empfindlichkeit durch Eingangsverstärker&lt;br /&gt;
* automatische Bereichswahl möglich&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* benötigt eine Stromversorgung&lt;br /&gt;
* keine intuitive Anzeige von Messwertschwankungen&lt;br /&gt;
* empfindlicher bezüglich Störeinkopplungen&lt;br /&gt;
* kann selber Störquelle bei extrem empfindlichen Messungen sein&lt;br /&gt;
&lt;br /&gt;
Teilweise hat man heute erfolgreich einige Vorteile der analogen Anzeige in die digitalen Multimeter übernehmen können. So bieten einge Messgeräte eine quasianaloge Bandanzeige des Messwerts, welcher das Verhalten eines Zeigerinstruments brauchbar nachbildet.&lt;br /&gt;
&lt;br /&gt;
==== Analoges Multimeter mit Messverstärker ====&lt;br /&gt;
&lt;br /&gt;
Bei diesen Geräten wird versucht, einige Vorteile des DMM mit der Analoganzeige zu kombinieren.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Intuitive Anzeige von Schwankungen des Messwerts, Trendanzeige&lt;br /&gt;
* etwas unempfindlicher gegen elektromagnetische Störungen als digitale Multimeter&lt;br /&gt;
* sehr hoher Eingangswiderstand bei Spannungsmessungen&lt;br /&gt;
* hohe Empfindlichkeit durch Eingangsverstärker&lt;br /&gt;
* automatische Bereichswahl möglich&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* Ablesefehler&lt;br /&gt;
* geringere Auflösung des Messwerts beim Ablesen&lt;br /&gt;
* benötig eine Stromversorgung&lt;br /&gt;
* bedingt durch die Ablesefehler und mechanische Probleme nur eine begrenzte Genauigkeit erreichbar&lt;br /&gt;
&lt;br /&gt;
Die meisten Anwender kaufen sich ein Digitalmultimeter mit einer guten Genauigkeit und nur für einfache Messungen, bei denen nicht die Genauigekeit sondern die intuitive Anzeige im Vordergrund steht, ein Analoggerät.&lt;br /&gt;
&lt;br /&gt;
== Auflösung und Genauigkeit ==&lt;br /&gt;
&lt;br /&gt;
Zur wichtigen Unterscheidung von [[Auflösung und Genauigkeit]] gibt es einen eigenen Artikel.&lt;br /&gt;
&lt;br /&gt;
=== Auflösung ===&lt;br /&gt;
&lt;br /&gt;
Beim Digitalmultimeter wird ein digitaler Wert angezeigt; der Zusammenhang zwischen Auflösung und Messbereich wird durch die Anzahl der Stellen bzw. die Anzahl der darstellbaren Zahlenwerte bestimmt. Ein 3-1/2-stelliges Display hat einen Bereich von 0 - 1999, der Dezimalpunkt kann dabei an jeder beliebigen Stelle sein. Man spricht hier auch von 2000 Schritten (engl. counts). Geräte mit 4 1/2 Stellen haben 20.000 Counts, das ist ein Anzeigeumfang von 0 - 19.999. Anzeigen mit 4.000 Counts werden manchmal auch als 3 3/4 Stellen bezeichnet, Geräte mit 6.000 Counts als 3 5/6 Stellen usw.&amp;lt;br&amp;gt;&lt;br /&gt;
(Die &#039;&#039;1/2&#039;&#039;, &#039;&#039;3/4&#039;&#039; usw. sind dabei nicht als Brüche o.ä. zu verstehen, sondern als Angabe, welche Werte die linke, höchstwertigste Stelle des Geräts annehmen kann. So ist bei einer &#039;&#039;1/2&#039;&#039;-Angabe für die linke Stelle eine 0 oder 1 möglich, bei &#039;&#039;3/4&#039;&#039; ein 0, 1, 2 oder 3, und bei &#039;&#039;5/6&#039;&#039; entsprechend 0, 1, …, 5)&lt;br /&gt;
&lt;br /&gt;
Die Auflösung des Multimeters ist die kleinste Änderung im Messwert, die dargestellt werden kann. Ein Gerät mit z.B. 20.000 Counts hat im 2V-Messbereich eine Auflösung von 2V / 20000 = 0,1 mV.&lt;br /&gt;
&lt;br /&gt;
=== Grundgenauigkeit ===&lt;br /&gt;
&lt;br /&gt;
In den Datenblättern wird in der Regel die Grundgenauigkeit eines Multimeters angegeben. Damit wird die Genauigkeit der internen Referenz und des A/D-Wandler spezifiziert; meistens ist dieser Wert gleich der Genauigkeit bei DC-Spannungsmessung.&lt;br /&gt;
&lt;br /&gt;
Oft wird der zu erwartende Meßfehler auch in der Form &amp;quot;% Reading + % Range&amp;quot; angegeben. &lt;br /&gt;
&amp;quot;% Reading&amp;quot; entspricht dem Meßfehler bezogen auf den aktuellen Meßwert, &amp;quot;% Range&amp;quot; entspricht dem Meßfehler bezogen auf den eingestellten Meßbereich. Die Abweichung. Beide Werte müssen addiert werden, um den Gesamtmeßfehler zu ergeben.&lt;br /&gt;
&lt;br /&gt;
=== Toleranz ===&lt;br /&gt;
&lt;br /&gt;
Wichtiger als die Grundgenauigkeit ist aber die Toleranz in den einzelnen Messbereichen. Üblich sind dabei Angaben in der Form +/- (0,2% + 3 Digits). Das bedeutet, dass die maximale Abweichung 0,2% vom angezeigten Messwert und zusätzlich 3 Digits beträgt. Ein Digit ist dabei die niedrigste Einheit in der Anzeige des Messwertes in dem aktuellen Messbereich. Bei einer angezeigten Spannung von z.B. 2,000V und einem Fehler von 3 Digits würde die tatsächliche Spannung daher in einem Bereich von 1,997V bis 2,003V liegen.&lt;br /&gt;
&lt;br /&gt;
Üblicherweise hat ein Multimeter bei der DC-Spannungsmessung die höchste Genauigkeit. Bei der DC-Strommessung wird ein Shunt-Widerstand verwendet, dieser muss eine hohe Belastbarkeit und gleichzeitig einen niedrigen Temperaturkoeffizienten haben, was relativ teuer ist. Deshalb ist die Genauigkeit hier meistens deutlich schlechter als bei der Spannungsmessung.&lt;br /&gt;
&lt;br /&gt;
Bei Wechselspannung bzw. -strom hängt die Genauigkeit vom verwendeten Messverfahren ab. Hier wird der Effektivwert angezeigt. Viele Multimeter messen die Signalamplitude oder einen Mittelwert und berechnen daraus den Effektivwert. Damit liefern diese Geräte nur bei einer exakten Sinusform einen genauen Messwert.&lt;br /&gt;
&lt;br /&gt;
=== True-RMS, Crest-Faktor ===&lt;br /&gt;
&lt;br /&gt;
Um bei anderen Kurvenformen einen genauen Effektivwert zu messen braucht man ein True-RMS Multimeter. Hier wird das Signal entweder analog quadriert oder digital mit einer hohen Frequenz abgetastet und ein quadratischer Mittelwert berechnet. Damit erhält man theoretisch für beliebige Signalformen einen genauen Messwert, allerdings gilt das nur in einem bestimmten Frequenzbereich. Im Datenblatt wird meistens auch ein maximaler Crest-Faktor angegeben, das ist das maximale Verhältnis zwischen dem Spitzenwert und dem Effektivwert, beim dem die Genauigkeit innerhalb der spezifizierten Toleranz liegt.&lt;br /&gt;
&lt;br /&gt;
== Weitere Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== Durchgangsprüfer ===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion wird in der Elektronikpraxis sehr oft benötigt, demzufolge sollte das Multimeter sie haben. Wichtig ist, daß ein Pieper zur Signalisierung verfügbar ist und dieser ohne nennenswerte Verzögerung reagiert. Einige Multimeter sind da recht langsam, eine &amp;quot;Denkpause&amp;quot; von einer Sekunde ist da sehr störend wenn man viele Verbindungen durchmessen will.&lt;br /&gt;
&lt;br /&gt;
=== Diodentest ===&lt;br /&gt;
&lt;br /&gt;
Auch eine sehr nützliche Funktion, auf die man nicht verzichten sollte.&lt;br /&gt;
 &lt;br /&gt;
=== Widerstandsmessung ===&lt;br /&gt;
&lt;br /&gt;
Diese ist in vielen Multimetern vorhanden und für den Hobbybastler auch sehr wichtig.&lt;br /&gt;
&lt;br /&gt;
=== Temperatursensor ===&lt;br /&gt;
&lt;br /&gt;
Viele Multimeter werden mit einem [[Temperatursensor]] geliefert, dabei handelt es sich fast immer um ein Thermoelement. Damit kann man relativ einfach Temperaturen zwischen -50°C bis 350°C messen.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstelle ===&lt;br /&gt;
&lt;br /&gt;
Einige Multimeter bieten eine Schnittstelle zum PC, damit können sie als per Software steuerbares Multimeter bzw. Datenschreiber verwendet werden. Diese Schnittstelle ist per [[Optokoppler]] [[Galvanische Trennung|galvanisch getrennt]], damit kann man gefahrlos messen. Will man das Multimeter per Mikrocontroller steuern, so sind Typen mit [[RS232]] Anschluß den Typen mit [[USB]] vorzuziehen.&lt;br /&gt;
&lt;br /&gt;
Ältere Tischmultimeter, wie sie in der Industrie benutzt werden, besitzen hingegen stattdessen meist ein GPIB-Interface.  Dabei handelt es sich um einen Messgerätebus von Hewlet Packard (heute Agilent), der zwar eine eigene Interfacekarte im PC benötigt (billig als ISA zu bekommen, relativ teuer als PCI; auch USB-GPIB ist möglich), aber recht universell für verschiedenste&lt;br /&gt;
Messgeräte genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Transistortester ===&lt;br /&gt;
&lt;br /&gt;
Damit kann man die Stromverstärkung eines Transistors bei kleinen Strömen messen. Bisweilen ganz nett, praktisch wird sie aber eher wenig gebraucht.&lt;br /&gt;
&lt;br /&gt;
=== Messung von Induktivität, Kapazität und Frequenz ===&lt;br /&gt;
&lt;br /&gt;
Diese Messmöglichkeiten sind in verschiedenster Kombination verfügbar, aber eher als nette Zugabe anzusehen. Sie erreicht meist keine sonderlich hohe Genauigkeit. Vor allem die Frequenzmessung ist eher eine Schätzung und hat mit einem echten Frequenzmesser wenig gemeinsam. Wer ernsthaft diese Größen messen will, kauft sich besser ein speziell dafür gebautes Messgerät. Zur groben Messung der Parameter sind die Funktionen ausreichend.&lt;br /&gt;
&lt;br /&gt;
=== Beleuchtung ===&lt;br /&gt;
&lt;br /&gt;
In bestimmten Situationen kann eine Beleuchtung der Anzeige recht nützlich sein, da aus Stromspargründen die Anzeige immer ein LCD ist. Die große Masse der Anwender braucht sie jedoch nicht. &lt;br /&gt;
&lt;br /&gt;
=== Messwertspeicher ===&lt;br /&gt;
&lt;br /&gt;
Viele Multimeter können auf Knopfdruck den Messwert einfrieren. Das ist dann hilfreich, wenn man an einem schwer zugänglichen Ort eine Messung machen muss und dabei das Display nicht ablesen kann, typisch an großen Maschinen und Anlagen.&lt;br /&gt;
&lt;br /&gt;
=== Auto Range ===&lt;br /&gt;
&lt;br /&gt;
Die meisten besseren Multimeter verfügen über eine automatische Messbereichswahl, d.h. das Multimeter stellt automatisch den optimalen Messbereich ein. Das hat Vor- und Nachteile.&lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
* einfache Messung unbekannter Größen&lt;br /&gt;
&lt;br /&gt;
Nachteile&lt;br /&gt;
* Durch die meist nötige Umschaltung des Messbereichs und Mehrfachmessung durch das Multimeter verlängert sich die Messzeit, welche man bei bestimmten Messungen nicht gebrauchen kann. Ausserdem schwankt dadurch die Anzeige zusätzlich, was das Ablesen bei sich ändernden Messwerten erschwert.&lt;br /&gt;
&lt;br /&gt;
Ein Multimeter sollte auf jeden Fall die Möglichkeit bieten, die Auto Range Funktion abzuschalten.&lt;br /&gt;
&lt;br /&gt;
== Vergleichstabelle Multimeter ==&lt;br /&gt;
&lt;br /&gt;
In den folgende Tabellen werden wichtige technischen Daten einiger aktueller Multimeter zusammengestellt. Um die Übersichtlichkeit zu erhöhen, werden die Geräte in drei Kategorien eingeteilt.&lt;br /&gt;
&lt;br /&gt;
Bei den Sicherungen ist entweder die Baugröße oder die Nennspannung und Abschaltstrom angegeben; wenn das Gerät mehrere Sicherungen enthält, dann kommt zuerst der Wert für den mA Messbereich und danach die Sicherung für den A Messbereich.&lt;br /&gt;
&lt;br /&gt;
=== Einsteigergeräte ===&lt;br /&gt;
&lt;br /&gt;
Das sind preiswerte Geräte, mit denen viele Messaufgaben durchgeführt werden können, wenn keine sehr hohen Anforderungen an Genauigkeit gestellt werden. Für Einsteiger und Fortgeschrittene findet sich im Bereich unter 50 Euro immer ein Gerät, das den Ansprüchen gerecht wird. &#039;&#039;&#039;Will man Messungen am 230V-Netz durchführen, sollte man auf keinen Fall Billigstgeräte aus der Ramschkiste verwenden sondern auf qualitativ hochwertige Ware zurückgreifen und.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;multimeter&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hersteller || Bezeichnung ||Preis &amp;lt;BR&amp;gt; [EUR] || Counts || Grundgenauigkeit [%] || Messbereich DC V || Spannungsklasse ||Sicherung&lt;br /&gt;
|-&lt;br /&gt;
|Keysight (vorm. Agilent)&lt;br /&gt;
|U1231A (1)&lt;br /&gt;
|122&lt;br /&gt;
|6.000&lt;br /&gt;
|0,5&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat III&lt;br /&gt;
|10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Amprobe&lt;br /&gt;
|30XR-A&lt;br /&gt;
|70&lt;br /&gt;
|2.000&lt;br /&gt;
|1&lt;br /&gt;
|600V&lt;br /&gt;
|300V Cat III, 600V Cat II&lt;br /&gt;
|10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Amprobe&lt;br /&gt;
|33XR-A&lt;br /&gt;
|95&lt;br /&gt;
|4.000&lt;br /&gt;
|0,7&lt;br /&gt;
|1000V&lt;br /&gt;
|600V Cat III, 1000V Cat II&lt;br /&gt;
|6,3x32 mm / 10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Benning&lt;br /&gt;
|MM 1&lt;br /&gt;
|70&lt;br /&gt;
|3.200&lt;br /&gt;
|0,5&lt;br /&gt;
|600V&lt;br /&gt;
|600V Cat III&lt;br /&gt;
|k. A.&lt;br /&gt;
|-&lt;br /&gt;
|Benning&lt;br /&gt;
|MM 2&lt;br /&gt;
|85&lt;br /&gt;
|2.000&lt;br /&gt;
|0,5&lt;br /&gt;
|1000V&lt;br /&gt;
|600V Cat III&lt;br /&gt;
|6,35x32 mm / 6,35x32 mm&lt;br /&gt;
|-&lt;br /&gt;
|Benning&lt;br /&gt;
|MM 3&lt;br /&gt;
|105&lt;br /&gt;
|2.000&lt;br /&gt;
|0,5&lt;br /&gt;
|600V&lt;br /&gt;
|300V Cat III&lt;br /&gt;
|6,35x32 mm / 6,35x32 mm&lt;br /&gt;
|-&lt;br /&gt;
|Benning&lt;br /&gt;
|MM 4&lt;br /&gt;
|120&lt;br /&gt;
|4.200&lt;br /&gt;
|0,5&lt;br /&gt;
|600V&lt;br /&gt;
|300V Cat III&lt;br /&gt;
|k. A.&lt;br /&gt;
|-&lt;br /&gt;
|Peaktech&lt;br /&gt;
|1070&lt;br /&gt;
|10&lt;br /&gt;
|2.000&lt;br /&gt;
|0,5&lt;br /&gt;
|250V&lt;br /&gt;
|250V Cat II&lt;br /&gt;
|k. A.&lt;br /&gt;
|-&lt;br /&gt;
|Peaktech&lt;br /&gt;
|2010&lt;br /&gt;
|25&lt;br /&gt;
|2.000&lt;br /&gt;
|0,5&lt;br /&gt;
|1000V&lt;br /&gt;
|600V Cat III, 1000V Cat II&lt;br /&gt;
|k. A.&lt;br /&gt;
|-&lt;br /&gt;
|UNI-T&lt;br /&gt;
|UT61E&lt;br /&gt;
|62&lt;br /&gt;
|22.000&lt;br /&gt;
|0,1&lt;br /&gt;
|600V&lt;br /&gt;
|300V Cat III, 600V Cat II&lt;br /&gt;
|6,3x32 mm / 10x38 mm&lt;br /&gt;
|}&lt;br /&gt;
1) keine Strommessung&lt;br /&gt;
&lt;br /&gt;
=== Mittelklasse-Geräte===&lt;br /&gt;
&lt;br /&gt;
Diese Geräte haben alle eine Grundgenauigkeit besser als 0,5 und sind besser ausgestattet als die Einsteigerklasse. Die Spannungsfestigkeit ist mindestens 600V Cat III.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;multimeter&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hersteller&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Preis [EUR]&lt;br /&gt;
!Counts&lt;br /&gt;
!Grundgenauigkeit [%]&lt;br /&gt;
!TRMS&lt;br /&gt;
!Spannungsklasse&lt;br /&gt;
!Sicherung&lt;br /&gt;
|-&lt;br /&gt;
|Amprobe&lt;br /&gt;
|34XR-A&lt;br /&gt;
|125&lt;br /&gt;
|4.000&lt;br /&gt;
|0,5&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat III, 1000V Cat II&lt;br /&gt;
|6,3x32 mm / 10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Amprobe&lt;br /&gt;
|37XR-A&lt;br /&gt;
|140&lt;br /&gt;
|10.000&lt;br /&gt;
|0,1&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat III, 1000V Cat II&lt;br /&gt;
|6,3x32 mm / 10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Amprobe&lt;br /&gt;
|38XR-A&lt;br /&gt;
|165&lt;br /&gt;
|10.000&lt;br /&gt;
|0,25&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|6,3x32 mm / 10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Keysight (vorm. Agilent)&lt;br /&gt;
|U1241B&lt;br /&gt;
|215&lt;br /&gt;
|10.000&lt;br /&gt;
|0,09&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|10x35 mm / 10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Keysight (vorm. Agilent)&lt;br /&gt;
|U1232A&lt;br /&gt;
|166&lt;br /&gt;
|6.000&lt;br /&gt;
|0,5&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat III&lt;br /&gt;
|10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Benning&lt;br /&gt;
|MM 7-1&lt;br /&gt;
|220&lt;br /&gt;
|6.000&lt;br /&gt;
|0,08&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|10x35 mm / 10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Benning&lt;br /&gt;
|MM 10&lt;br /&gt;
|165&lt;br /&gt;
|6.000&lt;br /&gt;
|0,5&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|6,35x32 mm&lt;br /&gt;
|-&lt;br /&gt;
|Benning&lt;br /&gt;
|MM 11&lt;br /&gt;
|350&lt;br /&gt;
|20.000&lt;br /&gt;
|0,08&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|10x35 mm / 10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Fluke&lt;br /&gt;
|114&lt;br /&gt;
|145&lt;br /&gt;
|6.000&lt;br /&gt;
|0,5&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat III&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Fluke&lt;br /&gt;
|115&lt;br /&gt;
|170&lt;br /&gt;
|6.000&lt;br /&gt;
|0,5&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat III&lt;br /&gt;
|1000V / 15kA&lt;br /&gt;
|-&lt;br /&gt;
|Fluke&lt;br /&gt;
|117&lt;br /&gt;
|200&lt;br /&gt;
|6.000&lt;br /&gt;
|0,5&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat III&lt;br /&gt;
|1000V / 15kA&lt;br /&gt;
|-&lt;br /&gt;
|Fluke&lt;br /&gt;
|77 IV&lt;br /&gt;
|400&lt;br /&gt;
|6000&lt;br /&gt;
|0,3&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|k. A.&lt;br /&gt;
|-&lt;br /&gt;
|Fluke&lt;br /&gt;
|175&lt;br /&gt;
|225&lt;br /&gt;
|6000&lt;br /&gt;
|0,15&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|k. A.&lt;br /&gt;
|-&lt;br /&gt;
|Fluke&lt;br /&gt;
|177&lt;br /&gt;
|270&lt;br /&gt;
|6000&lt;br /&gt;
|0,09&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|k. A.&lt;br /&gt;
|-&lt;br /&gt;
|Fluke&lt;br /&gt;
|179&lt;br /&gt;
|300&lt;br /&gt;
|6000&lt;br /&gt;
|0,09&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|k. A.&lt;br /&gt;
|-&lt;br /&gt;
|Peaktech&lt;br /&gt;
|P3320&lt;br /&gt;
|55&lt;br /&gt;
|6.000&lt;br /&gt;
|0,5&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat III, 1000V Cat II&lt;br /&gt;
|k. A.&lt;br /&gt;
|-&lt;br /&gt;
|Peaktech&lt;br /&gt;
|P3360&lt;br /&gt;
|85&lt;br /&gt;
|40.000&lt;br /&gt;
|0,06&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|6,3x32 mm / 10x38 mm&lt;br /&gt;
|-&lt;br /&gt;
|Peaktech&lt;br /&gt;
|P3380&lt;br /&gt;
|190&lt;br /&gt;
|22.000&lt;br /&gt;
|0,12&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|k. A.&lt;br /&gt;
|-&lt;br /&gt;
|UNI-T&lt;br /&gt;
|UT71B&lt;br /&gt;
|97&lt;br /&gt;
|20.000&lt;br /&gt;
|0,08&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|5x20 mm&lt;br /&gt;
|-&lt;br /&gt;
|UNI-T&lt;br /&gt;
|UT71C&lt;br /&gt;
|120&lt;br /&gt;
|40.000&lt;br /&gt;
|0,05&lt;br /&gt;
|Ja&lt;br /&gt;
|600V Cat IV, 1000V Cat III&lt;br /&gt;
|5x20 mm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Oberklasse-Geräte ===&lt;br /&gt;
&lt;br /&gt;
Diese Geräte haben eine Grundgenauigkeit von mindestens 0,1 und bieten einen sehr hohen Sicherheitsstandard. Die Spannungsfestigkeit ist mindestens 1000V Cat III. Diese Geräte haben Zusatzfunktionen wie z.B. parametrierbare Tiefpassfilter, Messung der Grundfrequenz an Wechselrichtern, etc. Sie sind meist nur für Profis interessant und bezahlbar.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;multimeter&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hersteller&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Preis [EUR]&lt;br /&gt;
!Counts&lt;br /&gt;
!Grundgenauigkeit [%]&lt;br /&gt;
!Bandbreite (TRMS)/kHz&lt;br /&gt;
!Zusatzfunktionen&lt;br /&gt;
|-&lt;br /&gt;
|Keysight&lt;br /&gt;
|U1251A/B&lt;br /&gt;
|350&lt;br /&gt;
|50.000&lt;br /&gt;
|0,025&lt;br /&gt;
|30&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Fluke&lt;br /&gt;
|83 V&lt;br /&gt;
|380&lt;br /&gt;
|6.000&lt;br /&gt;
|0,1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Fluke&lt;br /&gt;
|87 V&lt;br /&gt;
|450&lt;br /&gt;
|20.000&lt;br /&gt;
|0,05&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gossen Metrawatt&lt;br /&gt;
|METRAHIT PRO&lt;br /&gt;
|360&lt;br /&gt;
|10.000&lt;br /&gt;
|0,05&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gossen Metrawatt&lt;br /&gt;
|METRAHIT Tech&lt;br /&gt;
|360&lt;br /&gt;
|12.000&lt;br /&gt;
|0,05&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gossen Metrawatt&lt;br /&gt;
|METRAHIT ENERGY&lt;br /&gt;
|810&lt;br /&gt;
|60.000&lt;br /&gt;
|0,05&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gossen Metrawatt&lt;br /&gt;
|METRAHIT 30M&lt;br /&gt;
|1046&lt;br /&gt;
|1.200.000&lt;br /&gt;
|0,05&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gossen Metrawatt&lt;br /&gt;
|METRAHIT X-TRA&lt;br /&gt;
|360&lt;br /&gt;
|12.000&lt;br /&gt;
|0,05&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gossen Metrawatt&lt;br /&gt;
|METRAHIT OUTDOOR&lt;br /&gt;
|549&lt;br /&gt;
|12.000&lt;br /&gt;
|0,05&lt;br /&gt;
|10&lt;br /&gt;
| IP65&lt;br /&gt;
|-&lt;br /&gt;
|Metrix&lt;br /&gt;
|MTX 3281&lt;br /&gt;
|ab 375,-&lt;br /&gt;
|100.000&lt;br /&gt;
|0,1%&lt;br /&gt;
|50&lt;br /&gt;
|versch. Ausführungen: Com, BT, Temp ect.&lt;br /&gt;
|-&lt;br /&gt;
|Metrix&lt;br /&gt;
|MTX 3282&lt;br /&gt;
|ab 500,-&lt;br /&gt;
|100.000&lt;br /&gt;
|0,03%&lt;br /&gt;
|100&lt;br /&gt;
|versch. Ausführungen: Com, BT, Temp ect.&lt;br /&gt;
|-&lt;br /&gt;
|Metrix&lt;br /&gt;
|MTX 3283&lt;br /&gt;
|ab 560,-&lt;br /&gt;
|100.000&lt;br /&gt;
|0,02%&lt;br /&gt;
|200&lt;br /&gt;
|versch. Ausführungen: Com, BT, Temp ect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tischmultimeter ===&lt;br /&gt;
&lt;br /&gt;
Tischmultimeter bieten eine sehr hohe Genauigkeit und eine hohe Geschwindigkeit. Für genaue Widerstandsmessung gibt es eine [http://de.wikipedia.org/wiki/Vierdrahtmessung Vierdrahtmessung],  &lt;br /&gt;
wodurch sich der Widerstand der Messleitungen nicht auf das Ergebnis auswirkt. Auf Grund ihrer sehr hohen Genauigkeit wird diese nicht in Prozent sondern ppm angegeben, u.a. weil niemand die vielen Nullen nach dem Komma zählen will.&lt;br /&gt;
&lt;br /&gt;
1ppm = 0,0001% (engl. one part per million, der millionste Teil) &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;multimeter&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hersteller&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Preis [EUR]&lt;br /&gt;
!Counts&lt;br /&gt;
!Grundgenauigkeit [ppm]&lt;br /&gt;
!TRMS&lt;br /&gt;
|-&lt;br /&gt;
|Keysight&lt;br /&gt;
|34461A&lt;br /&gt;
|1050&lt;br /&gt;
|1.200.000&lt;br /&gt;
|19 (über 24 h)&lt;br /&gt;
|Ja&lt;br /&gt;
|-&lt;br /&gt;
|Keysight&lt;br /&gt;
|34401A&lt;br /&gt;
|985&lt;br /&gt;
|1.000.000&lt;br /&gt;
|15&lt;br /&gt;
|Ja&lt;br /&gt;
|-&lt;br /&gt;
|Keithley&lt;br /&gt;
|2000&lt;br /&gt;
|1050&lt;br /&gt;
|1.000.000&lt;br /&gt;
|20&lt;br /&gt;
|Ja&lt;br /&gt;
|-&lt;br /&gt;
|Picotest&lt;br /&gt;
|M3500A&lt;br /&gt;
|885&lt;br /&gt;
|1.000.000&lt;br /&gt;
|15&lt;br /&gt;
|Ja&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/204156#new Forumsbeitrag]: Welches Multimeter?&lt;br /&gt;
*[http://www.sprut.de/electronic/mess/spannung.htm Spannungsnormal - Betrachtungen zur Messgenauigkeit]&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;/div&gt;</summary>
		<author><name>95.157.9.244</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=VHDL&amp;diff=89176</id>
		<title>VHDL</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=VHDL&amp;diff=89176"/>
		<updated>2015-06-29T05:18:54Z</updated>

		<summary type="html">&lt;p&gt;95.157.9.244: linkfix via archive.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VHDL als Sprache ==&lt;br /&gt;
&lt;br /&gt;
VHDL  (VHSIC (Very High Speed Integrated Circuits) Hardware Description Language) ist eine Sprache mit zwei Aspekten: sie enthält, wie andere typische Programmiersprachen, eine Reihe von Konstrukten und Befehlen, die Abläufe und zeitliches Verhalten beschreiben, sowie ferner auch Elemente, die Strukturen und Zusammenhänge definieren. Diese werden genutzt, um das Verhalten einer digitalen Schaltung, z.B. in einem [[FPGA]], zu beschreiben. Wesentlich ist dabei die funktionelle Abhängigkeit der Ausgänge von Schaltungsmodulen von ihren Eingängen, sowie der Zusammenhang der Eingänge der Module mit den Ausgängen anderer Module. Diese können jeweils direkt oder über FlipFlops verknüpft werden, wodurch die Informationsweitergabe erst im nächsten Takt erfolgt. Mit dieser grundsätzlichen Topologie sind alle wichtigen Grundfunktionen digitaler Schaltungen darstellbar. Letztlich wird das Verhalten der Chipausgänge in Abhängigkeit der Chipeingänge definiert und dabei alle erdenklichen Zustände, in denen sich die Teilschaltungen befinden können, vollumfänglich beschrieben.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist bei VHDL das Verständnis dafür, dass alle ausdrücklichen, zeitlichen Abläufe lediglich während der Simulation so vollzogen werden, wie sie anhand üblicher Regeln der Softwaretechnologie erwartet werden. Bei der Synthese hingegen bleiben einige zeitliche Konstrukte und Zusammenhänge unberücksichtigt und nur die Strukturen selbst werden in die Schaltung übernommen. Damit ist z.B. die Anordnung des Codes in einem Modul aber auch die Ordnung der Prozesse und Reihenfolge von Signalzuweisungen weitgehend unerheblich.&lt;br /&gt;
&lt;br /&gt;
=== Simulation ===&lt;br /&gt;
&lt;br /&gt;
Bei der Simulation wird der Code in klassischer Weise kompiliert und ausgeführt. Die Anordnung von Codezeilen kann dabei ebenso relevant sein, wie die zeitliche Steuerung von Modulen, die bestimmte Abhängigkeiten von einzelnen Signalen haben. In dieser Funktion wird VHDL hauptsächlich zum Schreiben von Testbenches und Modellen verwendet. Näheres dazu im Artikel [[VHDL Testbench]].&lt;br /&gt;
&lt;br /&gt;
=== Synthese ===&lt;br /&gt;
&lt;br /&gt;
Bei der Synthese wird die Beschreibung von einer Synthesesoftware in eine Netzliste umgesetzt. Der grundlegende Unterschied zur Verwendung von VHDL als Simulationsprache besteht darin, dass man nicht beliebigen Code schreiben kann, sondern sich an bestimmte Strukturen halten muss, die der Synthesizer kennt und in Hardware umsetzen kann. Schleifen z.B. werden zur Compilezeit ausgeführt, um Matritzen, Vektoren oder redundante Strukturen zu beschreiben und besitzen keine zeitliche Relevanz zur Ausführungszeit.&lt;br /&gt;
&lt;br /&gt;
Wie diese Strukturen im allgemeinen aussehen, ist weiter unten beschrieben, Details erfährt man in der Dokumentation der Software, z.&amp;amp;nbsp;B. dem [http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/xst.pdf XST User Guide].&lt;br /&gt;
&lt;br /&gt;
=== Grundregeln für synthetisierbaren VHDL-Code ===&lt;br /&gt;
&lt;br /&gt;
Folgende Grundregeln sollten vor allem Anfänger auf jeden Fall einhalten:&lt;br /&gt;
&lt;br /&gt;
* Es darf nur zwei Arten von Prozessen geben:&lt;br /&gt;
*# Rein kombinatorische Prozesse (keine Zustandsspeicher):&lt;br /&gt;
*#* Alle Signale die im Prozess gelesen werden in die sensitivity list eintragen&lt;br /&gt;
*#* Jedes Ausgangssignal muss in jedem if-Zweig einen von sich selbst verschiedenen Wert zugewiesen bekommen, damit keine [[Latch]]es entstehen (mein_signal &amp;lt;= mein_signal; ist unzulässig!)&lt;br /&gt;
*#* Keine Taktflankenabfrage&lt;br /&gt;
*# Rein getaktete Prozesse (Flip-Flops als Zustandsspeicher):&lt;br /&gt;
*#* Nur Clk und asynchroner Reset in die sensitivity list&lt;br /&gt;
*#* Maximal ein [[Reset für FPGA/CPLD | Reset]]&lt;br /&gt;
*#* Nur eine Taktflankenabfrage (rising_edge)&lt;br /&gt;
* Möglichst nur ein einziger Takt im gesamten Design, nur steigende ODER fallende Taktflanke auswerten. Um eine Flanke eines anderen Signals zu erkennen, siehe [[VHDL Flankenerkennung]].&lt;br /&gt;
* Keine Takte herunter teilen, stattdessen [[Taktung FPGA/CPLD#Clock Enable|Clock Enable]]  verwenden.&lt;br /&gt;
* Kein &amp;quot;after&amp;quot;, &amp;quot;wait for&amp;quot; o.ä. verwenden, das ist nicht synthetisierbar&lt;br /&gt;
* Keine shared variables verwenden&lt;br /&gt;
* Variablen nur dann verwenden, wenn man genau verstanden hat, was der Unterschied zu einem Signal ist und sich das Problem nicht auch mit Signalen lösen lässt&lt;br /&gt;
* Kein IEEE.STD_LOGIC_(UN)SIGNED verwenden, sondern IEEE.NUMERIC_STD (siehe [[Rechnen in VHDL]])&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===&amp;lt;code&amp;gt;CLK=&#039;1&#039; and CLK&#039;event&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;rising_edge()&amp;lt;/code&amp;gt;?===&lt;br /&gt;
&#039;&#039;&#039;Frage:&#039;&#039;&#039;&lt;br /&gt;
Bei der Beschreibung von FlipFlops werden je nach Buch/Programmierer zwei unterschiedliche Konstrukte benutzt:&lt;br /&gt;
&lt;br /&gt;
Variante 1 (klassisch):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
process(clk)&lt;br /&gt;
begin&lt;br /&gt;
  if clk = &#039;1&#039; and clk&#039;event then&lt;br /&gt;
    --snip&lt;br /&gt;
  end if;&lt;br /&gt;
end process;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
und Variante 2:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
process(clk)&lt;br /&gt;
begin&lt;br /&gt;
  if rising_edge(clk) then&lt;br /&gt;
    --snip&lt;br /&gt;
  end if;&lt;br /&gt;
end process;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welche ist zu empfehlen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Antwort:&#039;&#039;&#039;&lt;br /&gt;
Kurz gesagt bei der Synthese gibt es keine Unterschiede, in der Simulation kleine. Verwende die besser lesbare Variante. Die mit &#039;&#039;rising_edge()&#039;&#039; (bzw. &#039;&#039;falling_edge()&#039;&#039;) gilt allgemein als die bessere (Lesbarkeit und Simulationsgenauigkeit).&lt;br /&gt;
&lt;br /&gt;
Wer es genau wissen will: Die klassische Variante ist nur korrekt für Signale die nur die Werte &#039;1&#039; und &#039;0&#039; annehmen können. Bei Signalen vom Typ std_logic (der Standardtyp für Signale) werden Flanken erkannt, die tatsächlich keine sind.&lt;br /&gt;
Zum Beispiel beim Treiben eines PullUps (&#039;H&#039; -&amp;gt; &#039;1&#039; keine tatsächliche Flanke aber für &#039;&#039;clk = &#039;1&#039; and clk&#039;event&#039;&#039;) oder beim Simulationsstart ohne Initialisierungswert für die Signale (&#039;U&#039; -&amp;gt; &#039;1&#039;).(Signale mit Initialisierungswert werden so deklariert: &#039;&#039;signal a: std_logic := &#039;0&#039;; &#039;&#039;).&lt;br /&gt;
Die Funktionen &#039;&#039;rising_edge()&#039;&#039; und &#039;&#039;falling_edge()&#039;&#039; konvertieren den std_logic Wert vor dem Vergleich auf &#039;1&#039; bzw. &#039;0&#039; und simulieren so keine Flanke wo in der echten Hardware auch keine ist.&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/forum/read-9-391894.html&lt;br /&gt;
&lt;br /&gt;
===Synchroner oder asynchroner Reset?===&lt;br /&gt;
Folgende Regeln gelten bei der Überlegung, ob man einen asynchronen Reset verwenden sollte:&lt;br /&gt;
&lt;br /&gt;
* In FPGAs führt die Nutzung von Resetfunktionen in aller Regel zu einem erhöhten Resourcenverbrauch. Mitunter werden Taktnetze belegt.&lt;br /&gt;
&lt;br /&gt;
* Asynchrone Resets bedürfen besonderer Behandlung, damit die negative RST-Taktflanke nicht genau zur Clk-Flanke kommt, da dies zu inkonsitenten Startbedingungen der FFs im FPGA führen kann.&lt;br /&gt;
&lt;br /&gt;
* Viele FPGAs können per Init-Kommando in VHDL initialisiert werden und benötigen zum Anlaufen gar keinen (Re)set - weder synchron noch asynchron.&lt;br /&gt;
&lt;br /&gt;
* Oft benötigen FPGAs aus Betriebssicherheitsgründen einen synchronen Reset inmitten des Betriebs durch eine Instanz wie einen Controller, wenn ein Fehler detektiert wurde. In diesen Fällen ist ein asynchroner Reset unnötig.&lt;br /&gt;
&lt;br /&gt;
* asynchrone Resets sollten nur an von einander unabhängigen Punkten der Schaltungselektronik angewendet werden, wie z.B. an verschiedenen Chips, wo man ohnehin keine totale Synchronität unterstellt und Massnahmen zum sicheren Anlaufen aller Schaltungsteile ergreifen muss.&lt;br /&gt;
&lt;br /&gt;
* asynchrone Resets müssen in jeder einzelnen domain getrennt eingetaktet werden, um sie sicher in synchrone Resets zu überführen&lt;br /&gt;
&lt;br /&gt;
* Innerhalb eines FPGAs sollten asynchrones Resets an z.B. PLLs geführt werden, damit deren Reset nicht von einer zweiten PLL abhängig ist.&lt;br /&gt;
&lt;br /&gt;
* Sollen FPGAs in ASICs übersetzt werden und dort unbedingt ein asynchroner Reset verwendet werden müssen, können asynchrone Resets bedingt compilierbar eingebaut werden, sodass sie im FPGA nicht zwangsläufig aktiv sein müssen&lt;br /&gt;
&lt;br /&gt;
==== Standardresetpfad in FPGAs ====&lt;br /&gt;
&lt;br /&gt;
Ein probates und meistens sehr gut funktionierendes Design sieht folgendermassen aus:&lt;br /&gt;
&lt;br /&gt;
* externer asynchroner Reset vom IO-PAD (bei nReset über Inverter) direkt im Top-Level an die Master-PLL / bzw den Haupt-DCM, genannt &amp;quot;PLL1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Die &amp;quot;PLL1&amp;quot; generiert neben den Takten ein LOCKED-Signal, das in invertierter Form als Reset für diese domain benutzt wird. Aus dem aynchronen Reset wird dadurch mittels des LOCK-Signals ein interner, synchroner Reset&lt;br /&gt;
&lt;br /&gt;
* Dieser interne Reset wird in jeder einzelnen Teildomain dieser PLL zweimmal einsynchronisiert, um lokale Reset-Signale zu erzeugen. Damit werden die Auswirkungen metastabiler Zustände verhindert, die bei der negativen Resetflanke entstehen könnten, falls die Taktflanken der erzeugten PLL-Takte genau auf dieser Flanke liegen&lt;br /&gt;
&lt;br /&gt;
* Der interne Reset der &amp;quot;PLL1&amp;quot; versorgt zudem auch alle weiteren PLLs der anderen Domains, die sich ihren lokalen Reset auf dieselbe Weise generieren. Der in der domain der PLL1 synchrone reset wirkt bei diesen PLLs quasi asynchron.&lt;br /&gt;
&lt;br /&gt;
Damit wird sichergestellt dass alle PLLs einen eigenen Reset bekommen und sie danach definitiv anlaufen. Es ist nun wichtig, dass beachtet wird, dass der exakte Zeitpunkt der Resets der unterschiedlichen Domains unbekannt ist. Daher müssen die locked-signale dieser Domains gfs wieder einsynchronsiert werden, damit in der Master-Domain bekannt ist, wenn alle Teilschaltungen angelaufen sind und das Design &amp;quot;starten&amp;quot; kann.&lt;br /&gt;
&lt;br /&gt;
Bei kritischen Applikationen muss gegebenenfalls auch noch dafür gesorgt werden, dass in der Phase zwischen Start des FPGAs und Arbeiten aller PLLs alle FPGA-Ausgänge auf einem passenden Pegel gehalten werden.&lt;br /&gt;
&lt;br /&gt;
===Wann und warum verwendet man Variablen?===&lt;br /&gt;
&lt;br /&gt;
* Variablen sind als Zwischenergebnisse / Synonyme für aus Kombinatorik gewonnene Werte / Signale zu verstehen. Sie erhalten jeweils &amp;quot;sofort&amp;quot; nach der Zuweisung ihren neuen Wert, der direkt an anderer Stelle genutzt werden kann - so, als läge eine direkte Verdrahtung vor. Die Nutzung von Variablen entkoppelt somit jegliche Berechung von den zeitlichen Randbedingungen, speziell dem Takt. Damit ist es möglich, komplexe Architekturen und Modellverhalten innerhalb von Simulationen ohne einen Zeitverlust zu berechnen, siehe Beispiele unten.&lt;br /&gt;
&lt;br /&gt;
* Signale erhalten ihren neu zugewiesenen Wert dagegen erst nach dem vollständigen Abarbeiten eines Prozesses, praktisch nach einem Delta-Delay oder nach einer spezifizierten Zeit. Sie repräsentieren eine physikalische Signalkette mit tatsächlichem Datenfluss. Während Variablen daher in einem Prozess gleich weiterverwendet werden können, sind Signale faktisch erst mit dem nächsten Takt aktuell (das Delta-Delay führt dazu, dass der Wert für diesen Durchlauf noch nicht gilt, der nächste Durchlauf des getakteten Prozesses passiert dann erst einen Clockcycle später.&lt;br /&gt;
&lt;br /&gt;
* Bei asynchronen Prozessen wird der Prozess bei der Verwendung von Signalen dann nochmals gestartet ... (oder so oft, so viele voneinander abhängige Signalzuweisungen drin sind), bei Variablen wird er in einem Durchlauf berechnet (Simulationszeit!).&lt;br /&gt;
&lt;br /&gt;
* Die Benutzung von Variablen gegenüber Signalen hat mitunter Vorteile im Bereich der Ausführungszeit bei Simulationen, wenn umfangreiche Berechnungen nötig sind, die ansonsten mit Vektoren durchgeführt werden müssten.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 1 ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
-- Nutzung von Signalen&lt;br /&gt;
-- die letzte Anweisung ist gültig und überschreibt alle vorhergehenden Anweisungen&lt;br /&gt;
&lt;br /&gt;
-- steht real in der Signaldefinition über begin&lt;br /&gt;
signal a: std_logic;&lt;br /&gt;
&lt;br /&gt;
process(clk)&lt;br /&gt;
begin&lt;br /&gt;
  if rising_edge(clk) then&lt;br /&gt;
    a &amp;lt;= a and b;&lt;br /&gt;
    a &amp;lt;= a and c;&lt;br /&gt;
  end if;&lt;br /&gt;
end process;&lt;br /&gt;
&lt;br /&gt;
-- Ergebnis: a &amp;lt;= a and c, die Zeile zuvor wird ignoriert&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
-- Nutzung von Variablen&lt;br /&gt;
-- Aufeinanderfolgende Anweisungen werden sofort logisch wirksam und in die neue Anweisung einbezogen, die Anweisungen werden somit verkettet&lt;br /&gt;
&lt;br /&gt;
process(clk)&lt;br /&gt;
  variable a: std_logic;&lt;br /&gt;
begin&lt;br /&gt;
  if rising_edge(clk) then&lt;br /&gt;
    a := a and b;&lt;br /&gt;
    a := a and c;&lt;br /&gt;
  end if;&lt;br /&gt;
end process;&lt;br /&gt;
&lt;br /&gt;
-- Ergebnis: a &amp;lt;= a and b and c, Verkettung der Anweisung wie in normalen Programmiersprachen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Es kann recht unübersichtlich werden, wenn man eine komplexe Berechnung hat und diese mit vielen Klammerebenen verschachtelt direkt in der Signalzuweisung beschreibt. Hier kann es besser sein, den Wert &amp;quot;nach und nach&amp;quot; über Variablen &amp;quot;zusammenzubauen&amp;quot; und erst am Schluss auf ein Signal zuzuweisen.&lt;br /&gt;
&lt;br /&gt;
* Manchmal möchte man gemeinsame Teilausdrücke vorab berechnen, z.&amp;amp;nbsp;B.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
  Var1 := A + B;&lt;br /&gt;
  Var2 := C + D;&lt;br /&gt;
  Var3 := E + F;&lt;br /&gt;
  Result1 &amp;lt;= Var1 - Var2;&lt;br /&gt;
  Result2 &amp;lt;= Var1 - Var3;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
ist i.d.R. besser als&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
  Result1 &amp;lt;= (A + B) - (C + D);&lt;br /&gt;
  Result2 &amp;lt;= (A + B) - (E + F);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wenns komplexer wird, ist es auch einfacher, daran was zu ändern.&lt;br /&gt;
&lt;br /&gt;
* Verschiedenen Synthesetools können manchmal mehr, manchmal weniger gut optimieren. So kann man z.&amp;amp;nbsp;B. durch das Zusammenfassen eines Teilausdruckes eine bessere Optimierung erreichen (Stichwort Resource-Sharing). Z.B.:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
  if (opcode = add) then&lt;br /&gt;
    res &amp;lt;= a+b;&lt;br /&gt;
  else -- opcode = sub&lt;br /&gt;
    res &amp;lt;= a-b;&lt;br /&gt;
  end if;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
  if (opcode = add) then&lt;br /&gt;
    var1 := b;&lt;br /&gt;
  else&lt;br /&gt;
    var1 := -b;&lt;br /&gt;
  end if;&lt;br /&gt;
  res &amp;lt;= a+var1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im ersten Fall wird ggf. ein Addierer und ein Subtrahierer (noch&#039;n Addierer) eingebaut und das Ergebniss gemultiplext, im zweiten Fall wird eventuell nur ein Addierer eingebaut und der b-Eingang des Addierers gemultiplext. Sind a und b beispielsweise 32-Bit-Vektoren, dann macht das HW-mäßig schon was aus.&lt;br /&gt;
Gute Synthesetools sollten dies aber mittlerweile automatisch machen, so das in beiden Fällen dasselbe rauskommt (war nicht immer so). (BTW, ich selber tendiere normalerweise zur ersten Variante, da besser lesbar - und man die HW-Implementierung nicht notwendigerweise vorwegnehmen soll, aber da hat jeder seine eigene Meinung zu ...)&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 2 ====&lt;br /&gt;
Bei Analogen Filtern ist es oft notwendig, iterative Schleifen zu verwenden, um die Ergebnisse zu erlangen. Nur die Verwendung von Variablen und Loops gestattet es, komplexe Rechenergebnisse von &amp;quot;analoger&amp;quot; Reaktionsgeschwindigkeit vom Simulator zu erlangen, ohne Simulationszeit oder gar Takte vergehen zu lassen.&lt;br /&gt;
&lt;br /&gt;
==== Geschwindigkeit ====&lt;br /&gt;
Simulatoren rechnen i.d.R. mit Variablen schneller, als mit Signalen. Hat man also viele Prozesse mit Signalen vs. Variablen in einem großen Design, dann kann das schon was ausmachen ... Siehe auch oben bei asynchronen Prozessen, die mit Signalen ggf. wesentlich öfters durchlaufen werden. Auch wenn also ein System mit Signalen abzubilden ist, so empfiehlt sich der Einsatz von Variablen mitunter dennoch.&lt;br /&gt;
&lt;br /&gt;
Ausnahme: I.d.R. sind nur auf Signalen und getakteten Prozessen basierende Modelle voll und leicht synthesierbar. Soll z.&amp;amp;nbsp;B. ein Modell in einem [[HIL]] System getestet werden, ist die Verwendung von Signalen mit entsprechender Berücksichtigung des timing angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== Anfängerprobleme ====&lt;br /&gt;
Anfänger meinen oft, die unmittelbare Zuweisung eines Werts an eine Variable im Prozess gewinnbringend nutzen zu können. So werden dann ausgiebig Variablen verwendet, und eines der Hauptprobleme von Variablen übersehen: sie können nicht in der Sensitivliste eines Prozesses aufgeführt werden. Von diesem Nebeneffekt sind insbesondere &#039;&#039;speichernde&#039;&#039; Variablen betroffen. Im Beitrag &lt;br /&gt;
http://www.mikrocontroller.net/topic/117630 sind dort ein paar Beispiele aufgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Hauptproblem an diesem Verhalten ist, dass die (fehlerfreie) Simulation nicht mehr zum Syntheseergebnis (das ebenfalls fehlerfrei und ohne Warnungen erzeugt wurde) passt.&lt;br /&gt;
&lt;br /&gt;
=== Kodierschaltungen ===&lt;br /&gt;
Kodierschaltungen (Coder) sind Schaltungen mit einem mehrstelligen Ein- und Ausgang. In der Schaltung werden keine FF oder andere Speicher benutzt. Ein typisches Beispiel ist die Wandlung einer Binärzahl in eine Binär Codierte Dezimalzahl. Eine sehr übersichtliche Schreibweise benutzt ein Konstanten-Feld. &lt;br /&gt;
&lt;br /&gt;
Vor- und Nachteile verschiedener VHDL-Varianten einen Coder zu beschreiben werden [[TTL74185|hier]] besprochen. &lt;br /&gt;
&lt;br /&gt;
===If außerhalb eines Prozesses?===&lt;br /&gt;
If-Bedinungen sind außerhalb eines Prozesses nicht möglich.&lt;br /&gt;
Lösung:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
 vector_or &amp;lt;= &#039;0&#039; when oder_vector = X&amp;quot;0000&amp;quot; else &#039;1&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dies nennt der Fachmann bedingte Zuweisung (conditional assignment), es ist eine der &#039;&#039;nebenläufigen&#039;&#039; Anweisungen von VHDL. Daneben gibt es zu ähnlichem Zweck eine select-Anweisung:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
 with vector select&lt;br /&gt;
   bit_pos &amp;lt;= &amp;quot;00&amp;quot; when &amp;quot;0001&amp;quot;,&lt;br /&gt;
              &amp;quot;01&amp;quot; when &amp;quot;0010&amp;quot;,&lt;br /&gt;
              &amp;quot;10&amp;quot; when &amp;quot;0100&amp;quot;,&lt;br /&gt;
              &amp;quot;11&amp;quot; when &amp;quot;1000&amp;quot;,&lt;br /&gt;
              &amp;quot;00&amp;quot; when others;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für sperrige Fälle, die sich partout nicht lesbar und/oder elegant mittels dieser nebenläufigen Zuweisungen formulieren lassen, bietet sich entweder ein kombinatorischer Prozess an oder man verpackt die Zuweisung in eine Funktion. In beiden Fällen kann man dann den Ergebnisvektor schrittweise mit if-Abfragen zusammenbauen.&lt;br /&gt;
&lt;br /&gt;
=== Alle Leitungen auf &amp;quot;0000..&amp;quot; bzw &amp;quot;1111...&amp;quot; setzen? ===&lt;br /&gt;
&lt;br /&gt;
Auf null setzen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
count &amp;lt;= (others =&amp;gt; &#039;0&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf eins setzen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
count &amp;lt;= (others =&amp;gt; &#039;1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Vergleich eines std_logic_vector mit einer Konstanten===&lt;br /&gt;
&lt;br /&gt;
Um einen std_logic_vector auf &amp;quot;00000...&amp;quot; oder &amp;quot;1111...&amp;quot; zu vergleichen, kann die (others =&amp;gt; &#039;0&#039;) Schreibweise nicht verwendet werden, weil die Vektorbreite dabei nicht definiert ist. Hier muss also ein Bereich angegeben werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
if VECTOR = (15 downto 0=&amp;gt;&#039;0&#039;) then..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
if VECTOR = (VECTOR&#039;range=&amp;gt;&#039;0&#039;) then...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Diese Schreibweise gilt universell für alle Libs.&lt;br /&gt;
&lt;br /&gt;
Werte ungleich &amp;quot;000..&amp;quot; und &amp;quot;1111...&amp;quot; müssen bei Verwendung der NUMERIC_STD.ALL etwas aufwendiger umgewandelt werden (hier der Wert 77):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
if VECTOR = std_logic_vector(to_unsigned(77,VECTOR&#039;length)) then...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wird die herstellerabhängige Synopsis-Lib STD_LOGIC_UNSIGNED.ALL verwendet, kann auch einfach so geschrieben werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
if VECTOR = 0 then...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Genauso einfach geht ein Vergleich auf z.&amp;amp;nbsp;B. den Wert 77:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
if VECTOR = 77 then...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report von std_logic_vector===&lt;br /&gt;
&lt;br /&gt;
Report kann nur Strings verarbeiten, deswegen muss ein std_logic_vector in einen String verwandelt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vhdl&amp;quot;&amp;gt;&lt;br /&gt;
report integer&#039;image(to_integer(unsigned(rdata)));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===parallel -&amp;gt; seriell: Schieberegister oder Multiplexer?===&lt;br /&gt;
* http://www.mikrocontroller.net/topic/78556&lt;br /&gt;
&lt;br /&gt;
==Weitere Informationen==&lt;br /&gt;
=== Artikel ===&lt;br /&gt;
&amp;lt;ncl style=compact maxdepth=2 headings=bullet headstart=2&lt;br /&gt;
      showcats=1 showarts=1&amp;gt;VHDL&amp;lt;/ncl&amp;gt;&lt;br /&gt;
=== Forum ===&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/fpga-vhdl-cpld FPGA, VHDL &amp;amp; Co.]&lt;br /&gt;
&lt;br /&gt;
===Kurzreferenzen===&lt;br /&gt;
* [http://www.tcnj.edu/~hernande/r/VHDL_QRC__01.pdf VHDL Quick Reference Card]&lt;br /&gt;
* [https://web.archive.org/web/20130513044833/http://www.lrr.in.tum.de/~acher/tgi/uebung/VHDL-Buch.pdf VHDL-Kurzanleitung]&lt;br /&gt;
* [http://www.mikrocontroller.net/attachment/21066/VHDL_Coding_eng.pdf - Design Rules &amp;amp; Coding Style (PDF)]&lt;br /&gt;
&lt;br /&gt;
=== Bücher ===&lt;br /&gt;
* J. Ritter, P. Molitor: &amp;quot;VHDL: Eine Einführung&amp;quot;, ISBN 3827370477&lt;br /&gt;
* J. Reichardt, B. Schwarz: &amp;quot;VHDL-Synthese: Entwurf digitaler Schaltungen und Systeme&amp;quot;, ISBN 3486581929&lt;br /&gt;
* P. J. Ashenden: &amp;quot;The Designers Guide to VHDL&amp;quot;, ISBN 1558606742&lt;br /&gt;
&lt;br /&gt;
===Online-Bücher===&lt;br /&gt;
====Deutsch====&lt;br /&gt;
* [http://www.nt-nv.fh-koeln.de/Labor/VhdlEasy/index.html VHDL easy] - deutschsprachige VHDL-Einführung von der FH Köln&lt;br /&gt;
* [http://digbib.ubka.uni-karlsruhe.de/volltexte/documents/202594 Schaltungsdesign mit VHDL] - komplettes Buch als PDF&lt;br /&gt;
* [http://tams-www.informatik.uni-hamburg.de/vhdl/doc/kurzanleitung/vhdl.pdf VHDL Kurzanleitung] - Umfangreiches Buch der Uni Hamburg, deutschsprachig, ca. 110 Seiten &lt;br /&gt;
* [http://www.informatik.uni-ulm.de/ni/Lehre/SS03/ProSemFPGA/VHDL-Grundlagen.pdf VHDL Grundlagen] 15 Seiten Grundlagen, Universität Ulm&lt;br /&gt;
* [http://wwwlrh.fh-bielefeld.de/vhdl_vor/VHDL_VOR.htm Schaltungs-Synthese mit VHDL] eine Einfuehrung&lt;br /&gt;
* [http://de.wikibooks.org/wiki/VHDL VHDL - Wiki - Buch] VHDL Syntax mit vielen Beispielen. Da es sich um ein Wiki steht jede Woche mehr (korrigierter) Inhalt zur Verfügung.&lt;br /&gt;
* [http://www.lothar-miller.de/s9y/archives/81-Xilinx-ISE-Step-by-Step.html Xilinx ISE Step by Step] Bebildertes Tutorial für Xilinx ISE Entwicklungsumgebung&lt;br /&gt;
====English====&lt;br /&gt;
* [http://tams-www.informatik.uni-hamburg.de/vhdl/ Hamburg VHDL archive]&lt;br /&gt;
* [http://www.ti.informatik.uni-frankfurt.de/Docs/cook/ VHDL Cookbook] - komplettes Buch&lt;br /&gt;
* [http://www.fpga4fun.com/VHDLTips.html VHDL Tips and Tricks]&lt;br /&gt;
* [http://www.doulos.com/knowhow/vhdl_designers_guide/ The Designer&#039;s Guide to VHDL]&lt;br /&gt;
* [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example] - viele Beispiele mit Testbenches&lt;br /&gt;
&lt;br /&gt;
=== Diskussionen ===&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/198531 Einsynchronisieren mit höherer Taktrate]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/156600 Detailbetrachtungen zur Metastabilität]&lt;br /&gt;
&lt;br /&gt;
=== VHDL-Beispiele ===&lt;br /&gt;
* [http://www.lothar-miller.de/s9y/categories/4-FPGA Beispiel von Lothar Miller]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/VHDL_Softwarepool VHDL Software Pool]&lt;br /&gt;
[[Category:FPGA und Co]]&lt;br /&gt;
[[Category:Programmiersprachen]]&lt;br /&gt;
[[Kategorie:VHDL]]&lt;/div&gt;</summary>
		<author><name>95.157.9.244</name></author>
	</entry>
</feed>