<?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=84.57.157.38</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=84.57.157.38"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/84.57.157.38"/>
	<updated>2026-04-10T13:49:05Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=VHDL&amp;diff=18874</id>
		<title>VHDL</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=VHDL&amp;diff=18874"/>
		<updated>2006-12-28T10:55:08Z</updated>

		<summary type="html">&lt;p&gt;84.57.157.38: /* Online-Bücher */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=FAQ=&lt;br /&gt;
&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 FliFlops 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;vhdl&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;/vhdl&amp;gt;&lt;br /&gt;
und Variante 2:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&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;/vhdl&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 in echt keine sind.&lt;br /&gt;
Zum Beispiel beim Treiben eines PullUps (&#039;H&#039; -&amp;gt; &#039;1&#039; keine Flanke in Echt 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;
==Wann und warum verwendet man Variablen?==&lt;br /&gt;
&lt;br /&gt;
* Variablen erhalten immer sofort ihren neuen Wert, Signale erst nach Delta-Delay (oden nach einer spezifizierten Zeit). Variablen können daher in einem Prozess gleich weiterverwendet werden für die nachfolgenden Berechnungen, Signale sind dabei erst mit dem nächsten Takt gültig (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. Bei asynchronen Prozessen wird der Prozess bei der Verwendung von Signalen dann eben 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;
* 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.B.&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
  Sig1 := A + B;&lt;br /&gt;
  Sig2 := C + D;&lt;br /&gt;
  Sig3 := E + F;&lt;br /&gt;
  Result1 &amp;lt;= Sig1 - Sig2;&lt;br /&gt;
  Result2 &amp;lt;= Sig1 - Sig3;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
ist i.d.R. besser als&lt;br /&gt;
&amp;lt;vhdl&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;/vhdl&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.B. durch das Zusammenfassen eines Teilausdruckes eine bessere Optimierung erreichen (Stichwort Resource-Sharing). Z.B.:&lt;br /&gt;
&amp;lt;vhdl&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;
oder&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;/vhdl&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;
* Simulatoren sind i.d.R. etwas schneller mit Variablen 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.&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 ausserhalb von einem Process?==&lt;br /&gt;
If Bedinungen sind auserhalb eines prozesses nicht möglich.&lt;br /&gt;
Lösung:&lt;br /&gt;
&amp;lt;vhdl&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;/vhdl&amp;gt;&lt;br /&gt;
Dies nennt der Fachman bedingte Zuweisung (conditional assignment).&lt;br /&gt;
&lt;br /&gt;
== Alle &amp;quot;Leitungen auf &amp;quot;00000..&amp;quot; bzw &amp;quot;1111...&amp;quot; setzen? ===&lt;br /&gt;
&lt;br /&gt;
Auf null setzten:&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
count &amp;lt;= (others =&amp;gt; &#039;0&#039;);&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf eins setzten:&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
count &amp;lt;= (others =&amp;gt; &#039;1&#039;);&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&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 ein String verwandelt:&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
report integer&#039;image(to_integer(unsigned(rdata)));&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
&lt;br /&gt;
==Kurzreferenzen==&lt;br /&gt;
* http://wwwhome.cs.utwente.nl/~molenkam/vhdl_boek/8_app_i.pdf&lt;br /&gt;
* http://wwwhome.cs.utwente.nl/~molenkam/vhdl_boek/9_app_i.pdf&lt;br /&gt;
&lt;br /&gt;
*http://www.lrr.in.tum.de/~acher/tgi/uebung/VHDL-Buch.pdf&lt;br /&gt;
&lt;br /&gt;
==Online-Bücher==&lt;br /&gt;
http://de.wikibooks.org/wiki/VHDL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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://www.itiv.uni-karlsruhe.de/opencms/opencms/de/study/vhdl/book/download.html Schaltungsdesign mit VHDL] - komplettes Buch als PDF&lt;br /&gt;
* [http://tech-www.informatik.uni-hamburg.de/vhdl/doc/kurzanleitung/vhdl.pdf VHDL Kurzanleitung] - deutschsprachig, ca. 110 Seiten &lt;br /&gt;
* [http://wwwlrh.fh-bielefeld.de/vhdl_vor/VHDL_VOR.htm Schaltungs-Synthese mit VHDL] eine Einfuehrung&lt;br /&gt;
* [http://www.vhdl-online.de/tutorial/ VHDL Tutorial] - umfangreiches Tutorial zu VHDL&lt;br /&gt;
* [http://de.wikibooks.org/wiki/VHDL VHDL - Wiki - Buch] VHDL Syntax mit vielen Beispielen. Da wiki steht aller Wochen mehr (korregierter) Inhalt zur Verfügung.&lt;br /&gt;
&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;
&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;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>84.57.157.38</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=18873</id>
		<title>Hardwarebeschreibungssprachen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=18873"/>
		<updated>2006-12-28T10:54:48Z</updated>

		<summary type="html">&lt;p&gt;84.57.157.38: /* Weblinks */&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.B. Daten für die Programmierung von Logikbausteinen ([[FPGA]], [[CPLD]], [[GAL]]) gewonnen werden, oder es lassen sich Simulationen durchführen.&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;xpression &#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 verwendet. Xilinx unterstützt ABEL als Beschreibungssprache für CPLD&#039;s (CoolRunner-Familie, XC95xxx-Familie)&lt;br /&gt;
&lt;br /&gt;
* [http://www.seas.upenn.edu/ese/rca/software/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;
&lt;br /&gt;
Die Altera Hardware Description Language AHDL ist eine Weiterentwicklung von ABEL.&lt;br /&gt;
&lt;br /&gt;
== CUPL ==&lt;br /&gt;
&lt;br /&gt;
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;
&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;
Verilog wurde später als VHDL standardisiert und galt bis dahin als propietär. Der letzte Standard ist der IEEE 1364-2001.&lt;br /&gt;
Verilog ist vornämlich 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&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;
&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]]&lt;br /&gt;
* [[VHDL_Schnipsel|kurze Beispiele]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VHDL-AMS ==&lt;br /&gt;
VHDL mit Erweiterung zu Analog/Mixed Signal&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;
* VHDL-AMS models &amp;amp; prototyping : http://www.systemsvip.com&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;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>84.57.157.38</name></author>
	</entry>
</feed>