Einführung in VHDL und Anleitung zur CPLD Simulation und Synthese

Größe: px
Ab Seite anzeigen:

Download "Einführung in VHDL und Anleitung zur CPLD Simulation und Synthese"

Transkript

1 Einführung in VHDL und Anleitung zur CPLD Simulation und Synthese ZÜRCHER HOCHSCHULE FÜR ANGEWANDTE WISSENSCHAFTEN INSTITUTE OF EMBEDDED SYSTEMS Autoren: Hans-Joachim Gelke Letzte Änderung: 24. Februar 2009

2 Inhaltsverzeichnis Inhaltsverzeichnis Abbildungsverzeichnis Tabellenverzeichnis Listings iii iv v 1 Die Hardwarebeschreibungssprache VHDL Was ist eine Hardwarebeschreibung? Was ist VHDL? Aufbau einer VHDL-Schaltungsbeschreibung Schnittstellenbeschreibung (Entity) Die Funktionsbeschreibung (Architecture) Erzeugung einer Hierarchie durch Strukturbeschreibung Beispiel einer Strukturbeschreibung Grundelemente von VHDL Identifier Kommentare Daten-Objekte Daten-Typen Operatoren Verhaltensbeschreibung in VHDL Nebenläufige (Concurrent) Anweisungen WHEN_ELSE -Anweisung SELECT_WHEN -Anweisung Sequenzielle (Sequential) Statements und Prozesse IF_ELSIF im Prozess Die CASE_WHEN Anweisung im Prozess Erzeugen von getakteten Flip-Flops Zähler in VHDL Konvertierungsroutinen Zustandsautomaten VHDL Kode zum Verifizieren von Schaltungen Architecture der Testbench Erzeugung von Takten Assert Statements CPLD Design Flow Einrichten von Lizenzen auf Windows XP Arbeiten mit dem Mentor ModelSim Simulator Anlegen einer Verzeichnissstruktur Vorbereiten eines compile.do files für VHDL simualtion (vor der Synthese) Aufsetzen eines ModelSim Projektes Generieren eines wave.do files i

3 Inhaltsverzeichnis Simulationswarnungen Backannotierte Simulation Aufsetzen einer CPLD Synthese mit Altera Quartus Aufsetzen eines Quartus Projektes Hinzufügen oder Entfernen von Dateien aus einem Projekt Starten der Synthese Auswerten der Berichte nach Synthese Place und Route Zuweisen von I/O Pins Literaturverzeichnis 37 ii

4 Abbildungsverzeichnis 1.1 Schaltplan eines RS-Flip-Flop Syntax der Entity Syntax der Architecture Struktur des Volladdierers Nebenläufige und Sequentielle Ausführung Zustände eines Zählers mit 6 Schritten Die zwei Prozesse des Zählers Blockdiagram eines Mealy Automaten Typische Unterverzeichnisse in einem Projekt Festlegen des Arbeitsverzeichnisses in dem Modelsim läuft Festlegen des Arbeitsverzeichnisses in dem Modelsim läuft Generieren der Delay Werte für Backannotierte Simulation Einstellen des Arbeitsverzeichnises Wählen des CPLDs Wählen des Mentor Graphics EDA tools iii

5 Tabellenverzeichnis Tabellenverzeichnis 1.1 Mit numeric_std zur Verfügung stehende Convertierungsroutinen iv

6 Listings 1.1 Anschlüsse eines RS-FF Entity RS-FF mit std_logic Funktionsbeschreibung des RS-FF Struktur des Volladierers Beispiel für Named Association Kommandozeile Daten Objekte Beispiele von Deklarationen Deklaration von Vektoren Zuweisung von Werten Deklarierung von eigenen Datentypen Datentypen zum Beschreiben von Automaten Verwendung von Operatoren Verknüpfung von Strings Nebenläufige Anweisungen Multiplexer mit logischen Gleichungen ausgedrückt Multiplexer mit WHEN-ELSE ausgedrückt Multiplexer mit SELECT_WHEN ausgedrückt Sensitivity Liste D-FF mit asynchronem Reset Multiplexer mit IF_ELSIF ausgedrückt Multiplexer mit CASE Statement ausgedrückt Erzeugen eines D-FF DFF mit asynchronem Reset Code Beispiel eines Zählers Umwandlung von Integer in std_logic_vector Umwandlung von std_logic_vector in Integer Beispiel eines Mealy Automaten ENtity einer Testbench Erzeugen eines Taktes Melden von Simulationsfehlern Prüfen des Signals sig_reset Unterdrückung der Fehlermeldung am Anfang der Simulation Das compile.do script Compilierung ist richtig, aber es fehlt noch das wave.do Script für Simulation mit Backannotation v

7 1 Die Hardwarebeschreibungssprache VHDL Dieses Kapitel soll einen ersten Eindruck von der Hardwarebeschreibungssprache VHDL vermitteln. Für einen tiefen, gründlichen Einstieg in VHDL sind ist die vorgeschlagene Literatur empfohlen: An Introductory VHDL Tutorial von der Firma Green Mountain Computing Systems; im HTML- Format: /eda/g m- vhd1/ 1ib/tutoria1.htm VHDL Kurzbeschreibung von Andreas Mäder, Universität Hamburg; 120 Seiten im PDF-Format: /www/vhdl/maeder/vhdl.pdf How to declare in VHDL von der Firma MINC Inc.; 113 Seiten im PDF Format: /eda/minc_int/pls_doc/how_vhdl.pdf Die im Anhang zu diesem Kapitel genannten Bücher bieten eine weitere Möglichkeit, um sich genauere Kenntnisse über VHDL anzueignen. Unter den deutschsprachigen Büchern bietet [GL94] eine umfassende und gut verständliche Einführung, während bei den angloamerikanischen Titeln [Pel96] als sehr praxisnahes Buch hervorzuheben ist. Als weiterer Schritt kann der Einsatz eines Lernprogramms oder die Teilnahme an einer VHDL-Schulung in Erwägung gezogen werden. Die Übungen im MeK1 Labor sollten aber für die meisten VHDL Anwendungen ausreichend sein. 1.1 Was ist eine Hardwarebeschreibung? Anhand der Sprache VHDL wird in diesem Kapitel dargestellt, wie eine Hardwarebeschreibungssprache (HDL) aussieht, wie sie aufgebaut ist und welche Vor- und Nachteile die Anwendung einer HDL bietet. Vieles, was in diesem Kapitel allgemein zu VHDL gesagt wird, gilt natürlich entsprechend für andere HDLs. VHDL ist nur eine HDL unter vielen. In der Vergangenheit haben Halbleiterhersteller und Hersteller von EDA-Werkzeugen ihre eigenen Sprachen entwickelt, wie z.b. PALASM, ABEL, CUPL, ALTERA-HDL. Diese Sprachen haben zumeist einen einfachen Aufbau und sind für den Entwurf von PLDs gedacht. In den letzten 10 Jahren haben sich aber auch in diesem Bereich VHDL und Verilog als Standard durchgesetzt. Fast genauso Verbreitet wie VHDL ist die Sprache Verilog. Diese wurde von der Firma Gateway Design Automation eingeführt und hat sich durch die Firma Cadence vor allem im Bereich des ASIC-Entwurfs einen Platz erobert. Während Verilog eher an die Programmiersprache C angelehnt ist, erinnert VHDL mehr an PASCAL oder ADA. Verilog wurde 1995 als IEEE 1364 genormt und ist vor allem in den USA weit verbreitet. VHDL ist eine universelle Programmiersprache, die für den Entwurf von digitalen Schaltungen optimiert ist. Daher kann VHDL benutzt werden zur: Spezifikation Entwurfseingabe Simulation Synthese 1

