28
Praktikum Grundlagen von Hardwaresystemen Sommersemester 2009 Versuch 1: VHDL-Grundlagen 8. April 2010 Fachbereich 12: Informatik und Mathematik Institut f¨ ur Informatik Professur f¨ ur Eingebettete Systeme Prof. Dr. Uwe Brinkschulte Daniel Lohn Michael Bauer Benjamin Betting Johann Wolfgang Goethe-Universit¨ at Frankfurt am Main

Praktikum Grundlagen von Hardwaresystemen …sven.köppel.org/uni/ss2010/HWR-Praktikum/Versuchsbeschreibungen und Materialien... · In diesem Praktikum wird eine Hardwarebeschreibungssprache

Embed Size (px)

Citation preview

Praktikum

Grundlagen von Hardwaresystemen

Sommersemester 2009

Versuch 1: VHDL-Grundlagen

8. April 2010

Fachbereich 12: Informatik und MathematikInstitut fur Informatik

Professur fur Eingebettete SystemeProf. Dr. Uwe Brinkschulte

Daniel LohnMichael Bauer

Benjamin Betting

Johann Wolfgang Goethe-UniversitatFrankfurt am Main

Inhaltsverzeichnis

1 Einleitung 2

2 Grundlagen 42.1 VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.1.1 Entity, Architektur und Signale . . . . . . . . . . . . . . . . . . . . . . 42.1.2 Simulation einer VHDL-Schaltung . . . . . . . . . . . . . . . . . . . . 92.1.3 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.1.4 Das gesamte Projekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2 Einfuhrung in Xilinx ISE WebPack . . . . . . . . . . . . . . . . . . . . . . . . 132.2.1 ISE Webpack Starten, Erzeugen von Projekten . . . . . . . . . . . . . 142.2.2 Anlegen und Einfugen von VHDL Dateien . . . . . . . . . . . . . . . . 152.2.3 Simulation von Entwurfen . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.3 Addierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.3.1 Halb- und Volladdierer . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 Anmerkungen und Tipps 23

4 Vorbereitungsaufgaben 24

5 Praktikumsaufgaben 27

1

Kapitel 1

Einleitung

Die Entwicklung von mikroelektronischen Schaltungen auf hohem Abstraktionsniveau wirddurch den starken Anstieg der Entwicklungskomplexitat bei sehr stark reduzierten Entwick-lungszeiten bestimmt.

Um konkurrenzfahig zu bleiben, reichen herkommliche Wege uber graphische Schaltplan-eingaben auf Logikelementebene in der Industrie schon seit langerem nicht mehr aus. Ausdiesem Grund kommen Hardwarebeschreibungssprachen zum Einsatz, um Schaltungen zuentwerfen. Zudem besteht die Moglichkeit den entworfenen Quellcode mit zur Verfugung ste-henden Simulationsprogrammen zu testen und das Verhalten der Schaltung schon vor derSynthese zu uberprufen. Diese Beschreibungssprachen werden in zwei Kategorien unterteilt:

• Hardwarebeschreibungssprachen

• Modellierungs- und Simulationssprachen

Eine Hardwarebeschreibungssprache (engl. Hardware Description Language, HDL)bezeichnet eine Sprache innerhalb einer allgemeinen Klasse von Beschreibungssprachen inder Elektronik. Mit ihr konnen die Funktion von Schaltungen und ihr Design beschrieben,sowie durch Simulation getestet werden. Sie drucken ein zeitliches Verhalten und/oder eine(raumliche) Schaltkreisstruktur in normalem Text aus. Zu dieser Klasse gehoren die Hard-warebeschreibungssprachen, die in Tabelle 1 aufgelistet sind.

Eine Modellierungs- und Simulationssprache wie SystemC ist insbesondere fur dieEntwicklung von komplexen elektronischen Systemen, die sowohl Hardware- als auch Softwa-rekomponenten enthalten, geeignet. Im Gegensatz zu reinen Hardwarebeschreibungssprachenwird SystemC vorrangig zur Modellierung auf noch hoheren Abstraktionsebenen eingesetzt,womit Simulationen um den Faktor 100 bis 1000 schneller durchgefuhrt werden konnen. Selbstlangere Programme, z.B. die Firmware eingebetteter Systeme, die auf der beschriebenen Hard-ware ablaufen, konnen mitsimuliert werden.

In diesem Praktikum wird eine Hardwarebeschreibungssprache benotigt, die fur die Be-schreibung und Simulation digitaler Systeme und deren Umgebung geeignet ist. Wir habenuns fur VHDL, welche 1983 vom amerikanischen Departament of Defense initiiert wurde,entschieden.

Ein besonderer Vorteil der Benutzung der Hardwarebeschreibungssprachen liegt in dergemeinsamen Nutzung einheitlicher Modellierung fur Simulation und Synthese. Die Simula-tion dient der Verifikation der Entwurfsidee; die Synthese setzt die Hardwarebeschreibung

2

KAPITEL 1. EINLEITUNG 3

HDL Standardisierung AnbieterVHDL IEEE 1076-1987 EDAVerilog IEEE 1364-1995 EDAGHDL (Genrad)

VHDL-AMS (IEEE 1976.1) (EDA)Verilog (OVI) (EDA)MAST AnalogyFAS Anacad/MGC

Spectre-HDL CadenceIRENE IMAGKARL Universitat Kaiserslautern 1979AHPL Universitat Arizona 1974

DACAPO DOSIS GmbH Dortmund

Tabelle 1.1: Hardwarebeschreibungssprachen

automatisch in eine Netzliste um. Letztere ist die Grundlage fur die Implementierung derSchaltung auf Hardwareplattformen wie ASIC, FPGA und CPLD.

Die Zielarchitektur des Praktikums ist ein FPGA von Xilinx. Den FPGA-Markt teilensich im Wesentlichen die Firmen Xilinx und Altera. Daneben gibt es noch einige weitereNischenanbieter wie Actel, Lattice und QuickLogic. Xilinx wurde ausgewahlt, da neben derMarktbedeutung auch bereits entsprechende Software und Erfahrung an der Professur vor-handen sind.

