28
23.04.2013 – Version 1.04 Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Technische Informatik und Ingenieurinformatik Fachgebiet: Integrierte Kommunikationssysteme Praktikumsanleitung Integrierte Hard- und Softwaresysteme II Versuch: Reaktionstester Dipl.-Ing. Steffen Ostendorff, B.Sc. Tobias Vietzke

2013-04-23 Aufgabenstellung IHS Praktikum v104 · Linear Feedback Shift Register, ... Dieses Modul soll ein solches LFSR mit 12 Bit ... ModelSim ist eine Simulationsumgebung für

Embed Size (px)

Citation preview

23.04.2013 – Version 1.04

Technische Universität Ilmenau

Fakultät für Informatik und Automatisierung

Institut für Technische Informatik und Ingenieurinformatik

Fachgebiet: Integrierte Kommunikationssysteme

Praktikumsanleitung

Integrierte Hard- und Softwaresysteme II

Versuch: Reaktionstester

Dipl.-Ing. Steffen Ostendorff, B.Sc. Tobias Vietzke

2

Inhaltsverzeichniss

1 Aufgabenstellung ............................................................................................................... 3

1.1 Einführung ................................................................................................................... 3

1.2 Anforderungen ............................................................................................................ 4

1.3 Übersicht ...................................................................................................................... 6

1.4 Modul: IHS2_PRAK_Control......................................................................................... 7

1.5 Modul: IHS2_Prak_Random ........................................................................................ 8

1.6 Modul: IHS2_Prak_10msTimer .................................................................................... 9

1.7 Hardware ..................................................................................................................... 9

2 Anleitung: Modultest ....................................................................................................... 10

2.1 Installation (Modelsim).............................................................................................. 10

2.2 Starten einer Simulation mithilfe von do-Files (Modelsim) ...................................... 10

2.3 Installation (ISE 13.4) ................................................................................................. 11

2.4 Starten einer Simulation mithilfe von do-Files (ISE 13.4) .......................................... 15

2.5 Aufbau und Verwendung von TestBenches .............................................................. 17

2.6 Aufbau von do-Files (Modelsim) ............................................................................... 18

3 Anleitung: Programmierung der Zielhardware ................................................................ 19

4 Anhang: Zusammenfassung VHDL Befehle ...................................................................... 21

4.1 Concurrent Statements ............................................................................................. 21

4.2 Sequential Statements............................................................................................... 22

4.3 Specifications ............................................................................................................. 24

4.4 Library & Use Clause .................................................................................................. 24

4.5 Declarations ............................................................................................................... 24

4.6 Library Units ............................................................................................................... 26

5 History .............................................................................................................................. 28

3

1 Aufgabenstellung

1.1 Einführung

Das IHS2 Seminar hat sich von 2009 bis 2012 mehr und mehr von VHDL-lastigen Übungen zu

Themen verschoben, die in der Vorlesung behandelt worden sind. Daher gibt es für das

Praktikum einen extra Satz Folien, die zum Verständnis notwendig sind. Diese sind als

Arbeitsmaterial des Praktikums auf der Webseite des Fachgebiets zu finden. Sie sind als

Zusatzmaterial gedacht und wurden aus Seminarunterlagen von 2009 zusammengestellt und

daher nicht extra für das Praktikum entworfen. Dies ist beim Lesen ggf. zu berücksichtigen.

Auf Basis, der in diesen Folien vorgestellten VGA Modulen, soll ein Reaktionstester

entwickelt werden. Dafür werden 4 Grafikmodule1 als 7-Segmentanzeige verwendet. Hier

soll die benötigte Reaktionszeit angezeigt werden. Ein weiteres Grafikmodul wird zur

Anzeige eines farbigen Signals verwendet und dient zur Zustandssignalisierung während des

Reaktionstests. Es kann über 3 Steuerleitungen die 3 Grundfarben des RGB-Raums sowie

deren Mischfarben darstellen. Weitere Informationen über die verwendeten Grafikmodule

sowie das VGA Modul finden Sie in den oben erwähnten Zusatzfolien zu finden.

Der Reaktionstester soll nach seiner Aktivierung eine zufällige Zeit in einem Wartemodus