8 1 Die Hardwarebeschreibungssprache VHDL Dokumentation und Archivierung von Schaltungen Da VHDL auch die Beschreibung einer Schaltung auf einer hohen Abstraktionsebene erlaubt, kann VHDL bereits bei der Spezifikation eines Entwurfs eingesetzt werden. Die dabei erstellten Festlegungen, wie die Aufteilung in einzelne Blöcke und die Definition der Schnittstellen, können bei der weiteren Schaltungseingabe benutzt werden. Bei der Entwurfseingabe ist VHDL im Vergleich zur Schaltplaneingabe zu betrachten. Ein VHDL-Modell hat hier den Vorteil, dass es parametrisierbar und unabhängig von der Zieltechnologie ist. Ausserdem lassen sich regelmässige Strukturen sehr leicht erzeugen. VHDL-Modelle können auf allen Abstraktionsebenen simuliert werden. Damit können Fehler sehr frühzeitig entdeckt werden. Von Vorteil ist dabei, dass eine einmal erstellte Simulationsumgebung (engl.: Testbench) auf allen Ebenen benutzt werden kann. Durch die Synthese werden die Abstraktionsebenen automatisch überbrückt und so der Entwurfsablauf - besonders bei grossen Schaltungen - wesentlich beschleunigt. Diese durchgängige Verwendung von VHDL bis hin zur Dokumentation ist auch gleichzeitig einer der grössten Vorteile beim Einsatz von VHDL. Der Datenaustausch zwischen den verschiedenen Entwurfsebenen, zwischen den verschiedenen Entwurfswerkzeugen, zwischen den verschiedenen Entwicklern eines Projektteams und auch zwischen Auftraggeber und Auftragnehmer eines Projektes ist damit einfach möglich. Dies war auch ein Hauptanliegen, als Anfang der 80er Jahre die Sprache VHDL entwickelt wurde. Beim Einsatz von VHDL sind einige Punkte zu beachten. Auch ergeben sich einige Nachteile, die nicht verschwiegen werden sollen. VHDL ist eine Programmiersprache. Von daher hat das Erstellen eines VHDL-Modells viel gemein mit dem Erstellen eines Programms. Der Ablauf, die Denkweise und die Werkzeuge entsprechen dem vertrauten Umfeld eines Software-Entwicklers, nicht jedoch dem eines Hardware-Entwicklers. Für den (reinen) Hardware-Entwickler ist daher ein Umdenken und das Erlernen neuer Techniken erforderlich. Dies ist mit Sicherheit das grösste Hindernis bei der Einführung von VHDL. Die alte Weisheit Eine Stunde Programmieren erspart eine Minute Denken gilt auch beim Erstellen von VHDL-Modellen. Die schöpferische Fähigkeit, die Intuition und die Erfahrung des Hardware-Entwicklers kann - zumindest noch - nicht durch EDA-Werkzeuge ersetzt werden. Um VHDL produktiv einsetzen zu können, muss der Entwickler nicht nur die Sprache kennen, sondern auch wissen, wie sie gewinnbringend eingesetzt werden kann. 1.2 Was ist VHDL? Die Hardwarebeschreibungssprache VHDL wurde im Auftrag der US-Regierung im Rahmen des VHSIC- Projekts entwickelt. VHDL steht für V VHSIC = Very High Speed Integrated Circuit HDL Hardware Description Language Mit VHDL kann eine Schaltung auf unterschiedliche Weise dargestellt werden. VHDL stellt Sprachelemente zur Verfügung, die sowohl eine Beschreibung des Verhaltens als auch der Struktur einer Schaltung erlauben. Neben diesen beiden grundlegenden Sichten kann auch der Datenfluss beschrieben und das zeitliche Verhalten dargestellt werden. VHDL ist eine grosse, komplizierte und mächtige Sprache. Spötter deuten daher VHDL als Very Hard to Deal with Language. Dies mag der Fall sein, will -oder muss - man wirklich in die tiefsten Details von VHDL eintauchen, z.b. um Simulationsmodelle oder Synthesealgorithmen zu erstellen. Es ist jedoch nicht notwendig, alle Einzelheiten von VHDL zu kennen, bevor man mit den ersten Entwürfen starten kann. Viele der fortgeschrittenen Möglichkeiten werden zu Beginn nicht benötigt und können nach und nach erkundet werden. Es ist ratsam, sich zunächst an bewährte Konventionen bei der Erstellung eines VHDL-Modells zu halten und sich freizügig Anleihen 2

9 1.3 Aufbau einer VHDL-Schaltungsbeschreibung bei existierenden Beispielen zu holen. Das Kopieren aus vorhandenen VHDL Modellen erleichtert zudem die mühsame Eingabe der Modelle, die schon für einfache Schaltungen recht umfangreich werden können. Die Sprache VHDL wurde 1987 als IEEE 1076 standardisiert. Eine überarbeitete Version wurde 1994 als IEEE freigegeben. Um eine einheitliche Simulation von VHDL-Modellen auf verschiedenen Simulatoren zu gewährleisten, wurde mit dem Standard IEEE 1164 das Package std_logic_1164 definiert. Ein Package ist ein VHDL-Entwurfselement, das eine Sammlung von Deklarationen beinhaltet. Das Package std_logic_1164 beinhaltet das 9-wertige Logiksystem std_ulogic zur genaueren Modellierung verschiedener Signalstärken sowie davon abgeleitete Logiksysteme, die zugehörigen logischen Operatoren und Konvertierungsfunktionen. Zur Beschleunigung der Simulation von VHDL-Modellen auf der Gatterebene hat die VITAL-Initiative (VHDL Initiative Toward ASIC Libraries) den Standard IEEE entwickelt. Es wurden zum einen genormte Modelle auf Gatterebene definiert und zum anderen eine Methode zum Annotieren von Timing- Informationen. Dabei wurden bewährte Konzepte der Sprache Verilog übernommen. Eine Erweiterung von VHDL für analoge Schaltungen ist AHDL. Diese analoge HDL (AHDL) ist als IEEE genormt worden. 1.3 Aufbau einer VHDL-Schaltungsbeschreibung Ein VHDL-Modell besteht aus einzelnen Entwurfseinheiten. Eine Entwurfseinheit ist ein abgeschlossener Block von Anweisungen, die einzeln überprüft und simuliert werden kann. Die Beschreibung einer Entwurfseinheit besteht in VHDL aus drei Teilen: 1. Die Schnittstellenbeschreibung genannt Entity 2. Die Funktionsbeschreibung genannt Architecture 3. Zuordnungsbeschreibung genannt Configuration Eine Configuration ist nur dann erforderlich, wenn mehr als eine Architektur zur Auswahl steht. Im folgenden soll die VHDL Beschreibung eines RS-Flip-Flop beschrieben werden. Die Entsprechende Architecture Gatter Schaltung ist hier aufgezeigt. Beisp: RS - Flip Flop mit NOR Gates R ARCHITECTURE comb OF rsff IS q <= not (r or qn); qn <= not (s or q); END comb; S >1 Q >1 Qn Abbildung 1.1: Schaltplan eines RS-Flip-Flop 3

10 1 Die Hardwarebeschreibungssprache VHDL Schnittstellenbeschreibung (Entity) Für die Entity wird das zu beschreibende System als Black Box betrachtet. In der Schnittstellenbeschreibung werden nur die nach aussen führenden Signale mit ihren Bezeichnungen, Modi und Typen aufgeführt. ENTITY rsff IS PORT ( s,r : IN bit; q,qn: OUT bit); END rsff; Listing 1.1: Anschlüsse eines RS-FF Es wurde dabei für alle vier Ports der vordefinierte Typ b i t benutzt. Dieser Typ kann die Werte 0 und 1 annehmen. Wenn das oben erwähnte Package std_logic_1164 in ein VHDL-Modell mit eingebunden wird, dann kann z.b. auch der darin definierte Typ std_logic benutzt werden. Dieser Typ kennt folgende Werte: Starke Signalwerte: 0, 1, X Schwache Signalwerte: L, H, W Hochohmige Tristate-Ausgänge: Z Nichtinitialisierte Signale: U Don t Care: - Die Signalwerte X und W stellen dabei den Zustand unbekannt dar. Die Entity-Beschreibung würde dann wie folgt aussehen: library ieee; use ieee.std_logic_1164.a11 ENTITY rsff IS PORT ( s,r : IN std_logic; datain : IN std_logic; q,qn: OUT std_logic; c : std_logic_vector(7 downto 0); d : std_logic_vector(7 downto 0) ) END rsff; Listing 1.2: Entity RS-FF mit std_logic Dabei dienen die ersten beiden Zeilen zur Einbindung und Bekanntmachung der Deklarationen in dem Package std_logi c_

11 Entity (Beschreibung der Ein-Ausgänge eines Funktionsblocks) 1.3 Aufbau einer VHDL-Schaltungsbeschreibung Reservierte Worte: Dürfen nicht als frei wählbare Namen verwendet werden Mode: IN OUT INOUT Name der Entity, frei wählbar ENTITY rsff IS PORT ( s,r : IN std_logic; q,qn: OUT std_logic); END rsff; Type: std_logic_vector std_logic unsigned Abbildung 1.2: Syntax der Entity Die Funktionsbeschreibung (Architecture) Der zweite Teil einer Entwurfseinheit ist die sogenannte Architecture. Diese gibt die Funktion der Entwurfseinheit an, indem das Verhalten und/ oder die Struktur beschrieben wird. Als Beispiel soll hier zunächst eine Architecture angegeben werden, die das Verhalten der Entwurfseinheit RSFF beschreibt: ARCHITECTURE comb OF rsff IS q <= not (r or qn); qn <= not (s or q); c(7) <= datain; --assigning a signal to a single bit of a vector c(6 downto 0) <= c(7 downto 1); d <= (others => 0 ); --set all bits of vector d to zero END comb; Listing 1.3: Funktionsbeschreibung des RS-FF Enthält ein VHDL-Modell, wie in diesem Fall, nur eine Architecture der Entwurfseinheit RSFF, so ist mit den beiden Objekten Entity und Architecture die Beschreibung vollständig. Die beiden hier benutzten Operatoren or und not gehören zu den in VHDL vordefinierten Operatoren. Sind die beiden Operanden A und B vom Typ bit, so ist das Ergebnis ebenfalls von diesem Typ. Wird jedoch wie in de zweiten Entity das Package std_logic_1164 eingebunden, so werden durch das sogenannte Operator-Overloading die Operatoren so erweitert, dass sie z.b. auch Signale des Typs std_logic verarbeiten können. Das Ergebnis einer solchen Operation ist dann auch vom Typ std_logic. 5

12 Architecture 1 Die Hardwarebeschreibungssprache VHDL (Beschreibung des Verhaltens eines Blockes) Frei wählbarer Name der Architektur Name der Entity zu der die Architektur gehört ARCHITECTURE comb OF rsff IS q <= not (r or qn); qn <= not (s or q); END comb; Inhalt der Architektur Abbildung 1.3: Syntax der Architecture Zu jeder Entity gehört immer eine Architektur. Architektur und Entity treten immer als Paar auf. VHDL unterscheidet zwei grundsätzliche Methoden der Schaltungsbeschreibung: die Verhaltensbeschreibung (Behavioral Description) und die Strukturbeschreibung (Structural Description). Bei der Verhaltensbeschreibung wird das Verhalten der Schaltung durch Boolesche Gleichungen oder durch Prozesse (z.b. für Zustands-Maschinen) beschrieben. Die Strukturbeschreibung geht davon aus, jedes System durch Zusammenschalten von bereits definierten Blöcken (Komponenten) zu realisieren. Der Name der Architektur ist frei wählbar, jedoch haben sich Konventionen Eingebürgert. Beschreibt die Architektur Struktur, so nennt sie sich struct. Beschreibt sie kombinatorische Logik, so nennt sie sich comb. Beschreibt sie Register, nennt sie sich reg. Das folgende Kapitel beschäftigt sich mit Strukturbeschreibung Erzeugung einer Hierarchie durch Strukturbeschreibung VHDL ermöglicht es komplexe Designs strukturiert aufzubauen. Ein Design kann dazu, zu Zwecken der Übersichtlichkeit und Arbeitsteilung, in kleinere Blöcke aufgeteilt werden. Diese Blöcke wiederum können aus Unterblöcken usw. bestehen Beispiel einer Strukturbeschreibung Mit zwei Halbaddierern und einem ODER-Gatter lässt sich entsprechend Abbildung 1.4 ein Volladdierer aufbauen. Dieser addiert die drei an seinen Eingängen anliegenden Bits A, B und C und bildet daraus den Summenausgang SUM und den Übertrag CRY. Das entsprechende VHDL-Modell ist als abgedruckt. 6