Kapitel 2

Grundlagen

In diesem Versuch werden grundlegende VHDL-Konzepte erlautert. Am Beispiel eines NAND-und eines XOR-Gatters wird der VHDL-Sprachumfang schrittweise und problemorientierteingefuhrt. Im Einzelnen werden dabei die folgenden Punkte behandelt:

• Methoden der Schaltungsbeschreibung:

– Konzept: Trennung zwischen Schnittstelle (Port), Entwurfseinheit (Entity) undVerhalten (Architecture)

– Beschreibungsstile von Schaltungen:

∗ strukturelle Beschreibung∗ Datenflussbeschreibung∗ algorithmische Beschreibung

• Definition von Signalen

• Bedienung der VHDL-Entwurfsumgebung (Compiler und Simulator)

• Modellierung einfacher boolescher Schaltnetze

• Beschreibung von Halb- und 1-Bit-Volladdierern

2.1 VHDL

2.1.1 Entity, Architektur und Signale

Die nachfolgend aufgefuhrten VHDL-Elemente sind als grundlegende Strukturelemente jederVHDL-Beschreibung anzusehen.

2.1.1.1 Entity

In der mit Entity bezeichneten Entwurfseinheit werden die Schnittstellen eines VHDL-Funk-tionsblocks nach außen beschrieben. Unter der Schnittstelle einer Schaltung versteht mandie Menge aller Signalleitungen, die diese Schaltung mit ihrer Umgebung verbinden, inklusiveder Information uber die Signaleigenschaften wie z.B. Wertebereiche und Signalrichtungen.Beim Vergleich eines Board-Designs mit einem VHDL-Quellcode stellt eine Entity den zu

4

KAPITEL 2. GRUNDLAGEN 5

bestuckenden IC-Gehausetyp dar, der durch die Anzahl, die Eigenschaften und die Bezeich-nung der Anschlusse definiert ist. Die Deklaration der Anschlusse innerhalb der Entity erfolgtmit Hilfe der Port-Anweisung. Dabei beschreibt jedes Element der Port-Anweisung einenoder mehrere Anschlusse.

Entity-Syntaxentity <Entityname> isport (<Deklaration der Ein- und Ausgange>);

end <Entityname>;

Listing 2.1: Deklaration eines NAND-Gatters

entity NAND gate i sport ( a , b : in STD LOGIC;

c : out STD LOGIC ) ;end NAND gate ;

a

bcNAND_gate

Abbildung 2.1: Graphische Darstellung der Entity eines NAND-Gatters

Die Entity einer Schaltung (mit zwei Eingangen und einem Ausgang) kann man auchgraphisch wie in Abbildung 2.1 darstellen. Dabei sind a und b die Eingangssignale und c dasAusgangssignal der Schaltung. Alle drei Signale sind vom Typ std logic, was bedeutet, dasses sich um einzelne Logiksignale handelt.

2.1.1.2 Signale

Signale sind ein weiteres zentrales Element von VHDL. Ahnlich wie Variablen in anderenProgrammiersprachen sind Signale in VHDL die Trager von Information. Nach einer Signal-zuweisung nimmt das Signal einen bestimmten Wert an. Naturlich kann das Signal auf denaugenblicklichen Wert abgefragt werden oder mit anderen Signalen und geeigneten Operato-ren verknupft werden.

Vergleichbar mit einem Stuck Draht verbindet ein Signal Ausgang und Eingang zweierTeilschaltungen (z. B. Gatter, Flip-Flop etc.). Doch nicht jedes Signal ist nach der Syntheseauch tatsachlich als Verbindungsleitung vorhanden. Wahrend der Synthese konnen Signaleals Folge einer Optimierung verschwinden oder neue hinzukommen.

Jedes Signal ist von einem eindeutig zu definierenden Typ und besitzt einen eindeu-tigen Namen. Zur Einfuhrung soll hier zunachst nur der Signaldatentyp std logic bzw.std logic vector benutzt werden, welcher den Anwendern aus dem std logic 1164 Paketder Bibliothek IEEE zur Verfugung steht. Das Paket std logic 1164 stellt 9-wertige Logikdar, kann aber auch 3-, 4- und 5-wertige Logik realisieren. Das heißt, dass der Wertevor-rat des Signaldatentyps std logic aus neuen logischen Werten besteht. Fur das Praktikum

KAPITEL 2. GRUNDLAGEN 6

sind folgende vier Werte relevant: 0, 1, U, X. Ein std logic vector stellt einen aus meh-reren std logic Signalen bestehenden Bus dar. Dieser Bus kann entweder aufsteigend, z.B.als std logic vector(0 to 7) oder aber abfallend als std logic vector(7 downto 0) be-zeichnet werden.

Die IEEE-Library ist sehr weit verbreitet. Abhangig von der verwendeten Entwurfsumge-bung konnen auch andere Bibliotheken mit anderen Bezeichnern verwendet werden, die manvon einem Hersteller erhalten oder die man selbst geschrieben hat.

Im Quellcode konnen diese Datentypen verwendet werden, wenn vor der entity-Deklarationdie IEEE-Bibliothek mit Hilfe einer library-Anweisung deklariert wird. Zusatzlich mussdurch die use-Anweisung angegeben werden, dass alle Komponenten des std logic vector 1164Pakets verwendet werden sollen.

Library IEEE ;use IEEE . s t d l o g i c 1 1 6 4 . a l l ;

Signale konnen an folgenden Stellen im VHDL-Code deklariert werden:

• als Port der entity-Deklaration fur entity-globale Signale.

• innerhalb einer architecture als Architektur-globale Signale. Im Allgemeinen werdenalle Signale, die keine Ports sind, so deklariert.

Syntax eines Signalssignal <Signalname> : <Datentyp>;