bleiben. Danach wird auf der 7-Segmentanzeige ein Timer angezeigt, welcher durch einen

Tastendruck angehalten wird. Beim vorzeitigen Drücken einer Taste, wird der Versuch mit

einem roten Signal abgebrochen. Die einzelnen Phasen (Idlephase, Wartephase,

Reaktionsphase, Anzeigephase sowie ggf. Fehlerphase) sollen durch unterschiedliche Farben

gekennzeichnet werden.

Für das Praktikum ist eine Bearbeitungszeit von ca. 10 Stunden vorgesehen. Davon

entfallen 7 Stunden auf die häusliche Vorbereitung und 3 Stunden auf die Umsetzung der

praktischen Aufgaben im Praktikumsraum. Die Bearbeitung des Praktikums darf nur mit

vorbereiteten und vollständigen Unterlagen durchgeführt werden! Das Praktikum ist in

Teams von 2 Personen durchzuführen.

Alle Module sind in VHDL zu implementieren. Nutzen Sie dazu die Xilinx ISE 13.42 sowie

ggf. Modelsim. Es wird empfohlen die einzelnen zu entwickelnden Module mit dem ISE

Simulator oder Modelsim vor dem Praktikum zu simulieren.

1 Als Grafikmodul wird ein Modul in VHDL bezeichnet, das nach gegebenen Vorgaben (siehe extra Foliensatz)

ein 128x128 Pixel großes Bild ausgibt. Dieses Modul ist unabhängig von anderen Modulen. 2 http://www.xilinx.com/support/download/index.htm

4

Zur Verhaltensvalidation (Teil der Vorbereitung) können die bereits angelegten

TestBenches verwendet werden (siehe Kap. 2 Anleitung: Modultest). Weiterhin besteht

die Möglichkeit sich eine Hardware-Plattform auszuleihen. Kontaktieren Sie dazu Herrn

Ostendorff bzw. Herrn Vietzke per Mail.

Alle Vorbereitungsaufgaben sind schriftlich zu erfüllen und MÜSSEN zum

Praktikumstermin vorgelegt werden. Die restlichen Aufgabenteile (Programmierung in

VHDL) sollten zu Beginn des Praktikums fehlerfrei synthetisierbar sein. Kleinere

Verhaltensfehler können noch während der Praktikumszeit ausgebessert werden.

Nach erfolgreicher Durchführung der oberen Aufgabe gibt es eine kleine Zusatzaufgabe, die

erst vor Ort festgelegt wird und sich nach den Erfahrungen der jeweiligen Praktikumsgruppe

richtet. Die Durchführung dieser Aufgabe hat auf das Bestehen des Praktikums keinen

Einfluss, jedoch ggf. auf die Benotung.

1.2 Anforderungen

Zu entwerfen ist der Reaktionstester mit folgenden Anforderungen:

• Der Reaktionstester ist zu Beginn in einem neutralen Zustand (alle

7-Segmentanzeigen auf 0, beliebig farbiges Signal).

• Durch Drücken einer Taste ändert sich das Signal auf gelb (� Abbildung 1)

ANMERKUNG: Da bei allen vorhandenen Board immer mindestens eine Taste defekt

ist, sind alle Leitungen oder verknüpft zu verwenden. Es ist somit egal welche Taste

gedrückt wird, jedoch steht somit nur eine Taste zur Verfügung.

• Das gelbe Signal bleibt für eine zufällige Zeit von 1 bis 10 Sekunden angezeigt.

• Wird während dieser Zeit eine weitere Taste gedrückt, so wechselt das Signal auf Rot

(durch erneutes Drücken einer Taste wechselt das System zurück in den neutralen

Zustand).

• Nach Ablauf der zufälligen Zeit erlischt das gelbe Signal und es wird ein Timer

angezeigt.

• Für den Timer stehen die vier 7-Segmentanzeigen zur Verfügung - dabei soll die 4.

Stelle die 1/100 s, die 3. Stelle die 1/10s, die 2. Stelle die 1s und die 1. Stelle die 10s

anzeigen (� Abbildung 1 & Abbildung 2).