13 5.4 VHDL beschreibt Struktur Mit zwei Halbaddierern und einem ODER-Gatter Iäßt sich entsprechend Abbildung 5.3 ein Volladdierer aufbauen. Dieser addiert die drei an seinen 1.3 Aufbau einer Eingängen VHDL-Schaltungsbeschreibung anliegenden Bits A, B und C und bildet daraus den Summenausgan l SUM und den Übertrag CRY. Das entsprechende VHDL-Modell ist als Listing 4 abgedruckt. A B a Volladdierer VOLLADD Abb. 5.3: Struktts Lles Volladdiercrs Abbildung 1.4: Struktur des Volladdierers Listing 4: enti ty V0 L LADD i s port (A,B,C: in bjt; ENTITY volladd IS CRY, SU[4: out bi ); PORT (A,B,C: IN std_logic; end V0LLADD; CRY,SUM: OUT std_logic); END volladd; arch i tecture STRUKTUR of V0LLADD r's signal X1,X2,X3: br't; ARCHITECTURE struct OF volladd component IS HALBADD.\rchite lahei u \etzlist -,,. \/^--.gll YglSL ' - :' r rirriertḋ.,- - dek Dit' Kom jinitinnen -clrr'or Kornpo -(nen N tes :oi". a irrale ge losition Irung de,, x_ 5.5 Eine Ve gnale au angege VHDL-M ren Prnor SIGNAL Xl,X2,X3: bit; 100 COMPONENT halbadd PORT (A,B: IN std_logic; CRY,SUM: OUT std_logic); END COMPONENT; COMPONENT odergat PORT (I1,I2: IN std_logic; OUTl: OUT std_logic); END COMPONENT; ul: HALBADD port map( A => A, B => B, CRY => X1, sum => X2); u2: HALBADD port map( A => X2, B => C, CRY => X3, sum => SUM); u3: ODERGAT port map( OUT1 => CRY, I1 => Xl, I2 => X3); END struct; Listing 1.4: Struktur des Volladierers In Listing wird zunächst die Entity des Volladdierers mit dem Namen V0LLADD und den Einund Ausgängen deklariert. Anschliessend folgt eine Architecture mit dem Namen struct zu dieser Entity. Es handelt sich dabei um eine reine Strukturbeschreibung. Dabei werden wie in einer Netzliste die verwendeten Signale und Komponenten aufgelistet und deren Verschaltung angegeben. 7

14 1 Die Hardwarebeschreibungssprache VHDL Zunächst werden nach dem Schlüsselwort SIGNAL die internen Signale mit ihrem jeweiligen Modus und Signaltyp definiert. Danach werden die benutzten Komponenten HALBADD und 0DER-GAT deklariert. Die Komponentendeklarationen sind ein Abbild der jeweiligen Entity-Definitionen. Der Name, der nach dem Wort Component steht, muss mit dem Namen der Entity übereinstimmen. Danach folgt die Deklarierung der Ports, welche man durch Copy-Paste direkt von der Entity übernehmen kann. Die eigentliche Strukturbeschreibung ist zwischen den Schlüsselworten und END zu finden. Hier werden die zuvor deklarierten Komponenten instanziiert. Dabei erhalten die einzelnen Instanzen einen eigenen Namen. Analog zu ICs auf einer Leiterplatten kann man dazu U1, U2 usw. als Name wählen. Mit Hilfe des Schlüsselwortes PORTMAP werden die internen Signale (A,B,C,CRY,SUM) der Entity V0LLADD an die Signale( X1, X2, X3) angeschlossen. Die Zuordnung der Signale geschieht dabei durch eine Zuordnung der lokalen (OUTl, I1, I2 ) zu den aktuellen Signalnamen (CRY,Xl,X3). Nach dem Doppelpunkt kommt der Name des Blockes. Innerhalb der Klammer von PORT MAP werden dann die Anschlüsse der Komponente (Linke Seite des Pfeils), mit den Signalen innerhalb des Blockes oder der Blockaussenanschlüsse verbunden (Rechte Seite des Pfeils). Dies Methode zum Anschliessen von Komponenten nennt man Named Association und ist die Übersichtlichste. Es gibt aber noch eine Alternative Methode, die Positional Assocation, welche aber leicht zu Fehlern führt, da man die Reihenfolge der aufgeführten Signale genau einhalten muss. PORT MAP (rx_eingang, system_clk, tx_asugang, uart_int) Listing 1.5: Beispiel für Named Association Die einzelnen Design Dateien selbst stehen flach in einem Sourceverzeichnis. Actung: Dem Simulator oder Synthesizer muss man angeben, welche Entity-Architektur die höchste Hierarchiestufe hat. Beim compilieren analysiert der Simulator oder Synthesizer beginnend von der höchsten Hierarchiestufe anhand der Component Declaration wie die Hierarchie zusammengesetzt ist. 8

15 1.4 Grundelemente von VHDL 1.4 Grundelemente von VHDL Identifier Ein gültiger Bezeichner in VHDL darf Gross- und Kleinbuchstaben (A... Z, a... z), Ziffern (0... 9) und den Unterstrich (_) enthalten. Er muss zwingend mit einem Buchstaben beginnen. Andere Zeichen sind nicht zulässig. Der Unterstrich darf nicht am Ende eines Bezeichners stehen; ebensowenig sind zwei aufeinanderfolgende Unterstriche erlaubt. In VHDL wird generell nicht zwischen Gross- und Kleinschreibung unterschieden; die Bezeichner SignalA, signala und SIGNALA bezeichnen alle dasselbe Signal. In VHDL existieren einige Schlüsselwörter, die, wie in anderen Programmiersprachen, nicht als Bezeichner verwendet werden dürfen (siehe Handbücher der VHDL-Compiler) Kommentare Kommentare beginnen mit zwei aufeinanderfolgenden Bindestrichen ( ) und umfassen den gesamten Rest der betreffenden Zeile. Kommentare können an jeder Stelle eines VHDL-Programmes auftreten. Beispiele: -- Das ist eine eigene Kommentarzeile -- auch eine zweite Zeile muss mit " --" eingeleitet werden ENTITY nand4 IS ( -- Kommentar bis zum Zeilenende Listing 1.6: Kommandozeile Daten-Objekte Daten-Objekte gehören in VHDL zu einer von drei möglichen Objekt-Klassen: Konstanten, Variablen und Signale. Wie bei modernen Sprachen üblich, müssen Daten-Objekte auch in VHDL vor ihrer Verwendung deklariert werden. Das geschieht mit folgender Syntax: CONSTANT identifier [, identifier...]: TYPE := value; VARIABLE identifier [, identifier...]: TYPE [:= value]; SIGNAL identifier [, identifier...]: TYPE [:= value]; Listing 1.7: Daten Objekte In eckige Klammern ([ ]) gesetzte Ausdrücke sind bei der Eingabe nicht zwingend erforderlich, können aber auftreten. Die Bedeutung von Konstanten, denen übrigens bei der Deklaration ein Wert zugewiesen werden muss, ist gleich wie in anderen Programmiersprachen. Die wichtigste Objektklasse sind sicher die Signale, die auch eine Hardware Entsprechung haben (Leitungen, Speicherbausteine). Die Variablen haben in VHDL eher die Bedeutung von Hilfsgrössen, aber sonst dieselben Eigenschaften wie Signale. CONSTANT bus width: INTEGER := 8; VARIABLE ctrl bits: std_logic_vector (7 DOWNTO 0); SIGNAL sig1, sig2, sig3: std_logic; Listing 1.8: Beispiele von Deklarationen 9

16 1 Die Hardwarebeschreibungssprache VHDL Daten-Typen Die IEEE 1164 Library unterstützt unter anderem die folgenden vordefinierten VHDL-Datentypen: integer boolean unsigned signed std_logic std_logic_vector Eine Wertzuweisung könnte beispielsweise so aussehen: sigl <= 1 ; Man beachte, dass der einem Objekt des Typs bit oder std_logic zugewiesene Wert in einfachen Anführungszeichen stehen muss! Ein std_logic_vector ist ein array of bit in aufsteigender oder absteigender Reihenfolge. Dieser Datentyp ist besonders bequem, um Bus-Signale zu beschreiben. SIGNAL a, b: std_logic_vector (0 TO 7); SIGNAL c, d: std_logic_vector (7 DOWNTO 0); SIGNAL e: std_logic_vector (0 TO 5); Listing 1.9: Deklaration von Vektoren Den eben deklarierten Signalen sollen nun Werte zugewiesen werden: a <= " "; C <= " "; b <= x"7a" d <= x"7a" e <= 0"25" Listing 1.10: Zuweisung von Werten Es wurden zwar hier den Signalen a und c die gleichen Werte zugewiesen (bei std_logic_vector müssen die zugewiesenen Werte in doppelten Anführungsstrichen ( ) stehen), aber wegen der abweichenden Reihenfolge der Indizierung enthalten die einzelnen Array-Elemente unterschiedliche Werte: a(7) = l c(7) = 0 a(6) = 0 c(6) = 0 a(5) = 1 c(5) = 1 a(4) = 0 c(4) = l a(3) = l c(3) = 0 a(2) = l c(2) = l a(1) = 0 c(l) = 0 a(0) = 0 c(0) = 1 Ein Präfix X oder x bedeutet, dass der Wert in hexadezimaler Form angegeben wird; O oder o bedeutet eine Angabe in oktaler Form. B oder b stehen schliesslich für binäre Darstellung, was auch automatisch angenommen wird, wenn kein Präfix verwendet wird. Die oktale bzw. die hexadezimale Form der Wertzuweisung ist nur anwendbar, wenn der std_logic_vector eine passende Länge aufweist (Vielfaches von 3 bzw. von 4). Nebst den hier beschriebenen vordefinierten Datentypen existieren noch die selbstdefinierten Typen, unter denen der Aufzählungstyp eine besondere Bedeutung hat. Seine Deklaration lautet: 10

17 1.4 Grundelemente von VHDL TYPE name IS ( value [, value...]); Listing 1.11: Deklarierung von eigenen Datentypen Beispiel: TYPE states IS (state0, statel, state2, state3); Listing 1.12: Datentypen zum Beschreiben von Automaten Es ist hier nicht notwendig, den Bezeichnern state0 etc. einen weiteren Typ zuzuweisen; eine Zuweisung erfolgt automatisch durch den Compiler Operatoren and or nand nor xor not Innerhalb der logischen Operatoren existiert keine Hierarchie; die Reihenfolge. in der die Operationen durchgeführt werden sollen, muss durch Klammern festgelegt werden. Beispiel: a <= (b and c) or d Listing 1.13: Verwendung von Operatoren Relationale Operatoren = gleich /= ungleich < kleiner <= kleiner gleich > grösser >= grösser gleich Addier-Operatoren + und - haben die gleiche Bedeutung wie in anderen Programmiersprachen, also Addition bzw. Subtraktion von Zahlen. & ist der Verknüpfungsoperator. Die Hauptanwendung ist die Verknüpfung von String-Konstanten. Dazu ein Beispiel: VARIABLE c: STRING; C:=" " -- wird vor allem dann verwendet, &"11111" -- wenn ein String zu lang für eine & "010101"; -- Zeile ist Listing 1.14: Verknüpfung von Strings Zuweisungs-Operatoren := Zuweisung für Variablen: v:= 5; <= Zuweisung für Signale: s <_ (a AND b) XOR (c OR d) ; In VHDL werden für Signale und Variablen unterschiedliche Zuweisungsoperatoren verwendet. Assoziations-Operator Der Assoziations-Operator => stellt einen Zusammenhang zwischen verschiedenen Objekten her. Seine Anwendung kann fast nicht allgemein beschrieben werden, hingegen wird sie durch Beispiele klarer. 11

18 1 Die Hardwarebeschreibungssprache VHDL 1.5 Verhaltensbeschreibung in VHDL Eine Verhaltensbeschreibung in VHDL gibt an, wie sich die Ausgangssignale aufgrund der Zustände der Eingangssignale verhalten. Es wird nicht angegeben, wie dieses Verhalten realisiert wird. Der Aufbau eines solchen VHDL-Modells ähnelt auf den ersten Blick einem Programm in einer höheren Programmiersprache. Bei der Verhaltensbeschreibung unterscheidet man zwischen gleichzeitigen Anweisungen (concurrent statements, nebenläufige Anweisungen) und sequentiellen Anweisungen innerhalb von Prozessen. Beide Anweisungstypen können innerhalb der gleichen Architekturdefinition gemischt vorkommen Nebenläufige (Concurrent) Anweisungen Concurrent-Anweisungen existieren ausserhalb von Prozessen und können fast beliebige Arten von Ausdrücken enthalten. Sie heissen gleichzeitig, weil sie alle zum gleichen Zeitpunkt ausgewertet werden; die Reihenfolge, in der die Anweisungen geschrieben werden, spielt also keine Rolle. Beispiele: u <= a; v <= u; w <= a XOR b; x <= (a AND s) OR (b AND NOT(s)); y <= 1 WHEN (a= 0 AND b= 1 ) ELSE 0 ; z <= a WHEN (count="0010") ELSE b; Listing 1.15: Nebenläufige Anweisungen Die Signale a, u und v haben alle den gleichen Wert, nämlich den von a. Dies wäre auch so, wenn die Reihenfolge der ersten beiden Zeilen umgestellt würde. Hier besteht die Möglichkeit, Denkfehler einzubauen, weil man sich von anderen Programmiersprachen her nicht an gleichzeitige Anweisungen gewöhnt ist, sondern gedanklich alles sequentiell abarbeitet. Am Beispiel eines 4x4 Multiplexers sollen hier einige Möglichkeiten gezeigt werden, wie man ein und dasselbe Verhalten auf ganz verschiedene Arten beschreiben kann. Details zur Syntax müssen im jeweiligen Compiler-Handbuch nachgeschlagen werden. Im ersten Beispiel soll der Multiplexer mit logischen Gleichungen beschrieben werden: -- 4x4 Multiplexer mit logischen Gleichungen -- (concurrent statements) ENTITY mux IS PORT( a,b,c,d: IN std_logic_vector(3 DOWNTO 0); s: IN std_logic_vector(1 DOWNTO 0); x: OUT std_logic_vector(3 DOWNTO 0)); END mux; ARCHITECTURE archmux OF mux IS x(3) <= (a(3) AND NOT(s(1)) AND NOT(s(0))) OR (b(3) AND NOT(s(1)) AND s(0)) OR (c(3) AND s(1) AND NOT(s(0))) OR (d(3) AND s(1) AND s(0)); x(2) <=... END archmux; Listing 1.16: Multiplexer mit logischen Gleichungen ausgedrückt 12

19 1.5 Verhaltensbeschreibung in VHDL WHEN_ELSE -Anweisung Die When_Else eine nebenläufige Anweisung und steht irgendwo zwischen begin und end Statement einer Architektur. Trifft eine Zeile zu, dann werden die nachfolgenden Zeilen nicht mehr abgefragt. Die oberen Abfragen haben demnach Priorität gegenüber den Abfragen die weiter unten vor kommen. Man kann somit eine Logik mit Priorität aufbauen. -- 4x4 Multiplexer mit "when-else" -- (concurrent statements) Anweisung ENTITY mux IS PORT( a,b,c,d: IN std_logic_vector(3 DOWNTO 0); s: IN std_logic_vector(1 DOWNTO 0); x: OUT std_logic_vector(3 DOWNTO 0)); END mux; ARCHITECTURE archmux OF mux IS x <= a WHEN (s=" 00" ) ELSE b WHEN (s=" 01" ) ELSE c WHEN (s=" 10" ) ELSE d; Listing 1.17: Multiplexer mit WHEN-ELSE ausgedrückt SELECT_WHEN -Anweisung Die select_when Anweisung wird auch nebenläufig behandelt. Im Gegensatz zur when_else Anleitung haben die Abfragen keine Priorität. Die Reihenfolge in der sie vorkommen ist für die Bildung der Logik irrelevant. ENTITY mux IS PORT( a,b,c,d: IN std_logic_vector(3 DOWNTO 0); s: IN std_logic_vector(1 DOWNTO 0); x: OUT std_logic_vector(3 DOWNTO 0)); END mux; ARCHITECTURE comb OF mux IS with s select x <= a WHEN "00", b WHEN "01", c WHEN "10", d WHEN OTHERS; END comb; Listing 1.18: Multiplexer mit SELECT_WHEN ausgedrückt Sequenzielle (Sequential) Statements und Prozesse Ein Prozess enthält eine Reihe von Anweisungen, die in vertrauter Manier nacheinander, also sequentiell, ausgewertet werden. Die Reihenfolge der Anweisungen ist hier sehr wichtig. Demgegenüber werden alle Anweisungen, die ausserhalb eines Prozesses stehen, nebenläufig ausgeführt. Der Prozess selbst wird zusammen mit den anderen nebenläufigen Statements in einer Architektur aber gleichzeitig behandelt, somit kann man sagen, dass der Prozess selbst ein nebenläufiges Statement ist. Die Signale eines Prozesses werden global erst nach Beendigung des Prozesses aktualisiert während Variablenzuweisungen sequentiell bearbeitet werden. 13

20 1 Die Hardwarebeschreibungssprache VHDL Nebenläufige und sequentielle Ausführung Dies ist aus der Sicht eines Programmierers zunächst ungewohnt. Geht man jedoch von der Hardware aus, so ist klar, dass dort alle Funktionseinheiten gleichzeitig, d.h. nebenläufig, arbeiten und auch die Signale nicht nacheinander, sondern zu beliebigen Zeiten ihren Wert ändern können. Abbildung 1.5 verdeutlicht diesen Unterschied an einem beispielhaften Vergleich. Beginn nebenläufig sequentiell Beginn Anweisung Prozeß 1 Prozeß 2 Anweisung Anweisung Anweisung Anweisung Anweisung Ende Ende Abbildung 1.5: Nebenläufige und Sequentielle Ausführung Prozesse werden bei der Simulation eines VHDL-Modells sequentiell abgearbeitet, entweder bis zum Prozess Ende oder bis zu einer wait-anweisung. Diese gibt an, unter welchen Bedingungen der Prozess erneut aktiviert werden soll. Beispiel: procl: PROCESS (x) a <= 0 IF x = "1011" THEN a <= 1, END IF; END PROCESS procl; Listing 1.19: Sensitivity Liste Prozesse stehen in der Architektur zwischen und END Statement. Der Parameter (x) hinter dem Schlüsselwort PROCESS ist eine sogenannte Sensitivity List. Das bedeutet, dass der Prozess nur ausgeführt wird, wenn sich der Wert x ändert. Falls diese Sensitivity List weggelassen wird, wird der Prozess immer ausgeführt, wenn sich irgendein Signal ändert. Diese Liste kann auch mehrere Parameter enthalten und sollte alle Parameter enthalten die innerhalb des Prozesses abgefragt werden. Die Sensitivity Liste ist nur für den Simulator relevant, der Synthesizer betrachtet die Sensitivity Liste nicht. Die Idee hinter der Sensitivity Liste ist, Prozessorleistung bei der Ausführung von Simulationen zu sparen. Bei einer logischen Schaltung ändert sich das Ausgangssignal nur dann, wenn sich ein Eingangssignal ändert. 14

21 1.5 Verhaltensbeschreibung in VHDL Bei D-Flip Flops sogar nur nach der Flanke des Taktsignales. Also muss ein Prozess nur dann aufwachen, wenn sich ein Eingangssignal auf seiner Sensitivity Liste ändert. Alle anderen Prozesse können im Schlafzustand bleiben wenn sich nichts an ihren Eingangsignalen ändert und somit wird Prozessorleistung gespart. Achtung: Aus oben genannten Gründen darf die Sensitivity Liste nicht benutzt werden um eine bestimmte Hardwarefunktionalität zu erzeugen. proc2: PROCESS (rst, clk) IF rst= 1 THEN q <= 0 ; ELSIF (clk event AND clk= 1 ) THEN q <= d; END IF; END PROCESS; Listing 1.20: D-FF mit asynchronem Reset Bei diesem Beispiel ist zu beachten, dass die Zuweisung q <= 0 nur erfolgt, wenn rst = 1 ist. Es gelten also genau die Regeln, die von den üblichen Programmiersprachen her bekannt sind. Der Ausdruck hinter ELSIF (Aufpassen auf Schreibweise!) ist nur dann wahr, wenn eine ansteigende Taktflanke aufgetreten ist. Der obige Prozess beschreibt übrigens das Verhalten eines positiv flankengetriggerten D-Flip-Flops mit einem asynchronen Reset-Eingang. Prozesse strukturieren den VHDL Kode und erleichtern das Auffinden von Problemen, da der Kompiler Fehlermeldungen mit Hilfe von Prozessen referenziert. Um die Verständlichkeit und Übersichtlichkeit von VHDL Kode zu gewährleisten, sollte man für jede Funktion, Signal, Signalbündel oder ähnlich gesteuerte Signale jeweils immer einen eigenen Prozess verwenden. Kurz, man sollte nicht mit Prozessen sparen IF_ELSIF im Prozess Schliesslich kann eine kombinatorische Logik auch mit Hilfe von Prozessen beschrieben werden; auch dabei haben wir die Wahl zwischen verschiedenen Anweisungen. Zunächst die Variante mit der IF _ ELSIF-Anweisung: ARCHITECTURE archmux OF mux IS mx4: PROCESS (a,b,c,d,s) IF s="00" THEN x <= a; ELSIF s="01" THEN x <= b; ELSIF s="10" THEN x <= c; ELSE x <= d; END IF; END PROCESS mx4; END archmux; Listing 1.21: Multiplexer mit IF_ELSIF ausgedrückt Die IF_ELSIF Anweisung ist analog zur when_else Anweisung priorisierend. Trifft eine Bedingung weiter oben zu, so kommen die nachfolgenden Bedingungen nicht mehr zur Ausführung. Die erste Zeile hat also Priorität gegenüber den nachfolgenden. Nach der Synthese liegen die Eingangssignale der ersten Bedingung näher am Ausgang als die der letzten Abfrage (Priorität). Das heisst es können je nach Signal unterschiedliche Verzögerungswerte der kombinatorischen Logik entstehen. 15

22 1 Die Hardwarebeschreibungssprache VHDL Die CASE_WHEN Anweisung im Prozess ARCHITECTURE archmux OF mux IS PROCESS (a,b,c,d,s) CASE s IS WHEN "00" => x <= a; WHEN "01" => x <= b; WHEN "10" => x <= c; WHEN OTHERS => x <= d; END CASE; END PROCESS; END archmux; Listing 1.22: Multiplexer mit CASE Statement ausgedrückt Die case_when Anweisung ist wieder equivalent zur with_select Anweisung, nur dass sie nur im Prozess verwendet werden kann. Sie ist wieder nicht priorisierend, alle Abfragen werden gleich behandelt. Die case_when Anweisung benutzt man daher gerne für Adressdekoder da alle Eingangssignale gleich behandelt werden und deshalb die Durchlaufverzögerungen von den Eingängen zu den Ausgängen für alle Ausgangssignale weitgehend gleich sind Erzeugen von getakteten Flip-Flops D-Flip-Flops unterscheiden sich von RS-Flip-Flops durch ihre Taktflankensteuerung. Zur Modellierung muss ein Pegelübergang an einem Taktsignal erkannt werden, wozu sich das VHDL-Attribut EVENT eignet. Dieses Attribut bezieht man auf das Taktsignal und platziert es in einem Prozess entweder in einer WAIT- oder in einer IF-Anweisung: ARCHITECTURE reg OF dff IS PROCESS (clk) IF clk EVENT AND clk = 1 THEN q <= d; END IF; END PROCESS; END reg; Listing 1.23: Erzeugen eines D-FF Zu beachten ist, dass gewünschte asynchrone Eingänge von Speicherelementen nicht automatisch von einem Syntheseprogramm erzeugt werden, sondern in VHDL beschrieben werden müssen. Am Beispiel eines D-Flip-Flops mit asynchronem Rücksetzeingang sei dies gezeigt: ENTITY dff_async_reset IS PORT (clk,d,reset: IN std_ulogic; q: OUT std_ulogic ); END dff_async_reset; ARCHITECTURE reg OF dff_async_reset IS PROCESS (clk,reset) IF reset = 0 THEN -- low-aktives Reset q <= 0 ; -- hat erste Prioritaet ELSIF clk EVENT AND clk = 1 AND -- Abfrage auf Taktfl. clk LAST_VALUE = 0 THEN -- nur, wenn kein reset 16

23 1.5 Verhaltensbeschreibung in VHDL q <= d; END IF; END PROCESS; END reg; Listing 1.24: DFF mit asynchronem Reset Zähler in VHDL Zustandsdiagramm des Würfel-Zählers Folge- Zustand Gegenwärtiger Zustand Abbildung 1.6: Zustände eines Zählers mit 6 Schritten Zürcher Fachhochschule 16 Ein Zähler hat die Aufgabe Taktpulse zu zählen und ist mit zwei Blöcken aufgebaut. Der erste Block ist der Zustandsspeicher, in dem der gegenwärtige Zählerwert abgespeichert wird. Der zweite Block ist die Kombinatorischen Prozesse Logik, des Zählers die aus dem gegenwärtigen Zustand den Folgezustand berechnet. Der Folgezustand wird bei der nächsten Taktflanke in den Zustandsspeicher eingetragen. Da wir es mit zwei Funktionsblöcken zu tun haben, einer mit kombinatorischer Logik und einer mit getakteter Logik, macht es Sinn, diese in zwei separaten Prozessen unterzubringen. Prozess mit Kombinatorischer Logik 4 cnt_folge clk Prozess mit getakteter Logik cnt_gegenwart comb_ reset reg_ 4 Berechnung des Folgezustands Zustandsspeicher Zürcher Fachhochschule 20 Abbildung 1.7: Die zwei Prozesse des Zählers Der Ausgang der getakteten Logik ist der gegenwärtige Zustand und dient als Eingang der kombinatorischen Logik. Der Ausgang der kombinatorischen Logik ist der Folgezustand und dient als Eingang der getakteten Logik. Die kombinatorische Logik ist im wesentlichen eine Rechenschaltung, die zum gegenwärtigen Zustand 17

24 1 Die Hardwarebeschreibungssprache VHDL eine eins addiert. Beziehungsweise subtrahiert, wenn es sich um einen Downcounter handelt. Beliebige Abwandlungen davon sind in der kombinatorischen Logik programmierbar. Im folgenden VHDL Beispiel wird ein Zähler mit getrennten Prozessen gezeigt. In der Praxis findet man häufig auch Zähler, die nur mit einem Prozess aufgebaut sind, diese sind von der Funktion und vom Synthese Ergebnis identisch. Aus Gründen der Lesbarkeit und Klarheit des VHDL Codes, sollte man Zähler mit getrennten Prozessen beschreiben. LIBRARY ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; ENTITY zaehl_einfach IS PORT( clk,reset : IN std_logic; cnt_out : OUT std_logic_vector(3 downto 0) ); END zaehl_einfach; signal cnt_folge: integer RANGE 0 to 15; signal cnt_gegenwart: integer RANGE 0 to 15; logik : PROCESS(cnt_gegenwart) cnt_folge <= cnt_gegenwart + 1 ; END PROCESS logik; flip_flops : PROCESS(clk, reset) IF reset = 1 THEN cnt_gegenwart <= 0; ELSIF clk EVENT AND clk = 1 THEN cnt_gegenwart <= cnt_folge ; END IF; END PROCESS flip_flops; cnt_out <= std_logic_vector(to_unsigned(cnt_gegenwart,4)); Listing 1.25: Code Beispiel eines Zählers Konvertierungsroutinen Da das Rechnen mit std_logic Vektoren nicht möglich ist, muss die Addition mit Integer Zahlen durchgeführt werden. Da jedoch der Zählerwert irgendwann einmal in einen Vektor umgewandelt werden muss, spätestens wenn man damit an die CPLD Pins gehen will, gibt es die IEEE Umwandlungsroutinen. Diese werden vom IEEE im Packet numeric_std (für std_logic Typen) zur Verfügung gestellt. Das folgende Beispiel wandelt einen Integer Wert cnt_gegenwart mit der Breite von 4 Bit zunächst in einen unsigned Wert um und dann in einen std_logic Vektor: cnt_out <= std_logic_vector(to_unsigned(cnt_gegenwart,4)); Listing 1.26: Umwandlung von Integer in std_logic_vector Manchmal muss man einen Vektor in einen Integer umzuwandeln. Dies ist zum Beispiel nötig, um einen Zähler mit dem Wert dieses Vektors vorzuladen. Das folgende Beispiel zeigt, wie ein Vektor zunächst in den Typ Signed und dann in Integer übertragen wird. 18

25 1.5 Verhaltensbeschreibung in VHDL Type Conversion std_logic_vector -> unsigned std_logic_vector -> signed unsigned -> std_logic_vector signed -> std_logic_vector integer -> unsigned integer -> signed unsigned -> integer signed -> integer integer -> std_logic_vector std_logic_vector -> integer unsigned + unsigned -> std_logic_vector signed + signed -> std_logic_vector Resizing unsigned signed numeric_std unsigned(arg) signed(arg) std_logic_vector(arg) std_logic_vector(arg) to_unsigned(arg,size) to_signed(arg,size) to_integer(arg) to_integer(arg) integer -> unsigned/signed ->std_logic_vector std_logic_vector -> unsigned/signed ->integer std_logic_vector(arg1 + arg2) std_logic_vector(arg1 + arg2) resize(arg,size) resize(arg,size) Tabelle 1.1: Mit numeric_std zur Verfügung stehende Convertierungsroutinen cnt <= to_integer(signed(data)); Listing 1.27: Umwandlung von std_logic_vector in Integer Zustandsautomaten Bei der Modellierung von endlichen Zustandsautomaten (engl: Finite State Machines) (FSM) muss man zwischen Mealy-, Moore- und Medvedev-Automaten unterscheiden. Bei einem Mealy-Automaten hängt der Ausgangsvektor vom momentanen Zustand und vom Eingangsvektor ab, beim Moore-Automaten dagegen nur vom gegenwärtigen Zustand. Ein Medvedev-Automat ist dadurch gekennzeichnet, dass jeder Ausgang des Automaten mit dem Ausgang eines Zustands-Flip-Flops identisch ist. Beim werden die Ausgangsvektoren direkt weiterverwendet, er hat also keine Ausgangslogik. Abbildung 1.8 beschreibt ein Blockschaltbild für den Mealy-Automatentyp. 19

26 1 Die Hardwarebeschreibungssprache VHDL Mealy Automat Zustands -speicher E t m n Ansteuer Logik δ Z t+1 = δ (Z t, E t ) n Q!Q Z t n = Anzahl der FFs Ausgangs- Logik ω A t = ω (Z t,, E t ) Takt E t = Eingangsvektor Z t = Zustandssvektor zum gegenwärtigen Zeitpunkt t Abbildung 1.8: Blockdiagram eines Mealy Automaten Z t+1 = Zustandssvektor nach dem Taktimpuls Die folgenden drei VHDL-Prozesse zeigen die prinzipielle, synthesegerechte Modellierung eines Mealy- Automaten. Die Blöcke aus Abbildung 1.8 sind hier in getrennten Prozessen realisiert. zustandsspeicher: PROCESS (clk, reset) IF (reset = 1 ) THEN zustand <= reset_zustand; ELSIF (clk event AND clk= 1 AND clk LAST_VALUE = 0 ) THEN zustand <= folge_zustand; END IF; END PROCESS zustandsspeicher; uebergangslogik: PROCESS (zustand, in1, in2,...) CASE zustand IS WHEN zustand1 => IF (in1 =... AND in2 =... AND...) THEN folge_zustand <=...; ELSIF WHEN zustand2 =>... END CASE; END PROCESS uebergangslogik; ausgabelogik: PROCESS (zustand, in1, in2,...) CASE zustand IS WHEN zustand1 => IF (in1 =... AND in2 =... AND...) THEN out1 <=...; out2 <=...;... ELSIF WHEN zustand2 =>... END CASE; END PROCESS ausgabelogik; Listing 1.28: Beispiel eines Mealy Automaten 18 Da die Prozesse zur Beschreibung der Übergangslogik und der Ausgabelogik sehr ähnlich sind, können 20

27 1.5 Verhaltensbeschreibung in VHDL sie auch zusammengefasst werden. Eine mögliche Fehlerquelle hierbei ist, dass Latches für die Ausgänge erzeugt werden, wenn diese nicht in jedem Zustand und bei jeder Kombination der Eingangssignale einen Wert zugewiesen bekommen. Wenn man versucht, die FSM komplett in einem Prozess zu modellieren, der lediglich vom Takt und dem Rücksetzsignal getriggert wird, werden Flip-Flops für die Ausgänge erzeugt. Als Folgerung daraus kann man empfehlen, bei Mealy- und Moore-Automaten einen Prozess für die Zustandsspeicherung und einen weiteren Prozess für den rein kombinatorischen Teil zu verwenden. 21

28 1 Die Hardwarebeschreibungssprache VHDL 1.6 VHDL Kode zum Verifizieren von Schaltungen Gehen wir noch einmal zurück zu Kapitel wo wir das Hierarische Design besprochen haben. Zum Verifizieren des ganzen Designs umbaut man dieses noch einmal in einer höhere Hierarchie die wir Testbench nennen. Die Testbench ist die höchste Hierarchiestufe in einem Design. In ihr enthalten ist das zu testende Teil. In der Fachsprache nennt man dies Device under test oder DUT. Testet man ein ganzes System, so ist das DUT der Top Level eines Designs. Die Testbench schliesst dann direkt an die Pins des CPLDs an. Testet man nur einen Unterblock, so ist das DUT der Unterblock. Da die Testbench immer die höchste Hierarchiestufe ist und darüber keine weiteren Blöcke existieren, hat die Testbench Entity auch keine Verbindungen nach aussen. Die Testbench Entity ist somit leer. ENTITY testbench IS END testbench; Listing 1.29: ENtity einer Testbench Eine Testbench die so aufgebaut ist hat den Vorteil, dass der Toplevel nach der Synthese anstelle des unsynthetisierten Kodes eingesetzt werden kann und die Simulation damit wiederholt werden kann. Vor der Synthese enthält die Testbench den unsynthetisierten RTL Kode. Nach der Synthese kann man den TOP Level des unsynthetisierten RTL Kode mit dem fertig synthetisierten Kode einfach austauschen. Die Simulationsergebnisse müssen danach gleich sein, ausser dass jetzt die Timing Informationen vorhanden sind. Dass heisst unsynthetisiertes RTL kann man mit beliebigen Taktfrequenzen laufen lassen. Synthetisierte Designs laufen nur noch bis zu Ihrer maximalen Taktfrequenz. Man nennt die Simulation nach der Synthese mit den Timingwerten auch Timingsimulation oder Backannotierte Simulation, da die Werte für das Timing im nachhinein angefügt wurden Architecture der Testbench Im Architecture Teil der Testbench wird der Top Level als Component deklariert, es ist also ein Block der in der Architecture Testbench verwendet wird. Da es sich um den Toplevel handelt gibt es sonst meist keine weiteren Component. Nach dem Begin der Architecture muss dann die Component Top-Level an die Signale in der Architectur angeschlossen werden. Das geschieht mit dem Port Map. Für jeden Anschluss an den Device under Test Component muss vor der Begin Section ein Signal deklariert werden. Nach dem Port Map des DUT folgt die Erzeugung der Stimuli und eventuell die Assert Statements. Um eine Dummy Tetbench Architektur herzustellen gibt es im Quartus einen Testbenchwizzard Erzeugung von Takten Um ein Taktsignal zu erzeugen bedient man sich eines Prozesses. Da ein Prozess ohne Sensitivity Liste immer aktiv ist, beginnt der unten gezeigte Prozess nach Ablauf der zwei WAIT statements wieder von vorne (siehe Abschnitt 1.5.2). CLK_HALFP ist ein Signal vom Type Time. signal clk_halfp : time := 20 ns; clkgen : PROCESS 22

Übungen zu Architektur Eingebetteter Systeme. Teil 1: Grundlagen. Blatt 5 1.1: VHDL 28./29.05.2009

Übungen zu Architektur Eingebetteter Systeme. Teil 1: Grundlagen. Blatt 5 1.1: VHDL 28./29.05.2009 Übungen zu Architektur Eingebetteter Systeme Blatt 5 28./29.05.2009 Teil 1: Grundlagen 1.1: VHDL Bei der Erstellung Ihres Softcore-Prozessors mit Hilfe des SOPC Builder hatten Sie bereits erste Erfahrungen

Mehr

VHDL Einleitung. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2010

VHDL Einleitung. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2010 VHDL Einleitung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2010 VHDL Einleitung 1/17 2010-04-14 Inhalt Entwurfsebenen und -sichten

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

VHDL Verhaltensmodellierung

VHDL Verhaltensmodellierung VHDL Verhaltensmodellierung Dr.-Ing. Volkmar Sieh Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2013 VHDL Verhaltensmodellierung 1/18 2013-01-11 Inhalt

Mehr

Grundlagen der Technischen Informatik. Sequenzielle Netzwerke. Institut für Kommunikationsnetze und Rechnersysteme. Paul J. Kühn, Matthias Meyer

Grundlagen der Technischen Informatik. Sequenzielle Netzwerke. Institut für Kommunikationsnetze und Rechnersysteme. Paul J. Kühn, Matthias Meyer Institut für Kommunikationsnetze und Rechnersysteme Grundlagen der Technischen Informatik Paul J. Kühn, Matthias Meyer Übung 2 Sequenzielle Netzwerke Inhaltsübersicht Aufgabe 2.1 Aufgabe 2.2 Prioritäts-Multiplexer

Mehr

Einführung in. Logische Schaltungen

Einführung in. Logische Schaltungen Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von

Mehr

Elektrische Logigsystem mit Rückführung

Elektrische Logigsystem mit Rückführung Mathias Arbeiter 23. Juni 2006 Betreuer: Herr Bojarski Elektrische Logigsystem mit Rückführung Von Triggern, Registern und Zählern Inhaltsverzeichnis 1 Trigger 3 1.1 RS-Trigger ohne Takt......................................

Mehr

Grundlagen der Informatik 2. Grundlagen der Digitaltechnik. 5. Digitale Speicherbausteine

Grundlagen der Informatik 2. Grundlagen der Digitaltechnik. 5. Digitale Speicherbausteine Grundlagen der Informatik 2 Grundlagen der Digitaltechnik 5. Digitale Speicherbausteine Prof. Dr.-Ing. Jürgen Teich Dr.-Ing. Christian Haubelt Lehrstuhl für Hardware-Software Software-Co-Design Grundlagen

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen Elektronik Praktikum / Digitaler Teil Name: Jens Wiechula, Philipp Fischer Leitung: Prof. Dr. U. Lynen Protokoll: Philipp Fischer Versuch: 3 Datum: 24.06.01 RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Versuch 3: Sequenzielle Logik

Versuch 3: Sequenzielle Logik Versuch 3: Sequenzielle Logik Versuchsvorbereitung 1. (2 Punkte) Unterschied zwischen Flipflop und Latch: Ein Latch ist transparent für einen bestimmten Zustand des Taktsignals: Jeder Datensignalwechsel

Mehr

Grundtypen Flip-Flops

Grundtypen Flip-Flops FLIP-FLOPs, sequentielle Logik Bei den bislang behandelten Logikschaltungen (Schaltnetzen) waren die Ausgangsgrößen X, Y... zu jeder Zeit in eindeutiger Weise durch die Kombination der Eingangsvariablen

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

<ruske.s@web.de> Oliver Liebold. NAND (negierte Undverknüpfung) L L H L H H H L H H H L

<ruske.s@web.de> Oliver Liebold. NAND (negierte Undverknüpfung) L L H L H H H L H H H L Elektronische Grundlagen Versuch E7, Grundelemente der Digitaltechnik Praktikumsgruppe IngIF, 04. Juni 2003 Stefan Schumacher Sandra Ruske Oliver Liebold

Mehr

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Wintersemester 2001/2002. Hardwarepraktikum. Versuch 4: Sequentielle Systeme 1. - Toralf Zemlin - Swen Steinmann - Sebastian Neubert

Wintersemester 2001/2002. Hardwarepraktikum. Versuch 4: Sequentielle Systeme 1. - Toralf Zemlin - Swen Steinmann - Sebastian Neubert Hardwarepraktikum Wintersemester 2001/2002 Versuch 4: Sequentielle Systeme 1 - Toralf Zemlin - Swen Steinmann - Sebastian Neubert Aufgabenstellung: 2.1. Untersuchen Sie theoretisch und praktisch die Wirkungsweise

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

EasyWk DAS Schwimmwettkampfprogramm

EasyWk DAS Schwimmwettkampfprogramm EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Einstellige binäre Addierschaltung (Addierer)

Einstellige binäre Addierschaltung (Addierer) VHDL Addierer 1 Einstellige binäre Addierschaltung (Addierer) Schnittstelle: Ports mit Modus IN bzw. OUT Signale Funktionsnetz: Ports, Funktionsblöcke, Verbindungen Signale für Ports und Verbindungen VHDL

Mehr

Summenbildung in Bauteiltabellen mit If Then Abfrage

Summenbildung in Bauteiltabellen mit If Then Abfrage Summenbildung in Bauteiltabellen mit If Then Abfrage Die in Bauteiltabellen ausgelesenen Werte lassen sich in jeder Spalte als Summe berechnen. So können selbstverständlich die Flächen der in der Tabelle

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren: 4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Technische Informatik Basispraktikum Sommersemester 2001

Technische Informatik Basispraktikum Sommersemester 2001 Technische Informatik Basispraktikum Sommersemester 2001 Protokoll zum Versuchstag 4 Datum: 21.6.2001 Gruppe: David Eißler/ Autor: Verwendete Messgeräte: - digitales Experimentierboard (EB6) - Netzgerät

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Grundtypen Flip-Flops

Grundtypen Flip-Flops FLIP-FLOPs, sequentielle Logik Bei den bislang behandelten Logikschaltungen (chaltnetzen) waren die Ausgangsgrößen X, Y... zu jeder Zeit in eindeutiger Weise durch die Kombination der Eingangsvariablen

Mehr

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4. Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil

Mehr

Berechnungen in Access Teil I

Berechnungen in Access Teil I in Access Teil I Viele Daten müssen in eine Datenbank nicht eingetragen werden, weil sie sich aus anderen Daten berechnen lassen. Zum Beispiel lässt sich die Mehrwertsteuer oder der Bruttopreis in einer

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Mag. Christian Gürtler Programmierung Grundlagen der Informatik 2011 Inhaltsverzeichnis I. Allgemeines 3 1. Zahlensysteme 4 1.1. ganze Zahlen...................................... 4 1.1.1. Umrechnungen.................................

Mehr

Microsoft Access 2013 Navigationsformular (Musterlösung)

Microsoft Access 2013 Navigationsformular (Musterlösung) Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft Access 2013 Navigationsformular (Musterlösung) Musterlösung zum Navigationsformular (Access 2013) Seite 1 von 5 Inhaltsverzeichnis Vorbemerkung...

Mehr

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt AMPEL-Steuerung(en) Die Beschreibung und Programmierung der Ampel (vor allem Ampel_5) können sehr kompliziert

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK

I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK... 1... V H D L Tim Köhler April 2005 I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK... 2... Übersicht 1. Einleitung 2. Syntax 3. Spezielle

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr

Englische Division. ... und allgemeine Hinweise

Englische Division. ... und allgemeine Hinweise Das folgende Verfahren ist rechnerisch identisch mit dem Normalverfahren; es unterscheidet sich nur in der Schreibweise des Rechenschemas Alle Tipps und Anmerkungen, die über die Besonderheiten dieser

Mehr

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen Austausch- bzw. Übergangsrozesse und Gleichgewichtsverteilungen Wir betrachten ein System mit verschiedenen Zuständen, zwischen denen ein Austausch stattfinden kann. Etwa soziale Schichten in einer Gesellschaft:

Mehr

Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014

Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014 Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014 Martin Vollenweider Dateinamen im Internet Da wir im Internet in gemischten Hard- und Softwareumgebungen (z.b. Windows, Unix, Macintosh,

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

10. Elektrische Logiksysteme mit

10. Elektrische Logiksysteme mit Fortgeschrittenenpraktikum I Universität Rostock - Physikalisches Institut 10. Elektrische Logiksysteme mit Rückführung Name: Daniel Schick Betreuer: Dipl. Ing. D. Bojarski Versuch ausgeführt: 22. Juni

Mehr

N Bit binäre Zahlen (signed)

N Bit binäre Zahlen (signed) N Bit binäre Zahlen (signed) n Bit Darstellung ist ein Fenster auf die ersten n Stellen der Binär Zahl 0000000000000000000000000000000000000000000000000110 = 6 1111111111111111111111111111111111111111111111111101

Mehr

Die Excel Schnittstelle - Pro Pack

Die Excel Schnittstelle - Pro Pack Die Excel Schnittstelle - Pro Pack Die Excel Pro Pack ist eine Erweiterung der normalen Excel Schnittstelle, die in der Vollversion von POSWare Bestandteil der normalen Lizenz und somit für alle Lizenznehmer

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK FAKULTÄT FÜ INFOMATIK TECHNICHE UNIVEITÄT MÜNCHEN Lehrstuhl für echnertechnik und echnerorganisation Prof. Dr. Arndt Bode Einführung in die echnerarchitektur Wintersemester 2015/2016 Zentralübung 10 08.01.2016

Mehr

Erklärung zum Internet-Bestellschein

Erklärung zum Internet-Bestellschein Erklärung zum Internet-Bestellschein Herzlich Willkommen bei Modellbahnbau Reinhardt. Auf den nächsten Seiten wird Ihnen mit hilfreichen Bildern erklärt, wie Sie den Internet-Bestellschein ausfüllen und

Mehr

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192. Binäres und dezimales Zahlensystem Ziel In diesem ersten Schritt geht es darum, die grundlegende Umrechnung aus dem Dezimalsystem in das Binärsystem zu verstehen. Zusätzlich wird auch die andere Richtung,

Mehr

E-Mail-Inhalte an cobra übergeben

E-Mail-Inhalte an cobra übergeben E-Mail-Inhalte an cobra übergeben Sie bieten ihren potentiellen oder schon bestehenden Kunden über ihre Website die Möglichkeit, per Bestellformular verschiedene Infomaterialien in Papierform abzurufen?

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Kapitel 4 Schaltungen mit Delays (Schaltwerke) Literatur: Oberschelp/Vossen, Kapitel 4. Kapitel 4: Schaltungen mit Delays Seite 1

Kapitel 4 Schaltungen mit Delays (Schaltwerke) Literatur: Oberschelp/Vossen, Kapitel 4. Kapitel 4: Schaltungen mit Delays Seite 1 Kapitel 4 Schaltungen mit Delays (Schaltwerke) Literatur: Oberschelp/Vossen, Kapitel 4 Kapitel 4: Schaltungen mit Delays Seite 1 Schaltungen mit Delays Inhaltsverzeichnis 4.1 Einführung 4.2 Addierwerke

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

Inhaltsverzeichnis Vorlesung VHDL, HW/SW-Codesign"

Inhaltsverzeichnis Vorlesung VHDL, HW/SW-Codesign Inhaltsverzeichnis Vorlesung VHDL, HW/SW-Codesign" 1 Einführung... 1-1 2 VHDL Grundlagen... 2-1 2.1 Allgemeines... 2-1 2.2 Aufbau eines VHDL-Modells...2-7 VHDL Design-Einheiten Überblick...2-10 Programmerstellung...

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Printserver und die Einrichtung von TCP/IP oder LPR Ports

Printserver und die Einrichtung von TCP/IP oder LPR Ports Printserver und die Einrichtung von TCP/IP oder LPR Ports In der Windowswelt werden Drucker auf Printservern mit 2 Arten von Ports eingerichtet. LPR-Ports (Port 515) oder Standard TCP/IP (Port 9100, 9101,9102)

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem

Mehr

Theoretische Informatik SS 04 Übung 1

Theoretische Informatik SS 04 Übung 1 Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die

Mehr

Eine Logikschaltung zur Addition zweier Zahlen

Eine Logikschaltung zur Addition zweier Zahlen Eine Logikschaltung zur Addition zweier Zahlen Grundlegender Ansatz für die Umsetzung arithmetischer Operationen als elektronische Schaltung ist die Darstellung von Zahlen im Binärsystem. Eine Logikschaltung

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

Durchführung der Datenübernahme nach Reisekosten 2011

Durchführung der Datenübernahme nach Reisekosten 2011 Durchführung der Datenübernahme nach Reisekosten 2011 1. Starten Sie QuickSteuer Deluxe 2010. Rufen Sie anschließend über den Menüpunkt /Extras/Reisekosten Rechner den QuickSteuer Deluxe 2010 Reisekosten-Rechner,

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Lineare Gleichungssysteme 1 Zwei Gleichungen mit zwei Unbekannten Es kommt häufig vor, dass man nicht mit einer Variablen alleine auskommt, um ein Problem zu lösen. Das folgende Beispiel soll dies verdeutlichen

Mehr

Das große All-in-All CPLD/FPGA Tutorial

Das große All-in-All CPLD/FPGA Tutorial Das große All-in-All CPLD/FPGA Tutorial Mit diesem Tutorial sollen die ersten Schritte in die Welt der programmierbaren Logik vereinfacht werden. Es werden sowohl die Grundlagen der Logik, die benötigte

Mehr

Simulation LIF5000. Abbildung 1

Simulation LIF5000. Abbildung 1 Simulation LIF5000 Abbildung 1 Zur Simulation von analogen Schaltungen verwende ich Ltspice/SwitcherCAD III. Dieses Programm ist sehr leistungsfähig und wenn man weis wie, dann kann man damit fast alles

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

Tietze, Schenk: Halbleiterschaltungstechnik (Kap. 10) Keller / Paul: Hardwaredesign (Kap. 5) L. Borucki: Digitaltechnik (Kap.

Tietze, Schenk: Halbleiterschaltungstechnik (Kap. 10) Keller / Paul: Hardwaredesign (Kap. 5) L. Borucki: Digitaltechnik (Kap. 6 Versuch Nr. 5 6.1 Anmerkungen zum Versuch Nr. 5 In den bisherigen Versuchen haben Sie sich mit kombinatorischen Schaltkreisen beschäftigt, in denen die Ausgänge bisher nicht auf die Eingänge zurückgeführt

Mehr

Schaltungen Jörg Roth 197

Schaltungen Jörg Roth 197 Schaltungen Jörg Roth 197 2.2.2 Flipflops Flipsflops sind einfache rückgekoppelte Schaltungen, die jeweils ein einzelnes Bit speichern können. Es gibt verschiedene Typen, die sich im "Komfort" der Ansteuerung

Mehr

Übungsblatt 8 Lösungen:

Übungsblatt 8 Lösungen: Übungsblatt 8 Lösungen: Aufgabe 71: VHDL Halbaddierer Schnittstellenbeschreibung und Modellbeschreibung(Verhaltensmodell) eines Halbaddierers: ENTITY halbaddierer IS GENERIC (delay: TIME := 10 ns); PORT

Mehr

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005 trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005 2 Inhalt 1. Anleitung zum Einbinden eines über RS232 zu steuernden Devices...3 1.2 Konfiguration

Mehr

Wir basteln einen Jahreskalender mit MS Excel.

Wir basteln einen Jahreskalender mit MS Excel. Wir basteln einen Jahreskalender mit MS Excel. In meinen Seminaren werde ich hin und wieder nach einem Excel-Jahreskalender gefragt. Im Internet findet man natürlich eine ganze Reihe mehr oder weniger

Mehr

Umstellung News-System auf cms.sn.schule.de

Umstellung News-System auf cms.sn.schule.de Umstellung News-System auf cms.sn.schule.de Vorbemerkungen Hinweis: Sollten Sie bisher noch kein News-System verwendet haben, nutzen Sie die Anleitung unter http://cms.sn.schule.de/admin/handbuch/grundlagen/page/25/

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Binärdarstellung von Fliesskommazahlen

Binärdarstellung von Fliesskommazahlen Binärdarstellung von Fliesskommazahlen 1. IEEE 754 Gleitkommazahl im Single-Format So sind in Gleitkommazahlen im IEEE 754-Standard aufgebaut: 31 30 24 23 0 S E E E E E E E E M M M M M M M M M M M M M

Mehr

VHDL Verhaltensmodellierung

VHDL Verhaltensmodellierung VHDL Verhaltensmodellierung Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2008/2009 VHDL Verhaltensmodellierung 1/26 2008-10-20

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Versuchsreihe 7. Registerfile. Registerfile + Programmzähler. HaPra Versuchsreihe 7 - Registerfile + Programmzähler. 32 Register à 32 Bit

Versuchsreihe 7. Registerfile. Registerfile + Programmzähler. HaPra Versuchsreihe 7 - Registerfile + Programmzähler. 32 Register à 32 Bit HaPra 2007 - Versuchsreihe 7 - Registerfile + Programmzähler Versuchsreihe 7 Registerfile + Programmzähler Registerfile Register à Bit Schreiben in Register: - Dateneingang D(31:0) - Adresseingang A_D(4:0)

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

Ein Tool zum Konvertieren von Pegasus Mail Adressbüchern und Verteilerlisten in Novell Groupwise Adressbücher.

Ein Tool zum Konvertieren von Pegasus Mail Adressbüchern und Verteilerlisten in Novell Groupwise Adressbücher. Ein Tool zum Konvertieren von Pegasus Mail Adressbüchern und Verteilerlisten in Novell Groupwise Adressbücher. Inhalt 1. Konvertieren von Adressbüchern und Verteilerlisten 1.1 Grundlagen 1.2 Adressbücher

Mehr

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken Version 2.0 1 Original-Application Note ads-tec GmbH IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken Stand: 27.10.2014 ads-tec GmbH 2014 IRF2000 2 Inhaltsverzeichnis

Mehr

Druckerscriptsprache

Druckerscriptsprache Druckerscriptsprache Die Druckerscriptsprache stellt Ihnen ein mächtiges Werkzeug zur Erstellung und Automatisierung von komplexen Druckvorgängen zur Verfügung. Vom Folgedruck bis zum Archivfunktion ist

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

GRAF-SYTECO. Handbuch. Zeichensatzgenerator für AT-Geräte. Erstellt: November 2004. SYsteme TEchnischer COmmunikation

GRAF-SYTECO. Handbuch. Zeichensatzgenerator für AT-Geräte. Erstellt: November 2004. SYsteme TEchnischer COmmunikation GRAF-SYTECO Handbuch Zeichensatzgenerator für AT-Geräte Dokument: Status: H165A0 Freigegeben Erstellt: November 2004 SYsteme TEchnischer COmmunikation GRAF-SYTECO Gmbh & Co.KG * Kaiserstrasse 18 * D-78609

Mehr

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen) 1. Einführung: Über den ODBC-Zugriff können Sie bestimmte Daten aus Ihren orgamax-mandanten in anderen Anwendungen (beispielsweise Microsoft Excel oder Microsoft Access) einlesen. Dies bietet sich beispielsweise

Mehr

Daten verarbeiten. Binärzahlen

Daten verarbeiten. Binärzahlen Daten verarbeiten Binärzahlen In Digitalrechnern werden (fast) ausschließlich nur Binärzahlen eingesetzt. Das Binärzahlensystem ist das Stellenwertsystem mit der geringsten Anzahl von Ziffern. Es kennt

Mehr

9 Multiplexer und Code-Umsetzer

9 Multiplexer und Code-Umsetzer 9 9 Multiplexer und Code-Umsetzer In diesem Kapitel werden zwei Standard-Bauelemente, nämlich Multiplexer und Code- Umsetzer, vorgestellt. Diese Bausteine sind für eine Reihe von Anwendungen, wie zum Beispiel

Mehr

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift. Briefe Schreiben - Arbeiten mit Word-Steuerformaten Ab der Version 5.1 stellt die BüroWARE über die Word-Steuerformate eine einfache Methode dar, Briefe sowie Serienbriefe mit Hilfe der Korrespondenzverwaltung

Mehr