Fur den Modus der Ein-/Ausgange einer Portdeklaration gilt:

1. in: Eingang, nur auf rechter Seite von Variablen-/Signalzuweisungen, also in Aus-drucken, zulassig.

2. out: Ausgang, nur auf linker Seite von Signalzuweisungen zulassig.

3. inout: bidirektionale Leitung, kann im Code lesend und schreibend benutzt werden.

2.1.1.3 Architektur

Die Architektur beschreibt das Innenleben, d.h. die Funktionalitat des VHDL-Codes. JederEntity muss (mindestens) eine Architektur zugeordnet sein. In obiger Vorstellung beschreibtalso die Architektur, welche Funktion bzw. welcher Chip sich in dem Gehause befindet.

Syntax einer Architektur:architecture <Architekturname> of <Entityname> is

[Lokale Deklarationen]begin

<VHDL-Anweisungen>end <Architekturname>;

Der Deklarationsteil definiert Typen, Unterprogramme, Konstanten und Signale, die indieser Architektur benotigt werden, wahrend die VHDL-Anweisungen das eigentliche Innen-leben beschreiben. Fur diese Beschreibung gibt es drei Stile: Verhalten, Datenfluss und Struk-tur. Innerhalb des Anweisungsteils kann ein Stil oder eine beliebige Kombination dieser Stilebenutzt werden.

KAPITEL 2. GRUNDLAGEN 7

Verhalten Die Grundstruktur der Verhaltensbeschreibung ist der Prozess.Syntax eines Prozesses:

<Prozessname> : process (<Sensitivitatsliste>)<Deklarationsteil>

begin<sequentielle-Anweisungen>

end process <Prozessname>;

Listing 2.2: Verhaltensbeschreibung eines NAND-Gatters

architecture behavior of NAND gate i sbegin

P1 : process ( a , b )begin

i f ( a = ’1 ’ ) and (b = ’1 ’ ) thenc <= ’ 0 ’ ;

elsec <= ’ 1 ’ ;

end i f ;end process P1 ;

end behavior ;

Ein VHDL-Prozess ist einem sequenziellen Task einer Programmiersprache vergleichbar,mit den bekannten Konzepten:

• sequentielle Abarbeitung der Anweisungen

• Kontrollanweisungen zur Steuerung des Ablaufs

• Verwendung lokaler Variablen

• Unterprogrammtechniken (Prozeduren und Funktionen)

Datenfluss Bei dieser Beschreibung wird der Datenfluss uber logische Funktionen model-liert.

Listing 2.3: Datenflussbeschreibung eines NAND-Gatters

architecture dataf low of NAND gate i sbegin

c <= not ( a and b ) ;end dataf low ;

Struktur Strukturbeschreibungen sind Netzlisten aus Bibliothekselementen: diese Elemen-te werden instanziiert und uber Signale miteinander verbunden. Im Beispiel werden wirNAND-Gatter aus AND und NOT aufbauen.

Listing 2.4: Strukturbeschreibung eines NAND-Gatters

Library IEEE ;

KAPITEL 2. GRUNDLAGEN 8

use IEEE . s t d l o g i c 1 1 6 4 . a l l ;

entity And gatter i sport (

in0 , in1 : in STD LOGIC;out0 : out STD LOGIC

) ;end And gatter ;

architecture dataf low of And gatter i sbegin

out0 <= in0 and in1 ;end dataf low ;

Library IEEE ;use IEEE . s t d l o g i c 1 1 6 4 . a l l ;

entity I n v e r t e r i sport (

in0 : in STD LOGIC;out0 : out STD LOGIC

) ;end I n v e r t e r ;

architecture dataf low of I n v e r t e r i sbegin

out0 <= not in0 ;end dataf low ;

−− e n t i t y der Scha l tung

Library IEEE ;use IEEE . s t d l o g i c 1 1 6 4 . a l l ;

entity NAND gatter i sport (a , b : in STD LOGIC;c : out STD LOGIC) ;

end NAND gatter ;

−− S t r u k t u r e l l e Beschreibung der Scha l tung

architecture s t r u c t u r e of NAND gatter i s

component And gatterport (

KAPITEL 2. GRUNDLAGEN 9

in0 , in1 : in STD LOGIC;out0 : out STD LOGIC

) ;end component ;

component I n v e r t e rport (

in0 : in STD LOGIC;out0 : out STD LOGIC

) ;end component ;

signal And out0 , I n v e r t e r 1 o u t 0 : STD LOGIC;

beginAnd 2 : And gatter port map ( a , b , And out0 ) ;I n v e r t e r 1 : I n v e r t e r port map ( And out0 , I n v e r t e r 1 o u t 0 ) ;

−− S igna l mappingc <= I n v e r t e r 1 o u t 0 ;

end s t r u c t u r e ;

In Praktikumsaufgabe 5 wird die Strukturbescheibung fur den Entwurf eines XOR-Gattersverwendet.

2.1.2 Simulation einer VHDL-Schaltung

Fur die Simulation der entworfenen Schaltung werden sogenannte Stimuli (Testbench) ver-wendet. Dazu wird eine Entity mit beliebigem Namen, im Folgenden SimBox, erstellt, dieselbst keine Ein- und Ausgange besitzt. Die Schaltung bekommt dann eine Abfolge von Wer-ten an den Eingangen angelegt und es wird beobachtet, wie sich die Schaltung dabei an IhrenAusgangen verhalt und ob dies der Spezifikation entspricht, die Grundlage des Entwurfs ist.Ihre Architektur instantiiert die zu testende Komponente, und versorgt die Eingange zu fest-gelegten Zeiten mit Testwerten, so dass man die Reaktion der Ausgange beobachten kann.

Um das Beispiel des NAND-Gatters aufzugreifen: In der Architektur der SimBox muss dasNAND-Gatter mit seinen Ein- und Ausgangen als Komponente deklariert werden. Außerdemsind interne Signale erforderlich, die dann an den Ein- und Ausgangen (ports) der Komponenteangeschlossen werden. Die Stimulidatei sieht dann folgendermaßen aus:

Library IEEE ;use IEEE . s t d l o g i c 1 1 6 4 . a l l ;

−− Die SimBox i s t d i e ” ganze Welt ” , es e x i s t i e r e n−− ke ine Ein− und Ausgaengeentity SimBox i send SimBox ;

−− Arch i t e c tu re der SimBox

KAPITEL 2. GRUNDLAGEN 10

architecture Test NAND of SimBox i s

−− Hier muss das NAND−Gatter mit−− den g l e i c h en Ports und Portnamen−− wie in der Ent i t y a l s Komponente d e k l a r i e r t werden

component NAND gateport (

a , b : in STD LOGIC;c : out STD LOGIC

) ;end component ;

−− h i e r werden d i e S i gna l e d e k l a r i e r t ,−− d ie in der Simbox verwendet werden

signal a t e s t , b t e s t , c t e s t : STD LOGIC;

begin

−− Dies i s t d i e I n s t an z i i e r ung von−− my NAND gate der ”Klasse ” NAND gate

my NAND gate : NAND gateport map (

a => a t e s t , −− e x p l i z i t e Zuordnung der Te s t s i gna l eb => b te s t , −− zu den Ports der Ent i t yc => c t e s t

) ;

−− Hier werden den Signa len konkre te Werte zugewiesen .−− Die Ze i ten bez i ehen s i c h auf den S ta r t der Simulat ion .a t e s t <=

’0 ’ after 0 ns ,’ 1 ’ after 2 ns ;

b t e s t <=’0 ’ after 0 ns ,’ 1 ’ after 4 ns ;

end Test NAND ;

KAPITEL 2. GRUNDLAGEN 11

2.1.3 Konfiguration

Mittels der Konfiguration kann der Entwickler zwischen verschiedenen Design-Alternativenund -Versionen auswahlen. Dabei bestimmt eine Konfiguration, welche Realisierung fur eineEntity, benutzt wird, d.h. welche Architektur in einer Entity eingesetzt wird. Dazu muss inder Architektur der SimBox, bevor eine Entity instanziiert wird, angegeben werden welcheArchitektur die Instanz verwenden soll. work ist dabei das Arbeitsverzeichnis des Compilersund des Simulators (siehe Listing 2.5).

Syntax einer Konfiguration:for <Instanz> : <Entityname> use entity work.<Entityname> (Architekturname)

Listing 2.5: Konfiguration eines NAND-Gatters

−− Innerha l b der Arch i t e c tu re der SimBoxarchitecture Test NAND of SimBox i s...−− Konf igura t ion der verwendeten Arch i t e c tu re ” da ta f l ow ”for my NAND gate : NAND gate use entity work . NAND gate( data f low )...begin...my NAND gate : NAND gate...end Test NAND ;

Wenn das Design die Bereitstellung multipler Architekturen fur Entities vorsieht , d.h. eineEntity besitzt mehrere Architekturen, dann ist es notwendig, dass fur jede instanziierte Kom-ponente die zu verwendende Architektur angegeben wird. Wird keine Architektur angegeben,so wird der Compiler stets die Architektur als Default ansehen, welche im Programmcodesequenziell an letzter Stelle steht.

2.1.4 Das gesamte Projekt

Unser erstes NAND-Simulationsprojekt besteht nun aus drei Teilen:

• Entity und (hier nur einer) Architektur

• Simulationsumgebung SimBox mit Stimuli und Konfiguration

−− Dek lara t ion und Implementierung der NAND−Ent i t y

KAPITEL 2. GRUNDLAGEN 12

Library IEEE ;use IEEE . s t d l o g i c 1 1 6 4 . a l l ;

entity NAND gate i sport (

a , b : in STD LOGIC;c : out STD LOGIC

) ;end NAND gate ;

architecture dataf low of NAND gate i sbegin

c <= not ( a and b ) ;end dataf low ;

architecture behaviour of NAND gate i sbegin

c <= ( a and b ) ;end behaviour ;

−− Dek lara t ion und Implementierung der Simulationsumgebung

Library IEEE ;use IEEE . s t d l o g i c 1 1 6 4 . a l l ;

−− Die SimBox i s t d i e ” ganze Welt ” , es e x i s t i e r e n−− ke ine Ein− und Ausgaengeentity SimBox i send SimBox ;

architecture Test NAND of SimBox i s

−− Hier muss das NAND−Gatter mit−− den g l e i c h en Ports und Portnamen−− wie in der Ent i t y a l s Komponente d e k l a r i e r t werden

component NAND gateport (

a , b : in STD LOGIC;c : out STD LOGIC

) ;end component ;

−− h i e r werden d i e S i gna l e d e k l a r i e r t ,−− d ie in der Simbox verwendet werden

KAPITEL 2. GRUNDLAGEN 13

signal a t e s t , b t e s t , c t e s t : STD LOGIC;

−−Konf igura t ion der SimBox−− h i e r werden d i e verwendeten Arch i t e c t u r e s der Enti ty−Ins tanzen−− angegeben . Bei nur e iner Arch i t e k tu r j e Ent i t y−− i s t d i e s e r Block !OPTIONAL!

for my NAND gate : NAND gate use entity work . NAND gate( behaviour ) ;

begin

−− Dies i s t d i e I n s t an z i i e r ung von−− my NAND gate der ”Klasse ” NAND gate

my NAND gate : NAND gateport map (

a => a t e s t , −− e x p l i z i t e Zuordnung der Te s t s i gna l eb => b te s t , −− zu den Ports der Ent i t yc => c t e s t

) ;

−− Hier werden den Signa len konkre te Werte zugewiesen .−− Die Ze i ten bez i ehen s i c h auf den S ta r t der Simulat ion .a t e s t <=’0 ’ after 0 ns ,−− ’0 ’ a f t e r 2 ns , −− n i ch t notwendig , e in S i gna l b e h a e l t