• Wird jetzt eine Taste gedrückt, wird der Timer angehalten, die benötigte Zeit wird

angezeigt und ein grünes Signal ausgegeben (� Abbildung 2).

• Durch erneutes Drücken einer Taste wechselt das System zurück in den neutralen

Zustand.

5

Abbildung 1: Wartephase - Signal gelb - Timer auf 0

Abbildung 2: Anzeigephase - Signal grün - Timer steht

23.04.2013 – Version 1.04

1.3 Übersicht

Für den Reaktionstester sind folgende Grundmodule zu entwerfen und in VHDL zu implementieren:

Abbildung 3: Übersicht über die Grundmodule des Reaktionstesters und deren Verschaltung

Die Entitys der einzelnen Module sind bereits vorhanden. Die Signale zur Kommunikation untereinander sind ebenfalls schon angelegt. Alle

benötigten VHDL Gerüste sind in dem Projekt "VGA_Projekt_IHS2_PRAK" zu finden.

23.04.2013 – Version 1.04

1.4 Modul: IHS2_PRAK_Control

Das Modul realisiert die interne Verwaltung des Reaktionstesters. Entwerfen Sie eine

geeignete Struktur zur Realisierung der Anforderungen.

1.4.1 Ports

CLK: 25.175 MHz Main Clock des Systems (Achtung! - nicht der VGA

Clock)

RST: globaler Reset des Systems

pvButton_IN: beschreibt 3 Tasten auf dem Experimentierboard (Abbildung 5) die

Tasten sollen für den internen Ablauf des Systems verwendet

werden. Bitte alle Tasten oder verknüpft verwenden.

pvRandomNumber_IN: 12 Bit Random Zahl die vom IHS2_Prak_Random generiert wird

pvTimeInDecimals_IN: Input Vektor für den Timer-Output die Zeit muss in BCD-Code

dargestellt sein jeweils 4 Bits entsprechen den darzustellenden

Digits

pfGetRandom_OUT: wenn 1, wird auf pvRandomNumber_IN ein Zufallswert geliefert

pfSetXXXColour_OUT: setzt das Signal auf die entsprechende Farbe (es können mehere

Farben gleichzeitig gesetzt werden) die Farben sind im RGB

Farbformat codiert

pfStartTimer_OUT: startet den Timer

pfSopTimer_OUT: stoppt den Timer - letzter Wert wird beibehalten

pfResetTimer_OUT: setzt den Timer auf 0 - der aktuelle Zustand wird beibehalten

pv7SegX_Out: Anzeigewert für die vier 7-Segmentanzeigen

der Ausgabewert muss ein BCD Wert enthalten - andere Werte

werden nicht dargestellt

Vorbereitung:

Informieren sie sich über die Möglichkeiten zur Beschreibung von Automaten in VHDL.

Nutzen sie dazu die Materialen aus den Zusatzfolien des Praktikums oder aus dem

Language Templates der ISE unter "VHDL->Synthesis Constructs->Coding Examples".

Entwerfen Sie einen geeigneten Automat zur Umsetzung von IHS2_PRAK_Control. Die

Zustände sowie Zustandsübergänge sind in einer angemessenen Form schriftlich zu

entwerfen und grafisch zu dokumentieren.

8

1.5 Modul: IHS2_Prak_Random

Da man in Hardware keine nichtdeterministischen Verfahren implementieren kann, fallen

die gängigen Methoden zur Random-Number Generierung aus. Eine mögliche Realisierung

eines streng deterministischen Pseudozufallszahlengenerator ist ein linear rückgekoppeltes

Schieberegister (engl. Linear Feedback Shift Register, kurz LFSR). Die Güte der Zufallszahlen

kann durch eine Kombination von mehreren LFSR und durch die Wahl eines günstigen

Generatorpolynoms beeinflusst werden.

Dieses Modul soll ein solches LFSR mit 12 Bit Ausgabebreite realisieren. Sobald das

pfGetRandom_IN Flag auf 1 gesetzt ist, soll an pvRandomNumber_OUT eine neue Zufallszahl

anliegen. Wird das Flag wieder auf 0 gesetzt, soll die momentane Random Number am

