<?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=FPGAk%C3%BCchle</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=FPGAk%C3%BCchle"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/FPGAk%C3%BCchle"/>
	<updated>2026-05-17T22:59:29Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Taktung_FPGA/CPLD&amp;diff=24283</id>
		<title>Taktung FPGA/CPLD</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Taktung_FPGA/CPLD&amp;diff=24283"/>
		<updated>2007-10-19T20:21:55Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: typos;Gliederung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Von den drei Signalgruppen&lt;br /&gt;
&lt;br /&gt;
* interne Signale&lt;br /&gt;
* IO Signale&lt;br /&gt;
* Takt (Clock)&lt;br /&gt;
&lt;br /&gt;
ist letztere die mit den höchsten Anforderungen an Signalqualität und Laufzeit. Fehler im Taktnetzwerk führen zu ungewolltem, ja oft &#039;&#039;katastrophalem&#039;&#039; Verhalten der Schaltung. Um dies zu vermeiden sind besondere Aufbauregeln und Komponenten für die Taktverteilung in digitalen ICs entwickelt worden.&lt;br /&gt;
&lt;br /&gt;
== Grundanforderungen Taktnetzwerk ==&lt;br /&gt;
Der Takt muss störungsfrei an alle getakteten Bauelemente (FlipFlops, RAM) im IC geführt werden. Das Taktnetzwerk muss also extrem viele Gatter-Eingänge treiben (einige Dutzend bis einige Hundertausend!). Dazu wird ein spezieller Takttreiber genutzt (Xilinx: BUFG). Die Laufzeit vom Eingang des Takttreibers zu jedem Endpunkt des Netzes muss gleich sein. Nur so ist gewährleistet dass alle FlipFlops &#039;&#039;im Takt&#039;&#039; schalten. Der Laufzeitunterschied zwischen verschiedenen Endpunkten des Taktnetzes wird Skew genannt und muss sehr klein gehalten werden (bei modernen Digitalschaltkreisen kleiner 100 ps).  Dazu wird das Taktnetzwerk als Baumstruktur gestaltet (gleiche Länge von der Baumwurzel zu jeder Astspitze). Man nennt diese Schaltungstechnik &amp;quot;Clock Tree&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Bild:clock_tree.png | 320px]]&lt;br /&gt;
&lt;br /&gt;
In fast jeder Digitalschaltung kommt es nun vor, dass verschiedene Bereiche nicht bei jedem Takt eine Aktion ausführen sollen. Einige laufen sogar mit einer erheblich geringeren Taktrate als der Rest der Schaltung. Dazu muss aus dem relativ schnellen Systemtakt ein langsamer Takt gewonnen werden. Was auf den ersten Blick recht einfach aussieht, wird im Detail oft falsch gemacht.&lt;br /&gt;
&lt;br /&gt;
== Geschaltete Takte (Gated Clock)==&lt;br /&gt;
&lt;br /&gt;
Dieser Begriff bezieht sich auf geschaltete, also unterbrochene (engl. &amp;quot;gate&amp;quot;), Taktleitungen. Dies kann durch die Verwendung von:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Multiplexern&#039;&#039;&#039; (Auswahl zwischen Taktquelle 1 und 2) &lt;br /&gt;
oder &lt;br /&gt;
*&#039;&#039;&#039;kombinatorischer Logik&#039;&#039;&#039; (Schaltungsteile werden unter bestimmten Bedingungen vom Takt getrennt)&lt;br /&gt;
geschehen.&lt;br /&gt;
&lt;br /&gt;
===Taktmultiplexer===&lt;br /&gt;
Falls ein völliges Abschalten des Taktes wirklich erforderlich ist, z.B. um den Leistungsbedarf zeitweilig zu drosseln, sollte der Takttreiber selbst abgeschaltet werden. Bei Xilinx würde man statt eines BUFG einen BUFGMUX einsetzen. Dieser garantiert durch seinen speziellen Aufbau, daß während des Umschaltens keine Glitches entstehen.&lt;br /&gt;
&lt;br /&gt;
===Kombinatorik im Taktpfad===&lt;br /&gt;
Ein solches Design ist aus zwei Gründen problematisch:&lt;br /&gt;
* es entstehen neben den gewünschten Schaltflanken zusätzliche, ultrakurze Flanken (-&amp;gt;Glitches)&lt;br /&gt;
* der langsame Takt hat eine Phasenverschiebung zum schnellen Takt (-&amp;gt; Skew).&lt;br /&gt;
&lt;br /&gt;
Im ersten Fall können durch die Glitches unerwünschte Schaltaktivitäten an FlipFlops in folgenden Schaltungsteilen ausgelöst werden. Das ist fatal! Schon deshalb ist diese Variante nicht brauchbar. Sie wurde dennoch oft in der Vergangenheit angewendet, weil die relativ langsamen ICs die Glitches gefiltert bzw. ignoriert haben. Doch heute sind CPLDs und FPGAs extrem schnell, dass man mit dieser Methode schnell scheitert.&lt;br /&gt;
&lt;br /&gt;
[[http://www.geocities.com/jacquesmartini/digital/glitch/glitch.html Glitches, Englisch]]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Fall erfolgt durch Skew eine Verschiebung der Schaltzeiten im langsam getakteten Schaltungsteil, die weniger Zeitreserve für Signale lässt, die aus dem langsamen Schaltungsteil wieder in den schnellen Schaltungsteil übergeben werden sollen. In der anderen Richtung, vom schnellen zum langsamen Schaltungsteil, kommt es gar zu sog. Race-Conditions, wobei die Daten vom schnellen Schaltungsteil eher an den FlipFlops des langsamen Schaltungsteils ankommen als der langsame Takt! Damit läuft ein Design &amp;quot;komisch&amp;quot; weil scheinbar ein Takt fehlt. Das ist alles andere als zuverlässig und akzeptabel.&lt;br /&gt;
&lt;br /&gt;
=== Derived Clock ===&lt;br /&gt;
&lt;br /&gt;
Eine geringfügige Verbesserung des Gated Clock erreicht man durch das Anfügen eines FlipFlops hinter den kombinatorischen Dekoder. Durch diese Zwischenspeicherung wird der Takt zumindest frei von Glitches. Wenn im FPGA/CPLD nur ein langsamer Takt gebraucht wird, oder der langsame Schaltungsteil keine logische Verbindung zum schnellen Schaltungsteil hat, dann ist diese Lösung akzeptabel und sicher. Wenn jedoch zwischen dem langsamen Schaltungsteil und schnellen Schaltungsteil Daten oder Steuersignale ausgetauscht werden, dann muss man zu einer anderen Entwurfsmethode greifen.&lt;br /&gt;
&lt;br /&gt;
== Clock Enable ==&lt;br /&gt;
&lt;br /&gt;
Jedes FlipFlop in FPGAs/CPLDs hat einen synchronen Steuereingang namens CE (Clock Enable). Damit kann man festlegen, ob das FlipFlop bei der nächsten Taktflanke neue Daten speichern oder die alten behalten soll. Da es sich um einen synchronen Eingang handelt ist es vollkommen unkritisch wenn diese Signal Glitches enthält. Es muss nur kurz vor der Taktflanke (Setup Time, Aufbauzeit) und kurz danach (Hold Time, Haltezeit) stabil anliegen. Eine Verschiebung dieses Signals zum Takt ist auch unkritisch, denn jedes normale Steuersignal ist phasenverschoben zum Takt (Schaltzeit der FlipFlops, Durchlaufzeit der Logik, Laufzeit der Verdrahtung (Routing)). Das CE-Signal kann von der Entwurfssoftware wie ein normales Steuersignal behandelt werden und vereinfacht damit erheblich die automatische Analyse der maximalen Schaltfreqeunz (Timing Analyses).&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Im nachfolgenden Bild sind alle drei Typen von Takt kurz skizziert. Der schnelle Takt treibt einen 4Bit Zähler (CNT1). Dessen Ausgänge werden über eine UND-Gatter (Gate1) kombinatorisch verknüpft. Der Ausgang des UND-Gatters ist nur dann HIGH, wenn alle Eingänge HIGH sind. Das ist nur einmal alle 16 Takte der Fall, wenn der Zählerstand binär 1111 erreicht ist. Dieses Signal als Takt zu verwenden wäre sträflich, denn es ist ein &amp;lt;B&amp;gt;Gated Clock&amp;lt;/B&amp;gt;. Wenn er jedoch noch einmal mittels FlipFlop (FF1) zwischengespeichert wird ist es ein &amp;lt;B&amp;gt;Derived Clock&amp;lt;/B&amp;gt;. Der beste und sinnvollste Weg ist jedoch die Verwendung des &amp;lt;B&amp;gt;CE-Eingang&amp;lt;/B&amp;gt;s der FlipFlops (FF2) wie es ganz unten im Bild dargestellt ist. &lt;br /&gt;
&lt;br /&gt;
[[bild:clock_types.png | 640px]]&lt;br /&gt;
&lt;br /&gt;
== Umsetzung in VHDL ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
-- Die Verwendung von &amp;quot;Clock Enable&amp;quot; in VHDL&lt;br /&gt;
-- die Signale clk und ce sind hier natürlich nur Beispiele&lt;br /&gt;
-- es kann dafür jeder beliebige Signalname verwendet werden&lt;br /&gt;
&lt;br /&gt;
-- Das hier muss in die Signaldeklaration zwischen&lt;br /&gt;
-- achitecture ...   und  begin&lt;br /&gt;
&lt;br /&gt;
constant cnt_div: integer:=16;                  -- Teilerverhältnis&lt;br /&gt;
signal   cnt:     integer range 0 to cnt_div-1; -- Zähler für Teiler&lt;br /&gt;
signal   ce:      std_logic;&lt;br /&gt;
&lt;br /&gt;
-- die Prozesse logischerweise nach begin der Achritecture&lt;br /&gt;
&lt;br /&gt;
-- Prozess mit langsamen Clock Enable&lt;br /&gt;
&lt;br /&gt;
process(clk)&lt;br /&gt;
begin&lt;br /&gt;
  if rising_edge(clk) then&lt;br /&gt;
    if ce=&#039;1&#039; then&lt;br /&gt;
&lt;br /&gt;
    -- Aktionen hier einfügen, welche mit langsamen Takt laufen    &lt;br /&gt;
&lt;br /&gt;
    end if;&lt;br /&gt;
  end if;&lt;br /&gt;
end process;&lt;br /&gt;
&lt;br /&gt;
-- Clock Enable Generator&lt;br /&gt;
&lt;br /&gt;
process(clk)&lt;br /&gt;
begin&lt;br /&gt;
  if rising_edge(clk) then&lt;br /&gt;
    if cnt=cnt_div-1 then&lt;br /&gt;
      ce  &amp;lt;= &#039;1&#039;;&lt;br /&gt;
      cnt &amp;lt;= 0;&lt;br /&gt;
    else&lt;br /&gt;
      ce  &amp;lt;= &#039;0&#039;;&lt;br /&gt;
      cnt &amp;lt;= cnt +1 ;&lt;br /&gt;
    end if;&lt;br /&gt;
  end if;&lt;br /&gt;
end process;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=18822</id>
		<title>Hardwarebeschreibungssprachen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=18822"/>
		<updated>2006-12-23T22:16:02Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Deutsch */ +wikibook&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;
=== Weblinks ===&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;
== 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>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18557</id>
		<title>TTL74185</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18557"/>
		<updated>2006-12-03T18:45:33Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: +Beispiele mit Spezialkomponente&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Übersicht ==&lt;br /&gt;
Nachbau eines Standard TTL, des 74185 (6 bit binary zu BCD). Siehe Forum: http://www.mikrocontroller.net/topic/55594 .&lt;br /&gt;
&lt;br /&gt;
Code ist nicht simuliert, läuft aber einwandfrei durch Synthese. &lt;br /&gt;
&lt;br /&gt;
Wandelt man Eingang zu integer wird der code besser lesbar. &lt;br /&gt;
&lt;br /&gt;
Dann werden hier verschiedene Varianten gezeigt. &lt;br /&gt;
&lt;br /&gt;
=== Realisierung als einzelne logische Gleichungen === &lt;br /&gt;
Zuerst die mit logischen Gleichungen für die Ausgänge.&lt;br /&gt;
Um es dem Synthese-Tool leichter zu machen, wird das untere Eingangsbit nicht mit ausgewertet.&lt;br /&gt;
Durch die select Anweisung beschreibt man eine Wahrheitstabelle die einfach in  LUTs und Multiplexer umgewandelt wird (Xilinx). Bei Altera mit den 6 Input LUTs spart man sich die Multiplexer.&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
LIBRARY ieee;&lt;br /&gt;
USE ieee.std_logic_1164.ALL;&lt;br /&gt;
USE ieee.numeric_std.ALL;&lt;br /&gt;
&lt;br /&gt;
--vhdl description of 74185&lt;br /&gt;
--6bit binary to 2 digits BCD decoder&lt;br /&gt;
&lt;br /&gt;
ENTITY ttl74185 IS&lt;br /&gt;
  PORT (&lt;br /&gt;
    binary_i : IN  STD_LOGIC_VECTOR(5 DOWNTO 0);&lt;br /&gt;
    bcd_o    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));&lt;br /&gt;
END ttl74185;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF ttl74185 IS&lt;br /&gt;
  --integers are better readable for humans&lt;br /&gt;
  SIGNAL conv_input : integer RANGE 2**5-1 DOWNTO 0;&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
 conv_input &amp;lt;= to_integer(unsigned(binary_i(5 DOWNTO 1)));&lt;br /&gt;
  &lt;br /&gt;
  bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(1) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    1,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  6, &#039;1&#039; WHEN  8,&lt;br /&gt;
    &#039;1&#039; WHEN   11,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 16, &#039;1&#039; WHEN 18,&lt;br /&gt;
    &#039;1&#039; WHEN   21,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 26, &#039;1&#039; WHEN 28,&lt;br /&gt;
    &#039;1&#039; WHEN   31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(2) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    2,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN 8,  &lt;br /&gt;
    &#039;1&#039; WHEN   12,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &lt;br /&gt;
    &#039;1&#039; WHEN   22,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
              &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(3) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    4,&#039;1&#039; WHEN  9, &#039;1&#039; WHEN 14, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN   24,&#039;1&#039; WHEN 29,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(4) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN  5,&#039;1&#039; WHEN  6, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN  8, &#039;1&#039; WHEN  9,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
 WITH conv_input SELECT&lt;br /&gt;
    bcd_o(5) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 10,&#039;1&#039; WHEN 11, &#039;1&#039; WHEN 12, &#039;1&#039; WHEN 13, &#039;1&#039; WHEN 14,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
 &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(6) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 20,&#039;1&#039; WHEN 21, &#039;1&#039; WHEN 22, &#039;1&#039; WHEN 23, &#039;1&#039; WHEN 24,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
   &lt;br /&gt;
   bcd_o(7) &amp;lt;= &#039;0&#039;;&lt;br /&gt;
&lt;br /&gt;
  END behave;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    Found 32x1-bit ROM for signal &amp;lt;bcd_o&amp;lt;4&amp;gt;&amp;gt;.&lt;br /&gt;
    Found 16x1-bit ROM for signal &amp;lt;$mux0000&amp;gt;.&lt;br /&gt;
    Found 16x1-bit ROM for signal &amp;lt;$mux0001&amp;gt;.&lt;br /&gt;
    Summary:&lt;br /&gt;
	inferred   3 ROM(s).&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 3&lt;br /&gt;
 16x1-bit ROM                                          : 2&lt;br /&gt;
 32x1-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 12&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 7&lt;br /&gt;
#      MUXF5                       : 3&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       4  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                 8  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Maximum combinational path delay: 9.599ns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 36 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.599ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O             8   0.821   1.422  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  _or0000_F (N16)&lt;br /&gt;
     MUXF5:I0-&amp;gt;O           1   0.360   0.801  _or0000 (bcd_o_2_OBUF)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_2_OBUF (bcd_o&amp;lt;2&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.599ns (7.376ns logic, 2.223ns route)&lt;br /&gt;
                                       (76.8% logic, 23.2% route)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konstanten Array ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
Jetzt eine zweite Variante als ROM-Feld. Diese ist im Xilinx FPGA größer (5 statt 4 slices). Und ungünstiger im Routing die die Signale auf einen Punkt (ROM) und dann wieder von diesem weg geführt werden. Aber dafür auf den ersten Blick verständlich, besonders wenn man den Ausgangsvektor in hex schreibt. Das verstehen auch die Tools besser, diese Variante läuft schneller durch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave2 OF ttl74185 IS&lt;br /&gt;
&lt;br /&gt;
    SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
    TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
      CONSTANT C_BIN2_TO_BCD_TABLE  : T_BIN2_TO_BCD_TABLE(0 TO 2**6 - 1) :=&lt;br /&gt;
      (X&amp;quot;00&amp;quot;, X&amp;quot;01&amp;quot;, X&amp;quot;02&amp;quot;, X&amp;quot;03&amp;quot;, X&amp;quot;04&amp;quot;, X&amp;quot;05&amp;quot;, X&amp;quot;06&amp;quot;, X&amp;quot;07&amp;quot;, X&amp;quot;08&amp;quot;, X&amp;quot;09&amp;quot;,&lt;br /&gt;
       X&amp;quot;10&amp;quot;, X&amp;quot;11&amp;quot;, X&amp;quot;12&amp;quot;, X&amp;quot;13&amp;quot;, X&amp;quot;14&amp;quot;, X&amp;quot;15&amp;quot;, X&amp;quot;16&amp;quot;, X&amp;quot;17&amp;quot;, X&amp;quot;18&amp;quot;, X&amp;quot;19&amp;quot;,&lt;br /&gt;
       X&amp;quot;20&amp;quot;, X&amp;quot;21&amp;quot;, X&amp;quot;22&amp;quot;, X&amp;quot;23&amp;quot;, X&amp;quot;24&amp;quot;, X&amp;quot;25&amp;quot;, X&amp;quot;26&amp;quot;, X&amp;quot;27&amp;quot;, X&amp;quot;28&amp;quot;, X&amp;quot;29&amp;quot;,&lt;br /&gt;
       X&amp;quot;30&amp;quot;, X&amp;quot;31&amp;quot;, X&amp;quot;32&amp;quot;, X&amp;quot;33&amp;quot;, X&amp;quot;34&amp;quot;, X&amp;quot;35&amp;quot;, X&amp;quot;36&amp;quot;, X&amp;quot;37&amp;quot;, X&amp;quot;38&amp;quot;, X&amp;quot;39&amp;quot;,&lt;br /&gt;
       X&amp;quot;40&amp;quot;, X&amp;quot;41&amp;quot;, X&amp;quot;42&amp;quot;, X&amp;quot;43&amp;quot;, X&amp;quot;44&amp;quot;, X&amp;quot;45&amp;quot;, X&amp;quot;46&amp;quot;, X&amp;quot;47&amp;quot;, X&amp;quot;48&amp;quot;, X&amp;quot;49&amp;quot;,&lt;br /&gt;
       X&amp;quot;50&amp;quot;, X&amp;quot;51&amp;quot;, X&amp;quot;52&amp;quot;, X&amp;quot;53&amp;quot;, X&amp;quot;54&amp;quot;, X&amp;quot;55&amp;quot;, X&amp;quot;56&amp;quot;, X&amp;quot;57&amp;quot;, X&amp;quot;58&amp;quot;, X&amp;quot;59&amp;quot;,&lt;br /&gt;
       X&amp;quot;60&amp;quot;, X&amp;quot;61&amp;quot;, X&amp;quot;62&amp;quot;, X&amp;quot;63&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  BEGIN  -- behave&lt;br /&gt;
   conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
   bcd_o      &amp;lt;= C_BIN2_TO_BCD_TABLE(conv_input);&lt;br /&gt;
&lt;br /&gt;
  END behave2;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Maximum combinational path delay: 9.650ns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 44 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom__rom00007 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom__rom0000_f5_2 (Mrom__rom0000_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SELECT ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
 ARCHITECTURE behave3 OF ttl74185 IS&lt;br /&gt;
     SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
     TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
    BEGIN  -- behave&lt;br /&gt;
     conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
&lt;br /&gt;
     WITH conv_input SELECT&lt;br /&gt;
       bcd_o &amp;lt;=&lt;br /&gt;
        X&amp;quot;00&amp;quot; WHEN  0,  X&amp;quot;01&amp;quot; WHEN  1,  X&amp;quot;02&amp;quot; WHEN  2,  X&amp;quot;03&amp;quot; WHEN  3,  X&amp;quot;04&amp;quot; WHEN  4,&lt;br /&gt;
        X&amp;quot;05&amp;quot; WHEN  5,  X&amp;quot;06&amp;quot; WHEN  6,  X&amp;quot;07&amp;quot; WHEN  7,  X&amp;quot;08&amp;quot; WHEN  8,  X&amp;quot;09&amp;quot; WHEN  9, &lt;br /&gt;
        X&amp;quot;10&amp;quot; WHEN 10,  X&amp;quot;11&amp;quot; WHEN 11,  X&amp;quot;12&amp;quot; WHEN 12,  X&amp;quot;13&amp;quot; WHEN 13,  X&amp;quot;14&amp;quot; WHEN 14,&lt;br /&gt;
        X&amp;quot;15&amp;quot; WHEN 15,  X&amp;quot;16&amp;quot; WHEN 16,  X&amp;quot;17&amp;quot; WHEN 17,  X&amp;quot;18&amp;quot; WHEN 18,  X&amp;quot;19&amp;quot; WHEN 19, &lt;br /&gt;
        X&amp;quot;20&amp;quot; WHEN 20,  X&amp;quot;21&amp;quot; WHEN 21,  X&amp;quot;22&amp;quot; WHEN 22,  X&amp;quot;23&amp;quot; WHEN 23,  X&amp;quot;24&amp;quot; WHEN 24,&lt;br /&gt;
        X&amp;quot;25&amp;quot; WHEN 25,  X&amp;quot;26&amp;quot; WHEN 26,  X&amp;quot;27&amp;quot; WHEN 27,  X&amp;quot;28&amp;quot; WHEN 28,  X&amp;quot;29&amp;quot; WHEN 29, &lt;br /&gt;
        X&amp;quot;30&amp;quot; WHEN 30,  X&amp;quot;31&amp;quot; WHEN 31,  X&amp;quot;32&amp;quot; WHEN 32,  X&amp;quot;33&amp;quot; WHEN 33,  X&amp;quot;34&amp;quot; WHEN 34,&lt;br /&gt;
        X&amp;quot;35&amp;quot; WHEN 35,  X&amp;quot;36&amp;quot; WHEN 36,  X&amp;quot;37&amp;quot; WHEN 37,  X&amp;quot;38&amp;quot; WHEN 38,  X&amp;quot;39&amp;quot; WHEN 39, &lt;br /&gt;
        X&amp;quot;40&amp;quot; WHEN 40,  X&amp;quot;41&amp;quot; WHEN 41,  X&amp;quot;42&amp;quot; WHEN 42,  X&amp;quot;43&amp;quot; WHEN 43,  X&amp;quot;44&amp;quot; WHEN 44,&lt;br /&gt;
        X&amp;quot;45&amp;quot; WHEN 45,  X&amp;quot;46&amp;quot; WHEN 46,  X&amp;quot;47&amp;quot; WHEN 47,  X&amp;quot;48&amp;quot; WHEN 48,  X&amp;quot;49&amp;quot; WHEN 49, &lt;br /&gt;
        X&amp;quot;50&amp;quot; WHEN 50,  X&amp;quot;51&amp;quot; WHEN 51,  X&amp;quot;52&amp;quot; WHEN 52,  X&amp;quot;53&amp;quot; WHEN 53,  X&amp;quot;54&amp;quot; WHEN 54,&lt;br /&gt;
        X&amp;quot;55&amp;quot; WHEN 55,  X&amp;quot;56&amp;quot; WHEN 56,  X&amp;quot;57&amp;quot; WHEN 57,  X&amp;quot;58&amp;quot; WHEN 58,  X&amp;quot;59&amp;quot; WHEN 59, &lt;br /&gt;
        X&amp;quot;60&amp;quot; WHEN 60,  X&amp;quot;61&amp;quot; WHEN 61,  X&amp;quot;52&amp;quot; WHEN 62,  X&amp;quot;63&amp;quot; WHEN 63; &lt;br /&gt;
   END behave3;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
HDL Synthesis Report&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
Device utilization summary:&lt;br /&gt;
---------------------------&lt;br /&gt;
&lt;br /&gt;
Selected Device : 3s50vq100-4 &lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 44 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom_bcd_o7 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom_bcd_o_f5_2 (Mrom_bcd_o_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CASE ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave4 OF ttl74185 IS&lt;br /&gt;
          SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
          TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (NATURAL RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
        BEGIN  -- behave&lt;br /&gt;
          conv_input &amp;lt;= to_INTEGER(UNSIGNED(binary_i));&lt;br /&gt;
&lt;br /&gt;
          PROCESS(conv_input)&lt;br /&gt;
          begin&lt;br /&gt;
           CASE conv_input IS&lt;br /&gt;
            WHEN 0   =&amp;gt; bcd_o &amp;lt;= X&amp;quot;00&amp;quot;;  WHEN  1 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;01&amp;quot;;  WHEN  2 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;02&amp;quot;;  WHEN  3 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;03&amp;quot;;&lt;br /&gt;
            WHEN 5   =&amp;gt; bcd_o &amp;lt;= X&amp;quot;05&amp;quot;;  WHEN  6 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;06&amp;quot;;  WHEN  7 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;07&amp;quot;;  WHEN  8 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;08&amp;quot;;&lt;br /&gt;
            WHEN 10  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;10&amp;quot;;  WHEN 11 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;11&amp;quot;;  WHEN 12 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;12&amp;quot;;  WHEN 13 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;13&amp;quot;;&lt;br /&gt;
            WHEN 15  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;15&amp;quot;;  WHEN 16 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;16&amp;quot;;  WHEN 17 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;17&amp;quot;;  WHEN 18 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;18&amp;quot;;&lt;br /&gt;
            WHEN 20  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;20&amp;quot;;  WHEN 21 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;21&amp;quot;;  WHEN 22 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;22&amp;quot;;  WHEN 23 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;23&amp;quot;;&lt;br /&gt;
            WHEN 25  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;25&amp;quot;;  WHEN 26 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;26&amp;quot;;  WHEN 27 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;27&amp;quot;;  WHEN 28 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;28&amp;quot;;&lt;br /&gt;
            WHEN 30  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;30&amp;quot;;  WHEN 31 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;31&amp;quot;;  WHEN 32 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;32&amp;quot;;  WHEN 33 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;33&amp;quot;;&lt;br /&gt;
            WHEN 35  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;35&amp;quot;;  WHEN 36 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;36&amp;quot;;  WHEN 37 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;37&amp;quot;;  WHEN 38 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;38&amp;quot;;&lt;br /&gt;
            WHEN 40  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;40&amp;quot;;  WHEN 41 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;41&amp;quot;;  WHEN 42 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;42&amp;quot;;  WHEN 43 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;43&amp;quot;;&lt;br /&gt;
            WHEN 45  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;45&amp;quot;;  WHEN 46 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;46&amp;quot;;  WHEN 47 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;47&amp;quot;;  WHEN 48 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;48&amp;quot;;&lt;br /&gt;
            WHEN 50  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;50&amp;quot;;  WHEN 51 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;51&amp;quot;;  WHEN 52 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;52&amp;quot;;  WHEN 53 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;53&amp;quot;;&lt;br /&gt;
            WHEN 55  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;55&amp;quot;;  WHEN 56 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;56&amp;quot;;  WHEN 57 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;57&amp;quot;;  WHEN 58 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;58&amp;quot;;&lt;br /&gt;
            WHEN 60  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;60&amp;quot;;  WHEN 61 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;61&amp;quot;;  WHEN 62 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;62&amp;quot;;  WHEN 63 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;63&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            WHEN 4  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;04&amp;quot;;&lt;br /&gt;
            WHEN 9  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;09&amp;quot;;&lt;br /&gt;
            WHEN 14 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;14&amp;quot;;&lt;br /&gt;
            WHEN 19 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;19&amp;quot;;&lt;br /&gt;
            WHEN 24 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;24&amp;quot;;&lt;br /&gt;
            WHEN 29 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;29&amp;quot;;&lt;br /&gt;
            WHEN 34 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;34&amp;quot;;&lt;br /&gt;
            WHEN 39 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;39&amp;quot;;&lt;br /&gt;
            WHEN 44 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;44&amp;quot;;&lt;br /&gt;
            WHEN 49 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;49&amp;quot;;&lt;br /&gt;
            WHEN 54 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;54&amp;quot;;&lt;br /&gt;
            WHEN 59 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;59&amp;quot;;&lt;br /&gt;
          END case;&lt;br /&gt;
        END process;&lt;br /&gt;
&lt;br /&gt;
        END behave4;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RTL Top Level Output File Name     : ttl74185.ngr&lt;br /&gt;
Top Level Output File Name         : ttl74185&lt;br /&gt;
Output Format                      : NGC&lt;br /&gt;
Optimization Goal                  : Area&lt;br /&gt;
Keep Hierarchy                     : NO&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
Selected Device : 3s50vq100-4 &lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
All values displayed in nanoseconds (ns)&lt;br /&gt;
&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom_bcd_o7 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom_bcd_o_f5_2 (Mrom_bcd_o_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit ADD3IFGREATER4 Komponente ===&lt;br /&gt;
Im thread wurde ein Dokument hochgeladen, das eine weitere Variante der binär zu BCD Wandlung zeigt. Kernstück ist eine 4 input -&amp;gt; 4 output Komponente. damit lassen sich regelmäßige Strukturen (Treppen) zur Wandlung von Binärzahlen beliebiger breite aufbauen. Das ist dann schon der einzige Vorteil. Gezeigt wird der im Dolument genannte Code nach eine synthesegerechten Überarbeitung als Variante I. Das zweite beispiel zeigt die reguläre Struktur durch Instanziierung der 4-&amp;gt;4 Komponente. beide Varianten belegen 5 slices.&lt;br /&gt;
&lt;br /&gt;
==== Code I ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
 ARCHITECTURE behave5a OF ttl74185 IS&lt;br /&gt;
 BEGIN&lt;br /&gt;
&lt;br /&gt;
   bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
   PROCESS(binary_i)&lt;br /&gt;
     VARIABLE v_tmp : UNSIGNED(12 DOWNTO 0);&lt;br /&gt;
   BEGIN&lt;br /&gt;
     v_tmp := &amp;quot;0000&amp;quot; &amp;amp; UNSIGNED(binary_i) &amp;amp; &amp;quot;000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
     FOR i IN 0 TO 2 LOOP&lt;br /&gt;
       IF v_tmp(9 DOWNTO 6) &amp;gt; UNSIGNED&#039;(&amp;quot;0100&amp;quot;) THEN&lt;br /&gt;
         v_tmp(9 DOWNTO 6) := &amp;quot;0011&amp;quot; + v_tmp(9 DOWNTO 6);&lt;br /&gt;
       END IF;&lt;br /&gt;
       v_tmp( 12 DOWNTO 1) := v_tmp( 11 DOWNTO 0);&lt;br /&gt;
     END LOOP;  -- i &lt;br /&gt;
     bcd_o(7 DOWNTO 1) &amp;lt;= STD_LOGIC_VECTOR(v_tmp(12 DOWNTO 6));&lt;br /&gt;
   END PROCESS;&lt;br /&gt;
 END behave5a;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
==== Synthese Ergebnis I ====&lt;br /&gt;
====Code II ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
LIBRARY IEEE;&lt;br /&gt;
USE IEEE.STD_LOGIC_1164.ALL;&lt;br /&gt;
&lt;br /&gt;
ENTITY add3whengreater4 IS&lt;br /&gt;
  &lt;br /&gt;
  PORT (&lt;br /&gt;
    operand_i : IN  STD_LOGIC_VECTOR(3 DOWNTO 0);&lt;br /&gt;
    result_i  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));&lt;br /&gt;
&lt;br /&gt;
END add3whengreater4;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF add3whengreater4 IS&lt;br /&gt;
&lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
&lt;br /&gt;
  WITH operand_i SELECT&lt;br /&gt;
    result_i &amp;lt;= &lt;br /&gt;
    X&amp;quot;0&amp;quot; WHEN X&amp;quot;0&amp;quot;,&lt;br /&gt;
    X&amp;quot;1&amp;quot; WHEN X&amp;quot;1&amp;quot;,&lt;br /&gt;
    X&amp;quot;2&amp;quot; WHEN X&amp;quot;2&amp;quot;,&lt;br /&gt;
    X&amp;quot;3&amp;quot; WHEN X&amp;quot;3&amp;quot;,&lt;br /&gt;
    X&amp;quot;4&amp;quot; WHEN X&amp;quot;4&amp;quot;,&lt;br /&gt;
    X&amp;quot;8&amp;quot; WHEN X&amp;quot;5&amp;quot;,&lt;br /&gt;
    X&amp;quot;9&amp;quot; WHEN X&amp;quot;6&amp;quot;,&lt;br /&gt;
    X&amp;quot;A&amp;quot; WHEN X&amp;quot;7&amp;quot;,&lt;br /&gt;
    X&amp;quot;B&amp;quot; WHEN X&amp;quot;8&amp;quot;,&lt;br /&gt;
    X&amp;quot;C&amp;quot; WHEN X&amp;quot;9&amp;quot;,&lt;br /&gt;
    &amp;quot;----&amp;quot; WHEN others;&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;A&amp;quot;,&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;B&amp;quot;,&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;C&amp;quot;,&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;D&amp;quot;,&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;E&amp;quot;,&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;F&amp;quot;;&lt;br /&gt;
  END behave;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave5b OF ttl74185 IS&lt;br /&gt;
&lt;br /&gt;
  SIGNAL c1  : STD_LOGIC_VECTOR(6 DOWNTO 0);&lt;br /&gt;
  SIGNAL c2  : STD_LOGIC_VECTOR(6 DOWNTO 0);&lt;br /&gt;
  SIGNAL c3  : STD_LOGIC_VECTOR(6 DOWNTO 0);&lt;br /&gt;
  SIGNAL op1 : STD_LOGIC_VECTOR(3 DOWNTO 0);&lt;br /&gt;
  SIGNAL op2 : STD_LOGIC_VECTOR(3 DOWNTO 0);&lt;br /&gt;
  SIGNAL op3 : STD_LOGIC_VECTOR(3 DOWNTO 0);&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave5b&lt;br /&gt;
--below c1&lt;br /&gt;
  op1 &amp;lt;= &#039;0&#039; &amp;amp; binary_i(5 DOWNTO 3);&lt;br /&gt;
  c1_stage : ENTITY work.add3whengreater4 PORT MAP (&lt;br /&gt;
    operand_i =&amp;gt; op1,&lt;br /&gt;
    result_i  =&amp;gt; c1(6 DOWNTO 3));&lt;br /&gt;
&lt;br /&gt;
  c1(2 DOWNTO 0) &amp;lt;= binary_i(2 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
--below c2&lt;br /&gt;
  op2 &amp;lt;= c1(5 DOWNTO 3) &amp;amp; binary_i(2);&lt;br /&gt;
  c2_stage : ENTITY work.add3whengreater4 PORT MAP (&lt;br /&gt;
    operand_i =&amp;gt; op2,&lt;br /&gt;
    result_i  =&amp;gt; c2(5 DOWNTO 2));&lt;br /&gt;
&lt;br /&gt;
  c2(6)          &amp;lt;= c1(6);&lt;br /&gt;
  c2(1 DOWNTO 0) &amp;lt;= c1(1 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
--below c3&lt;br /&gt;
  op3 &amp;lt;= c2(4 DOWNTO 2) &amp;amp; binary_i(1);&lt;br /&gt;
  c3_stage : ENTITY work.add3whengreater4 PORT MAP (&lt;br /&gt;
    operand_i =&amp;gt; op3,&lt;br /&gt;
    result_i  =&amp;gt; c3(4 DOWNTO 1));&lt;br /&gt;
&lt;br /&gt;
  c3(6 DOWNTO 5) &amp;lt;= c2(6 DOWNTO 5);&lt;br /&gt;
  c3(0)          &amp;lt;= c2(0);&lt;br /&gt;
&lt;br /&gt;
--output&lt;br /&gt;
&lt;br /&gt;
  bcd_o(0)          &amp;lt;= c3(0);&lt;br /&gt;
  bcd_o(4 DOWNTO 1) &amp;lt;= c3(4 DOWNTO 1);&lt;br /&gt;
  bcd_o(5)          &amp;lt;= c2(5);&lt;br /&gt;
  bcd_o(6)          &amp;lt;= c1(6);&lt;br /&gt;
&lt;br /&gt;
END behave5b;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
==== Synthese Ergebnis II ====&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
Es gibt etliche synthetisierbare VHDL Lösungen für diesen einfachen Decoder.&lt;br /&gt;
Die Optimierung der Tools verläuft vertikal vom Eingang zum Ausgang, horizontale Bezüge sind nicht ersichtlich. Deshalb wird bei der Beschreibung mit Ausgangsfelder der einzelne Ausgang  nicht verkürzt (z.B. BCD(0)). Wünschenswert ist eine kompakte Beschreibung als Feld die dennoch aufspaltbar und somit optimierbar ist. Vielleicht sollte der Ausgang nicht als Vektor deklariert werden?&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>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18556</id>
		<title>TTL74185</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18556"/>
		<updated>2006-12-03T18:41:36Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: zwischenstand&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Übersicht ==&lt;br /&gt;
Nachbau eines Standard TTL, des 74185 (6 bit binary zu BCD). Siehe Forum: http://www.mikrocontroller.net/topic/55594 .&lt;br /&gt;
&lt;br /&gt;
Code ist nicht simuliert, läuft aber einwandfrei durch Synthese. &lt;br /&gt;
&lt;br /&gt;
Wandelt man Eingang zu integer wird der code besser lesbar. &lt;br /&gt;
&lt;br /&gt;
Dann werden hier verschiedene Varianten gezeigt. &lt;br /&gt;
&lt;br /&gt;
=== Realisierung als einzelne logische Gleichungen === &lt;br /&gt;
Zuerst die mit logischen Gleichungen für die Ausgänge.&lt;br /&gt;
Um es dem Synthese-Tool leichter zu machen, wird das untere Eingangsbit nicht mit ausgewertet.&lt;br /&gt;
Durch die select Anweisung beschreibt man eine Wahrheitstabelle die einfach in  LUTs und Multiplexer umgewandelt wird (Xilinx). Bei Altera mit den 6 Input LUTs spart man sich die Multiplexer.&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
LIBRARY ieee;&lt;br /&gt;
USE ieee.std_logic_1164.ALL;&lt;br /&gt;
USE ieee.numeric_std.ALL;&lt;br /&gt;
&lt;br /&gt;
--vhdl description of 74185&lt;br /&gt;
--6bit binary to 2 digits BCD decoder&lt;br /&gt;
&lt;br /&gt;
ENTITY ttl74185 IS&lt;br /&gt;
  PORT (&lt;br /&gt;
    binary_i : IN  STD_LOGIC_VECTOR(5 DOWNTO 0);&lt;br /&gt;
    bcd_o    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));&lt;br /&gt;
END ttl74185;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF ttl74185 IS&lt;br /&gt;
  --integers are better readable for humans&lt;br /&gt;
  SIGNAL conv_input : integer RANGE 2**5-1 DOWNTO 0;&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
 conv_input &amp;lt;= to_integer(unsigned(binary_i(5 DOWNTO 1)));&lt;br /&gt;
  &lt;br /&gt;
  bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(1) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    1,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  6, &#039;1&#039; WHEN  8,&lt;br /&gt;
    &#039;1&#039; WHEN   11,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 16, &#039;1&#039; WHEN 18,&lt;br /&gt;
    &#039;1&#039; WHEN   21,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 26, &#039;1&#039; WHEN 28,&lt;br /&gt;
    &#039;1&#039; WHEN   31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(2) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    2,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN 8,  &lt;br /&gt;
    &#039;1&#039; WHEN   12,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &lt;br /&gt;
    &#039;1&#039; WHEN   22,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
              &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(3) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    4,&#039;1&#039; WHEN  9, &#039;1&#039; WHEN 14, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN   24,&#039;1&#039; WHEN 29,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(4) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN  5,&#039;1&#039; WHEN  6, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN  8, &#039;1&#039; WHEN  9,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
 WITH conv_input SELECT&lt;br /&gt;
    bcd_o(5) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 10,&#039;1&#039; WHEN 11, &#039;1&#039; WHEN 12, &#039;1&#039; WHEN 13, &#039;1&#039; WHEN 14,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
 &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(6) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 20,&#039;1&#039; WHEN 21, &#039;1&#039; WHEN 22, &#039;1&#039; WHEN 23, &#039;1&#039; WHEN 24,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
   &lt;br /&gt;
   bcd_o(7) &amp;lt;= &#039;0&#039;;&lt;br /&gt;
&lt;br /&gt;
  END behave;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    Found 32x1-bit ROM for signal &amp;lt;bcd_o&amp;lt;4&amp;gt;&amp;gt;.&lt;br /&gt;
    Found 16x1-bit ROM for signal &amp;lt;$mux0000&amp;gt;.&lt;br /&gt;
    Found 16x1-bit ROM for signal &amp;lt;$mux0001&amp;gt;.&lt;br /&gt;
    Summary:&lt;br /&gt;
	inferred   3 ROM(s).&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 3&lt;br /&gt;
 16x1-bit ROM                                          : 2&lt;br /&gt;
 32x1-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 12&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 7&lt;br /&gt;
#      MUXF5                       : 3&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       4  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                 8  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Maximum combinational path delay: 9.599ns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 36 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.599ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O             8   0.821   1.422  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  _or0000_F (N16)&lt;br /&gt;
     MUXF5:I0-&amp;gt;O           1   0.360   0.801  _or0000 (bcd_o_2_OBUF)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_2_OBUF (bcd_o&amp;lt;2&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.599ns (7.376ns logic, 2.223ns route)&lt;br /&gt;
                                       (76.8% logic, 23.2% route)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konstanten Array ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
Jetzt eine zweite Variante als ROM-Feld. Diese ist im Xilinx FPGA größer (5 statt 4 slices). Und ungünstiger im Routing die die Signale auf einen Punkt (ROM) und dann wieder von diesem weg geführt werden. Aber dafür auf den ersten Blick verständlich, besonders wenn man den Ausgangsvektor in hex schreibt. Das verstehen auch die Tools besser, diese Variante läuft schneller durch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave2 OF ttl74185 IS&lt;br /&gt;
&lt;br /&gt;
    SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
    TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
      CONSTANT C_BIN2_TO_BCD_TABLE  : T_BIN2_TO_BCD_TABLE(0 TO 2**6 - 1) :=&lt;br /&gt;
      (X&amp;quot;00&amp;quot;, X&amp;quot;01&amp;quot;, X&amp;quot;02&amp;quot;, X&amp;quot;03&amp;quot;, X&amp;quot;04&amp;quot;, X&amp;quot;05&amp;quot;, X&amp;quot;06&amp;quot;, X&amp;quot;07&amp;quot;, X&amp;quot;08&amp;quot;, X&amp;quot;09&amp;quot;,&lt;br /&gt;
       X&amp;quot;10&amp;quot;, X&amp;quot;11&amp;quot;, X&amp;quot;12&amp;quot;, X&amp;quot;13&amp;quot;, X&amp;quot;14&amp;quot;, X&amp;quot;15&amp;quot;, X&amp;quot;16&amp;quot;, X&amp;quot;17&amp;quot;, X&amp;quot;18&amp;quot;, X&amp;quot;19&amp;quot;,&lt;br /&gt;
       X&amp;quot;20&amp;quot;, X&amp;quot;21&amp;quot;, X&amp;quot;22&amp;quot;, X&amp;quot;23&amp;quot;, X&amp;quot;24&amp;quot;, X&amp;quot;25&amp;quot;, X&amp;quot;26&amp;quot;, X&amp;quot;27&amp;quot;, X&amp;quot;28&amp;quot;, X&amp;quot;29&amp;quot;,&lt;br /&gt;
       X&amp;quot;30&amp;quot;, X&amp;quot;31&amp;quot;, X&amp;quot;32&amp;quot;, X&amp;quot;33&amp;quot;, X&amp;quot;34&amp;quot;, X&amp;quot;35&amp;quot;, X&amp;quot;36&amp;quot;, X&amp;quot;37&amp;quot;, X&amp;quot;38&amp;quot;, X&amp;quot;39&amp;quot;,&lt;br /&gt;
       X&amp;quot;40&amp;quot;, X&amp;quot;41&amp;quot;, X&amp;quot;42&amp;quot;, X&amp;quot;43&amp;quot;, X&amp;quot;44&amp;quot;, X&amp;quot;45&amp;quot;, X&amp;quot;46&amp;quot;, X&amp;quot;47&amp;quot;, X&amp;quot;48&amp;quot;, X&amp;quot;49&amp;quot;,&lt;br /&gt;
       X&amp;quot;50&amp;quot;, X&amp;quot;51&amp;quot;, X&amp;quot;52&amp;quot;, X&amp;quot;53&amp;quot;, X&amp;quot;54&amp;quot;, X&amp;quot;55&amp;quot;, X&amp;quot;56&amp;quot;, X&amp;quot;57&amp;quot;, X&amp;quot;58&amp;quot;, X&amp;quot;59&amp;quot;,&lt;br /&gt;
       X&amp;quot;60&amp;quot;, X&amp;quot;61&amp;quot;, X&amp;quot;62&amp;quot;, X&amp;quot;63&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  BEGIN  -- behave&lt;br /&gt;
   conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
   bcd_o      &amp;lt;= C_BIN2_TO_BCD_TABLE(conv_input);&lt;br /&gt;
&lt;br /&gt;
  END behave2;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Maximum combinational path delay: 9.650ns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 44 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom__rom00007 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom__rom0000_f5_2 (Mrom__rom0000_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SELECT ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
 ARCHITECTURE behave3 OF ttl74185 IS&lt;br /&gt;
     SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
     TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
    BEGIN  -- behave&lt;br /&gt;
     conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
&lt;br /&gt;
     WITH conv_input SELECT&lt;br /&gt;
       bcd_o &amp;lt;=&lt;br /&gt;
        X&amp;quot;00&amp;quot; WHEN  0,  X&amp;quot;01&amp;quot; WHEN  1,  X&amp;quot;02&amp;quot; WHEN  2,  X&amp;quot;03&amp;quot; WHEN  3,  X&amp;quot;04&amp;quot; WHEN  4,&lt;br /&gt;
        X&amp;quot;05&amp;quot; WHEN  5,  X&amp;quot;06&amp;quot; WHEN  6,  X&amp;quot;07&amp;quot; WHEN  7,  X&amp;quot;08&amp;quot; WHEN  8,  X&amp;quot;09&amp;quot; WHEN  9, &lt;br /&gt;
        X&amp;quot;10&amp;quot; WHEN 10,  X&amp;quot;11&amp;quot; WHEN 11,  X&amp;quot;12&amp;quot; WHEN 12,  X&amp;quot;13&amp;quot; WHEN 13,  X&amp;quot;14&amp;quot; WHEN 14,&lt;br /&gt;
        X&amp;quot;15&amp;quot; WHEN 15,  X&amp;quot;16&amp;quot; WHEN 16,  X&amp;quot;17&amp;quot; WHEN 17,  X&amp;quot;18&amp;quot; WHEN 18,  X&amp;quot;19&amp;quot; WHEN 19, &lt;br /&gt;
        X&amp;quot;20&amp;quot; WHEN 20,  X&amp;quot;21&amp;quot; WHEN 21,  X&amp;quot;22&amp;quot; WHEN 22,  X&amp;quot;23&amp;quot; WHEN 23,  X&amp;quot;24&amp;quot; WHEN 24,&lt;br /&gt;
        X&amp;quot;25&amp;quot; WHEN 25,  X&amp;quot;26&amp;quot; WHEN 26,  X&amp;quot;27&amp;quot; WHEN 27,  X&amp;quot;28&amp;quot; WHEN 28,  X&amp;quot;29&amp;quot; WHEN 29, &lt;br /&gt;
        X&amp;quot;30&amp;quot; WHEN 30,  X&amp;quot;31&amp;quot; WHEN 31,  X&amp;quot;32&amp;quot; WHEN 32,  X&amp;quot;33&amp;quot; WHEN 33,  X&amp;quot;34&amp;quot; WHEN 34,&lt;br /&gt;
        X&amp;quot;35&amp;quot; WHEN 35,  X&amp;quot;36&amp;quot; WHEN 36,  X&amp;quot;37&amp;quot; WHEN 37,  X&amp;quot;38&amp;quot; WHEN 38,  X&amp;quot;39&amp;quot; WHEN 39, &lt;br /&gt;
        X&amp;quot;40&amp;quot; WHEN 40,  X&amp;quot;41&amp;quot; WHEN 41,  X&amp;quot;42&amp;quot; WHEN 42,  X&amp;quot;43&amp;quot; WHEN 43,  X&amp;quot;44&amp;quot; WHEN 44,&lt;br /&gt;
        X&amp;quot;45&amp;quot; WHEN 45,  X&amp;quot;46&amp;quot; WHEN 46,  X&amp;quot;47&amp;quot; WHEN 47,  X&amp;quot;48&amp;quot; WHEN 48,  X&amp;quot;49&amp;quot; WHEN 49, &lt;br /&gt;
        X&amp;quot;50&amp;quot; WHEN 50,  X&amp;quot;51&amp;quot; WHEN 51,  X&amp;quot;52&amp;quot; WHEN 52,  X&amp;quot;53&amp;quot; WHEN 53,  X&amp;quot;54&amp;quot; WHEN 54,&lt;br /&gt;
        X&amp;quot;55&amp;quot; WHEN 55,  X&amp;quot;56&amp;quot; WHEN 56,  X&amp;quot;57&amp;quot; WHEN 57,  X&amp;quot;58&amp;quot; WHEN 58,  X&amp;quot;59&amp;quot; WHEN 59, &lt;br /&gt;
        X&amp;quot;60&amp;quot; WHEN 60,  X&amp;quot;61&amp;quot; WHEN 61,  X&amp;quot;52&amp;quot; WHEN 62,  X&amp;quot;63&amp;quot; WHEN 63; &lt;br /&gt;
   END behave3;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
HDL Synthesis Report&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
Device utilization summary:&lt;br /&gt;
---------------------------&lt;br /&gt;
&lt;br /&gt;
Selected Device : 3s50vq100-4 &lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 44 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom_bcd_o7 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom_bcd_o_f5_2 (Mrom_bcd_o_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CASE ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave4 OF ttl74185 IS&lt;br /&gt;
          SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
          TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (NATURAL RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
        BEGIN  -- behave&lt;br /&gt;
          conv_input &amp;lt;= to_INTEGER(UNSIGNED(binary_i));&lt;br /&gt;
&lt;br /&gt;
          PROCESS(conv_input)&lt;br /&gt;
          begin&lt;br /&gt;
           CASE conv_input IS&lt;br /&gt;
            WHEN 0   =&amp;gt; bcd_o &amp;lt;= X&amp;quot;00&amp;quot;;  WHEN  1 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;01&amp;quot;;  WHEN  2 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;02&amp;quot;;  WHEN  3 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;03&amp;quot;;&lt;br /&gt;
            WHEN 5   =&amp;gt; bcd_o &amp;lt;= X&amp;quot;05&amp;quot;;  WHEN  6 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;06&amp;quot;;  WHEN  7 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;07&amp;quot;;  WHEN  8 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;08&amp;quot;;&lt;br /&gt;
            WHEN 10  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;10&amp;quot;;  WHEN 11 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;11&amp;quot;;  WHEN 12 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;12&amp;quot;;  WHEN 13 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;13&amp;quot;;&lt;br /&gt;
            WHEN 15  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;15&amp;quot;;  WHEN 16 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;16&amp;quot;;  WHEN 17 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;17&amp;quot;;  WHEN 18 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;18&amp;quot;;&lt;br /&gt;
            WHEN 20  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;20&amp;quot;;  WHEN 21 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;21&amp;quot;;  WHEN 22 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;22&amp;quot;;  WHEN 23 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;23&amp;quot;;&lt;br /&gt;
            WHEN 25  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;25&amp;quot;;  WHEN 26 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;26&amp;quot;;  WHEN 27 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;27&amp;quot;;  WHEN 28 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;28&amp;quot;;&lt;br /&gt;
            WHEN 30  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;30&amp;quot;;  WHEN 31 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;31&amp;quot;;  WHEN 32 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;32&amp;quot;;  WHEN 33 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;33&amp;quot;;&lt;br /&gt;
            WHEN 35  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;35&amp;quot;;  WHEN 36 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;36&amp;quot;;  WHEN 37 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;37&amp;quot;;  WHEN 38 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;38&amp;quot;;&lt;br /&gt;
            WHEN 40  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;40&amp;quot;;  WHEN 41 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;41&amp;quot;;  WHEN 42 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;42&amp;quot;;  WHEN 43 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;43&amp;quot;;&lt;br /&gt;
            WHEN 45  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;45&amp;quot;;  WHEN 46 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;46&amp;quot;;  WHEN 47 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;47&amp;quot;;  WHEN 48 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;48&amp;quot;;&lt;br /&gt;
            WHEN 50  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;50&amp;quot;;  WHEN 51 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;51&amp;quot;;  WHEN 52 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;52&amp;quot;;  WHEN 53 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;53&amp;quot;;&lt;br /&gt;
            WHEN 55  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;55&amp;quot;;  WHEN 56 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;56&amp;quot;;  WHEN 57 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;57&amp;quot;;  WHEN 58 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;58&amp;quot;;&lt;br /&gt;
            WHEN 60  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;60&amp;quot;;  WHEN 61 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;61&amp;quot;;  WHEN 62 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;62&amp;quot;;  WHEN 63 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;63&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            WHEN 4  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;04&amp;quot;;&lt;br /&gt;
            WHEN 9  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;09&amp;quot;;&lt;br /&gt;
            WHEN 14 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;14&amp;quot;;&lt;br /&gt;
            WHEN 19 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;19&amp;quot;;&lt;br /&gt;
            WHEN 24 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;24&amp;quot;;&lt;br /&gt;
            WHEN 29 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;29&amp;quot;;&lt;br /&gt;
            WHEN 34 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;34&amp;quot;;&lt;br /&gt;
            WHEN 39 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;39&amp;quot;;&lt;br /&gt;
            WHEN 44 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;44&amp;quot;;&lt;br /&gt;
            WHEN 49 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;49&amp;quot;;&lt;br /&gt;
            WHEN 54 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;54&amp;quot;;&lt;br /&gt;
            WHEN 59 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;59&amp;quot;;&lt;br /&gt;
          END case;&lt;br /&gt;
        END process;&lt;br /&gt;
&lt;br /&gt;
        END behave4;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RTL Top Level Output File Name     : ttl74185.ngr&lt;br /&gt;
Top Level Output File Name         : ttl74185&lt;br /&gt;
Output Format                      : NGC&lt;br /&gt;
Optimization Goal                  : Area&lt;br /&gt;
Keep Hierarchy                     : NO&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
Selected Device : 3s50vq100-4 &lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
All values displayed in nanoseconds (ns)&lt;br /&gt;
&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom_bcd_o7 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom_bcd_o_f5_2 (Mrom_bcd_o_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mit ADD3 Komponente ==&lt;br /&gt;
Im thread wurde ein Dokument hochgeladen, das eine weitere Variante der binär zu BCD Wandlung zeigt. Kernstück ist eine 4 input -&amp;gt; 4 output Komponente. damit lassen sich regelmäßige Strukturen (Treppen) zur Wandlung von Binärzahlen beliebiger breite aufbauen. Das ist dann schon der einzige Vorteil. Gezeigt wird der im Dolument genannte Code nach eine synthesegerechten Überarbeitung als Variante I. Das zweite beispiel zeigt die reguläre Struktur durch Instanziierung der 4-&amp;gt;4 Komponente. beide Varianten belegen 5 slices.&lt;br /&gt;
&lt;br /&gt;
=== Code I ===&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
 ARCHITECTURE behave5a OF ttl74185 IS&lt;br /&gt;
 BEGIN&lt;br /&gt;
&lt;br /&gt;
   bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
   PROCESS(binary_i)&lt;br /&gt;
     VARIABLE v_tmp : UNSIGNED(12 DOWNTO 0);&lt;br /&gt;
   BEGIN&lt;br /&gt;
     v_tmp := &amp;quot;0000&amp;quot; &amp;amp; UNSIGNED(binary_i) &amp;amp; &amp;quot;000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
     FOR i IN 0 TO 2 LOOP&lt;br /&gt;
       IF v_tmp(9 DOWNTO 6) &amp;gt; UNSIGNED&#039;(&amp;quot;0100&amp;quot;) THEN&lt;br /&gt;
         v_tmp(9 DOWNTO 6) := &amp;quot;0011&amp;quot; + v_tmp(9 DOWNTO 6);&lt;br /&gt;
       END IF;&lt;br /&gt;
       v_tmp( 12 DOWNTO 1) := v_tmp( 11 DOWNTO 0);&lt;br /&gt;
     END LOOP;  -- i &lt;br /&gt;
     bcd_o(7 DOWNTO 1) &amp;lt;= STD_LOGIC_VECTOR(v_tmp(12 DOWNTO 6));&lt;br /&gt;
   END PROCESS;&lt;br /&gt;
 END behave5a;&lt;br /&gt;
&lt;br /&gt;
LIBRARY IEEE;&lt;br /&gt;
USE IEEE.STD_LOGIC_1164.ALL;&lt;br /&gt;
&lt;br /&gt;
ENTITY add3whengreater4 IS&lt;br /&gt;
  &lt;br /&gt;
  PORT (&lt;br /&gt;
    operand_i : IN  STD_LOGIC_VECTOR(3 DOWNTO 0);&lt;br /&gt;
    result_i  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));&lt;br /&gt;
&lt;br /&gt;
END add3whengreater4;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF add3whengreater4 IS&lt;br /&gt;
&lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
&lt;br /&gt;
  WITH operand_i SELECT&lt;br /&gt;
    result_i &amp;lt;= &lt;br /&gt;
    X&amp;quot;0&amp;quot; WHEN X&amp;quot;0&amp;quot;,&lt;br /&gt;
    X&amp;quot;1&amp;quot; WHEN X&amp;quot;1&amp;quot;,&lt;br /&gt;
    X&amp;quot;2&amp;quot; WHEN X&amp;quot;2&amp;quot;,&lt;br /&gt;
    X&amp;quot;3&amp;quot; WHEN X&amp;quot;3&amp;quot;,&lt;br /&gt;
    X&amp;quot;4&amp;quot; WHEN X&amp;quot;4&amp;quot;,&lt;br /&gt;
    X&amp;quot;8&amp;quot; WHEN X&amp;quot;5&amp;quot;,&lt;br /&gt;
    X&amp;quot;9&amp;quot; WHEN X&amp;quot;6&amp;quot;,&lt;br /&gt;
    X&amp;quot;A&amp;quot; WHEN X&amp;quot;7&amp;quot;,&lt;br /&gt;
    X&amp;quot;B&amp;quot; WHEN X&amp;quot;8&amp;quot;,&lt;br /&gt;
    X&amp;quot;C&amp;quot; WHEN X&amp;quot;9&amp;quot;,&lt;br /&gt;
    &amp;quot;----&amp;quot; WHEN others;&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;A&amp;quot;,&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;B&amp;quot;,&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;C&amp;quot;,&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;D&amp;quot;,&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;E&amp;quot;,&lt;br /&gt;
--     X&amp;quot;0&amp;quot; WHEN X&amp;quot;F&amp;quot;;&lt;br /&gt;
  END behave;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave5b OF ttl74185 IS&lt;br /&gt;
&lt;br /&gt;
  SIGNAL c1  : STD_LOGIC_VECTOR(6 DOWNTO 0);&lt;br /&gt;
  SIGNAL c2  : STD_LOGIC_VECTOR(6 DOWNTO 0);&lt;br /&gt;
  SIGNAL c3  : STD_LOGIC_VECTOR(6 DOWNTO 0);&lt;br /&gt;
  SIGNAL op1 : STD_LOGIC_VECTOR(3 DOWNTO 0);&lt;br /&gt;
  SIGNAL op2 : STD_LOGIC_VECTOR(3 DOWNTO 0);&lt;br /&gt;
  SIGNAL op3 : STD_LOGIC_VECTOR(3 DOWNTO 0);&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave5b&lt;br /&gt;
--below c1&lt;br /&gt;
  op1 &amp;lt;= &#039;0&#039; &amp;amp; binary_i(5 DOWNTO 3);&lt;br /&gt;
  c1_stage : ENTITY work.add3whengreater4 PORT MAP (&lt;br /&gt;
    operand_i =&amp;gt; op1,&lt;br /&gt;
    result_i  =&amp;gt; c1(6 DOWNTO 3));&lt;br /&gt;
&lt;br /&gt;
  c1(2 DOWNTO 0) &amp;lt;= binary_i(2 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
--below c2&lt;br /&gt;
  op2 &amp;lt;= c1(5 DOWNTO 3) &amp;amp; binary_i(2);&lt;br /&gt;
  c2_stage : ENTITY work.add3whengreater4 PORT MAP (&lt;br /&gt;
    operand_i =&amp;gt; op2,&lt;br /&gt;
    result_i  =&amp;gt; c2(5 DOWNTO 2));&lt;br /&gt;
&lt;br /&gt;
  c2(6)          &amp;lt;= c1(6);&lt;br /&gt;
  c2(1 DOWNTO 0) &amp;lt;= c1(1 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
--below c3&lt;br /&gt;
  op3 &amp;lt;= c2(4 DOWNTO 2) &amp;amp; binary_i(1);&lt;br /&gt;
  c3_stage : ENTITY work.add3whengreater4 PORT MAP (&lt;br /&gt;
    operand_i =&amp;gt; op3,&lt;br /&gt;
    result_i  =&amp;gt; c3(4 DOWNTO 1));&lt;br /&gt;
&lt;br /&gt;
  c3(6 DOWNTO 5) &amp;lt;= c2(6 DOWNTO 5);&lt;br /&gt;
  c3(0)          &amp;lt;= c2(0);&lt;br /&gt;
&lt;br /&gt;
--output&lt;br /&gt;
&lt;br /&gt;
  bcd_o(0)          &amp;lt;= c3(0);&lt;br /&gt;
  bcd_o(4 DOWNTO 1) &amp;lt;= c3(4 DOWNTO 1);&lt;br /&gt;
  bcd_o(5)          &amp;lt;= c2(5);&lt;br /&gt;
  bcd_o(6)          &amp;lt;= c1(6);&lt;br /&gt;
&lt;br /&gt;
END behave5b;&lt;br /&gt;
&lt;br /&gt;
==== Synthese Ergebnis I ====&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/vhdl&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
Es gibt etliche synthetisierbare VHDL Lösungen für diesen einfachen Decoder.&lt;br /&gt;
Die Optimierung der Tools verläuft vertikal vom Eingang zum Ausgang, horizontale Bezüge sind nicht ersichtlich. Deshalb wird bei der Beschreibung mit Ausgangsfelder der einzelne Ausgang  nicht verkürzt (z.B. BCD(0)). Wünschenswert ist eine kompakte Beschreibung als Feld die dennoch aufspaltbar und somit optimierbar ist. Vielleicht sollte der Ausgang nicht als Vektor deklariert werden?&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>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18509</id>
		<title>TTL74185</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18509"/>
		<updated>2006-11-30T06:12:52Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Übersicht ==&lt;br /&gt;
Nachbau eines Standard TTL, des 74185 (6 bit binary zu BCD). Siehe Forum: http://www.mikrocontroller.net/topic/55594 .&lt;br /&gt;
&lt;br /&gt;
Code ist nicht simuliert, läuft aber einwandfrei durch Synthese. &lt;br /&gt;
&lt;br /&gt;
Wandelt man Eingang zu integer wird der code besser lesbar. &lt;br /&gt;
&lt;br /&gt;
Dann werden hier verschiedene Varianten gezeigt. &lt;br /&gt;
&lt;br /&gt;
=== Realisierung als einzelne logische Gleichungen === &lt;br /&gt;
Zuerst die mit logischen Gleichungen für die Ausgänge.&lt;br /&gt;
Um es dem Synthese-Tool leichter zu machen, wird das untere Eingangsbit nicht mit ausgewertet.&lt;br /&gt;
Durch die select Anweisung beschreibt man eine Wahrheitstabelle die einfach in  LUTs und Multiplexer umgewandelt wird (Xilinx). Bei Altera mit den 6 Input LUTs spart man sich die Multiplexer.&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
LIBRARY ieee;&lt;br /&gt;
USE ieee.std_logic_1164.ALL;&lt;br /&gt;
USE ieee.numeric_std.ALL;&lt;br /&gt;
&lt;br /&gt;
--vhdl description of 74185&lt;br /&gt;
--6bit binary to 2 digits BCD decoder&lt;br /&gt;
&lt;br /&gt;
ENTITY ttl74185 IS&lt;br /&gt;
  PORT (&lt;br /&gt;
    binary_i : IN  STD_LOGIC_VECTOR(5 DOWNTO 0);&lt;br /&gt;
    bcd_o    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));&lt;br /&gt;
END ttl74185;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF ttl74185 IS&lt;br /&gt;
  --integers are better readable for humans&lt;br /&gt;
  SIGNAL conv_input : integer RANGE 2**5-1 DOWNTO 0;&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
 conv_input &amp;lt;= to_integer(unsigned(binary_i(5 DOWNTO 1)));&lt;br /&gt;
  &lt;br /&gt;
  bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(1) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    1,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  6, &#039;1&#039; WHEN  8,&lt;br /&gt;
    &#039;1&#039; WHEN   11,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 16, &#039;1&#039; WHEN 18,&lt;br /&gt;
    &#039;1&#039; WHEN   21,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 26, &#039;1&#039; WHEN 28,&lt;br /&gt;
    &#039;1&#039; WHEN   31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(2) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    2,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN 8,  &lt;br /&gt;
    &#039;1&#039; WHEN   12,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &lt;br /&gt;
    &#039;1&#039; WHEN   22,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
              &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(3) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    4,&#039;1&#039; WHEN  9, &#039;1&#039; WHEN 14, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN   24,&#039;1&#039; WHEN 29,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(4) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN  5,&#039;1&#039; WHEN  6, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN  8, &#039;1&#039; WHEN  9,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
 WITH conv_input SELECT&lt;br /&gt;
    bcd_o(5) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 10,&#039;1&#039; WHEN 11, &#039;1&#039; WHEN 12, &#039;1&#039; WHEN 13, &#039;1&#039; WHEN 14,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
 &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(6) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 20,&#039;1&#039; WHEN 21, &#039;1&#039; WHEN 22, &#039;1&#039; WHEN 23, &#039;1&#039; WHEN 24,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
   &lt;br /&gt;
   bcd_o(7) &amp;lt;= &#039;0&#039;;&lt;br /&gt;
&lt;br /&gt;
  END behave;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    Found 32x1-bit ROM for signal &amp;lt;bcd_o&amp;lt;4&amp;gt;&amp;gt;.&lt;br /&gt;
    Found 16x1-bit ROM for signal &amp;lt;$mux0000&amp;gt;.&lt;br /&gt;
    Found 16x1-bit ROM for signal &amp;lt;$mux0001&amp;gt;.&lt;br /&gt;
    Summary:&lt;br /&gt;
	inferred   3 ROM(s).&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 3&lt;br /&gt;
 16x1-bit ROM                                          : 2&lt;br /&gt;
 32x1-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 12&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 7&lt;br /&gt;
#      MUXF5                       : 3&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       4  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                 8  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Maximum combinational path delay: 9.599ns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 36 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.599ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O             8   0.821   1.422  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  _or0000_F (N16)&lt;br /&gt;
     MUXF5:I0-&amp;gt;O           1   0.360   0.801  _or0000 (bcd_o_2_OBUF)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_2_OBUF (bcd_o&amp;lt;2&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.599ns (7.376ns logic, 2.223ns route)&lt;br /&gt;
                                       (76.8% logic, 23.2% route)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konstanten Array ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
Jetzt eine zweite Variante als ROM-Feld. Diese ist im Xilinx FPGA größer (5 statt 4 slices). Und ungünstiger im Routing die die Signale auf einen Punkt (ROM) und dann wieder von diesem weg geführt werden. Aber dafür auf den ersten Blick verständlich, besonders wenn man den Ausgangsvektor in hex schreibt. Das verstehen auch die Tools besser, diese Variante läuft schneller durch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave2 OF ttl74185 IS&lt;br /&gt;
&lt;br /&gt;
    SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
    TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
      CONSTANT C_BIN2_TO_BCD_TABLE  : T_BIN2_TO_BCD_TABLE(0 TO 2**6 - 1) :=&lt;br /&gt;
      (X&amp;quot;00&amp;quot;, X&amp;quot;01&amp;quot;, X&amp;quot;02&amp;quot;, X&amp;quot;03&amp;quot;, X&amp;quot;04&amp;quot;, X&amp;quot;05&amp;quot;, X&amp;quot;06&amp;quot;, X&amp;quot;07&amp;quot;, X&amp;quot;08&amp;quot;, X&amp;quot;09&amp;quot;,&lt;br /&gt;
       X&amp;quot;10&amp;quot;, X&amp;quot;11&amp;quot;, X&amp;quot;12&amp;quot;, X&amp;quot;13&amp;quot;, X&amp;quot;14&amp;quot;, X&amp;quot;15&amp;quot;, X&amp;quot;16&amp;quot;, X&amp;quot;17&amp;quot;, X&amp;quot;18&amp;quot;, X&amp;quot;19&amp;quot;,&lt;br /&gt;
       X&amp;quot;20&amp;quot;, X&amp;quot;21&amp;quot;, X&amp;quot;22&amp;quot;, X&amp;quot;23&amp;quot;, X&amp;quot;24&amp;quot;, X&amp;quot;25&amp;quot;, X&amp;quot;26&amp;quot;, X&amp;quot;27&amp;quot;, X&amp;quot;28&amp;quot;, X&amp;quot;29&amp;quot;,&lt;br /&gt;
       X&amp;quot;30&amp;quot;, X&amp;quot;31&amp;quot;, X&amp;quot;32&amp;quot;, X&amp;quot;33&amp;quot;, X&amp;quot;34&amp;quot;, X&amp;quot;35&amp;quot;, X&amp;quot;36&amp;quot;, X&amp;quot;37&amp;quot;, X&amp;quot;38&amp;quot;, X&amp;quot;39&amp;quot;,&lt;br /&gt;
       X&amp;quot;40&amp;quot;, X&amp;quot;41&amp;quot;, X&amp;quot;42&amp;quot;, X&amp;quot;43&amp;quot;, X&amp;quot;44&amp;quot;, X&amp;quot;45&amp;quot;, X&amp;quot;46&amp;quot;, X&amp;quot;47&amp;quot;, X&amp;quot;48&amp;quot;, X&amp;quot;49&amp;quot;,&lt;br /&gt;
       X&amp;quot;50&amp;quot;, X&amp;quot;51&amp;quot;, X&amp;quot;52&amp;quot;, X&amp;quot;53&amp;quot;, X&amp;quot;54&amp;quot;, X&amp;quot;55&amp;quot;, X&amp;quot;56&amp;quot;, X&amp;quot;57&amp;quot;, X&amp;quot;58&amp;quot;, X&amp;quot;59&amp;quot;,&lt;br /&gt;
       X&amp;quot;60&amp;quot;, X&amp;quot;61&amp;quot;, X&amp;quot;62&amp;quot;, X&amp;quot;63&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  BEGIN  -- behave&lt;br /&gt;
   conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
   bcd_o      &amp;lt;= C_BIN2_TO_BCD_TABLE(conv_input);&lt;br /&gt;
&lt;br /&gt;
  END behave2;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Maximum combinational path delay: 9.650ns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 44 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom__rom00007 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom__rom0000_f5_2 (Mrom__rom0000_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SELECT ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
 ARCHITECTURE behave3 OF ttl74185 IS&lt;br /&gt;
     SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
     TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
    BEGIN  -- behave&lt;br /&gt;
     conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
&lt;br /&gt;
     WITH conv_input SELECT&lt;br /&gt;
       bcd_o &amp;lt;=&lt;br /&gt;
        X&amp;quot;00&amp;quot; WHEN  0,  X&amp;quot;01&amp;quot; WHEN  1,  X&amp;quot;02&amp;quot; WHEN  2,  X&amp;quot;03&amp;quot; WHEN  3,  X&amp;quot;04&amp;quot; WHEN  4,&lt;br /&gt;
        X&amp;quot;05&amp;quot; WHEN  5,  X&amp;quot;06&amp;quot; WHEN  6,  X&amp;quot;07&amp;quot; WHEN  7,  X&amp;quot;08&amp;quot; WHEN  8,  X&amp;quot;09&amp;quot; WHEN  9, &lt;br /&gt;
        X&amp;quot;10&amp;quot; WHEN 10,  X&amp;quot;11&amp;quot; WHEN 11,  X&amp;quot;12&amp;quot; WHEN 12,  X&amp;quot;13&amp;quot; WHEN 13,  X&amp;quot;14&amp;quot; WHEN 14,&lt;br /&gt;
        X&amp;quot;15&amp;quot; WHEN 15,  X&amp;quot;16&amp;quot; WHEN 16,  X&amp;quot;17&amp;quot; WHEN 17,  X&amp;quot;18&amp;quot; WHEN 18,  X&amp;quot;19&amp;quot; WHEN 19, &lt;br /&gt;
        X&amp;quot;20&amp;quot; WHEN 20,  X&amp;quot;21&amp;quot; WHEN 21,  X&amp;quot;22&amp;quot; WHEN 22,  X&amp;quot;23&amp;quot; WHEN 23,  X&amp;quot;24&amp;quot; WHEN 24,&lt;br /&gt;
        X&amp;quot;25&amp;quot; WHEN 25,  X&amp;quot;26&amp;quot; WHEN 26,  X&amp;quot;27&amp;quot; WHEN 27,  X&amp;quot;28&amp;quot; WHEN 28,  X&amp;quot;29&amp;quot; WHEN 29, &lt;br /&gt;
        X&amp;quot;30&amp;quot; WHEN 30,  X&amp;quot;31&amp;quot; WHEN 31,  X&amp;quot;32&amp;quot; WHEN 32,  X&amp;quot;33&amp;quot; WHEN 33,  X&amp;quot;34&amp;quot; WHEN 34,&lt;br /&gt;
        X&amp;quot;35&amp;quot; WHEN 35,  X&amp;quot;36&amp;quot; WHEN 36,  X&amp;quot;37&amp;quot; WHEN 37,  X&amp;quot;38&amp;quot; WHEN 38,  X&amp;quot;39&amp;quot; WHEN 39, &lt;br /&gt;
        X&amp;quot;40&amp;quot; WHEN 40,  X&amp;quot;41&amp;quot; WHEN 41,  X&amp;quot;42&amp;quot; WHEN 42,  X&amp;quot;43&amp;quot; WHEN 43,  X&amp;quot;44&amp;quot; WHEN 44,&lt;br /&gt;
        X&amp;quot;45&amp;quot; WHEN 45,  X&amp;quot;46&amp;quot; WHEN 46,  X&amp;quot;47&amp;quot; WHEN 47,  X&amp;quot;48&amp;quot; WHEN 48,  X&amp;quot;49&amp;quot; WHEN 49, &lt;br /&gt;
        X&amp;quot;50&amp;quot; WHEN 50,  X&amp;quot;51&amp;quot; WHEN 51,  X&amp;quot;52&amp;quot; WHEN 52,  X&amp;quot;53&amp;quot; WHEN 53,  X&amp;quot;54&amp;quot; WHEN 54,&lt;br /&gt;
        X&amp;quot;55&amp;quot; WHEN 55,  X&amp;quot;56&amp;quot; WHEN 56,  X&amp;quot;57&amp;quot; WHEN 57,  X&amp;quot;58&amp;quot; WHEN 58,  X&amp;quot;59&amp;quot; WHEN 59, &lt;br /&gt;
        X&amp;quot;60&amp;quot; WHEN 60,  X&amp;quot;61&amp;quot; WHEN 61,  X&amp;quot;52&amp;quot; WHEN 62,  X&amp;quot;63&amp;quot; WHEN 63; &lt;br /&gt;
   END behave3;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
HDL Synthesis Report&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
Device utilization summary:&lt;br /&gt;
---------------------------&lt;br /&gt;
&lt;br /&gt;
Selected Device : 3s50vq100-4 &lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 44 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom_bcd_o7 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom_bcd_o_f5_2 (Mrom_bcd_o_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CASE ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave4 OF ttl74185 IS&lt;br /&gt;
          SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
          TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (NATURAL RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
        BEGIN  -- behave&lt;br /&gt;
          conv_input &amp;lt;= to_INTEGER(UNSIGNED(binary_i));&lt;br /&gt;
&lt;br /&gt;
          PROCESS(conv_input)&lt;br /&gt;
          begin&lt;br /&gt;
           CASE conv_input IS&lt;br /&gt;
            WHEN 0   =&amp;gt; bcd_o &amp;lt;= X&amp;quot;00&amp;quot;;  WHEN  1 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;01&amp;quot;;  WHEN  2 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;02&amp;quot;;  WHEN  3 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;03&amp;quot;;&lt;br /&gt;
            WHEN 5   =&amp;gt; bcd_o &amp;lt;= X&amp;quot;05&amp;quot;;  WHEN  6 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;06&amp;quot;;  WHEN  7 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;07&amp;quot;;  WHEN  8 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;08&amp;quot;;&lt;br /&gt;
            WHEN 10  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;10&amp;quot;;  WHEN 11 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;11&amp;quot;;  WHEN 12 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;12&amp;quot;;  WHEN 13 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;13&amp;quot;;&lt;br /&gt;
            WHEN 15  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;15&amp;quot;;  WHEN 16 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;16&amp;quot;;  WHEN 17 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;17&amp;quot;;  WHEN 18 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;18&amp;quot;;&lt;br /&gt;
            WHEN 20  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;20&amp;quot;;  WHEN 21 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;21&amp;quot;;  WHEN 22 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;22&amp;quot;;  WHEN 23 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;23&amp;quot;;&lt;br /&gt;
            WHEN 25  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;25&amp;quot;;  WHEN 26 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;26&amp;quot;;  WHEN 27 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;27&amp;quot;;  WHEN 28 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;28&amp;quot;;&lt;br /&gt;
            WHEN 30  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;30&amp;quot;;  WHEN 31 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;31&amp;quot;;  WHEN 32 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;32&amp;quot;;  WHEN 33 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;33&amp;quot;;&lt;br /&gt;
            WHEN 35  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;35&amp;quot;;  WHEN 36 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;36&amp;quot;;  WHEN 37 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;37&amp;quot;;  WHEN 38 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;38&amp;quot;;&lt;br /&gt;
            WHEN 40  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;40&amp;quot;;  WHEN 41 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;41&amp;quot;;  WHEN 42 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;42&amp;quot;;  WHEN 43 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;43&amp;quot;;&lt;br /&gt;
            WHEN 45  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;45&amp;quot;;  WHEN 46 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;46&amp;quot;;  WHEN 47 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;47&amp;quot;;  WHEN 48 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;48&amp;quot;;&lt;br /&gt;
            WHEN 50  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;50&amp;quot;;  WHEN 51 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;51&amp;quot;;  WHEN 52 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;52&amp;quot;;  WHEN 53 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;53&amp;quot;;&lt;br /&gt;
            WHEN 55  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;55&amp;quot;;  WHEN 56 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;56&amp;quot;;  WHEN 57 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;57&amp;quot;;  WHEN 58 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;58&amp;quot;;&lt;br /&gt;
            WHEN 60  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;60&amp;quot;;  WHEN 61 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;61&amp;quot;;  WHEN 62 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;62&amp;quot;;  WHEN 63 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;63&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            WHEN 4  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;04&amp;quot;;&lt;br /&gt;
            WHEN 9  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;09&amp;quot;;&lt;br /&gt;
            WHEN 14 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;14&amp;quot;;&lt;br /&gt;
            WHEN 19 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;19&amp;quot;;&lt;br /&gt;
            WHEN 24 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;24&amp;quot;;&lt;br /&gt;
            WHEN 29 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;29&amp;quot;;&lt;br /&gt;
            WHEN 34 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;34&amp;quot;;&lt;br /&gt;
            WHEN 39 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;39&amp;quot;;&lt;br /&gt;
            WHEN 44 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;44&amp;quot;;&lt;br /&gt;
            WHEN 49 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;49&amp;quot;;&lt;br /&gt;
            WHEN 54 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;54&amp;quot;;&lt;br /&gt;
            WHEN 59 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;59&amp;quot;;&lt;br /&gt;
          END case;&lt;br /&gt;
        END process;&lt;br /&gt;
&lt;br /&gt;
        END behave4;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RTL Top Level Output File Name     : ttl74185.ngr&lt;br /&gt;
Top Level Output File Name         : ttl74185&lt;br /&gt;
Output Format                      : NGC&lt;br /&gt;
Optimization Goal                  : Area&lt;br /&gt;
Keep Hierarchy                     : NO&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
Selected Device : 3s50vq100-4 &lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
All values displayed in nanoseconds (ns)&lt;br /&gt;
&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom_bcd_o7 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom_bcd_o_f5_2 (Mrom_bcd_o_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
Es gibt etliche synthetisierbare VHDL Lösungen für diesen einfachen Decoder.&lt;br /&gt;
Die Optimierung der Tools verläuft vertikal vom Eingang zum Ausgang, horizontale Bezüge sind nicht ersichtlich. Deshalb wird bei der Beschreibung mit Ausgangsfelder der einzelne Ausgang  nicht verkürzt (z.B. BCD(0)). Wünschenswert ist eine kompakte Beschreibung als Feld die dennoch aufspaltbar und somit optimierbar ist. Vielleicht sollte der Ausgang nicht als Vektor deklariert werden?&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>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=VHDL&amp;diff=18508</id>
		<title>VHDL</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=VHDL&amp;diff=18508"/>
		<updated>2006-11-30T06:11:01Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: +link&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�??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;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=VHDL_Schnipsel&amp;diff=18507</id>
		<title>VHDL Schnipsel</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=VHDL_Schnipsel&amp;diff=18507"/>
		<updated>2006-11-30T05:59:49Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Nachbau TTL741b5 (6 bit binary to BCD decoder) */ Generalisierung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Beispielcode und VHDL Schnipsel==&lt;br /&gt;
Hier ist Platz für kurzen Beispielcode.&lt;br /&gt;
&lt;br /&gt;
===[[VHDL_schnipsel_count_slice|Zählerbereich erkennen]]===&lt;br /&gt;
&lt;br /&gt;
Oft wird ein Signal aus einem Zählerstand abgeleitet. Zum Beispiel für einen längeren &#039;1&#039; Puls, soll bei einem Zählerstand grö�?er 10 und kleiner 20 eine &#039;1&#039; ausgegeben werden, sonst &#039;0&#039;. Verwendet man hier &amp;quot;&amp;gt;&amp;quot; oder &amp;quot;&amp;lt;&amp;quot; wird die Logik unnötig gro�?. Das Beispiel zeigt eine Platzsparende Alternative.&lt;br /&gt;
&lt;br /&gt;
===[[VHDL_schnipsel_or_vectorbits|OR über alle Bits eines Vectors]]===&lt;br /&gt;
&lt;br /&gt;
Wie fasse ich einen STD_LOGIC_VECTOR(15 downto 0) so zusammen, dass das&lt;br /&gt;
Ausgangssignal &#039;1&#039; ist, sobald eines der Vektor-Bits auf &#039;1&#039; ist?&lt;br /&gt;
Also eine OR-Verknüpfung über den ganzen Vektor?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[http://www.mikrocontroller.net/topic/31387 I2C-Slave]===&lt;br /&gt;
*Master kann schreiben und lesen&lt;br /&gt;
*praktisch keine Einschränkung der Frequenz&lt;br /&gt;
*Error-Code nach Transfer&lt;br /&gt;
*freie Slave-Adresswahl&lt;br /&gt;
*Sniffer-Mode&lt;br /&gt;
&lt;br /&gt;
=== [[TTL74185|Coder am Beispiel TTL74185 (6 bit binary to BCD decoder)]] ===&lt;br /&gt;
Ein Beispiel wie man Coder schreiben kann und sollte, zeigt an einigen VHDL-Beispielen der Artikel  [[TTL74185]]. Der thread dazu findet sich unter: http://www.mikrocontroller.net/topic/55594.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18506</id>
		<title>TTL74185</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18506"/>
		<updated>2006-11-30T05:53:44Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: mehr Gliederung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Übersicht ==&lt;br /&gt;
Nachbau eines Standard TTL, des 74185 (6 bit binary zu BCD). Siehe Forum: http://www.mikrocontroller.net/topic/55594 .&lt;br /&gt;
&lt;br /&gt;
Code ist nicht simuliert, läuft aber einwandfrei durch Synthese. &lt;br /&gt;
&lt;br /&gt;
Wandelt man Eingang zu integer wird der code besser lesbar. &lt;br /&gt;
&lt;br /&gt;
Dann werden hier verschiedene Varianten gezeigt. &lt;br /&gt;
&lt;br /&gt;
=== Realisierung als einzelne logische Gleichungen === &lt;br /&gt;
Zuerst die mit logischen Gleichungen für die Ausgänge.&lt;br /&gt;
Um es dem Synthese-Tool leichter zu machen, wird das untere Eingangsbit nicht mit ausgewertet.&lt;br /&gt;
Durch die select Anweisung beschreibt man eine Wahrheitstabelle die einfach in  LUTs und Multiplexer umgewandelt wird (Xilinx). Bei Altera mit den 6 Input LUTs spart man sich die Multiplexer.&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
LIBRARY ieee;&lt;br /&gt;
USE ieee.std_logic_1164.ALL;&lt;br /&gt;
USE ieee.numeric_std.ALL;&lt;br /&gt;
&lt;br /&gt;
--vhdl description of 74185&lt;br /&gt;
--6bit binary to 2 digits BCD decoder&lt;br /&gt;
&lt;br /&gt;
ENTITY ttl74185 IS&lt;br /&gt;
  PORT (&lt;br /&gt;
    binary_i : IN  STD_LOGIC_VECTOR(5 DOWNTO 0);&lt;br /&gt;
    bcd_o    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));&lt;br /&gt;
END ttl74185;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF ttl74185 IS&lt;br /&gt;
  --integers are better readable for humans&lt;br /&gt;
  SIGNAL conv_input : integer RANGE 2**5-1 DOWNTO 0;&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
 conv_input &amp;lt;= to_integer(unsigned(binary_i(5 DOWNTO 1)));&lt;br /&gt;
  &lt;br /&gt;
  bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(1) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    1,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  6, &#039;1&#039; WHEN  8,&lt;br /&gt;
    &#039;1&#039; WHEN   11,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 16, &#039;1&#039; WHEN 18,&lt;br /&gt;
    &#039;1&#039; WHEN   21,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 26, &#039;1&#039; WHEN 28,&lt;br /&gt;
    &#039;1&#039; WHEN   31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(2) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    2,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN 8,  &lt;br /&gt;
    &#039;1&#039; WHEN   12,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &lt;br /&gt;
    &#039;1&#039; WHEN   22,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
              &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(3) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    4,&#039;1&#039; WHEN  9, &#039;1&#039; WHEN 14, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN   24,&#039;1&#039; WHEN 29,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(4) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN  5,&#039;1&#039; WHEN  6, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN  8, &#039;1&#039; WHEN  9,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
 WITH conv_input SELECT&lt;br /&gt;
    bcd_o(5) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 10,&#039;1&#039; WHEN 11, &#039;1&#039; WHEN 12, &#039;1&#039; WHEN 13, &#039;1&#039; WHEN 14,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
 &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(6) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 20,&#039;1&#039; WHEN 21, &#039;1&#039; WHEN 22, &#039;1&#039; WHEN 23, &#039;1&#039; WHEN 24,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
   &lt;br /&gt;
   bcd_o(7) &amp;lt;= &#039;0&#039;;&lt;br /&gt;
&lt;br /&gt;
  END behave;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
==== Synthese Ergebniss ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    Found 32x1-bit ROM for signal &amp;lt;bcd_o&amp;lt;4&amp;gt;&amp;gt;.&lt;br /&gt;
    Found 16x1-bit ROM for signal &amp;lt;$mux0000&amp;gt;.&lt;br /&gt;
    Found 16x1-bit ROM for signal &amp;lt;$mux0001&amp;gt;.&lt;br /&gt;
    Summary:&lt;br /&gt;
	inferred   3 ROM(s).&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 3&lt;br /&gt;
 16x1-bit ROM                                          : 2&lt;br /&gt;
 32x1-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 12&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 7&lt;br /&gt;
#      MUXF5                       : 3&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       4  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                 8  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Maximum combinational path delay: 9.599ns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 36 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.599ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O             8   0.821   1.422  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  _or0000_F (N16)&lt;br /&gt;
     MUXF5:I0-&amp;gt;O           1   0.360   0.801  _or0000 (bcd_o_2_OBUF)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_2_OBUF (bcd_o&amp;lt;2&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.599ns (7.376ns logic, 2.223ns route)&lt;br /&gt;
                                       (76.8% logic, 23.2% route)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konstanten Array ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
Jetzt eine zweite Variante als ROM-Feld. Diese ist im Xilinx FPGA größer (5 statt 4 slices). Und ungünstiger im Routing die die Signale auf einen Punkt (ROM) und dann wieder von diesem weg geführt werden. Aber dafür auf den ersten Blick verständlich, besonders wenn man den Ausgangsvektor in hex schreibt. Das verstehen auch die Tools besser, diese Variante läuft schneller durch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave2 OF ttl74185 IS&lt;br /&gt;
&lt;br /&gt;
    SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
    TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
      CONSTANT C_BIN2_TO_BCD_TABLE  : T_BIN2_TO_BCD_TABLE(0 TO 2**6 - 1) :=&lt;br /&gt;
      (X&amp;quot;00&amp;quot;, X&amp;quot;01&amp;quot;, X&amp;quot;02&amp;quot;, X&amp;quot;03&amp;quot;, X&amp;quot;04&amp;quot;, X&amp;quot;05&amp;quot;, X&amp;quot;06&amp;quot;, X&amp;quot;07&amp;quot;, X&amp;quot;08&amp;quot;, X&amp;quot;09&amp;quot;,&lt;br /&gt;
       X&amp;quot;10&amp;quot;, X&amp;quot;11&amp;quot;, X&amp;quot;12&amp;quot;, X&amp;quot;13&amp;quot;, X&amp;quot;14&amp;quot;, X&amp;quot;15&amp;quot;, X&amp;quot;16&amp;quot;, X&amp;quot;17&amp;quot;, X&amp;quot;18&amp;quot;, X&amp;quot;19&amp;quot;,&lt;br /&gt;
       X&amp;quot;20&amp;quot;, X&amp;quot;21&amp;quot;, X&amp;quot;22&amp;quot;, X&amp;quot;23&amp;quot;, X&amp;quot;24&amp;quot;, X&amp;quot;25&amp;quot;, X&amp;quot;26&amp;quot;, X&amp;quot;27&amp;quot;, X&amp;quot;28&amp;quot;, X&amp;quot;29&amp;quot;,&lt;br /&gt;
       X&amp;quot;30&amp;quot;, X&amp;quot;31&amp;quot;, X&amp;quot;32&amp;quot;, X&amp;quot;33&amp;quot;, X&amp;quot;34&amp;quot;, X&amp;quot;35&amp;quot;, X&amp;quot;36&amp;quot;, X&amp;quot;37&amp;quot;, X&amp;quot;38&amp;quot;, X&amp;quot;39&amp;quot;,&lt;br /&gt;
       X&amp;quot;40&amp;quot;, X&amp;quot;41&amp;quot;, X&amp;quot;42&amp;quot;, X&amp;quot;43&amp;quot;, X&amp;quot;44&amp;quot;, X&amp;quot;45&amp;quot;, X&amp;quot;46&amp;quot;, X&amp;quot;47&amp;quot;, X&amp;quot;48&amp;quot;, X&amp;quot;49&amp;quot;,&lt;br /&gt;
       X&amp;quot;50&amp;quot;, X&amp;quot;51&amp;quot;, X&amp;quot;52&amp;quot;, X&amp;quot;53&amp;quot;, X&amp;quot;54&amp;quot;, X&amp;quot;55&amp;quot;, X&amp;quot;56&amp;quot;, X&amp;quot;57&amp;quot;, X&amp;quot;58&amp;quot;, X&amp;quot;59&amp;quot;,&lt;br /&gt;
       X&amp;quot;60&amp;quot;, X&amp;quot;61&amp;quot;, X&amp;quot;62&amp;quot;, X&amp;quot;63&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  BEGIN  -- behave&lt;br /&gt;
   conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
   bcd_o      &amp;lt;= C_BIN2_TO_BCD_TABLE(conv_input);&lt;br /&gt;
&lt;br /&gt;
  END behave2;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
==== Synthese Ergebnis ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Maximum combinational path delay: 9.650ns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 44 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom__rom00007 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom__rom0000_f5_2 (Mrom__rom0000_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SELECT ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
 ARCHITECTURE behave3 OF ttl74185 IS&lt;br /&gt;
     SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
     TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
    BEGIN  -- behave&lt;br /&gt;
     conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
&lt;br /&gt;
     WITH conv_input SELECT&lt;br /&gt;
       bcd_o &amp;lt;=&lt;br /&gt;
        X&amp;quot;00&amp;quot; WHEN  0,  X&amp;quot;01&amp;quot; WHEN  1,  X&amp;quot;02&amp;quot; WHEN  2,  X&amp;quot;03&amp;quot; WHEN  3,  X&amp;quot;04&amp;quot; WHEN  4,&lt;br /&gt;
        X&amp;quot;05&amp;quot; WHEN  5,  X&amp;quot;06&amp;quot; WHEN  6,  X&amp;quot;07&amp;quot; WHEN  7,  X&amp;quot;08&amp;quot; WHEN  8,  X&amp;quot;09&amp;quot; WHEN  9, &lt;br /&gt;
        X&amp;quot;10&amp;quot; WHEN 10,  X&amp;quot;11&amp;quot; WHEN 11,  X&amp;quot;12&amp;quot; WHEN 12,  X&amp;quot;13&amp;quot; WHEN 13,  X&amp;quot;14&amp;quot; WHEN 14,&lt;br /&gt;
        X&amp;quot;15&amp;quot; WHEN 15,  X&amp;quot;16&amp;quot; WHEN 16,  X&amp;quot;17&amp;quot; WHEN 17,  X&amp;quot;18&amp;quot; WHEN 18,  X&amp;quot;19&amp;quot; WHEN 19, &lt;br /&gt;
        X&amp;quot;20&amp;quot; WHEN 20,  X&amp;quot;21&amp;quot; WHEN 21,  X&amp;quot;22&amp;quot; WHEN 22,  X&amp;quot;23&amp;quot; WHEN 23,  X&amp;quot;24&amp;quot; WHEN 24,&lt;br /&gt;
        X&amp;quot;25&amp;quot; WHEN 25,  X&amp;quot;26&amp;quot; WHEN 26,  X&amp;quot;27&amp;quot; WHEN 27,  X&amp;quot;28&amp;quot; WHEN 28,  X&amp;quot;29&amp;quot; WHEN 29, &lt;br /&gt;
        X&amp;quot;30&amp;quot; WHEN 30,  X&amp;quot;31&amp;quot; WHEN 31,  X&amp;quot;32&amp;quot; WHEN 32,  X&amp;quot;33&amp;quot; WHEN 33,  X&amp;quot;34&amp;quot; WHEN 34,&lt;br /&gt;
        X&amp;quot;35&amp;quot; WHEN 35,  X&amp;quot;36&amp;quot; WHEN 36,  X&amp;quot;37&amp;quot; WHEN 37,  X&amp;quot;38&amp;quot; WHEN 38,  X&amp;quot;39&amp;quot; WHEN 39, &lt;br /&gt;
        X&amp;quot;40&amp;quot; WHEN 40,  X&amp;quot;41&amp;quot; WHEN 41,  X&amp;quot;42&amp;quot; WHEN 42,  X&amp;quot;43&amp;quot; WHEN 43,  X&amp;quot;44&amp;quot; WHEN 44,&lt;br /&gt;
        X&amp;quot;45&amp;quot; WHEN 45,  X&amp;quot;46&amp;quot; WHEN 46,  X&amp;quot;47&amp;quot; WHEN 47,  X&amp;quot;48&amp;quot; WHEN 48,  X&amp;quot;49&amp;quot; WHEN 49, &lt;br /&gt;
        X&amp;quot;50&amp;quot; WHEN 50,  X&amp;quot;51&amp;quot; WHEN 51,  X&amp;quot;52&amp;quot; WHEN 52,  X&amp;quot;53&amp;quot; WHEN 53,  X&amp;quot;54&amp;quot; WHEN 54,&lt;br /&gt;
        X&amp;quot;55&amp;quot; WHEN 55,  X&amp;quot;56&amp;quot; WHEN 56,  X&amp;quot;57&amp;quot; WHEN 57,  X&amp;quot;58&amp;quot; WHEN 58,  X&amp;quot;59&amp;quot; WHEN 59, &lt;br /&gt;
        X&amp;quot;60&amp;quot; WHEN 60,  X&amp;quot;61&amp;quot; WHEN 61,  X&amp;quot;52&amp;quot; WHEN 62,  X&amp;quot;63&amp;quot; WHEN 63; &lt;br /&gt;
   END behave3;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Synthese Ergebniss ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
HDL Synthesis Report&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
Device utilization summary:&lt;br /&gt;
---------------------------&lt;br /&gt;
&lt;br /&gt;
Selected Device : 3s50vq100-4 &lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 44 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom_bcd_o7 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom_bcd_o_f5_2 (Mrom_bcd_o_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CASE ===&lt;br /&gt;
==== Code ====&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave4 OF ttl74185 IS&lt;br /&gt;
          SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
          TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (NATURAL RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
        BEGIN  -- behave&lt;br /&gt;
          conv_input &amp;lt;= to_INTEGER(UNSIGNED(binary_i));&lt;br /&gt;
&lt;br /&gt;
          PROCESS(conv_input)&lt;br /&gt;
          begin&lt;br /&gt;
           CASE conv_input IS&lt;br /&gt;
            WHEN 0   =&amp;gt; bcd_o &amp;lt;= X&amp;quot;00&amp;quot;;  WHEN  1 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;01&amp;quot;;  WHEN  2 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;02&amp;quot;;  WHEN  3 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;03&amp;quot;;&lt;br /&gt;
            WHEN 5   =&amp;gt; bcd_o &amp;lt;= X&amp;quot;05&amp;quot;;  WHEN  6 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;06&amp;quot;;  WHEN  7 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;07&amp;quot;;  WHEN  8 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;08&amp;quot;;&lt;br /&gt;
            WHEN 10  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;10&amp;quot;;  WHEN 11 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;11&amp;quot;;  WHEN 12 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;12&amp;quot;;  WHEN 13 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;13&amp;quot;;&lt;br /&gt;
            WHEN 15  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;15&amp;quot;;  WHEN 16 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;16&amp;quot;;  WHEN 17 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;17&amp;quot;;  WHEN 18 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;18&amp;quot;;&lt;br /&gt;
            WHEN 20  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;20&amp;quot;;  WHEN 21 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;21&amp;quot;;  WHEN 22 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;22&amp;quot;;  WHEN 23 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;23&amp;quot;;&lt;br /&gt;
            WHEN 25  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;25&amp;quot;;  WHEN 26 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;26&amp;quot;;  WHEN 27 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;27&amp;quot;;  WHEN 28 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;28&amp;quot;;&lt;br /&gt;
            WHEN 30  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;30&amp;quot;;  WHEN 31 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;31&amp;quot;;  WHEN 32 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;32&amp;quot;;  WHEN 33 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;33&amp;quot;;&lt;br /&gt;
            WHEN 35  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;35&amp;quot;;  WHEN 36 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;36&amp;quot;;  WHEN 37 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;37&amp;quot;;  WHEN 38 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;38&amp;quot;;&lt;br /&gt;
            WHEN 40  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;40&amp;quot;;  WHEN 41 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;41&amp;quot;;  WHEN 42 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;42&amp;quot;;  WHEN 43 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;43&amp;quot;;&lt;br /&gt;
            WHEN 45  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;45&amp;quot;;  WHEN 46 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;46&amp;quot;;  WHEN 47 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;47&amp;quot;;  WHEN 48 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;48&amp;quot;;&lt;br /&gt;
            WHEN 50  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;50&amp;quot;;  WHEN 51 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;51&amp;quot;;  WHEN 52 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;52&amp;quot;;  WHEN 53 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;53&amp;quot;;&lt;br /&gt;
            WHEN 55  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;55&amp;quot;;  WHEN 56 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;56&amp;quot;;  WHEN 57 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;57&amp;quot;;  WHEN 58 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;58&amp;quot;;&lt;br /&gt;
            WHEN 60  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;60&amp;quot;;  WHEN 61 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;61&amp;quot;;  WHEN 62 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;62&amp;quot;;  WHEN 63 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;63&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            WHEN 4  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;04&amp;quot;;&lt;br /&gt;
            WHEN 9  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;09&amp;quot;;&lt;br /&gt;
            WHEN 14 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;14&amp;quot;;&lt;br /&gt;
            WHEN 19 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;19&amp;quot;;&lt;br /&gt;
            WHEN 24 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;24&amp;quot;;&lt;br /&gt;
            WHEN 29 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;29&amp;quot;;&lt;br /&gt;
            WHEN 34 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;34&amp;quot;;&lt;br /&gt;
            WHEN 39 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;39&amp;quot;;&lt;br /&gt;
            WHEN 44 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;44&amp;quot;;&lt;br /&gt;
            WHEN 49 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;49&amp;quot;;&lt;br /&gt;
            WHEN 54 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;54&amp;quot;;&lt;br /&gt;
            WHEN 59 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;59&amp;quot;;&lt;br /&gt;
          END case;&lt;br /&gt;
        END process;&lt;br /&gt;
&lt;br /&gt;
        END behave4;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Synthese Ergebniss ====&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RTL Top Level Output File Name     : ttl74185.ngr&lt;br /&gt;
Top Level Output File Name         : ttl74185&lt;br /&gt;
Output Format                      : NGC&lt;br /&gt;
Optimization Goal                  : Area&lt;br /&gt;
Keep Hierarchy                     : NO&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
Selected Device : 3s50vq100-4 &lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
All values displayed in nanoseconds (ns)&lt;br /&gt;
&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom_bcd_o7 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom_bcd_o_f5_2 (Mrom_bcd_o_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
Es gibt etliche synthetisierbare VHDL Lösungen für diesen einfachen Decoder.&lt;br /&gt;
Die Optimierung der Tools verläuft vertikal vom Eingang zum Ausgang, horizontale Bezüge sind nicht ersichtlich. Deshalb wird bei der Beschreibung mit Ausgangsfelder der einzelne Ausgang  nicht verkürzt (z.B. BCD(0)). Wünschenswert ist eine kompakte Beschreibung als Feld die dennoch aufspaltbar und somit optimierbar ist. Vielleicht sollte der Ausgang nicht als Vektor deklariert werden?&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>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18503</id>
		<title>TTL74185</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18503"/>
		<updated>2006-11-29T21:36:17Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: noch mehr Varianten, syntheseoutput&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Übersicht ==&lt;br /&gt;
Nachbau eines Standard TTL, des 74185 (6 bit binary zu BCD). Siehe Forum: http://www.mikrocontroller.net/topic/55594 .&lt;br /&gt;
&lt;br /&gt;
Code ist nicht simuliert, läuft aber einwandfrei durch Synthese. &lt;br /&gt;
&lt;br /&gt;
Wandelt man Eingang zu integer wird der code besser lesbar. &lt;br /&gt;
&lt;br /&gt;
Dann werden hier verschiedene Varianten gezeigt. &lt;br /&gt;
&lt;br /&gt;
== Realisierung als einzelne logische Gleichungen == &lt;br /&gt;
Zuerst die mit logischen Gleichungen für die Ausgänge.&lt;br /&gt;
Um es dem Synthese-Tool leichter zu machen, wird das untere Eingangsbit nicht mit ausgewertet.&lt;br /&gt;
Durch die select Anweisung beschreibt man eine Wahrheitstabelle die einfach in  LUTs und Multiplexer umgewandelt wird (Xilinx). Bei Altera mit den 6 Input LUTs spart man sich die Multiplexer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
LIBRARY ieee;&lt;br /&gt;
USE ieee.std_logic_1164.ALL;&lt;br /&gt;
USE ieee.numeric_std.ALL;&lt;br /&gt;
&lt;br /&gt;
--vhdl description of 74185&lt;br /&gt;
--6bit binary to 2 digits BCD decoder&lt;br /&gt;
&lt;br /&gt;
ENTITY ttl74185 IS&lt;br /&gt;
  PORT (&lt;br /&gt;
    binary_i : IN  STD_LOGIC_VECTOR(5 DOWNTO 0);&lt;br /&gt;
    bcd_o    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));&lt;br /&gt;
END ttl74185;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF ttl74185 IS&lt;br /&gt;
  --integers are better readable for humans&lt;br /&gt;
  SIGNAL conv_input : integer RANGE 2**5-1 DOWNTO 0;&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
 conv_input &amp;lt;= to_integer(unsigned(binary_i(5 DOWNTO 1)));&lt;br /&gt;
  &lt;br /&gt;
  bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(1) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    1,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  6, &#039;1&#039; WHEN  8,&lt;br /&gt;
    &#039;1&#039; WHEN   11,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 16, &#039;1&#039; WHEN 18,&lt;br /&gt;
    &#039;1&#039; WHEN   21,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 26, &#039;1&#039; WHEN 28,&lt;br /&gt;
    &#039;1&#039; WHEN   31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(2) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    2,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN 8,  &lt;br /&gt;
    &#039;1&#039; WHEN   12,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &lt;br /&gt;
    &#039;1&#039; WHEN   22,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
              &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(3) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    4,&#039;1&#039; WHEN  9, &#039;1&#039; WHEN 14, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN   24,&#039;1&#039; WHEN 29,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(4) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN  5,&#039;1&#039; WHEN  6, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN  8, &#039;1&#039; WHEN  9,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
 WITH conv_input SELECT&lt;br /&gt;
    bcd_o(5) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 10,&#039;1&#039; WHEN 11, &#039;1&#039; WHEN 12, &#039;1&#039; WHEN 13, &#039;1&#039; WHEN 14,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
 &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(6) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 20,&#039;1&#039; WHEN 21, &#039;1&#039; WHEN 22, &#039;1&#039; WHEN 23, &#039;1&#039; WHEN 24,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
   &lt;br /&gt;
   bcd_o(7) &amp;lt;= &#039;0&#039;;&lt;br /&gt;
&lt;br /&gt;
  END behave;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    Found 32x1-bit ROM for signal &amp;lt;bcd_o&amp;lt;4&amp;gt;&amp;gt;.&lt;br /&gt;
    Found 16x1-bit ROM for signal &amp;lt;$mux0000&amp;gt;.&lt;br /&gt;
    Found 16x1-bit ROM for signal &amp;lt;$mux0001&amp;gt;.&lt;br /&gt;
    Summary:&lt;br /&gt;
	inferred   3 ROM(s).&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 3&lt;br /&gt;
 16x1-bit ROM                                          : 2&lt;br /&gt;
 32x1-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 12&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 7&lt;br /&gt;
#      MUXF5                       : 3&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       4  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                 8  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Maximum combinational path delay: 9.599ns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 36 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.599ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O             8   0.821   1.422  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  _or0000_F (N16)&lt;br /&gt;
     MUXF5:I0-&amp;gt;O           1   0.360   0.801  _or0000 (bcd_o_2_OBUF)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_2_OBUF (bcd_o&amp;lt;2&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.599ns (7.376ns logic, 2.223ns route)&lt;br /&gt;
                                       (76.8% logic, 23.2% route)&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konstanten Array ==&lt;br /&gt;
&lt;br /&gt;
Jetzt eine zweite Variante als ROM-Feld. Diese ist im Xilinx FPGA größer (5 statt 4 slices). Und ungünstiger im Routing die die Signale auf einen Punkt (ROM) und dann wieder von diesem weg geführt werden. Aber dafür auf den ersten Blick verständlich, besonders wenn man den Ausgangsvektor in hex schreibt. Das verstehen auch die Tools besser, diese Variante läuft schneller durch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave2 OF ttl74185 IS&lt;br /&gt;
&lt;br /&gt;
    SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
    TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
      CONSTANT C_BIN2_TO_BCD_TABLE  : T_BIN2_TO_BCD_TABLE(0 TO 2**6 - 1) :=&lt;br /&gt;
      (X&amp;quot;00&amp;quot;, X&amp;quot;01&amp;quot;, X&amp;quot;02&amp;quot;, X&amp;quot;03&amp;quot;, X&amp;quot;04&amp;quot;, X&amp;quot;05&amp;quot;, X&amp;quot;06&amp;quot;, X&amp;quot;07&amp;quot;, X&amp;quot;08&amp;quot;, X&amp;quot;09&amp;quot;,&lt;br /&gt;
       X&amp;quot;10&amp;quot;, X&amp;quot;11&amp;quot;, X&amp;quot;12&amp;quot;, X&amp;quot;13&amp;quot;, X&amp;quot;14&amp;quot;, X&amp;quot;15&amp;quot;, X&amp;quot;16&amp;quot;, X&amp;quot;17&amp;quot;, X&amp;quot;18&amp;quot;, X&amp;quot;19&amp;quot;,&lt;br /&gt;
       X&amp;quot;20&amp;quot;, X&amp;quot;21&amp;quot;, X&amp;quot;22&amp;quot;, X&amp;quot;23&amp;quot;, X&amp;quot;24&amp;quot;, X&amp;quot;25&amp;quot;, X&amp;quot;26&amp;quot;, X&amp;quot;27&amp;quot;, X&amp;quot;28&amp;quot;, X&amp;quot;29&amp;quot;,&lt;br /&gt;
       X&amp;quot;30&amp;quot;, X&amp;quot;31&amp;quot;, X&amp;quot;32&amp;quot;, X&amp;quot;33&amp;quot;, X&amp;quot;34&amp;quot;, X&amp;quot;35&amp;quot;, X&amp;quot;36&amp;quot;, X&amp;quot;37&amp;quot;, X&amp;quot;38&amp;quot;, X&amp;quot;39&amp;quot;,&lt;br /&gt;
       X&amp;quot;40&amp;quot;, X&amp;quot;41&amp;quot;, X&amp;quot;42&amp;quot;, X&amp;quot;43&amp;quot;, X&amp;quot;44&amp;quot;, X&amp;quot;45&amp;quot;, X&amp;quot;46&amp;quot;, X&amp;quot;47&amp;quot;, X&amp;quot;48&amp;quot;, X&amp;quot;49&amp;quot;,&lt;br /&gt;
       X&amp;quot;50&amp;quot;, X&amp;quot;51&amp;quot;, X&amp;quot;52&amp;quot;, X&amp;quot;53&amp;quot;, X&amp;quot;54&amp;quot;, X&amp;quot;55&amp;quot;, X&amp;quot;56&amp;quot;, X&amp;quot;57&amp;quot;, X&amp;quot;58&amp;quot;, X&amp;quot;59&amp;quot;,&lt;br /&gt;
       X&amp;quot;60&amp;quot;, X&amp;quot;61&amp;quot;, X&amp;quot;62&amp;quot;, X&amp;quot;63&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  BEGIN  -- behave&lt;br /&gt;
   conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
   bcd_o      &amp;lt;= C_BIN2_TO_BCD_TABLE(conv_input);&lt;br /&gt;
&lt;br /&gt;
  END behave2;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Maximum combinational path delay: 9.650ns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 44 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom__rom00007 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom__rom0000_f5_2 (Mrom__rom0000_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SELECT ==&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
 ARCHITECTURE behave3 OF ttl74185 IS&lt;br /&gt;
     SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
     TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
    BEGIN  -- behave&lt;br /&gt;
     conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
&lt;br /&gt;
     WITH conv_input SELECT&lt;br /&gt;
       bcd_o &amp;lt;=&lt;br /&gt;
        X&amp;quot;00&amp;quot; WHEN  0,  X&amp;quot;01&amp;quot; WHEN  1,  X&amp;quot;02&amp;quot; WHEN  2,  X&amp;quot;03&amp;quot; WHEN  3,  X&amp;quot;04&amp;quot; WHEN  4,&lt;br /&gt;
        X&amp;quot;05&amp;quot; WHEN  5,  X&amp;quot;06&amp;quot; WHEN  6,  X&amp;quot;07&amp;quot; WHEN  7,  X&amp;quot;08&amp;quot; WHEN  8,  X&amp;quot;09&amp;quot; WHEN  9, &lt;br /&gt;
        X&amp;quot;10&amp;quot; WHEN 10,  X&amp;quot;11&amp;quot; WHEN 11,  X&amp;quot;12&amp;quot; WHEN 12,  X&amp;quot;13&amp;quot; WHEN 13,  X&amp;quot;14&amp;quot; WHEN 14,&lt;br /&gt;
        X&amp;quot;15&amp;quot; WHEN 15,  X&amp;quot;16&amp;quot; WHEN 16,  X&amp;quot;17&amp;quot; WHEN 17,  X&amp;quot;18&amp;quot; WHEN 18,  X&amp;quot;19&amp;quot; WHEN 19, &lt;br /&gt;
        X&amp;quot;20&amp;quot; WHEN 20,  X&amp;quot;21&amp;quot; WHEN 21,  X&amp;quot;22&amp;quot; WHEN 22,  X&amp;quot;23&amp;quot; WHEN 23,  X&amp;quot;24&amp;quot; WHEN 24,&lt;br /&gt;
        X&amp;quot;25&amp;quot; WHEN 25,  X&amp;quot;26&amp;quot; WHEN 26,  X&amp;quot;27&amp;quot; WHEN 27,  X&amp;quot;28&amp;quot; WHEN 28,  X&amp;quot;29&amp;quot; WHEN 29, &lt;br /&gt;
        X&amp;quot;30&amp;quot; WHEN 30,  X&amp;quot;31&amp;quot; WHEN 31,  X&amp;quot;32&amp;quot; WHEN 32,  X&amp;quot;33&amp;quot; WHEN 33,  X&amp;quot;34&amp;quot; WHEN 34,&lt;br /&gt;
        X&amp;quot;35&amp;quot; WHEN 35,  X&amp;quot;36&amp;quot; WHEN 36,  X&amp;quot;37&amp;quot; WHEN 37,  X&amp;quot;38&amp;quot; WHEN 38,  X&amp;quot;39&amp;quot; WHEN 39, &lt;br /&gt;
        X&amp;quot;40&amp;quot; WHEN 40,  X&amp;quot;41&amp;quot; WHEN 41,  X&amp;quot;42&amp;quot; WHEN 42,  X&amp;quot;43&amp;quot; WHEN 43,  X&amp;quot;44&amp;quot; WHEN 44,&lt;br /&gt;
        X&amp;quot;45&amp;quot; WHEN 45,  X&amp;quot;46&amp;quot; WHEN 46,  X&amp;quot;47&amp;quot; WHEN 47,  X&amp;quot;48&amp;quot; WHEN 48,  X&amp;quot;49&amp;quot; WHEN 49, &lt;br /&gt;
        X&amp;quot;50&amp;quot; WHEN 50,  X&amp;quot;51&amp;quot; WHEN 51,  X&amp;quot;52&amp;quot; WHEN 52,  X&amp;quot;53&amp;quot; WHEN 53,  X&amp;quot;54&amp;quot; WHEN 54,&lt;br /&gt;
        X&amp;quot;55&amp;quot; WHEN 55,  X&amp;quot;56&amp;quot; WHEN 56,  X&amp;quot;57&amp;quot; WHEN 57,  X&amp;quot;58&amp;quot; WHEN 58,  X&amp;quot;59&amp;quot; WHEN 59, &lt;br /&gt;
        X&amp;quot;60&amp;quot; WHEN 60,  X&amp;quot;61&amp;quot; WHEN 61,  X&amp;quot;52&amp;quot; WHEN 62,  X&amp;quot;63&amp;quot; WHEN 63; &lt;br /&gt;
   END behave3;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
HDL Synthesis Report&lt;br /&gt;
&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
Device utilization summary:&lt;br /&gt;
---------------------------&lt;br /&gt;
&lt;br /&gt;
Selected Device : 3s50vq100-4 &lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
  Total number of paths / destination ports: 44 / 7&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom_bcd_o7 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom_bcd_o_f5_2 (Mrom_bcd_o_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CASE ==&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave4 OF ttl74185 IS&lt;br /&gt;
          SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
          TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (NATURAL RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
        BEGIN  -- behave&lt;br /&gt;
          conv_input &amp;lt;= to_INTEGER(UNSIGNED(binary_i));&lt;br /&gt;
&lt;br /&gt;
          PROCESS(conv_input)&lt;br /&gt;
          begin&lt;br /&gt;
           CASE conv_input IS&lt;br /&gt;
            WHEN 0   =&amp;gt; bcd_o &amp;lt;= X&amp;quot;00&amp;quot;;  WHEN  1 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;01&amp;quot;;  WHEN  2 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;02&amp;quot;;  WHEN  3 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;03&amp;quot;;&lt;br /&gt;
            WHEN 5   =&amp;gt; bcd_o &amp;lt;= X&amp;quot;05&amp;quot;;  WHEN  6 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;06&amp;quot;;  WHEN  7 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;07&amp;quot;;  WHEN  8 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;08&amp;quot;;&lt;br /&gt;
            WHEN 10  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;10&amp;quot;;  WHEN 11 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;11&amp;quot;;  WHEN 12 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;12&amp;quot;;  WHEN 13 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;13&amp;quot;;&lt;br /&gt;
            WHEN 15  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;15&amp;quot;;  WHEN 16 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;16&amp;quot;;  WHEN 17 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;17&amp;quot;;  WHEN 18 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;18&amp;quot;;&lt;br /&gt;
            WHEN 20  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;20&amp;quot;;  WHEN 21 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;21&amp;quot;;  WHEN 22 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;22&amp;quot;;  WHEN 23 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;23&amp;quot;;&lt;br /&gt;
            WHEN 25  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;25&amp;quot;;  WHEN 26 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;26&amp;quot;;  WHEN 27 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;27&amp;quot;;  WHEN 28 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;28&amp;quot;;&lt;br /&gt;
            WHEN 30  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;30&amp;quot;;  WHEN 31 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;31&amp;quot;;  WHEN 32 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;32&amp;quot;;  WHEN 33 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;33&amp;quot;;&lt;br /&gt;
            WHEN 35  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;35&amp;quot;;  WHEN 36 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;36&amp;quot;;  WHEN 37 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;37&amp;quot;;  WHEN 38 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;38&amp;quot;;&lt;br /&gt;
            WHEN 40  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;40&amp;quot;;  WHEN 41 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;41&amp;quot;;  WHEN 42 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;42&amp;quot;;  WHEN 43 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;43&amp;quot;;&lt;br /&gt;
            WHEN 45  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;45&amp;quot;;  WHEN 46 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;46&amp;quot;;  WHEN 47 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;47&amp;quot;;  WHEN 48 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;48&amp;quot;;&lt;br /&gt;
            WHEN 50  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;50&amp;quot;;  WHEN 51 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;51&amp;quot;;  WHEN 52 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;52&amp;quot;;  WHEN 53 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;53&amp;quot;;&lt;br /&gt;
            WHEN 55  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;55&amp;quot;;  WHEN 56 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;56&amp;quot;;  WHEN 57 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;57&amp;quot;;  WHEN 58 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;58&amp;quot;;&lt;br /&gt;
            WHEN 60  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;60&amp;quot;;  WHEN 61 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;61&amp;quot;;  WHEN 62 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;62&amp;quot;;  WHEN 63 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;63&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            WHEN 4  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;04&amp;quot;;&lt;br /&gt;
            WHEN 9  =&amp;gt; bcd_o &amp;lt;= X&amp;quot;09&amp;quot;;&lt;br /&gt;
            WHEN 14 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;14&amp;quot;;&lt;br /&gt;
            WHEN 19 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;19&amp;quot;;&lt;br /&gt;
            WHEN 24 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;24&amp;quot;;&lt;br /&gt;
            WHEN 29 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;29&amp;quot;;&lt;br /&gt;
            WHEN 34 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;34&amp;quot;;&lt;br /&gt;
            WHEN 39 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;39&amp;quot;;&lt;br /&gt;
            WHEN 44 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;44&amp;quot;;&lt;br /&gt;
            WHEN 49 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;49&amp;quot;;&lt;br /&gt;
            WHEN 54 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;54&amp;quot;;&lt;br /&gt;
            WHEN 59 =&amp;gt; bcd_o &amp;lt;= X&amp;quot;59&amp;quot;;&lt;br /&gt;
          END case;&lt;br /&gt;
        END process;&lt;br /&gt;
&lt;br /&gt;
        END behave4;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
Macro Statistics&lt;br /&gt;
# ROMs                                                 : 1&lt;br /&gt;
 64x8-bit ROM                                          : 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RTL Top Level Output File Name     : ttl74185.ngr&lt;br /&gt;
Top Level Output File Name         : ttl74185&lt;br /&gt;
Output Format                      : NGC&lt;br /&gt;
Optimization Goal                  : Area&lt;br /&gt;
Keep Hierarchy                     : NO&lt;br /&gt;
&lt;br /&gt;
Design Statistics&lt;br /&gt;
# IOs                              : 14&lt;br /&gt;
&lt;br /&gt;
Cell Usage :&lt;br /&gt;
# BELS                             : 15&lt;br /&gt;
#      GND                         : 1&lt;br /&gt;
#      LUT3                        : 1&lt;br /&gt;
#      LUT4                        : 9&lt;br /&gt;
#      MUXF5                       : 4&lt;br /&gt;
# IO Buffers                       : 14&lt;br /&gt;
#      IBUF                        : 6&lt;br /&gt;
#      OBUF                        : 8&lt;br /&gt;
&lt;br /&gt;
Selected Device : 3s50vq100-4 &lt;br /&gt;
&lt;br /&gt;
 Number of Slices:                       5  out of    768     0%  &lt;br /&gt;
 Number of 4 input LUTs:                10  out of   1536     0%  &lt;br /&gt;
 Number of IOs:                         14&lt;br /&gt;
 Number of bonded IOBs:                 14  out of     63    22%  &lt;br /&gt;
&lt;br /&gt;
All values displayed in nanoseconds (ns)&lt;br /&gt;
&lt;br /&gt;
Delay:               9.650ns (Levels of Logic = 4)&lt;br /&gt;
  Source:            binary_i&amp;lt;3&amp;gt; (PAD)&lt;br /&gt;
  Destination:       bcd_o&amp;lt;4&amp;gt; (PAD)&lt;br /&gt;
&lt;br /&gt;
  Data Path: binary_i&amp;lt;3&amp;gt; to bcd_o&amp;lt;4&amp;gt;&lt;br /&gt;
                                Gate     Net&lt;br /&gt;
    Cell:in-&amp;gt;out      fanout   Delay   Delay  Logical Name (Net Name)&lt;br /&gt;
    ----------------------------------------  ------------&lt;br /&gt;
     IBUF:I-&amp;gt;O            10   0.821   1.473  binary_i_3_IBUF (binary_i_3_IBUF)&lt;br /&gt;
     LUT4:I0-&amp;gt;O            1   0.551   0.000  Mrom_bcd_o7 (N11)&lt;br /&gt;
     MUXF5:I1-&amp;gt;O           1   0.360   0.801  Mrom_bcd_o_f5_2 (Mrom_bcd_o_f53)&lt;br /&gt;
     OBUF:I-&amp;gt;O                 5.644          bcd_o_4_OBUF (bcd_o&amp;lt;4&amp;gt;)&lt;br /&gt;
    ----------------------------------------&lt;br /&gt;
    Total                      9.650ns (7.376ns logic, 2.274ns route)&lt;br /&gt;
                                       (76.4% logic, 23.6% route)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Reset_f%C3%BCr_FPGA/CPLD&amp;diff=18491</id>
		<title>Reset für FPGA/CPLD</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Reset_f%C3%BCr_FPGA/CPLD&amp;diff=18491"/>
		<updated>2006-11-29T07:14:07Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: +forum thread +Kat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(Im Forum: http://www.mikrocontroller.net/topic/57704)&lt;br /&gt;
&lt;br /&gt;
Wie jede digitale Schaltung mit FF benötigt auch ein FPGA design einen definierten Anfangszustand, den resetzustand. Nach der Art,Verteilung und Auslöser kann der Reset unterschieden werden zu:&lt;br /&gt;
&lt;br /&gt;
*synchroner, Asynchroner Reset (FF mit synchronen oder asynchronen Set/Reset Eingängen)&lt;br /&gt;
*High oder Low-aktiver reset (Der Resetzustand wird mit einer &#039;1&#039; oder &#039;0&#039; eingeleitet. Der Reset ist nie Flankengesteuert (?).&lt;br /&gt;
*Reset nach PowerUp,Abschluss FPGA-Laden, stabiles Taktsignal, externer resetquelle oder Nutzer (Software) Auslösung.&lt;br /&gt;
* Verteilt über allgemeine Routing resourcen oder globales set/Reset Netzwerk&lt;br /&gt;
&lt;br /&gt;
Nach dem laden befindet sich der FPGA immer in einem definierten Zustand, alle Speicherelemente (FF,Schiebeketten,RAM) sind fest geladen. Es bedarf also keiner extra Resetschaltung. Die resetwerte beim Xilinx (VHDL,XST) durch den Initwert bei der Signal deklaration erreicht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
signal is_0_after_FPGA_config: std_logic := &#039;0&#039;;&lt;br /&gt;
signal is_1_after_FPGA_config: std_logic := &#039;1&#039;;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Der Resetwert für Speicher kann in VHDL, im ucf oder durch Extra Knfigurationfiles (coregen,EDK) definiert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Folgend ein Beispiel einer interen Resetschaltung auch wenn dergleichen heute im FPGA Bereich kaum noch nötig ist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
--xilinx spartan3&lt;br /&gt;
--reset  using a 16bit shift register&lt;br /&gt;
&lt;br /&gt;
gen_dcm_srl : SRL16E&lt;br /&gt;
&lt;br /&gt;
 GENERIC MAP (INIT =&amp;gt; X&amp;quot;FFFF&amp;quot;)   -- a  16 clk long &#039;1&#039; -pulse&lt;br /&gt;
 PORT MAP (&lt;br /&gt;
 Q =&amp;gt; rst_dcm_geseco,    --the reset signal for the rest of the design        &lt;br /&gt;
 A0 =&amp;gt; &#039;1&#039;,              --determines length Shiftreg (15+1 bit)  &lt;br /&gt;
 A1 =&amp;gt; &#039;1&#039;,&lt;br /&gt;
 A2 =&amp;gt; &#039;1&#039;,&lt;br /&gt;
 A3 =&amp;gt; &#039;1&#039;,&lt;br /&gt;
 CE =&amp;gt; Locked_DCM_MBSYS, --release reset pulse (here when cklock is stable) &lt;br /&gt;
 CLK =&amp;gt; CLK96,           --its a synchronous reset   &lt;br /&gt;
 D =&amp;gt; &#039;0&#039;);              -- non-reset is &#039;0&#039; (high active reset)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Reset_f%C3%BCr_FPGA/CPLD&amp;diff=18490</id>
		<title>Reset für FPGA/CPLD</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Reset_f%C3%BCr_FPGA/CPLD&amp;diff=18490"/>
		<updated>2006-11-29T07:10:45Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: Erstellung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wie jede digitale Schaltung mit FF benötigt auch ein FPGA design einen definierten Anfangszustand, den resetzustand. Nach der Art,Verteilung und Auslöser kann der Reset unterschieden werden zu:&lt;br /&gt;
&lt;br /&gt;
*synchroner, Asynchroner Reset (FF mit synchronen oder asynchronen Set/Reset Eingängen)&lt;br /&gt;
*High oder Low-aktiver reset (Der Resetzustand wird mit einer &#039;1&#039; oder &#039;0&#039; eingeleitet. Der Reset ist nie Flankengesteuert (?).&lt;br /&gt;
*Reset nach PowerUp,Abschluss FPGA-Laden, stabiles Taktsignal, externer resetquelle oder Nutzer (Software) Auslösung.&lt;br /&gt;
* Verteilt über allgemeine Routing resourcen oder globales set/Reset Netzwerk&lt;br /&gt;
&lt;br /&gt;
Nach dem laden befindet sich der FPGA immer in einem definierten Zustand, alle Speicherelemente (FF,Schiebeketten,RAM) sind fest geladen. Es bedarf also keiner extra Resetschaltung. Die resetwerte beim Xilinx (VHDL,XST) durch den Initwert bei der Signal deklaration erreicht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
signal is_0_after_FPGA_config: std_logic := &#039;0&#039;;&lt;br /&gt;
signal is_1_after_FPGA_config: std_logic := &#039;1&#039;;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Der Resetwert für Speicher kann in VHDL, im ucf oder durch Extra Knfigurationfiles (coregen,EDK) definiert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Folgend ein Beispiel einer interen Resetschaltung auch wenn dergleichen heute im FPGA Bereich kaum noch nötig ist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
--xilinx spartan3&lt;br /&gt;
--reset  using a 16bit shift register&lt;br /&gt;
&lt;br /&gt;
gen_dcm_srl : SRL16E&lt;br /&gt;
&lt;br /&gt;
 GENERIC MAP (INIT =&amp;gt; X&amp;quot;FFFF&amp;quot;)   -- a  16 clk long &#039;1&#039; -pulse&lt;br /&gt;
 PORT MAP (&lt;br /&gt;
 Q =&amp;gt; rst_dcm_geseco,    --the reset signal for the rest of the design        &lt;br /&gt;
 A0 =&amp;gt; &#039;1&#039;,              --determines length Shiftreg (15+1 bit)  &lt;br /&gt;
 A1 =&amp;gt; &#039;1&#039;,&lt;br /&gt;
 A2 =&amp;gt; &#039;1&#039;,&lt;br /&gt;
 A3 =&amp;gt; &#039;1&#039;,&lt;br /&gt;
 CE =&amp;gt; Locked_DCM_MBSYS, --release reset pulse (here when cklock is stable) &lt;br /&gt;
 CLK =&amp;gt; CLK96,           --its a synchronous reset   &lt;br /&gt;
 D =&amp;gt; &#039;0&#039;);              -- non-reset is &#039;0&#039; (high active reset)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=18489</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=18489"/>
		<updated>2006-11-29T06:41:44Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Siehe auch */ +link&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;
Ein FPGA besteht, ähnlich wie ein [[CPLD]], aus vielen Logikelementen (hauptsächlich Flip-Flops (FF) und 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. Eine LUT kann eine beliebige kombinatorische Funktion (NAND, XOR, AND, Multiplexer etc.) aus den Eingangssignalen realisieren, wobei die Zahl vom FPGA abhängig ist und meist zwischen 4 und 6 liegt. Für Funktionen, die mehr Eingänge erfordern, als eine einzige LUT besitzt (hohes Fan-In), werden mehrere LUTs direkt miteinander verschaltet. Das Verhältnis zwischen der Anzahl von LUTs und derjenigen der FF ist meist 1:1. Aktuelle FPGAs bestehen aus bis zu einigen zehntausend Logikelementen.&lt;br /&gt;
&lt;br /&gt;
Die obigen logischen Schalter, welche die Funktion definieren, sind in den meisten FPGAs durch SRAM-Speicherzellen realisiert, in welche beim Bootprozess passend geladen werden. Das Laden dieser Konfigurationsdaten bzw. Verknüpfungsregeln geschieht dabei in der Regel aus einem speziellen Flash-ROM-Baustein heraus. Es kann aber auch ein Mikrocontroller benutzt werden. Die meisten (SRAM-basierenden) FPGAs bieten daher für diesen Konfigurationsvorgang mehrere Modi (seriell, parallel, Master/Slave) an. Da die SRAM-Zellen ihren Inhalt beim Abschalten der Versorgungsspannung verlieren, muss ein SRAM-basierter FPGA bei jedem Einschalten neukonfiguriert werden. Daher benötigt ein solcher FPGA einige Millisekunden bis zur Betriebsbereitschaft.&lt;br /&gt;
&lt;br /&gt;
Eine FPGA-Familie besteht aus Typen mit unterschiedlicher Anzahl und Komplexität von Logikzellen. So enthält ein Spartan3-1000 ca. 2,5 mal mehr Logik (FF, LUTs) als ein Spartan3-400.  &lt;br /&gt;
&lt;br /&gt;
FPGAs mit nichtflüchtigem Speicher basieren auf EEPROM-, Flash- (einige Familien von Lattice) oder AntiFuse- (Actel) Technologie. Die AntiFuse FPGAs sind einmalig programmierbar.&lt;br /&gt;
&lt;br /&gt;
=== I/O Anschlüsse ===&lt;br /&gt;
FPGAs als universal einsetzbare Digital-ICs unterstützen eine Vielzahl von Signalstandards. Üblich sind verschiedene TTL-Pegel (5V, 3,3V, 2,5V), differentielle Signalstandards (LVDS, GTL) und im Hochpreisbereich serielle Standards bis zu 1 Gbps. Oftmals sind weitere Eigenschaften wie Treiberstärke und Flankensteilheit für jeden benutzerdefinierbaren Anschluss (User-IO) einstellbar. Meist sind die Pins in Bänke 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 (H-Pegel).&lt;br /&gt;
&lt;br /&gt;
Ebenso können FPGA-interne Pull-Up und Pull-Down-Widerstände zugeschaltet werden, Terminierung wird ebenfalls unterstützt.&lt;br /&gt;
&lt;br /&gt;
Das I/O Verhalten wird mit den IO-Constraints in einem setting-File (Xilinx *.ucf, Altera *.acf) festgelegt.&lt;br /&gt;
&lt;br /&gt;
Einige Pins übernehmen zeitweilig oder allgemein besondere, nicht vom Anwender abschaltbare Funktionen. Darunter zählen die Pins zum Einlesen der Konfigurationsdaten. Oft sind einige wenige Pins (2 - 8) zum Einspeisen des Taktes für das Design reserviert.&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 BGA und QFP Gehäuse (bis ca. 240(?) Pins) angeboten.&lt;br /&gt;
&lt;br /&gt;
=== Komplexere Blöcke (Multiplizierer, RAM, PLL/DLL) ===&lt;br /&gt;
Neben den einfachen Flip-Flops 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.B. in der Signalverarbeitung, enthalten einige FPGAs Multiplizierer 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 RAM-Bereich integriert, der sich in vielfältiger Weise ansprechen lässt. So können damit Single- oder Dualport-RAMs mit verschiedener Bitbreite erzeugt werden. Üblich sind mehrere (4 - 30) kleinere Dualport RAM-Blöcke von 4 - 16 kbit. Einge Familien besitzen einen grösseren internen RAM, andere spezielle FIFO-Blöcke.&lt;br /&gt;
&lt;br /&gt;
Zur Generierung spezieller Takte sind PLL-Komponenten (phase locked loop) auf dem FPGA integriert. Einige Hersteller setzen mit dem selben Ziel DLL-Blöcke (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 DDR-RAMs oder die Kompensation von Laufzeitunterschieden zwischen Takt und mit diesem getaktetem 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;
Immer beliebter wird es, einen FPGA mit einem oder mehreren Prozessoren (z.B. [[AVR]] bei Atmels FPSLIC oder PowerPC bei Xilinx&#039; Virtex-4) auf einem IC zu integrieren, was neben der Platzeinsparung eine große Flexibiliät beim Lösen komplexer Aufgaben bietet (der FPGA kann z.B. spezielle IO-Funktionen für den Prozessorkern bereitstellen). Viele Hersteller bieten auch einen speziell für ihren jeweiligen FPGA optimierten &#039;&#039;Softcore&#039;&#039; an, z.B. Microblaze von Xilinx, und Nios von Altera. Als Programmspeicher werden die FPGA-internen RAM-Blöcke oder externe Speicher-ICs (SDRAM, SRAM) genutzt.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Soft-CPUs:&lt;br /&gt;
&lt;br /&gt;
* Altera NIOS (32 bit, bis zu ca. 125 MHz)&lt;br /&gt;
* Xilinx Picoblaze (8 bit controller, bis ca. 88 - 200 MHz, nur Assembler, nur internen Programmspeicher)&lt;br /&gt;
* Xilinx Microblaze (32 bit, bis zu ca. 100MHz)&lt;br /&gt;
* [http://www.gaisler.com/leonmain.html LEON2, LEON3] (32 SPARC V8 kompatibel, GPL)&lt;br /&gt;
* Plasma MLITE (MIPS kompatibel, GPL) &lt;br /&gt;
* [http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/index.cfm LatticeMico 32] (32 Bit, GCC Port vorhanden, Verilog, frei)&lt;br /&gt;
&lt;br /&gt;
Die Taktfrequenzen sind stark vom FPGA-Typ und der FPGA-Auslastung (freie Logikressourcen) abhängig.&lt;br /&gt;
&lt;br /&gt;
Die Hersteller stellen dazu eigene Compiler/Tools für die Programmierung in C oder Assembler zur Verfügung, bei Xilinx das Embedded Design Kit EDK. Diese Kits sind nicht immer in den kostenlosen Entwicklungstools enthalten und müssen getrennt erworben werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil der Integration einer soft CPU besteht dabei im Wesentlichen aus der Möglichkeit, vorhandene Software und Betriebssysteme nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Geschwindigkeit&amp;quot; ==&lt;br /&gt;
Die &amp;quot;Geschwindigkeit&amp;quot; eines FPGAs ist vom Speedgrade des ICs und vor allem vom Design abhängig. Die maximale Taktfrequenz lässt sich ohne detaillierte Kenntnis des Designs schwer abschätzen, möglich sind 200 - 250 MHz für die reinen Logikelemente. Je nach der Zahl und Komlexität der je Takt durchzuführenden Oprationen ergeben sich typischerweise Systemdatenfrequenzen von meist 10-100 MHz. Maßgeblich ist, in wieweit das Design auf Fläche bzw. Geschwindigkeit designed und vom Tool synthetisiert wurde: Durch das Einbringen von zusätzlichen Registerstufen lassen sich z.B. zeitkritische Pfade entschärfen, sodass die Frequenz des Chips angehoben werden kann und der effektive Datendurchsatz trotz teilweise mehr CLKs zwischen Ein- und Ausgängen erhöht wird. Dieser lässt sich darüber hinaus durch die Nutzung paralleler Architekturen verbessern.&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 Spartan3 (Xilinx) und Cyclone II (Altera) sind aufgrund technologischer Randbedingungen etwa 10-20% weniger Taktgeschwindigkeit bei gleichem Design zu erwarten, bzw muss mit mehr Verbrauch an Logikelementen und Taktzyklen gerechnet werden (weniger Routingreserven, geringere Zahl von LUT-Eingängen, weniger hard-ressourcen). &lt;br /&gt;
&lt;br /&gt;
Identische Chips werden oft in 2 oder mehr Geschwindigkeitsklassen angeboten, die sich meist durch Bauteilselektion ergeben. Grob kann man ca. 5 - 10% höhere Taktung zwischen zwei Speedgrades erwarten.&lt;br /&gt;
&lt;br /&gt;
== Hersteller ==&lt;br /&gt;
Die größten Hersteller von FPGAs sind Xilinx und Altera. Weitere Hersteller sind Lattice, Actel und Atmel.&lt;br /&gt;
&lt;br /&gt;
* [http://www.xilinx.com Xilinx]&lt;br /&gt;
* [http://www.altera.com Altera]&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.B. VHDL &amp;quot;gefüttert&amp;quot; werden. Die Hardwarebeschreibung in VHDL gelingt ihrerseits z.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 ==&lt;br /&gt;
&lt;br /&gt;
=== Spartan3-Board ===&lt;br /&gt;
* Spartan-3 XC3S200 FPGA (optional XC3S400 oder XC3S1000)&lt;br /&gt;
* VGA, PS/2, RS232, 1 MiB SRAM, ...&lt;br /&gt;
* $99 (XC3S200) bis $149 (XC3S1000)&lt;br /&gt;
* http://www.digilentinc.com/Products/Detail.cfm?Nav1=Products&amp;amp;Nav2=Programmable&amp;amp;Prod=S3BOARD&lt;br /&gt;
* [http://www.derepas.com/fabrice/hard/ Kleines Tutorial zum Spartan3 Starterkit]&lt;br /&gt;
&lt;br /&gt;
=== Spartan3e-Starter Kit ===&lt;br /&gt;
* Spartan-3e FPGA XC3S500E&lt;br /&gt;
* CoolRunner-II PDL XC2C64A-5VQ44C&lt;br /&gt;
* Platform-Flash, 128 Mbit Parallel Flash, 16 Mbit SPI Flash&lt;br /&gt;
* 64 MByte DDR SDRAM&lt;br /&gt;
* VGA (3bit on/off = 8 Farben), PS/2, 2x RS232, RJ45&lt;br /&gt;
* 16x2-Display&lt;br /&gt;
* 1 Drehencoder, 8 LEDs, 4 Taster, 4 Schalter&lt;br /&gt;
* Programmierung über USB&lt;br /&gt;
* ca 179 EUR bei [http://shop.trenz-electronic.de/catalog/default.php?cPath=1_36 trenz-electronic.de] oder [http://cgi.segor.de/user-cgi-bin/sidestep2.pl?foto=1&amp;amp;Q=spar3e&amp;amp;M=1 Segor]&lt;br /&gt;
* Weitere Infos unter http://www.xilinx.com/s3estarter&lt;br /&gt;
&lt;br /&gt;
=== Terasic TREX C1 Multimedia Development Kit - US$149 ===&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;
&lt;br /&gt;
=== Altera DE2 - Development and Education Board - US$495 ===&lt;br /&gt;
* Altera Cyclone II 2C35 FPGA with 35000 LEs&lt;br /&gt;
* Altera Serial Configuration devices (EPCS16) for Cyclone II 2C35&lt;br /&gt;
* USB Blaster built in on board for programming and user API controlling&lt;br /&gt;
* 8 MiB SDRAM, 4 MiB Flash Memory, 512KiB SRAM&lt;br /&gt;
* SD Card Socket, RS-232, Ethernet, 10-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* Many examples with source code (including TV Box, SD Music Player)&lt;br /&gt;
* [http://wwwab.fh-wedel.de/bause/handouts/vhdl/VhdlEinfuehrung.pdf Kleines aber nettes Tutorial zum Altera DE2 Dev. Board]&lt;br /&gt;
&lt;br /&gt;
=== LiveDesign Evaluation Board von Altium - 99 EUR ===&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Xilinx-Version auch direkt mit ISE Webpack nutzbar&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;
=== NanoBoard-NB1 von Altium - 995 EUR ===&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;
&lt;br /&gt;
=== Hpe Mini AC II - Altera Cyclone board von Gleichmann - €350,- ===&lt;br /&gt;
* Altera Cyclone II EP2C35 FPGA (speed grade 6)&lt;br /&gt;
* Mit reprogrammierbarem Flash zur FPGA configuration&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)&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, IDE, SnapGear Linux&lt;br /&gt;
&lt;br /&gt;
=== Raggedstone 1 - Spartan-3 Development Board - ca. 88€ ===&lt;br /&gt;
* Spartan-3 FPGA XC3S400, FG456-Package&lt;br /&gt;
* 32 bit, 33 MHz, 3.3/5V PCI interface&lt;br /&gt;
* 4Mbit Flash Memory&lt;br /&gt;
* 16KBit serial EEprom&lt;br /&gt;
* LM75 Temperature Sensor&lt;br /&gt;
* viele DIL-Header für eigene Erweiterungen, verschiedene werden auch durch Hersteller angeboten&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;
* Auch mit XC3S1500 lieferbar&lt;br /&gt;
* Webseite: http://www.enterpoint.co.uk/moelbryn/raggedstone1.html&lt;br /&gt;
&lt;br /&gt;
=== Xilinx Development Boards von Nu Horizons ===&lt;br /&gt;
&lt;br /&gt;
http://www.nuhorizons.com/devboards/index.asp&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Hardwarebeschreibungssprachen]]&lt;br /&gt;
* [[Reset für FPGA/CPLD]]&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;
&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18486</id>
		<title>TTL74185</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18486"/>
		<updated>2006-11-28T21:42:33Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: +ROM Variante&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nachbau eines Standard TTL, des 74185 (6 bit binary zu BCD). Siehe Forum: http://www.mikrocontroller.net/topic/55594 .&lt;br /&gt;
&lt;br /&gt;
Code ist nicht simuliert, läuft aber einwandfrei durch Synthese. &lt;br /&gt;
&lt;br /&gt;
Wandelt man Eingang zu integer wird der code besser lesbar. &lt;br /&gt;
&lt;br /&gt;
Dann werden hier zwei Varianten gezeigt, zuerst die mit logischen Gleichungen für die Ausgänge.&lt;br /&gt;
Um es dem Synthese-Tool leichter zu machen, wird das untere Eingangsbit nicht mit ausgewertet.&lt;br /&gt;
Durch die select Anweisung beschreibt man eine Wahrheitstabelle die einfach in  LUTs und Multiplexer umgewandelt wird (Xilinx). Bei Altera mit den 6 Input LUTs spart man sich die Multiplexer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
LIBRARY ieee;&lt;br /&gt;
USE ieee.std_logic_1164.ALL;&lt;br /&gt;
USE ieee.numeric_std.ALL;&lt;br /&gt;
&lt;br /&gt;
--vhdl description of 74185&lt;br /&gt;
--6bit binary to 2 digits BCD decoder&lt;br /&gt;
&lt;br /&gt;
ENTITY ttl74185 IS&lt;br /&gt;
  PORT (&lt;br /&gt;
    binary_i : IN  STD_LOGIC_VECTOR(5 DOWNTO 0);&lt;br /&gt;
    bcd_o    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));&lt;br /&gt;
END ttl74185;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF ttl74185 IS&lt;br /&gt;
  --integers are better readable for humans&lt;br /&gt;
  SIGNAL conv_input : integer RANGE 2**5-1 DOWNTO 0;&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
 conv_input &amp;lt;= to_integer(unsigned(binary_i(5 DOWNTO 1)));&lt;br /&gt;
  &lt;br /&gt;
  bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(1) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    1,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  6, &#039;1&#039; WHEN  8,&lt;br /&gt;
    &#039;1&#039; WHEN   11,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 16, &#039;1&#039; WHEN 18,&lt;br /&gt;
    &#039;1&#039; WHEN   21,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 26, &#039;1&#039; WHEN 28,&lt;br /&gt;
    &#039;1&#039; WHEN   31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(2) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    2,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN 8,  &lt;br /&gt;
    &#039;1&#039; WHEN   12,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &lt;br /&gt;
    &#039;1&#039; WHEN   22,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
              &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(3) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    4,&#039;1&#039; WHEN  9, &#039;1&#039; WHEN 14, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN   24,&#039;1&#039; WHEN 29,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(4) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN  5,&#039;1&#039; WHEN  6, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN  8, &#039;1&#039; WHEN  9,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
 WITH conv_input SELECT&lt;br /&gt;
    bcd_o(5) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 10,&#039;1&#039; WHEN 11, &#039;1&#039; WHEN 12, &#039;1&#039; WHEN 13, &#039;1&#039; WHEN 14,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
 &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(6) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 20,&#039;1&#039; WHEN 21, &#039;1&#039; WHEN 22, &#039;1&#039; WHEN 23, &#039;1&#039; WHEN 24,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
   &lt;br /&gt;
   bcd_o(7) &amp;lt;= &#039;0&#039;;&lt;br /&gt;
&lt;br /&gt;
  END behave;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt eine zweite Variante als ROM-Feld. Diese ist im Xilinx FPGA größer (5 statt 4 slices). Und ungünstiger im Routing die die Signale auf einen Punkt (ROM) und dann wieder von diesem weg geführt werden. Aber dafür auf den ersten Blick verständlich, besonders wenn man den Ausgangsvektor in hex schreibt. Das verstehen auch die Tools besser, diese Variante läuft schneller durch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
ARCHITECTURE behave2 OF ttl74185 IS&lt;br /&gt;
&lt;br /&gt;
    SIGNAL conv_input : INTEGER RANGE 2**6-1 DOWNTO 0;&lt;br /&gt;
    TYPE T_BIN2_TO_BCD_TABLE IS ARRAY (natural RANGE &amp;lt;&amp;gt;) OF STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
      CONSTANT C_BIN2_TO_BCD_TABLE  : T_BIN2_TO_BCD_TABLE(0 TO 2**6 - 1) :=&lt;br /&gt;
      (X&amp;quot;00&amp;quot;, X&amp;quot;01&amp;quot;, X&amp;quot;02&amp;quot;, X&amp;quot;03&amp;quot;, X&amp;quot;04&amp;quot;, X&amp;quot;05&amp;quot;, X&amp;quot;06&amp;quot;, X&amp;quot;07&amp;quot;, X&amp;quot;08&amp;quot;, X&amp;quot;09&amp;quot;,&lt;br /&gt;
       X&amp;quot;10&amp;quot;, X&amp;quot;11&amp;quot;, X&amp;quot;12&amp;quot;, X&amp;quot;13&amp;quot;, X&amp;quot;14&amp;quot;, X&amp;quot;15&amp;quot;, X&amp;quot;16&amp;quot;, X&amp;quot;17&amp;quot;, X&amp;quot;18&amp;quot;, X&amp;quot;19&amp;quot;,&lt;br /&gt;
       X&amp;quot;20&amp;quot;, X&amp;quot;21&amp;quot;, X&amp;quot;22&amp;quot;, X&amp;quot;23&amp;quot;, X&amp;quot;24&amp;quot;, X&amp;quot;25&amp;quot;, X&amp;quot;26&amp;quot;, X&amp;quot;27&amp;quot;, X&amp;quot;28&amp;quot;, X&amp;quot;29&amp;quot;,&lt;br /&gt;
       X&amp;quot;30&amp;quot;, X&amp;quot;31&amp;quot;, X&amp;quot;32&amp;quot;, X&amp;quot;33&amp;quot;, X&amp;quot;34&amp;quot;, X&amp;quot;35&amp;quot;, X&amp;quot;36&amp;quot;, X&amp;quot;37&amp;quot;, X&amp;quot;38&amp;quot;, X&amp;quot;39&amp;quot;,&lt;br /&gt;
       X&amp;quot;40&amp;quot;, X&amp;quot;41&amp;quot;, X&amp;quot;42&amp;quot;, X&amp;quot;43&amp;quot;, X&amp;quot;44&amp;quot;, X&amp;quot;45&amp;quot;, X&amp;quot;46&amp;quot;, X&amp;quot;47&amp;quot;, X&amp;quot;48&amp;quot;, X&amp;quot;49&amp;quot;,&lt;br /&gt;
       X&amp;quot;50&amp;quot;, X&amp;quot;51&amp;quot;, X&amp;quot;52&amp;quot;, X&amp;quot;53&amp;quot;, X&amp;quot;54&amp;quot;, X&amp;quot;55&amp;quot;, X&amp;quot;56&amp;quot;, X&amp;quot;57&amp;quot;, X&amp;quot;58&amp;quot;, X&amp;quot;59&amp;quot;,&lt;br /&gt;
       X&amp;quot;60&amp;quot;, X&amp;quot;61&amp;quot;, X&amp;quot;62&amp;quot;, X&amp;quot;63&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  BEGIN  -- behave&lt;br /&gt;
   conv_input &amp;lt;= to_INTEGER(unsigned(binary_i));&lt;br /&gt;
   bcd_o      &amp;lt;= C_BIN2_TO_BCD_TABLE(conv_input);&lt;br /&gt;
&lt;br /&gt;
  END behave2;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18439</id>
		<title>TTL74185</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18439"/>
		<updated>2006-11-27T06:22:08Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: +cat -typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nachbau eines Standard TTL, des 74185 (6 bit binary zu BCD). Siehe Forum: http://www.mikrocontroller.net/topic/55594 .&lt;br /&gt;
&lt;br /&gt;
Code ist nicht simuliert, läuft aber einwandfrei durch Synthese. &lt;br /&gt;
&lt;br /&gt;
Wandelt man Eingang zu integer wird der code besser lesbar. Um es dem Synthese-Tool leichter zu machen, wird das untere Eingangsbit nicht mit ausgewertet.&lt;br /&gt;
Durch die select Anweisung beschreibt man eine Wahrheitstabelle die einfach in  LUTs und Multiplexer umgewandelt wird (Xilinx). Bei Altera mit den 6 Input LUTs spart man sich die Multiplexer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
LIBRARY ieee;&lt;br /&gt;
USE ieee.std_logic_1164.ALL;&lt;br /&gt;
USE ieee.numeric_std.ALL;&lt;br /&gt;
&lt;br /&gt;
--vhdl description of 74185&lt;br /&gt;
--6bit binary to 2 digits BCD decoder&lt;br /&gt;
&lt;br /&gt;
ENTITY ttl74185 IS&lt;br /&gt;
  PORT (&lt;br /&gt;
    binary_i : IN  STD_LOGIC_VECTOR(5 DOWNTO 0);&lt;br /&gt;
    bcd_o    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));&lt;br /&gt;
END ttl74185;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF ttl74185 IS&lt;br /&gt;
  --integers are better readable for humans&lt;br /&gt;
  SIGNAL conv_input : integer RANGE 2**5-1 DOWNTO 0;&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
 conv_input &amp;lt;= to_integer(unsigned(binary_i(5 DOWNTO 1)));&lt;br /&gt;
  &lt;br /&gt;
  bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(1) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    1,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  6, &#039;1&#039; WHEN  8,&lt;br /&gt;
    &#039;1&#039; WHEN   11,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 16, &#039;1&#039; WHEN 18,&lt;br /&gt;
    &#039;1&#039; WHEN   21,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 26, &#039;1&#039; WHEN 28,&lt;br /&gt;
    &#039;1&#039; WHEN   31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(2) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    2,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN 8,  &lt;br /&gt;
    &#039;1&#039; WHEN   12,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &lt;br /&gt;
    &#039;1&#039; WHEN   22,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
              &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(3) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    4,&#039;1&#039; WHEN  9, &#039;1&#039; WHEN 14, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN   24,&#039;1&#039; WHEN 29,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(4) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN  5,&#039;1&#039; WHEN  6, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN  8, &#039;1&#039; WHEN  9,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
 WITH conv_input SELECT&lt;br /&gt;
    bcd_o(5) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 10,&#039;1&#039; WHEN 11, &#039;1&#039; WHEN 12, &#039;1&#039; WHEN 13, &#039;1&#039; WHEN 14,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
 &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(6) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 20,&#039;1&#039; WHEN 21, &#039;1&#039; WHEN 22, &#039;1&#039; WHEN 23, &#039;1&#039; WHEN 24,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
   &lt;br /&gt;
   bcd_o(7) &amp;lt;= &#039;0&#039;;&lt;br /&gt;
&lt;br /&gt;
  END behave;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18438</id>
		<title>TTL74185</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18438"/>
		<updated>2006-11-27T05:57:34Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: fix: bcd_o(1)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nachbau eines Standard TTL, des 74185 (6 bit binary zu BCD). Siehe thread: http://www.mikrocontroller.net/topic/55594 .&lt;br /&gt;
&lt;br /&gt;
Code ist nicht simuliert, läuft aber einwandfrei durch Synthese. &lt;br /&gt;
&lt;br /&gt;
Wandelt man Eingang zu integer wird der code besser lesbar. Um es dem Synthese Tool leichter zu machen, wird das untere Eingangsbit nicht mit ausgewertet.&lt;br /&gt;
Durch die select anweisung beschreibt man eine Wahrheitstabelle die einfach in  LUTs und Multiplexer umgewandelt wird (Xilinx). Bei Altera mit den 6 Input LUTs spart man sich die Multiplexer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
LIBRARY ieee;&lt;br /&gt;
USE ieee.std_logic_1164.ALL;&lt;br /&gt;
USE ieee.numeric_std.ALL;&lt;br /&gt;
&lt;br /&gt;
--vhdl description of 74185&lt;br /&gt;
--6bit binary to 2 digits BCD decoder&lt;br /&gt;
&lt;br /&gt;
ENTITY ttl74185 IS&lt;br /&gt;
  PORT (&lt;br /&gt;
    binary_i : IN  STD_LOGIC_VECTOR(5 DOWNTO 0);&lt;br /&gt;
    bcd_o    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));&lt;br /&gt;
END ttl74185;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF ttl74185 IS&lt;br /&gt;
  --integers are better readable for humans&lt;br /&gt;
  SIGNAL conv_input : integer RANGE 2**5-1 DOWNTO 0;&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
 conv_input &amp;lt;= to_integer(unsigned(binary_i(5 DOWNTO 1)));&lt;br /&gt;
  &lt;br /&gt;
  bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(1) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    1,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  6, &#039;1&#039; WHEN  8,&lt;br /&gt;
    &#039;1&#039; WHEN   11,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 16, &#039;1&#039; WHEN 18,&lt;br /&gt;
    &#039;1&#039; WHEN   21,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 26, &#039;1&#039; WHEN 28,&lt;br /&gt;
    &#039;1&#039; WHEN   31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(2) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    2,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN 8,  &lt;br /&gt;
    &#039;1&#039; WHEN   12,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &lt;br /&gt;
    &#039;1&#039; WHEN   22,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
              &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(3) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    4,&#039;1&#039; WHEN  9, &#039;1&#039; WHEN 14, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN   24,&#039;1&#039; WHEN 29,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(4) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN  5,&#039;1&#039; WHEN  6, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN  8, &#039;1&#039; WHEN  9,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
 WITH conv_input SELECT&lt;br /&gt;
    bcd_o(5) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 10,&#039;1&#039; WHEN 11, &#039;1&#039; WHEN 12, &#039;1&#039; WHEN 13, &#039;1&#039; WHEN 14,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
 &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(6) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 20,&#039;1&#039; WHEN 21, &#039;1&#039; WHEN 22, &#039;1&#039; WHEN 23, &#039;1&#039; WHEN 24,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
   &lt;br /&gt;
   bcd_o(7) &amp;lt;= &#039;0&#039;;&lt;br /&gt;
&lt;br /&gt;
  END behave;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18428</id>
		<title>TTL74185</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TTL74185&amp;diff=18428"/>
		<updated>2006-11-26T20:57:28Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: erstellung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nachbau eines Standard TTL, des 74185 (6 bit binary zu BCD). Siehe thread: http://www.mikrocontroller.net/topic/55594 .&lt;br /&gt;
&lt;br /&gt;
Code ist nicht simuliert, läuft aber einwandfrei durch Synthese. &lt;br /&gt;
&lt;br /&gt;
Wandelt man Eingang zu integer wird der code besser lesbar. Um es dem Synthese Tool leichter zu machen, wird das untere Eingangsbit nicht mit ausgewertet.&lt;br /&gt;
Durch die select anweisung beschreibt man eine Wahrheitstabelle die einfach in  LUTs und Multiplexer umgewandelt wird (Xilinx). Bei Altera mit den 6 Input LUTs spart man sich die Multiplexer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vhdl&amp;gt;&lt;br /&gt;
LIBRARY ieee;&lt;br /&gt;
USE ieee.std_logic_1164.ALL;&lt;br /&gt;
USE ieee.numeric_std.ALL;&lt;br /&gt;
&lt;br /&gt;
--vhdl description of 74185&lt;br /&gt;
--6bit binary to 2 digits BCD decoder&lt;br /&gt;
&lt;br /&gt;
ENTITY ttl74185 IS&lt;br /&gt;
  PORT (&lt;br /&gt;
    binary_i : IN  STD_LOGIC_VECTOR(5 DOWNTO 0);&lt;br /&gt;
    bcd_o    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));&lt;br /&gt;
END ttl74185;&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE behave OF ttl74185 IS&lt;br /&gt;
  --integers are better readable for humans&lt;br /&gt;
  SIGNAL conv_input : integer RANGE 2**5-1 DOWNTO 0;&lt;br /&gt;
  &lt;br /&gt;
BEGIN  -- behave&lt;br /&gt;
 conv_input &amp;lt;= to_integer(unsigned(binary_i(5 DOWNTO 1)));&lt;br /&gt;
  &lt;br /&gt;
  bcd_o(0) &amp;lt;= binary_i(0);&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(1) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    1,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  5, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN  9,&lt;br /&gt;
    &#039;1&#039; WHEN   11,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 15, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 19,&lt;br /&gt;
    &#039;1&#039; WHEN   21,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 25, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 29,&lt;br /&gt;
    &#039;1&#039; WHEN   31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(2) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    2,&#039;1&#039; WHEN  3, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN 8,  &lt;br /&gt;
    &#039;1&#039; WHEN   12,&#039;1&#039; WHEN 13, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &lt;br /&gt;
    &#039;1&#039; WHEN   22,&#039;1&#039; WHEN 23, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
              &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(3) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN    4,&#039;1&#039; WHEN  9, &#039;1&#039; WHEN 14, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN   24,&#039;1&#039; WHEN 29,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(4) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN  5,&#039;1&#039; WHEN  6, &#039;1&#039; WHEN  7, &#039;1&#039; WHEN  8, &#039;1&#039; WHEN  9,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
&lt;br /&gt;
 WITH conv_input SELECT&lt;br /&gt;
    bcd_o(5) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 10,&#039;1&#039; WHEN 11, &#039;1&#039; WHEN 12, &#039;1&#039; WHEN 13, &#039;1&#039; WHEN 14,  &lt;br /&gt;
    &#039;1&#039; WHEN 15,&#039;1&#039; WHEN 16, &#039;1&#039; WHEN 17, &#039;1&#039; WHEN 18, &#039;1&#039; WHEN 19,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
 &lt;br /&gt;
  WITH conv_input SELECT&lt;br /&gt;
    bcd_o(6) &amp;lt;=&lt;br /&gt;
    &#039;1&#039; WHEN 20,&#039;1&#039; WHEN 21, &#039;1&#039; WHEN 22, &#039;1&#039; WHEN 23, &#039;1&#039; WHEN 24,  &lt;br /&gt;
    &#039;1&#039; WHEN 25,&#039;1&#039; WHEN 26, &#039;1&#039; WHEN 27, &#039;1&#039; WHEN 28, &#039;1&#039; WHEN 29,  &lt;br /&gt;
    &#039;1&#039; WHEN 30,&#039;1&#039; WHEN 31,&lt;br /&gt;
    &#039;0&#039; WHEN OTHERS;&lt;br /&gt;
   &lt;br /&gt;
   bcd_o(7) &amp;lt;= &#039;0&#039;;&lt;br /&gt;
&lt;br /&gt;
  END behave;&lt;br /&gt;
&amp;lt;/vhdl&amp;gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=VHDL_Schnipsel&amp;diff=18427</id>
		<title>VHDL Schnipsel</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=VHDL_Schnipsel&amp;diff=18427"/>
		<updated>2006-11-26T20:46:53Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: +beispiel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Beispielcode und VHDL Schnipsel==&lt;br /&gt;
Hier ist Platz für kurzen Beispielcode.&lt;br /&gt;
&lt;br /&gt;
===[[VHDL_schnipsel_count_slice|Zählerbereich erkennen]]===&lt;br /&gt;
&lt;br /&gt;
Oft wird ein Signal aus einem Zählerstand abgeleitet. Zum Beispiel für einen längeren &#039;1&#039; Puls, soll bei einem Zählerstand grö�?er 10 und kleiner 20 eine &#039;1&#039; ausgegeben werden, sonst &#039;0&#039;. Verwendet man hier &amp;quot;&amp;gt;&amp;quot; oder &amp;quot;&amp;lt;&amp;quot; wird die Logik unnötig gro�?. Das Beispiel zeigt eine Platzsparende Alternative.&lt;br /&gt;
&lt;br /&gt;
===[[VHDL_schnipsel_or_vectorbits|OR über alle Bits eines Vectors]]===&lt;br /&gt;
&lt;br /&gt;
Wie fasse ich einen STD_LOGIC_VECTOR(15 downto 0) so zusammen, dass das&lt;br /&gt;
Ausgangssignal &#039;1&#039; ist, sobald eines der Vektor-Bits auf &#039;1&#039; ist?&lt;br /&gt;
Also eine OR-Verknüpfung über den ganzen Vektor?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[http://www.mikrocontroller.net/topic/31387 I2C-Slave]===&lt;br /&gt;
*Master kann schreiben und lesen&lt;br /&gt;
*praktisch keine Einschränkung der Frequenz&lt;br /&gt;
*Error-Code nach Transfer&lt;br /&gt;
*freie Slave-Adresswahl&lt;br /&gt;
*Sniffer-Mode&lt;br /&gt;
&lt;br /&gt;
=== [[TTL74185|Nachbau TTL741b5 (6 bit binary to BCD decoder)]] ===&lt;br /&gt;
Artikel mit Quelltext ist [[TTL74185|hier]] und der thread dazu findet sich unter: http://www.mikrocontroller.net/topic/55594.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Taktung_FPGA/CPLD&amp;diff=18384</id>
		<title>Taktung FPGA/CPLD</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Taktung_FPGA/CPLD&amp;diff=18384"/>
		<updated>2006-11-26T09:34:31Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: ersterstellung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Taktung FPGA/CPLD=&lt;br /&gt;
Von den drei Signalgruppen:&lt;br /&gt;
*interne Signale&lt;br /&gt;
*IO Signale&lt;br /&gt;
*Takt (clock)&lt;br /&gt;
&lt;br /&gt;
ist letzteres das mit den höchsten Anforderungen an Signalqualität und Laufzeit. Fehler im Taktnetzwerk führen zu ungewollten, ja oft &#039;&#039;katastrophalen&#039;&#039; Verhalten der Schaltung. Um dies zu vermeiden sind besondere Aufbauregeln und Komponenten für die Taktverteilung in einem digitalen IC entwickelt worden.&lt;br /&gt;
&lt;br /&gt;
== Grundanforderungen Taktnetzwerk ==&lt;br /&gt;
Der Takt ist störungsfrei an alle getakteten Bauelemente (FF,SRAM) im FPGA zu führen. Der Ausgangspunkt dieses Taktnetzwerkes muss also sehr viele Gatter-Eingänge treiben.&lt;br /&gt;
Dazu wird oft ein spezieller Takttreiber (Xilinx: BUFG) genutzt.&lt;br /&gt;
Ebenfalls muss die Laufzeit von diesem Taktreiber zu jedem Endpunkt des Netzes gleich sein. Nur so ist gewährtleistet das alle FF &#039;&#039;im Takt&#039;&#039; schalten. Laufzeitunterschiede werden skew genannt und müssen sehr klein gehalten werden (kleiner 100 ps).  Dazu wird das Taktnetzwerk als Baum gestaltet (gleiche Länge von der Baum-Wurzel zu jeder Ast-Spitze). Man nennt diese Schaltungstechnik clock tree.&lt;br /&gt;
 &lt;br /&gt;
== Gated Clock==&lt;br /&gt;
Geschaltete Taktleitungen (engl.: &amp;quot;Gated Clock&amp;quot;) sind Schalter in der Taktleitung. Das können:&lt;br /&gt;
*Multiplexer (Auswahl zwischen Taktquelle 1 und 2) &lt;br /&gt;
oder &lt;br /&gt;
*Schalter (dieser Schaltungsteil wird unter bestimmten Bedingungen vom Takt getrennt, er steht still)&lt;br /&gt;
sein.&lt;br /&gt;
&lt;br /&gt;
Eine solche Praxis ist aus zwei Gründen meist tödlich:&lt;br /&gt;
* entstehen von Flanken im Takt neben den periodischen Schaltflanken (-&amp;gt;Glitches)&lt;br /&gt;
* unterschiedliche Laufzeiten im Taktnetzwerk (skew).&lt;br /&gt;
&lt;br /&gt;
Deshalb wird nicht &#039;&#039;&#039;IM&#039;&#039;&#039; Taktnetzwerk geschaltet, sondern &#039;&#039;&#039;AM&#039;&#039;&#039; Anfangspunkt (Takttreiber) und/oder &#039;&#039;&#039;AM&#039;&#039;&#039; Endpunkt (CE des FF):&lt;br /&gt;
&lt;br /&gt;
Falls ein Abschalten wirklich erforderlich ist (Leistungsverbrauch zeitweilig drosseln) sollte der Takttreiber selber geschaltet werden. Also bei Xilinx statt einen BUFG einen BUFGMUX einsetzten. &lt;br /&gt;
&lt;br /&gt;
Schaltungsteile die nur zu bestimmten Zeitpunkten Schalten sollen (z.B. Daten von einem Bus übernehmen) werden durch das CE Signal gesteuert. CE steht in diesem Fall für &#039;&#039;Clock enable&#039;&#039;. Das ist bei FF ein Eingangssignal, das quasi im FF den Takt &#039;&#039;abschaltet&#039;&#039;. &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>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=18383</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=18383"/>
		<updated>2006-11-26T08:55:59Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Komplexere Blöcke (Multiplizierer, RAM, PLL/DLL) */  +Link Vertiefung taktung&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;
Ein FPGA besteht, ähnlich wie ein [[CPLD]], aus vielen Logikelementen (hauptsächlich Flip-Flops (FF) und 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. Eine LUT kann eine beliebige kombinatorische Funktion (NAND, XOR, AND, Multiplexer etc.) aus den Eingangssignalen realisieren, wobei die Zahl vom FPGA abhängig ist und meist zwischen 4 und 6 liegt. Für Funktionen, die mehr Eingänge erfordern, als eine einzige LUT besitzt (hohes Fan-In), werden mehrere LUTs direkt miteinander verschaltet. Das Verhältnis zwischen der Anzahl von LUTs und derjenigen der FF ist meist 1:1. Aktuelle FPGAs bestehen aus bis zu einigen zehntausend Logikelementen.&lt;br /&gt;
&lt;br /&gt;
Die obigen logischen Schalter, welche die Funktion definieren, sind in den meisten FPGAs durch SRAM-Speicherzellen realisiert, in welche beim Bootprozess passend geladen werden. Das Laden dieser Konfigurationsdaten bzw. Verknüpfungsregeln geschieht dabei in der Regel aus einem speziellen Flash-ROM-Baustein heraus. Es kann aber auch ein Mikrocontroller benutzt werden. Die meisten (SRAM-basierenden) FPGAs bieten daher für diesen Konfigurationsvorgang mehrere Modi (seriell, parallel, Master/Slave) an. Da die SRAM-Zellen ihren Inhalt beim Abschalten der Versorgungsspannung verlieren, muss ein SRAM-basierter FPGA bei jedem Einschalten neukonfiguriert werden. Daher benötigt ein solcher FPGA einige Millisekunden bis zur Betriebsbereitschaft.&lt;br /&gt;
&lt;br /&gt;
Eine FPGA-Familie besteht aus Typen mit unterschiedlicher Anzahl und Komplexität von Logikzellen. So enthält ein Spartan3-1000 ca. 2,5 mal mehr Logik (FF, LUTs) als ein Spartan3-400.  &lt;br /&gt;
&lt;br /&gt;
FPGAs mit nichtflüchtigem Speicher basieren auf EEPROM-, Flash- (einige Familien von Lattice) oder AntiFuse- (Actel) Technologie. Die AntiFuse FPGAs sind einmalig programmierbar.&lt;br /&gt;
&lt;br /&gt;
=== I/O Anschlüsse ===&lt;br /&gt;
FPGAs als universal einsetzbare Digital-ICs unterstützen eine Vielzahl von Signalstandards. Üblich sind verschiedene TTL-Pegel (5V, 3,3V, 2,5V), differentielle Signalstandards (LVDS, GTL) und im Hochpreisbereich serielle Standards bis zu 1 Gbps. Oftmals sind weitere Eigenschaften wie Treiberstärke und Flankensteilheit für jeden benutzerdefinierbaren Anschluss (User-IO) einstellbar. Meist sind die Pins in Bänke 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 (H-Pegel).&lt;br /&gt;
&lt;br /&gt;
Ebenso können FPGA-interne Pull-Up und Pull-Down-Widerstände zugeschaltet werden, Terminierung wird ebenfalls unterstützt.&lt;br /&gt;
&lt;br /&gt;
Das I/O Verhalten wird mit den IO-Constraints in einem setting-File (Xilinx *.ucf, Altera *.acf) festgelegt.&lt;br /&gt;
&lt;br /&gt;
Einige Pins übernehmen zeitweilig oder allgemein besondere, nicht vom Anwender abschaltbare Funktionen. Darunter zählen die Pins zum Einlesen der Konfigurationsdaten. Oft sind einige wenige Pins (2 - 8) zum Einspeisen des Taktes für das Design reserviert.&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 BGA und QFP Gehäuse (bis ca. 240(?) Pins) angeboten.&lt;br /&gt;
&lt;br /&gt;
=== Komplexere Blöcke (Multiplizierer, RAM, PLL/DLL) ===&lt;br /&gt;
Neben den einfachen Flip-Flops 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.B. in der Signalverarbeitung, enthalten einige FPGAs Multiplizierer 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 RAM-Bereich integriert, der sich in vielfältiger Weise ansprechen lässt. So können damit Single- oder Dualport-RAMs mit verschiedener Bitbreite erzeugt werden. Üblich sind mehrere (4 - 30) kleinere Dualport RAM-Blöcke von 4 - 16 kbit. Einge Familien besitzen einen grösseren internen RAM, andere spezielle FIFO-Blöcke.&lt;br /&gt;
&lt;br /&gt;
Zur Generierung spezieller Takte sind PLL-Komponenten (phase locked loop) auf dem FPGA integriert. Einige Hersteller setzen mit dem selben Ziel DLL-Blöcke (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 DDR-RAMs oder die Kompensation von Laufzeitunterschieden zwischen Takt und mit diesem getaktetem 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;
Immer beliebter wird es, einen FPGA mit einem oder mehreren Prozessoren (z.B. [[AVR]] bei Atmels FPSLIC oder PowerPC bei Xilinx&#039; Virtex-4) auf einem IC zu integrieren, was neben der Platzeinsparung eine große Flexibiliät beim Lösen komplexer Aufgaben bietet (der FPGA kann z.B. spezielle IO-Funktionen für den Prozessorkern bereitstellen). Viele Hersteller bieten auch einen speziell für ihren jeweiligen FPGA optimierten &#039;&#039;Softcore&#039;&#039; an, z.B. Microblaze von Xilinx, und Nios von Altera. Als Programmspeicher werden die FPGA-internen RAM-Blöcke oder externe Speicher-ICs (SDRAM, SRAM) genutzt.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Soft-CPUs:&lt;br /&gt;
&lt;br /&gt;
* Altera NIOS (32 bit, bis zu ca. 125 MHz)&lt;br /&gt;
* Xilinx Picoblaze (8 bit controller, bis ca. 88 - 200 MHz, nur Assembler, nur internen Programmspeicher)&lt;br /&gt;
* Xilinx Microblaze (32 bit, bis zu ca. 100MHz)&lt;br /&gt;
* [http://www.gaisler.com/leonmain.html LEON2, LEON3] (32 SPARC V8 kompatibel, GPL)&lt;br /&gt;
* Plasma MLITE (MIPS kompatibel, GPL) &lt;br /&gt;
* [http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/index.cfm LatticeMico 32] (32 Bit, GCC Port vorhanden, Verilog, frei)&lt;br /&gt;
&lt;br /&gt;
Die Taktfrequenzen sind stark vom FPGA-Typ und der FPGA-Auslastung (freie Logikressourcen) abhängig.&lt;br /&gt;
&lt;br /&gt;
Die Hersteller stellen dazu eigene Compiler/Tools für die Programmierung in C oder Assembler zur Verfügung, bei Xilinx das Embedded Design Kit EDK. Diese Kits sind nicht immer in den kostenlosen Entwicklungstools enthalten und müssen getrennt erworben werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil der Integration einer soft CPU besteht dabei im Wesentlichen aus der Möglichkeit, vorhandene Software und Betriebssysteme nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Geschwindigkeit&amp;quot; ==&lt;br /&gt;
Die &amp;quot;Geschwindigkeit&amp;quot; eines FPGAs ist vom Speedgrade des ICs und vor allem vom Design abhängig. Die maximale Taktfrequenz lässt sich ohne detaillierte Kenntnis des Designs schwer abschätzen, möglich sind 200 - 250 MHz für die reinen Logikelemente. Je nach der Zahl und Komlexität der je Takt durchzuführenden Oprationen ergeben sich typischerweise Systemdatenfrequenzen von meist 10-100 MHz. Maßgeblich ist, in wieweit das Design auf Fläche bzw. Geschwindigkeit designed und vom Tool synthetisiert wurde: Durch das Einbringen von zusätzlichen Registerstufen lassen sich z.B. zeitkritische Pfade entschärfen, sodass die Frequenz des Chips angehoben werden kann und der effektive Datendurchsatz trotz teilweise mehr CLKs zwischen Ein- und Ausgängen erhöht wird. Dieser lässt sich darüber hinaus durch die Nutzung paralleler Architekturen verbessern.&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 Spartan3 (Xilinx) und Cyclone II (Altera) sind aufgrund technologischer Randbedingungen etwa 10-20% weniger Taktgeschwindigkeit bei gleichem Design zu erwarten, bzw muss mit mehr Verbrauch an Logikelementen und Taktzyklen gerechnet werden (weniger Routingreserven, geringere Zahl von LUT-Eingängen, weniger hard-ressourcen). &lt;br /&gt;
&lt;br /&gt;
Identische Chips werden oft in 2 oder mehr Geschwindigkeitsklassen angeboten, die sich meist durch Bauteilselektion ergeben. Grob kann man ca. 5 - 10% höhere Taktung zwischen zwei Speedgrades erwarten.&lt;br /&gt;
&lt;br /&gt;
== Hersteller ==&lt;br /&gt;
Die größten Hersteller von FPGAs sind Xilinx und Altera. Weitere Hersteller sind Lattice, Actel und Atmel.&lt;br /&gt;
&lt;br /&gt;
* [http://www.xilinx.com Xilinx]&lt;br /&gt;
* [http://www.altera.com Altera]&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.B. VHDL &amp;quot;gefüttert&amp;quot; werden. Die Hardwarebeschreibung in VHDL gelingt ihrerseits z.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 ==&lt;br /&gt;
&lt;br /&gt;
=== Spartan3-Board ===&lt;br /&gt;
* Spartan-3 XC3S200 FPGA (optional XC3S400 oder XC3S1000)&lt;br /&gt;
* VGA, PS/2, RS232, 1 MiB SRAM, ...&lt;br /&gt;
* $99 (XC3S200) bis $149 (XC3S1000)&lt;br /&gt;
* http://www.digilentinc.com/Products/Detail.cfm?Nav1=Products&amp;amp;Nav2=Programmable&amp;amp;Prod=S3BOARD&lt;br /&gt;
* [http://www.derepas.com/fabrice/hard/ Kleines Tutorial zum Spartan3 Starterkit]&lt;br /&gt;
&lt;br /&gt;
=== Spartan3e-Starter Kit ===&lt;br /&gt;
* Spartan-3e FPGA XC3S500E&lt;br /&gt;
* CoolRunner-II PDL XC2C64A-5VQ44C&lt;br /&gt;
* Platform-Flash, 128 Mbit Parallel Flash, 16 Mbit SPI Flash&lt;br /&gt;
* 64 MByte DDR SDRAM&lt;br /&gt;
* VGA (3bit on/off = 8 Farben), PS/2, 2x RS232, RJ45&lt;br /&gt;
* 16x2-Display&lt;br /&gt;
* 1 Drehencoder, 8 LEDs, 4 Taster, 4 Schalter&lt;br /&gt;
* Programmierung über USB&lt;br /&gt;
* ca 179 EUR bei [http://shop.trenz-electronic.de/catalog/default.php?cPath=1_36 trenz-electronic.de] oder [http://cgi.segor.de/user-cgi-bin/sidestep2.pl?foto=1&amp;amp;Q=spar3e&amp;amp;M=1 Segor]&lt;br /&gt;
* Weitere Infos unter http://www.xilinx.com/s3estarter&lt;br /&gt;
&lt;br /&gt;
=== Terasic TREX C1 Multimedia Development Kit - US$149 ===&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;
&lt;br /&gt;
=== Altera DE2 - Development and Education Board - US$495 ===&lt;br /&gt;
* Altera Cyclone II 2C35 FPGA with 35000 LEs&lt;br /&gt;
* Altera Serial Configuration devices (EPCS16) for Cyclone II 2C35&lt;br /&gt;
* USB Blaster built in on board for programming and user API controlling&lt;br /&gt;
* 8 MiB SDRAM, 4 MiB Flash Memory, 512KiB SRAM&lt;br /&gt;
* SD Card Socket, RS-232, Ethernet, 10-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* Many examples with source code (including TV Box, SD Music Player)&lt;br /&gt;
* [http://wwwab.fh-wedel.de/bause/handouts/vhdl/VhdlEinfuehrung.pdf Kleines aber nettes Tutorial zum Altera DE2 Dev. Board]&lt;br /&gt;
&lt;br /&gt;
=== LiveDesign Evaluation Board von Altium - 99 EUR ===&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Xilinx-Version auch direkt mit ISE Webpack nutzbar&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;
=== NanoBoard-NB1 von Altium - 995 EUR ===&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;
&lt;br /&gt;
=== Hpe Mini AC II - Altera Cyclone board von Gleichmann - €350,- ===&lt;br /&gt;
* Altera Cyclone II EP2C35 FPGA (speed grade 6)&lt;br /&gt;
* Mit reprogrammierbarem Flash zur FPGA configuration&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)&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, IDE, SnapGear Linux&lt;br /&gt;
&lt;br /&gt;
=== Xilinx Development Boards von Nu Horizons ===&lt;br /&gt;
&lt;br /&gt;
http://www.nuhorizons.com/devboards/index.asp&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Hardwarebeschreibungssprachen]]&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;
&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Benutzer_Diskussion:FPGAk%C3%BCchle&amp;diff=17153</id>
		<title>Benutzer Diskussion:FPGAküchle</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Benutzer_Diskussion:FPGAk%C3%BCchle&amp;diff=17153"/>
		<updated>2006-09-12T19:40:42Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Plural-s mit Apostroph */ meine meinung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=17150</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=17150"/>
		<updated>2006-09-11T19:42:50Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: erster Versuch einer Einleitung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16900</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16900"/>
		<updated>2006-08-24T20:41:01Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Tools Xilinx */ linkfix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mikrocontroller.net_Diskussion:Aufgaben&amp;diff=16783</id>
		<title>Mikrocontroller.net Diskussion:Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mikrocontroller.net_Diskussion:Aufgaben&amp;diff=16783"/>
		<updated>2006-08-21T20:20:56Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: fpga,cpld,gal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Lötseiten sollten IMHO nicht zusammengefasst werden, weil sie sonst viel zu lang werden. Sowas liest keiner. -- Markus 18.08.2004&lt;br /&gt;
&lt;br /&gt;
wenn weiterleitungen entfernt werden sollen sollte trotzdem sichergestellt sein, das man zB auch GALs in den Programmierbarenlogikbausteinen wiederfindet...&lt;br /&gt;
&lt;br /&gt;
== Weiterleitungen ==&lt;br /&gt;
&lt;br /&gt;
Ich finde, Weiterleitungen sollten NICHT entfernt werden, es müsste reichen wenn die Kategorieneinteilung keine Weiterleitungsseiten enthält&lt;br /&gt;
&lt;br /&gt;
== Begriffsdefinitionen ==&lt;br /&gt;
&lt;br /&gt;
Alle Kurzen Begriffsdefinitionen sollten wenn möglich in einer Kategorie eingeschlossen werden, aus der Kategorienseite entfernt werden und eventuell wenn möglich als popupfenster realisiert werden&lt;br /&gt;
&lt;br /&gt;
== FPGA,CPLD,GAL ==&lt;br /&gt;
Ich habe [[FPGA]] wesentlich erweitert und [[CPLD]] nach diesem Muster ausgebaut. Der CPLD-Artikel betont die Unterschiede zum FPGA. Daher ist IMHO ein Zusammenlegen dieser beiden nicht mehr sinnvoll. Aber was machen wir jetzt mit GAL ? --[[Benutzer:FPGAküchle|FPGAküchle]] 22:20, 21. Aug 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=CPLD&amp;diff=16782</id>
		<title>CPLD</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=CPLD&amp;diff=16782"/>
		<updated>2006-08-21T20:16:59Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: Gliederung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=CPLD&amp;diff=16781</id>
		<title>CPLD</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=CPLD&amp;diff=16781"/>
		<updated>2006-08-21T20:14:45Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: ausbau&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=LCD_an_Parallelport&amp;diff=16746</id>
		<title>LCD an Parallelport</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=LCD_an_Parallelport&amp;diff=16746"/>
		<updated>2006-08-20T20:15:21Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Verwendung */ linkfix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=16745</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=16745"/>
		<updated>2006-08-20T20:01:40Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Grundelemente */ mehr zu LUT und anzahl FF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=16744</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=16744"/>
		<updated>2006-08-20T19:55:20Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Komplexere Blöcke (Multiplizierer ,RAM) */ +pll&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16743</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16743"/>
		<updated>2006-08-20T17:29:40Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* IC - Specifica */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=16741</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=16741"/>
		<updated>2006-08-20T17:27:09Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: Herstelleroptionen (speedgrad,package) etc. -fertig&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=16740</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=16740"/>
		<updated>2006-08-20T17:01:06Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Aufbau */ Struktur, I/O, Soft-CPU: Zwischenstand&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=16739</id>
		<title>Hardwarebeschreibungssprachen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=16739"/>
		<updated>2006-08-20T16:10:27Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Verilog */ geschichte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16737</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16737"/>
		<updated>2006-08-20T16:02:05Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: Transfer zu xtra page hardwarebeschreibungssprachen im uC-wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=16736</id>
		<title>Hardwarebeschreibungssprachen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=16736"/>
		<updated>2006-08-20T15:59:54Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: +abel, transfer v. FPGA-startseite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16605</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16605"/>
		<updated>2006-08-18T13:13:18Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* VHDL-AMS */ +buch VHDL-AMS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16604</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16604"/>
		<updated>2006-08-18T11:25:13Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* VHDL */ +links simulator, linklisten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16603</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16603"/>
		<updated>2006-08-18T11:18:04Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Bücher/Links */ link+ xess&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=MicroBlaze_Takt&amp;diff=16586</id>
		<title>MicroBlaze Takt</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=MicroBlaze_Takt&amp;diff=16586"/>
		<updated>2006-08-15T21:10:11Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: Transfer vom wiki FPGAküche&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16584</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16584"/>
		<updated>2006-08-15T21:06:15Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Beschaltung Xilinx */ linkfix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16583</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16583"/>
		<updated>2006-08-15T21:05:43Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Beschaltung Xilinx */ linkfix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16582</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16582"/>
		<updated>2006-08-15T21:04:48Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Xilinx-FPGA Designs */ link+&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16540</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16540"/>
		<updated>2006-08-15T06:05:03Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Simulator Mentor Graphics: Modelsim */ +link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16539</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16539"/>
		<updated>2006-08-15T06:03:00Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Bücher/Links */ +hamburger archiv&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Xilinx_timing_constraints&amp;diff=16538</id>
		<title>Xilinx timing constraints</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Xilinx_timing_constraints&amp;diff=16538"/>
		<updated>2006-08-15T05:53:45Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: Transfer vom wiki FPGAküche&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Xilinx_ISE&amp;diff=16537</id>
		<title>Xilinx ISE</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Xilinx_ISE&amp;diff=16537"/>
		<updated>2006-08-15T05:43:55Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: +link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier wird speziell die FPGA/CPLD Toolchain für Xilinx besprochen. Für eine allgemeine Beschreibung der Toolchain und des Designflows für programmierbare Logik siehe: [[FPGA/CPLD Toolchain]] &lt;br /&gt;
&lt;br /&gt;
== Fehler finden ==&lt;br /&gt;
Die Toolchain kloppt an den unterschiedlichsten Stellen Fehlermeldungen raus und nichts geht mehr. Folgend ein paar Tips:&lt;br /&gt;
===Allgemein===&lt;br /&gt;
*Auch &amp;quot;Fatal Error&amp;quot; hat seine Ursache oft im VHDL-Code oder im ucf-file. Die Tools sind nicht kaputt&lt;br /&gt;
*Bei hartnäckigen Fehler hilft der Umstieg auf eine alte oder neuere version der ISE&lt;br /&gt;
*Fehlermeldung oder Teile daraus als Suchbegriff bei www.xilinx.com eingeben. Da gibts mehr Tipps als gedacht.&lt;br /&gt;
*Die Logdateien der einzelnen Tools haben oft mehr infos zum Fehler.&lt;br /&gt;
===XST===&lt;br /&gt;
*Das Synthesetool wird immer pingeliger, oft kommt eine ältere version weiter (Records an Generics,unsigned typ,nicht benutzte FSM-Zustände.&lt;br /&gt;
*Der VHDL Syntaxcheck von einem Simulator (modelsim) ist robuster, schneller und informativer. Erst den Code mit diesem compilieren.&lt;br /&gt;
*Logdatei: *.syr&lt;br /&gt;
===ngdbuild===&lt;br /&gt;
*Hier werden oft nichtauffindbare Netznamen oder Instanzpfade bemeckert. Im FPGA-Editor nachschauen wie der Pfad wirklich heisst. Da aber der FPGA Editor ein file vom map benötigt der aber erst nach ngdbuilt startet, hilft das nicht viel. Glücklicherweise gibt es ein Tool das den Synthese output vom XST in ein lesbares FORMAT (EDIFF) unwandelt. Diese nennt sich ngc2edif&lt;br /&gt;
*Falls ngdbuilt (oder map) Componenten nicht findet, dann sucht er oft in den falschen Verzeichnissen. Dann muss der Suchpfad angepasst werden&lt;br /&gt;
*Logdatei: *.bld&lt;br /&gt;
===map===&lt;br /&gt;
*Logdatei: *.mrp&lt;br /&gt;
===par===&lt;br /&gt;
*Logdatei: *.par&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unterschiede in den  ISE Versionen ==&lt;br /&gt;
*[[FPGA_Xilinx_ISE8.1|ISE 8.1]]&lt;br /&gt;
*[[ISE 8.2]]&lt;br /&gt;
== Timing constraints ==&lt;br /&gt;
Wie setzte ich constraints fürs Timing:&lt;br /&gt;
*[[Xilinx_timing constraints|Fehlerlmeldung &amp;quot;Cannot apply Timespec ...&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Probleme beim Download (impact) ==&lt;br /&gt;
*[[impact_mask|&amp;quot;*.msk not found&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA/CPLD_Toolchain&amp;diff=16536</id>
		<title>FPGA/CPLD Toolchain</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA/CPLD_Toolchain&amp;diff=16536"/>
		<updated>2006-08-15T05:25:37Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Timing constraints */ typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Benutzer:FPGAk%C3%BCchle&amp;diff=16532</id>
		<title>Benutzer:FPGAküchle</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Benutzer:FPGAk%C3%BCchle&amp;diff=16532"/>
		<updated>2006-08-14T21:16:27Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Wort an die Leser */ +link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Wort an die Leser==&lt;br /&gt;
Ju des bin ich, der Kochlöffelschwinger aus der FPGA-Küche.&lt;br /&gt;
&lt;br /&gt;
Am liebsten koch ich mit Xilinx und stehe besonders auf ausgefeilte VHDL-Gewürze.&lt;br /&gt;
&lt;br /&gt;
Und am meisten freut mich wenns andere Köche in der Küche hat. &lt;br /&gt;
Also ran an den Braten und das Wiki hier prall gestopft. Vielleicht ein paar Tips aus dem Forum &amp;quot;Programmierbare Logik&amp;quot; zu Artikel aufbereitet ... frisch ans Werk -&amp;gt; [[Startseite CPLD, FPGA, HDL]]&lt;br /&gt;
&lt;br /&gt;
==Faktisch Sachlich==&lt;br /&gt;
*Diplom Elektrotechnik (Uni)&lt;br /&gt;
*erste VHDL-Designs 1994&lt;br /&gt;
*FPGA-Designs seit 2000&lt;br /&gt;
*Schwerpunkte: VHDL, Xilinx FPGA&#039;s (Spartan3), Xilinx ISE, Interface (Flash, USB, ...)&lt;br /&gt;
&lt;br /&gt;
==Wiki Stuff==&lt;br /&gt;
*[[Spezial:Emailuser/FPGAküchle|Email an mich senden]]&lt;br /&gt;
&lt;br /&gt;
*[[Spezial:Contributions/FPGAk%C3%BCchle|Meine Beiträge]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Spezial:Categories|Alle Kategorien in diesem Wiki]]&lt;br /&gt;
*[[Special:Randompage|Artikel zufällig auswählen]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16531</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16531"/>
		<updated>2006-08-14T21:03:43Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Startseite programmierbare Logik (CPLD, FPGA, HDL) */ +forumlink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Benutzer:FPGAk%C3%BCchle&amp;diff=16530</id>
		<title>Benutzer:FPGAküchle</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Benutzer:FPGAk%C3%BCchle&amp;diff=16530"/>
		<updated>2006-08-14T20:58:53Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: +special links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Wort an die Leser==&lt;br /&gt;
Ju des bin ich, der Kochlöffelschwinger aus der FPGA-Küche.&lt;br /&gt;
&lt;br /&gt;
Am liebsten koch ich mit Xilinx und stehe besonders auf ausgefeilte VHDL-Gewürze.&lt;br /&gt;
&lt;br /&gt;
Und am meisten freut mich wenns andere Köche in der Küche hat. &lt;br /&gt;
Also ran an den Braten und das Wiki hier prall gestopft. Vielleicht ein paar Tips aus dem Forum &amp;quot;Programmierbare Logik&amp;quot; zu Artikel aufbereitet ... frisch ans Werk!&lt;br /&gt;
&lt;br /&gt;
==Faktisch Sachlich==&lt;br /&gt;
*Diplom Elektrotechnik (Uni)&lt;br /&gt;
*erste VHDL-Designs 1994&lt;br /&gt;
*FPGA-Designs seit 2000&lt;br /&gt;
*Schwerpunkte: VHDL, Xilinx FPGA&#039;s (Spartan3), Xilinx ISE, Interface (Flash, USB, ...)&lt;br /&gt;
&lt;br /&gt;
==Wiki Stuff==&lt;br /&gt;
*[[Spezial:Emailuser/FPGAküchle|Email an mich senden]]&lt;br /&gt;
&lt;br /&gt;
*[[Spezial:Contributions/FPGAk%C3%BCchle|Meine Beiträge]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Spezial:Categories|Alle Kategorien in diesem Wiki]]&lt;br /&gt;
*[[Special:Randompage|Artikel zufällig auswählen]]&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16529</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=16529"/>
		<updated>2006-08-14T20:44:01Z</updated>

		<summary type="html">&lt;p&gt;FPGAküchle: /* Startseite programmierbare Logik (CPLD, FPGA, HDL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>FPGAküchle</name></author>
	</entry>
</feed>