−− se inen Wert b i s e in neuer zugewiesen wird’ 1 ’ after 4 ns ;

b t e s t <=’0 ’ after 0 ns ,’ 1 ’ after 2 ns ,’ 0 ’ after 4 ns ,’ 1 ’ after 6 ns ;

end Test NAND ;

2.2 Einfuhrung in Xilinx ISE WebPack

In diesem Praktikum verwenden Sie als Entwicklungsumgebung das ISE WebPack des Logik-IC Herstellers Xilinx. Diese ermoglicht es Ihnen ihre VHDL-Entwurfe zu implementieren,simulieren und mittels Synthese auf reale FPGA-Hardware als Zielarchitektur zu ubertragen.In den ersten drei Praktikumsversuchen werden zunuchst grundlegende digitalen Schaltungenin VHDL realisiert und mittels Simulation verifiziert. In den verbleibenden drei Versuchenwerden komplexere Schaltungen folgen und auf realer Hardware getestet.

KAPITEL 2. GRUNDLAGEN 14

Legen Sie bitte fur jeden Praktikumstag ein neues Verzeichnis an. Es empfiehlt sich, eineinheitliches Bezeichnungsschema durchzuhalten, z. B. versuch1 fur den ersten Versuch,versuch2 fur den zweiten usw. Am Besten organisiert man die einzelnen Entwurfe in Projek-ten. Die folgenden Abschnitte geben eine kurze Einfuhrung in die grundlegenden Funktionenund Arbeitsschritte mit ISE Webpack.

2.2.1 ISE Webpack Starten, Erzeugen von Projekten

Fur das Starten sowie Anlegen eines neuen Projekts gehen Sie wie folgt vor:

• Doppelklicken Sie unter Start (WinIcon Taskleiste unten links)→Alle Program-me →Xilinx ISE Design Suite 11→ISE →ISE 32-Bit auf Project Navigator.Das ISE Webpack offnet sich.

• Mit dem Menupunkt File => New Project wird ein neues Projekt erstellt.

• Auf Create New Project muss unter Project Name dem Projekt ein beliebiger, moglichstselbsterklarender Name gegeben werden. Unter Location wahlen sie das Verzeichnis ih-res gegenwartigen Accounts unter C:\Benutzer\Name des Accounts, da Sie lediglichin diesem Verzeichnis Schreibrechte besitzen! Achten Sie darauf, das Sie keine Leerzei-chen in Datei- oder Verzeichnisnamen verwenden. Der Top-Level Source Type ist HDL(Hardware Description Language). Mit Next geht es zur nachsten Dialogseite (GerateEigenschaften).

Abbildung 2.2: Projekt Namen und Verzeichnis angeben

• Auf Device Properties wahlen Sie als Bausteinfamilie unter Family die Variante Spar-tan3, als Baustein unter Device den XC3S200, als Gehausebauform unter Package denFT256, als Geschwindigkeitsklasse unter Speed Grade -4 und als bevorzugte Sprache

KAPITEL 2. GRUNDLAGEN 15

unter Preferred Language VHDL aus. Die restlichen Punkte konnen in der Grund-konfiguration beibehalten werden. Auf Next geht es zur nachsten Dialogseite.

Abbildung 2.3: Projekt Eigenschaften einstellen

• Unter Create Source konnen bereits zu Beginn neue VHDL-Dateien angelegt und indas Projekt eingebunden werden. Dieser Vorgang ist naturlich auch noch spater zujedem Zeitpunkt moglich. Klicken sie deshalb auf Next um auf die nachste Dialogseitezu gelangen.

• Auf Add Existing Source werden bereits vorhandene VHDL-Dateien ubergeben. Auchdieser Vorgang ist spater moglich. Mit Next gehts weiter.

• Unter Project Summary sehen Sie die Zusammenfassung der gegenwartigen Eigenschaf-ten des neuen Projekts. Mit Finish schließen Sie den Project Wizard erfolgreich ab.

Nach der Erzeugung des Projekts, kann direkt mit der Implementierung von Entwurfenbegonnen werden. Dazu muss zunachst ein neue VHDL-Datei angelegt werden, in welchemdie Entities Platz finden.

2.2.2 Anlegen und Einfugen von VHDL Dateien

2.2.2.1 Anlegen von Dateien

Fur die Erzeugung von VHDL-Dateien gehen Sie wie folgt vor:

• Am linken oberen Rand des Bildschirms finden Sie das Design-Fenster. Hier werdenalle Komponenten des aktuell geoffneten Projekts hierarchisch aufgelistet. Um nun ei-ne Datei zu erzeugen klicken sie zunachst mit der rechten Maustaste auf das FPGA-Design (xc3s200-4ft256). Dieses befindet sich direkt unterhalb des Projekt-Ordners in

KAPITEL 2. GRUNDLAGEN 16

der Baumstruktur des Design-Fensters. In dem sich offnenden Kontext wahlen Sie dannNew Source aus. Der zugehorige Dialog wird geoffnet.

Abbildung 2.4: Neue Datei unter New Source hinzufugen

• Auf Select Source Type wahlen Sie als Datei-Typ VHDL Module aus dem Dialog aus.Unter File Name geben Sie einen Namen fur die Datei an. Empfehlenswert ist einBezeichner der moglichst mit dem Namen der Entity ubereinstimmt. Das Verzeichnisunter Location ist das des aktuellen Projekts und wird allgemein beibehalten. Mit Nextzur nachsten Dialogseite.

Abbildung 2.5: Name und Dateityp angeben

• Auf Define Module tragen Sie unter Entity Name den gewunschten Namen ihrer Entityein (auch hier moglich selbsterklarend). Mit Architecture Name geben sie ein Namenfur die Architektur an. Hier empfiehlt es sich eine Kombination aus Entity Name und Be-

KAPITEL 2. GRUNDLAGEN 17