Ausgangsport gehalten werden.

Vorbereitung:

Informieren Sie sich über die Generierung von Zufallszahlen mittels LFSR.

Skizzieren Sie den strukturellen Aufbau eines LFSR.

Geben Sie ein geeignetes Generatorpolynom für ein 12 Bit LFSR an.

Abbildung 5: Taster zur Steuerung des

Reaktionstesters

Abbildung 4: Language Templates

9

1.6 Modul: IHS2_Prak_10msTimer

Der Timer soll eine Stoppuhr realisieren. Sobald das pfStartTimer_IN Signal gesetzt ist, wird

der Timer aktiviert. Mit pfStopTimer_IN wird der Timer angehalten, die Ausgabe bleibt

bestehen. pfResetTimer_IN setzt den Zähler auf 0 zurück, der Timer verbleibt im aktuellen

Zustand (zählend, angehalten). Die Auflösung lässt sich über das gCOUNTER_TICK Generic

frei wählen.

Ausgegeben werden vier BCD-kodierte Digits, wobei die Bits 3 .. 0 die kleinste Stelle und die

Bits 15 ... 12 die größte Stelle sind. Wird der interne Wert gCOUNTER_TICK erreicht, so wird

das niederwertigste Digit inkrementiert. Es ist darauf zu achten, dass nur gültige BCD Werte

ausgegeben werden.

1.7 Hardware

Spartan-3A DSP 1800 Board

25.175 MHz Main Clock

62,9375 MHz VGA Clock

JTAG programming and configuration port

10

2 Anleitung: Modultest

Für die Simulation können der integrierte ISE Simulator oder Modelsim verwendet werden.

Beim Erstellen dieser Anleitung gab es mit Modelsim unter Win7 (64bit) Probleme bei der

Installation, daher ist die hier beschriebene Anleitung für Modelsim evtl. nicht auf dem

neusten Stand.

2.1 Installation (Modelsim)

ModelSim ist eine Simulationsumgebung für VHDL und Verilog die für Studenten kostenlos

unter

http://model.com/content/modelsim-pe-student-edition-hdl-simulation

heruntergeladen werden kann. Zum Download ist eine Registrierung erforderlich. Eine

Schritt-für-Schritt-Anleitung ist auf der Seite vorhanden.

2.2 Starten einer Simulation mithilfe von do-Files (Modelsim)

Starten Sie ModelSim nach der erfolgreichen Installation.

Abbildung 6: ModelSim

Wechseln Sie über den File->Change Directory Befehl in das Hauptverzeichnis ihres Projekts.

11

Abbildung 7: ModelSim - change directory

Zum Starten der Simulation können automatische do-Skripte verwendet werden. Für die 3

Hauptmodule des Praktikums sind Standard-do-Files im ./Sim/ModelSim Ordner vorhanden.

Diese müssen bei Bedarf noch um user-spezifische Signale erweitert werden (s.u.).

Zum Starten eines do-Files geben sie do ./sim/ModelSim/<Name des do-Files>.do in die

Konsole ein.

Abbildung 8: ModelSim – console

2.3 Installation (ISE 13.4)

Die ISE13.4 ist von der Xilinx Website3 herunterzuladen. ACHTUNG: Die Datei ist ca. 5.7Gbyte

groß und benötigt zum Entpacken erneut 5.7Gbyte. Die Installation des Webpacks belegt

anschließend ca. 14Gbyte.

Im Folgenden sind ein paar Bilder der Installation sowie der empfohlenen Einstellungen

dargestellt. Die Lizenzbedingungen (3 Stück) sind zu akzeptieren, damit die Software

3 http://www.xilinx.com/support/download/index.htm

12

installiert werden kann. Im Anschluss an die Installation ist die Lizensierung der ISE auf der

Xilinx Website durchzuführen. Hierfür muss ggf. ein Login erstellt werden.

Abbildung 9: ISE Installation – erstes Fenster

Abbildung 10: ISE Installation – Auswahl der Edition

13

Abbildung 11: ISE Installation – Auswahl der zu installierenden Komponenten

Abbildung 12: ISE Installation – Angabe des Installationspfades