schreibungsstil (strukturelle Beschreibung, Datenflussbeschreibung, algorithmische Be-schreibung) zu wahlen um eine bessere Ubersichtlichkeit bei mehreren Architekturen zugewahrleisten. Innerhalb der darunter liegenden Liste konnen Signalleitung (Ein- undAusgange der Entity) automatisch durch den Wizard generiert werden. Fur den Anfangist es aber ratsam allen VHDL Code moglichst selbst zu implementieren um die Syntaxund das Konstrukt besser zu erlernen. Auf Next gehts weiter.

Abbildung 2.6: Entity- und Architekturname sowie bereits definierte Signalleitungen

• Es folgt die Zusammenfassung der Dateieigenschaften. Mit Finish bestatigen und dieDatei ist angelegt. Im Design-Fenster ist die nun erzeugte Datei zu sehen. Um zu edi-tieren Doppelklicken Sie darauf.

KAPITEL 2. GRUNDLAGEN 18

2.2.2.2 Hinzufugen von Dateien

Beim Hinzufugen von bereits vorhandenen VHDLDateien sollte immer darauf geachtet wer-den, dass sich diese auch im Verzeichnis des aktuellen Projekts (work) befinden bzw. abgelegtwerden, um Pfadfehler beim Kompilieren der Datei zu vermeiden. Fur das Hinzufugen vonbestehenden Dateien sollten Sie daher immer wie folgt vorgehen:

• Klicken sie zunachst mit der rechten Maustaste auf das FPGA-Design (xc3s200-4ft256)im Design-Fenster. Aus dem sich offnenden Kontextmenu wahlen Sie den Punkt AddCopy of Source aus (keinesfalls nur Add Source). Der Windows FileChooser offnetsich.

Abbildung 2.7: Existierende Datei mit Add Copy of Source hinzufugen

• Wahlen Sie die gewunschte Datei aus dem jeweiligen Verzeichnis aus und bestatigen Siemit OK. Die Datei wurde nun dem Projekt hinzugefugt und in das aktuelle Projektver-zeichnis (work) kopiert bzw. abgelegt.

Bei der spateren Synthese von Entwurfen (Versuch 3-6) ist darauf zu achten, dass dierichtige VHDL Datei als Top Modul ausgewiesen ist, welche die Hauptkomponente (MainEntity) beinhaltet. Dazu klicken Sie einfach mit der rechten Maustaste auf die gewunschteDatei mit der darin befindlichen Entity und wahlen Set as Top Module.

KAPITEL 2. GRUNDLAGEN 19

2.2.3 Simulation von Entwurfen

Fur die Simulation eines Entwurfs verwendet ISE Webpack den von Xilinx mitgeliefertenSimulator ISim. Um ISim zu starten gehen Sie wie folgt vor:

• Wahlen Sie zunachst aus dem Drop Down Menu Sources for des Design-Fensters denVorgang Behavioral Simulation aus.

Abbildung 2.8: Prozessvorgang Simulation auswahlen

• Markieren Sie nun die Datei in der sich die Testbench, also die Stimuli (SimBox Entity),befindet aus dem aktuellen Projekt im Design-Fenster.

Abbildung 2.9: Existierende Datei mit Add Source hinzufugen

• Im Prozess-Fenster welches direkt unter dem Design-Fenster liegt ist nun der MenupunktSimulate verfugbar. Mit einem Doppelklick darauf starten Sie die Kompilierung derDatei. Sofern keine syntaktischen Fehler vorhanden sind wird im Anschluß ISim gestar-

KAPITEL 2. GRUNDLAGEN 20

tet. Sollten Fehlermeldungen ausgegeben werden, mussen diese zunachst korrigiert unddieser letzte Schritt wiederholt werden.

Abbildung 2.10: Existierende Datei mit Add Source hinzufugen

2.2.3.1 Verwendung von ISim

ISim hebt sich in Bezug auf die Anwenderfreundlichkeit deutlich von anderen frei verfugbarenSimulatoren wie zum Beispiel ModelSim etc. ab. Die Oberflache setzt sich im wesentlichenaus den drei Komponenten Instanz-, Objekt- und WaveForm-Fenster zusammen (von linksnach rechts). Zentrales Element ist das WaveForm-Fenster in welchem die zeitlichen Signal-verlaufe abgebildet sind. Im mittleren Objekt Fenster konnen die Signale des aktuellen Ent-wurfs ausgewahlt werden, fur welche ein Verlauf im WaveForm erstellt werden soll. Die Stan-dardeinstellung sieht die Darstellung aller Signale vor und fugt diese deshalb automatischhinzu. Sie konnen aber dennoch Signale nach belieben zum WaveForm Fenster hinzufugenoder entfernen, indem Sie diese aus dem Objekt Fenster mit Rechtsklick auswahlen und mitdem Menupunkt Add to Wave Configuration bestatigen. Das Instanz Fenster am rechtenBildschirmrand zeigt die Hierarchie der Instanzen des gegenwartigen Entwurfs.

Simulation startenEine Simulation wird entweder uber den Menupunkt Simulate => Run All oder uber denKonsolenbefehl run <Laufzeit> gestartet werden. Bei der letzteren Variante muss eine Zeit-spanne inklusive der Zeiteinheit ubergeben werden d.h. zum Beispiel run 100ns (Laufzeit derSimulation 100 Nanosekunden).

Simulation beendenSimulationsergebnisse konnen zu jedem Zeitpunkt uber den Menupunkt Simulate => Re-start oder uber den Konsolenbefehl restart ruckgesetzt werden.

Sollte die Analyse der Simulaton abgeschlossen sein, so kann ISim direkt geschlossen wer-den.

KAPITEL 2. GRUNDLAGEN 21

Abbildung 2.11: v.l.n.r. Instanz-, Objekt- und WaveForm-Fenster

2.3 Addierer