14

Abbildung 13: ISE Installation – Lizensierung

Abbildung 14: ISE Installation – Lizenz Konfiguration

Abbildung 15: ISE Installation – Xilinx License Site

15

2.4 Starten einer Simulation mithilfe von do-Files (ISE 13.4)

Nach der Installation ist die ISE zu starten. Anschließend kann über „Open Project“ ein

Projekt geöffnet werden. Es stehen folgende Projekte in denen für das Praktikum

bereitgestellten Dateien zur Verfügung.

Projekt im Unterordner ./prj/

- ISE13:

Hauptprojekt für die Synthese des gesamten Entwurfs (wird im Praktikum benötigt)

- ISE13_IHS2_PRAK_10msTimer:

Projekt für die Simulation des zu entwerfenden Moduls 10msTimer

- ISE13_IHS2_PRAK_Control:

Projekt für die Simulation des zu entwerfenden Moduls Control

- ISE13_IHS2_PRAK_Random:

Projekt für die Simulation des zu entwerfenden Moduls Zufallsgenerator

Das Hauptprojekt ist für die Synthese des Gesamtprojekts. Die anderen Projektordner sind

für die einzelnen zu entwerfenden Module und deren Simulation.

Zum Durchführen der Simulation mit dem ISim Simulator ist das entsprechende Projekt (z.B.

ISE13_IHS2_PRAK_10msTimer) zu öffnen. Beispielhaft sind die nötigen Schritte im Folgenden

dargestellt.

Abbildung 16: ISim – Process Properties aufrufen

16

Als erstes ist in den Simulationsview zu wechseln. Dies ist oben links unterhalb des Menüs

möglich. Anschließend sind in der Mitte links unter „Simulate Behavioral Model“ die

„Process Properties“ zu öffnen. Diese sind in der folgenden Abbildung dargestellt. Bei den

vorgefertigten Projekten sind die Projektpfade anzupassen.

Abbildung 17: ISim – Process Properties ausfüllen

Abbildung 18: ISim – Simulation

Die ISim Simulation ist im oberen Bild dargestellt. Links können alle vorhandenen Ports und

Signale angezeigt werden, die dann per Drag&Drop in das Simulationsfenster gezogen

werden können. Für Details zur Steuerung und für weitere Optionen des Simulators sei an

dieser Stelle auf dessen Dokumentation verwiesen.

17

2.5 Aufbau und Verwendung von TestBenches

Für eine Simulation eines VHDL-Moduls wird ein VHDL TestBench(TB) benötigt. Ein TB ist

ebenfalls eine VHDL-Datei welche die zu testenden Datei (UUT - unit under test) instanziiert.

Durch das TB werden die Eingangs-Stimuli festgelegt und die Ausgangssignale der UUT

entgegen genommen.

Abbildung 19: TestBench & UUT

Um eine bestimmte Eingangsbelegung am UUT zu testen muss diese zu einem definierten

Zeitpunkt von der TB erzeugt werden. Die TBs für die 3 Hauptmodule des Praktikums sind im

./sim Ordner vorhanden.

In jeder TB gibt es einen "stimulus process" der die Eingangsstimuli erzeugt. Dabei ist zu

beachten, dass die Signale die dort gesetzt werden zeitlich aufeinander abgestimmt sind.

z.B.:

pvButton_IN <= "100";

wait for CLK_period*2;

pvButton_IN <= "000";

wait for 200 ns;

pvButton_IN <= "100";

wait for CLK_period*1;

pvButton_IN <= "000";

wait for 200 ns;

18

Hier wird der pvButton_IN Port für 2 CLK-Perioden auf "100" gesetzt. Danach sofort wieder

auf "000". Danach passiert 200 ns (5 Takte - bei 40ns CLK-Periode ) nichts am Eingang der

UUT. Danach wird der pvButton_IN Port erneut auf "100" gesetzt, diesmal jedoch nur ein 1

CLK-Periode gehalten. Daraufhin gibt es eine weitere 200 ns Pause.

Mithilfe der TB können nur Signale am Eingang der UUT geändert werden. Instanziierte

Komponenten im Inneren der UUT oder interne Signale sind nicht direkt erreichbar.

2.6 Aufbau von do-Files (Modelsim)

In do-Files sind alle nötigen Simulationseinstellungen beschrieben. Die wichtigsten

Konstrukte sind hier kurz dargestellt.

vcom ./src/IHS2_PRAK_Random.vhd

Der "vcom" Befehl kompiliert die benötigten VHDL Files, so dass sie von ModelSim

verarbeitet werden können. Alle in der Simulation verwendeten VHDL-Files müssen

kompiliert werden.

add wave -noupdate -format Literal -radix hexadecimal -label "CLK" /IHS2_PRAK_Random_TB/clk

Mit "add wave" können zu beobachtende Signale hinzugefügt werden. Dies Signale aus der

TB wie auch aus der UUT sein. Die "format" Option gibt an ob das Signal als logischer Pegel

(Logic) oder als Literal (Literal) angezeigt wird. Im Literal Modus kann über die "radix" Option

die Darstellungsform gewählt werden. Typische Formate sind: Binary, Octal, Decimal,

Hexadecimal, ASCII. Die "Label" Option gibt eine Alias für das Signal an um lange Namen zu

vermeiden. Am Ende des Befehls wird das zu beobachtende Signal geschrieben.

run 200 us

Gibt die Länge der Simulation an.

WaveRestoreZoom {0 us} {2 us}

Zoomt nach Ende der Simulation in den angegeben Bereich.

19

3 Anleitung: Programmierung der Zielhardware

Erstellen Sie als erstes ein bit-File zur Programmierung des FPGAs. Nutzen Sie dazu die

"Generate Programming File" Option aus der ISE.

Abbildung 20: Generate Programming File

Starten Sie nun iMPACT.

Abbildung 21: iMPACT

Doppelklicken Sie auf "Boundary Scan" und initialisieren danach Sie die JTAG Kette über den

"Initialize Chain" Button.

20

Abbildung 22: iMPACT - Boundary Scan & Initialize Chain

Wählen Sie im erschienenen Dialog, das von der ISE generierte Bit-File aus. Dies befindet sich

standardmäßig in dem Projektordner des aktiven Projekts. Sie können auch nachträglich ein

anderes bit-File über die "Assign New Configuration File" Option des Xilinx-Symbols

zuweisen. Diese Option ist im Kontextmenü des Symbols zu finden und wird über ein

Rechtsklick angezeigt.

Abbildung 23: iMPACT- Assign New Configuration File

Nun werden sie gefragt, ob Sie ein SPI File anhängen möchten. Lehnen Sie das über die No

Option ab und bestätigen Sie die darauf folgenden "Programming Options" mit OK. Nun

können sie den FPGA Programmieren indem Sie ein Rechtsklick auf das Xilinx-Symbol

machen, und dort die "Program" Option auswählen.

Abbildung 24: iMPACT - Program

21

4 Anhang: Zusammenfassung VHDL Befehle4

4.1 Concurrent Statements

4.1.1 block_statement

label: block [(guard_expression)]

[generic]

[ports]

[declarations]

begin

concurrent_statements

end block [label];

4.1.2 component_instantiation_statement

label : name [ generic map (map) ] [ port map (signals) ];

4.1.3 concurrent_assertion_statement

assert condition

[ report string_expression ]

[ severity {NOTE | WARNING | ERROR | FAILURE} ];

4.1.4 concurrent_procedure_call

[ label : ] procedure_name [ (parameters) ];

4.1.5 concurrent_signal_assignment_statement

[ label : ] [ {conditional_assignment | assignment |

selected_assignment} ];

4 University of Cambridge - Department of Engineering,

http://www2.eng.cam.ac.uk/~dmh/ptiiavlsi/VHDLcmd.htm (17.04.2011)

22

4.1.6 generate_statement

label : [{ for specification | if condition }] generate

concurrent_statements

end generate [label];

4.1.7 process_statement

[label : ] process [ (sensitivity_list) ]

[ variable_declaration ]

[ type_declaration ]

[subprogram_declaration ]

[ declarations ]

begin

sequential_statements -- Cannot contain a wait

statement if sensitivity_list is used