Addierer berechnen die arithmetische Summe boolescher Vektoren, wobei auch Ubertrageentstehen konnen. Daher werden Addierer sowohl durch die Anzahl der zu addierenden Bits,als auch durch die Art der Berechnung des Ubertrages klassifiziert. Sie konnen durch Kas-kadierung (Hintereinanderschaltung) von 1-Bit-Volladdierern realisiert werden, die ihrerseitswiederum Halbaddierer enthalten.

2.3.1 Halb- und Volladdierer

Halbaddierer sind Addierer, die aus zwei booleschen Werten a und b die mod 2-Summes = (a + b)mod 2 und den Ubertrag (Carry) c = a ∗ b berechnen.

Volladdierer weisen neben dem Ubertragsausgang (carry out) noch einen Ubertragseingang(carry in) auf, wodurch sie sich u.a. zur Kaskadierung eignen.

KAPITEL 2. GRUNDLAGEN 22

a b

c_out s

HA

Abbildung 2.12: Graphische Darstellung eines Halbaddierers

a b

s

c_out c_inVA

Abbildung 2.13: Graphische Darstellung eines Volladdierers

Kapitel 3

Anmerkungen und Tipps

• VHDL unterscheidet nicht zwischen Gross- und Kleinschreibung.

• In VHDL werden Kommentare mit -- eingeleitet.

• Namen und Bezeichner mussen mit einem Buchstaben beginnen. Die nachfolgendenZeichen konnen Buchstaben, Ziffern oder aber der Unterstrich _ sein.

• Vollstandige VHDL-Anweisungen werden mit einem Semikolon abgeschlossen.

• Die Entity-Beschreibung enthalt keinerlei Information uber die innere Struktur oder dasVerhalten einer Schaltung. Sie beschreibt lediglich die Ein- und Ausgange.

• Wahrend sich die library-Anweisung auf alle Entwurfseinheiten einer VHDL-Dateibezieht, ist bei der use-Anweisung zu beachten, dass diese vor jeder einzelnen entitywiedeholt werden muss, die diese Datentypen verwendet.

• Die Zuweisung eines Signalwerts vom Typ std logic erfolgt durch den Operator <=:

Y <= ’0’;

• Die Zuweisung von std logic vector Werten erfolgt durch Einbettung in Anfuhrungszeichen

E <= "1010";

• Bei der Zuweisung der konkreten Werte zu den Signalen werden die Wert-Zeit-Tupeldurch Kommata getrennt. Nur am Schluss steht ein Semikolon, um die VHDL-Anweisungabzuschließen.

a test <=’0’ after 0 ns,’1’ after 2 ns;

• Der Name SimBox ist kein Schlusselwort; sie konnen also statt dessen jeden beliebigenanderen Namen fur diese Anordnung aus Stimuli-Generator und unserer eigentlichenSchaltung verwenden.

• Tipp fur die Vorbereitungsaufgabe 5: Erweitern sie die DNF geeignet, z.B. mit aa = 0.

23

Kapitel 4

Vorbereitungsaufgaben

Die folgenden Aufgaben dienen der Vorbereitung der Praktikumsaufgaben und sind teilweiseAusgangsbasis fur eine VHDL-Implementierung. Bearbeiten Sie diese Aufgaben vor dem Prak-tikumstermin und dokumentieren Sie die Losung schriftlich. Diese Losungsdokumentationbildet den ersten Teil des Protokolls des Praktikumstermins und wird zu Beginn von denTutoren eingesammelt.

Aufgabe 1. Finden Sie die Fehler im Quellcode:

1 . Library IEEE2 . use IEEE . s t d l o g i c 1 1 6 4 . a l l ;3 .4 . entity X gate i s5 . port ( a , b : in STD LOGIC;6 . c : out STD LOGIC ) ;7 . end X;8 .9 . architecture dataf low of X i s

10 . begin11 . c <= a and b ;12 . end ;13 .14 . entity SimBox i s15 . end SimBox ;16 .17 .18 . architecture Test X of SimBox i s19 .20 . component X gate21 . port22 . (23 . a , b : in STD LOGIC;24 . c : out STD LOGIC25 . ) ;26 . end ;27 .

24

KAPITEL 4. VORBEREITUNGSAUFGABEN 25

28 . signal a t e s t , b t e s t , c t e s t : STD LOGIC;29 .30 . for my X gate : x gate use entity work . X gate ( s t r u c t u r e ) ;31 .32 . begin33 .34 . my X gate : X gate ;35 . port map36 . (37 . a => a t e s t ,38 . b => b te s t ,39 . c => c t e s t40 . ) ;41 .42 . a t e s t <=43 . ’0 ’ after 0 ns ;44 . ’ 1 ’ after 2 ns ;45 .46 . b t e s t <=47 . ’0 ’ after 0 ns ,48 . ’ 1 ’ after 4 ns ;49 .50 . end Test X gate ;

Aufgabe 2. Listen Sie die in VHDL verfugbaren logischen Operatoren auf. Dies kann in Form einerTabelle mit folgenden Spalten erfolgen: Operator, Bedeutung und Beispiel.

Aufgabe 3. Wozu ist die Sensitivitatsliste eines Prozesses notwendig? Muss diese Liste immer vor-handen sein?

Aufgabe 4. Geben Sie die Wahrheitstabelle eines XOR-Gatters, die dazu gehorige boolesche Glei-chung (lasst sich leicht aus dem KV-Diagramm ablesen) und die minimale DNF (dis-junktive Normalform) des XOR-Gatters an.

Aufgabe 5. In VHDL ist es auch moglich, eine Schaltung durch ihre Komponenten und deren Ver-netzung untereinander zu beschreiben. Konstruieren Sie ein XOR-Gatter ausschließlichaus vier NAND-Gattern.

Aufgabe 6. Bestimmen Sie mit Hilfe zweier KV-Diagramme die minimale DNF fur die Ausgangec out und s des Halbaddierers. Ubertragen Sie zunachst die Wertetabellen fur die Summeund den Ubertrag in zwei KV-Diagramme. Fuhren Sie eine graphische Minimierungdurch und ermitteln Sie die minimalen DNFs fur die Summe und den Ubertrag.