end process [ label ];

4.2 Sequential Statements

4.2.1 assertion_statement

assert condition -- When condition is false [strng_expression] is

printed

[ report string_expression ]

[severity { NOTE | WARNING | ERROR | FAILURE } ];

4.2.2 case_statement

case expression is -- Avoid the use of parenthesis, if possible

when choices_1 => sequential_statements

.

.

when choices_n => sequential_statements

end case;

4.2.3 exit_statement

exit [ label ] [ when condition ];

23

4.2.4 if_statement

if condition then

sequential_statements

{ elsif condition then sequential_statements }

[ else sequential_statements ]

end if;

4.2.5 loop_statement

[ label : ] [ while condition | for loop_specification ] loop

sequential_statements

end loop [ label ] ;

4.2.6 next_statement

next [ label ] [ when condition ];

4.2.7 null_statement

null;

4.2.8 procedure_call_statement

procedure_name [ (parameters) ] ;

4.2.9 return_statement

return expression; --For use in a Function

return; --For use in a Procedure

4.2.10 signal_assignment_statement

target <= expression [ after time_expression ]

.

.

{ , expression [ after time_expression ];

4.2.11 variable_assignment_statement

target := expression ;

24

4.2.12 wait_statement

wait --A Function may not contain a wait_statement

[ on signal_name {, signal_name} ]

[ until conditional_expression ]

[ for time_expression ] ;

4.3 Specifications

4.3.1 attribute_specification

attribute attribute_name

of entity_name is expression ;

4.3.2 configuration_specifications

for component_name

use [ generic_map_part ]

[port_map_part] ;

4.4 Library & Use Clause

4.4.1 library_clause

LIBRARY names ;

4.4.2 use_clause

USE selected_names ;

4.5 Declarations

4.5.1 alias_declaration

alias name1 : type [ (indexes) ] is name2 [ (indexes) ] ;

4.5.2 attribute_declaration

attribute name : type ;

25

4.5.3 component_declaration

component identifier :

[ generic (generic_list) ; ]

[ port (port_list) ; ]

end component ;

4.5.4 constant_declaration

constant name : type := expression ;

constant name : array_type [ (indexes) ] := expression ;

4.5.5 file_declaration

file name : type is [ mode ] logical_name ;

4.5.6 signal_declaration

signal names : type [ constraint ] [ := expression ] ;

4.5.7 port_declaration

port ( names : direction type [ := expression ] [ ; more_signals ] );

4.5.8 subprogram_declaration

{ procedure name [ (parameters) ] | function name [ (parameters) ]

return type; }

4.5.9 sub_program_body

is

declarations

begin

sequential_declarations

end [name] ;

4.5.10 subtype_declaration

subtype name is [ resolution_function] type [constraint] ;

26

4.5.11 type_declaration

type name is definition;

4.5.12 variable_declaration

variable names : type [ constraint ] [ := expression ] ;

4.6 Library Units

4.6.1 architecture_body

architecture name of

entity_name is

[types]

[constants]

[signals]

[subprograms]

[other declarations]

begin

concurrent_statements

end [name];

4.6.2 configuration_declaration

configuration name of

entity_name is

declarative_part

block_configuration

end [name];

4.6.3 entity_declaration

entity name is

[generics] [ports]

[declarations]

[begin statements] --typically, an entity does not have

statements. If it does, the statemnts cannot operate on signals

end name;

27

4.6.4 package_body

package body name is

[subprogram]

[type]

[constant

[signal]

[declarations]

end [name];

4.6.5 package_declaration

package name is

[subprogram]

[type]

[constant]

[signal]

[file]

[alias]

[USE clause]

[declarations]

end [name];

28

5 History

� 1.04: Hinweis zu Zusatzaufgabe, Hinweis auf defekte Buttons, Korrektur

Formatierung

� 1.03: Änderung Praktikumsbetreuer, Korrektur div. Schreibfehler

� 1.02: Anpassungen von ISE11 auf ISE13.4.

Hinzufügen der Beschreibung des Simulators ISim.

� 1.01: Nicht weiter dokumentiert.

� 1.00: Erste erstellte Version.