Aufgabe 7. Im Folgenden soll ein 1-Bit-Volladdierer entworfen werden. Er bildet die Summe aus zweiEingangsbits und dem Carry-out der vorherigen Stufe. Außerdem liefert er ein Carry-outfur die nachfolgende Stufe. Beschreiben Sie sein Verhalten durch eine Wahrheitstabelle.Erstellen Sie die KV-Diagramme fur die Summe s und fur c out . Bestimmen Sie diedaraus resultierenden minimalen DNFs.

Kapitel 5

Praktikumsaufgaben

Die folgenden Aufgaben sind innerhalb des Praktikumstermins zu bearbeiten. DokumentierenSie Ihre Losung im zweiten Teil des Protokolls des Praktikumstermins. Das Protokoll soll zujeder Aufgabe die folgenden Fragen beantworten:

• Was war das gestellte Problem?

• Wie wurde das Problem gelost?

• Was ist das Ergebnis?

Zur Dokumentation der Problemloung und der Darstellung der Ergebnisse gehoren dieerstellten VHDL-Beschreibungen und die Simulationsergebnisse in Form von Signalverlaufen.Kommentieren Sie die VHDL-Beschreibungen und erlautern Sie ihr Design und die Ergebnis-se. Beachten Sie dabei die gesonderten Anmerkungen zu jeder Aufgabe.

!!!ACHTUNG!!! Bevor Sie mit den Aufgaben beginnen, beachten Sie die Hin-weise zur Bedienung des ISE Webpack in Abschnitt 2.2.

Aufgabe 1. Erzeugen sie ein neues ISE Webpack Projekt fur diesen Versuch. Gehen Sie dazu vorwie in 2.2.1 beschrieben. Laden sie die VHDL-Beschreibung des NAND-Gatters von derWebseite des Praktikums und fugen sie die Datei dem Projekt hinzu (siehe Abschnitt2.2.2.2).

Fur das Protokoll : Erlautern Sie in Ihrem Protokoll die Bedeutung der Begriffe Entity,Architektur und Konfiguration.

Aufgabe 2. Simulieren Sie ihre VHDL-Beschreibung des NAND-Gatters mittels ISim (siehe Ab-schnitt 2.2.3).

Mit den Lupensymbolen konnen Sie im WaveForm-Fenster herein- und herauszoomen.Bei der Simulation werden die als Stimuli definierten Testwerte zu den entsprechendenZeitpunkten angelegt, und das Ergebnis im WaveForm-Fenster angezeigt. Alternativkonnen Sie auch schrittweise simulieren.

Fur das Protokoll : Erzeugen Sie zur Dokumentation ihrer Simulationsergebnisse einenScreenshot des WaveForm-Fensters mit Alt+Druck. Den aktuellen Bildschirminhalt (mitihren Simulationsergebnissen) konnen Sie dann aus der Zwischenablage in die meistenBild- oder Textbearbeitungsprogramme einfugen. Erlautern Sie die Ergebnisse.

26

KAPITEL 5. PRAKTIKUMSAUFGABEN 27

Aufgabe 3. Mit der in der Vorbereitung bestimmten minimalen DNF soll nun von Ihnen eine Enti-ty mit dem Namen xor gate und eine zugehorige Architekture namens xor dataflowfur das XOR-Gatter geschrieben werden. Passen Sie auch die Simulationsumgebungund die Konfiguration entsprechend an, speichern Sie die neue Datei unter dem Na-men xor gate.vhd(siehe Abschnitt 2.2.2.1), und simulieren Sie die Schaltung (mit allenmoglichen Eingabewerten) in der gleichen Art und Weise wie beim NAND-Gatter.

Fur das Protokoll : Machen Sie einen Screenshot des Wave-Fensters und erlautern Siedie Simulationsergebnisse.

Aufgabe 4. Setzen Sie in der process-Umgebung das if-then-else-Konstrukt ein, um die XOR-Funktio-nalitat zu modellieren. Tragen Sie die so entstandene Verhaltensbeschreibung in dieDatei xor gate.vhd als Architektur behaviour ein. Um die Schaltung mit der neuenArchitektur zu simulieren, ist eine Anderung an der Simulationsumgebung (SimBox)notig. Hier muß lediglich der Name der Architektur in der Konfiguration ausgetauschtwerden. Simulieren Sie diese Schaltung.

Fur das Protokoll : Erlautern Sie eventuelle Unterschiede gegenuber der Simulationder Datenflussbasierten Beschreibung.

Aufgabe 5. Erganzen Sie die Datei xor gate.vhd um eine weitere Architektur xor structure, indie Sie ihre NAND-basierte Schaltung des XOR-Gatters eintragen.Andern Sie nun wie-der die Konfigurationsdatei so, dass sie die neu geschriebene Architektur benutzt, undsimulieren Sie anschließend die Schaltung. Gibt es Veranderungen in den Ergebnissenim Vergleich zu den vorigen Simulationen?

Fur das Protokoll : Erlautern Sie eventuelle Unterschiede gegenuber der vorigen Si-mulationen.

Aufgabe 6. Beschreiben Sie die Entity und die Architektur eines Halbaddierers gemaß der ermittel-ten Gleichungen fur die Ausgange c out und s. Erganzen Sie die Simulationsumgebungund die Konfiguration. Simulieren Sie den Halbaddierer mit allen moglichen Eingangs-belegungen. Verwenden Sie fur diese Aufgabe eine neue VHDL-Datei.

Aufgabe 7. Erstellen Sie eine Datenflussbeschreibung fur den Volladdierer gemaß den Ergebnissenaus den Vorbereitungsaufgaben. Simulieren Sie Ihre Entwurf. Verwenden sie fur dieseAufgabe eine neue VHDL-Datei.