Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2:...

13
Digitaltechnik #252-0014-00 Rechner¨ ubung 1 Grundvorlesung, SS 2005 Institut f¨ ur Computersysteme Departement Informatik Prof. Daniel Kr¨ oning Revision: 1.29 ETH Z¨ urich Step-by-step Tutorial f¨ ur FPGA-Board und Design Tools ¨ Ubungsziel In dieser ¨ Ubung sollen Sie sich vertraut machen mit den Design Tools die heutzutage eingesetzt werden. Der Entwurfsprozess beginnt bei der Spezifikation und endet schliesslich beim Transistor. Normalerweise ¨ uberlegt man sich mit Papier und Bleistift die Architektur und beginnt dann VHDL Code (Register Transfer Level) zu schreiben. Die ¨ Ubersetzung in die unteren Stufen wird durch ein Synthesetool vorgenommen; wir werden auf Gatter Level beginnen und schliesslich bei dem RTL landen. Spezifikation Architektur RTL Gatter Transistor Abbildung 1: Synthese Windows starten Zun¨ achst muss ggf. Windows gestartet werden. Starten Sie dazu den Rechner neu und w¨ ahlen Sie im Bootmen¨ u Windows. Nun k¨ onnen Sie sich mit n.ethz-Benutzernamen und Passwort einloggen. Praktikumsboard Auf dem Board befindet sich ein Spartan-3 FPGA (Field-Programmable Gate Array; d.h. programmierbarer Logikbaustein) der Firma Xilinx. In der Industrie werden solche Chips normalerweise f¨ ur Rapid Prototyping oder Designs mit kleineren St¨ uckzahlen eingesetzt. Das verwendete Board besitzt einen VGA Ausgang, eine RS-232 Schnittstelle, einen PS/2 Anschluss, 1MB SRAM und 2MBit Flash. Das FPGA selbst ist mit 50 Mhz getaktet (FPGAs weisen oftmals eine deutlich niedrigere Taktfrequenz auf als spezialisierte, nicht konfigurierbare ICs wie z.B. Prozessoren). An dieser Stelle wird nur auf das zum ¨ Ubungsbetrieb Relevante eingegangen; das komplette Handbuch finden Sie auf der Homepage zur Vorlesung. Auf dem FPGA-Board ist rechts unten (Abbildung 2, Nummer 11) eine Reihe von Schiebeschaltern (SW7-SW0, siehe Tabelle 2) montiert, die direkt mit einigen Eing¨ angen des FPGAs verbunden sind. Schalter die ,,oben” oder ,,an” sind setzen den entsprechenden Eingang auf High (d.h. 1 ), diejenigen die ,,unten” oder ,,aus” sind erzeugen ein Low (d.h. 0 ) am Eingang.

Transcript of Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2:...

Page 1: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Digitaltechnik #252-0014-00 Rechnerubung 1Grundvorlesung, SS 2005 Institut fur ComputersystemeDepartement Informatik Prof. Daniel Kroning Revision: 1.29

ETH Zurich

Step-by-step Tutorial fur FPGA-Board und Design Tools

Ubungsziel

In dieser Ubung sollen Sie sich vertraut machen mit den Design Tools die heutzutage eingesetzt werden. Der Entwurfsprozessbeginnt bei der Spezifikation und endet schliesslich beim Transistor. Normalerweise uberlegt man sich mit Papier und Bleistiftdie Architektur und beginnt dann VHDL Code (Register Transfer Level) zu schreiben. Die Ubersetzung in die unteren Stufenwird durch ein Synthesetool vorgenommen; wir werden auf Gatter Level beginnen und schliesslich bei dem RTL landen.

Spezifikation

?

Architektur

?

RTL

?

Gatter

?

Transistor

Abbildung 1: Synthese

Windows starten

Zunachst muss ggf. Windows gestartet werden. Starten Sie dazu den Rechner neu und wahlen Sie im Bootmenu Windows.

Nun konnen Sie sich mit n.ethz-Benutzernamen und Passwort einloggen.

Praktikumsboard

Auf dem Board befindet sich ein Spartan-3 FPGA (Field-Programmable Gate Array; d.h. programmierbarer Logikbaustein)der Firma Xilinx. In der Industrie werden solche Chips normalerweise fur Rapid Prototyping oder Designs mit kleinerenStuckzahlen eingesetzt.

Das verwendete Board besitzt einen VGA Ausgang, eine RS-232 Schnittstelle, einen PS/2 Anschluss, 1MB SRAM und2MBit Flash. Das FPGA selbst ist mit 50 Mhz getaktet (FPGAs weisen oftmals eine deutlich niedrigere Taktfrequenz aufals spezialisierte, nicht konfigurierbare ICs wie z.B. Prozessoren). An dieser Stelle wird nur auf das zum UbungsbetriebRelevante eingegangen; das komplette Handbuch finden Sie auf der Homepage zur Vorlesung.

Auf dem FPGA-Board ist rechts unten (Abbildung 2, Nummer 11) eine Reihe von Schiebeschaltern (SW7-SW0, siehe Tabelle2) montiert, die direkt mit einigen Eingangen des FPGAs verbunden sind. Schalter die ,,oben” oder ,,an” sind setzen denentsprechenden Eingang auf High (d.h. 1), diejenigen die ,,unten” oder ,,aus” sind erzeugen ein Low (d.h. 0) am Eingang.

Page 2: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 2

10 www.xilinx.com Spartan-3 Starter Kit Board User Guide1-800-255-7778 UG130 (v1.0.3) October 15, 2004

Chapter 1: IntroductionR

Figure 1-2: Xilinx Spartan-3 Starter Kit Board (Top Side)

POWER

2MbitPlatformFlash

A1 Expansion Connector A2 Expansion Connector

POWER

PROGDONE

PS/2

XILINXXC3S200

FPGA

VGA

3.3V

RS

-232

RS

-232 B1

Exp

ansi

on C

onne

ctor

ug130_c1_02_042704

7

8

1

23

6

5

9

1718

24

22

2021

31

16

1927

26

25

12

13

11

10

1530

Figure 1-3: Xilinx Spartan-3 Starter Kit Board (Bottom Side)

50MHz

256K

x16

SR

AM 2.5V

1.2V

256K

x16

SR

AM

ug130_c1_03_042704

4

5

6

28

29

14

Abbildung 2: Xilinx Spartan-3 Board

1 FPGA2 Flash ROM

10 7-Segmentanzeige11 8 Schiebeschalter12 8 Leuchtdioden (LED)13 4 Taster17 Reset Taste (ladt FPGA mit Konfiguration aus dem Flash)18 leuchtet, wenn das FPGA fertig programmiert wurde

Tabelle 1: Legende zu Abbildung 2

Schalter SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12

Tabelle 2: Schiebeschalter

Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche im gedruckten Zustand die Eingange am FPGAauf High setzen (Tabelle 2).

Schalter BTN3 BTN2 BTN1 BTN0FPGA Pin L14 L13 M14 M13

Tabelle 3: Druckschalter

Die 8 Leuchtdioden (Kurzform LED fur Light-Emitting-Diode - Licht aussendende Diode) die mit der Nummer 12 ange-schrieben sind, werden direkt von den Ausgangen des FPGA angesteuert. Um eine LED einzuschalten muss der zugehorigeAusgang auf 1 gesetzt werden.

LED LD7 LD6 LD5 LD4 LD3 LD2 LD1 LD0FPGA Pin P11 P12 N12 P13 N14 L12 P14 K12

Tabelle 4: LEDs

Page 3: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 3

Inbetriebnahme

1. Schliessen Sie das Verbindungskabel an den mit (22) bezeichneten Ort auf dem Board und den Parallelport (violett) desComputers an. Beachten Sie die Polung des Steckers! Die Beschriftung muss mit der auf dem Board ubereinstimmen.

2. Schliessen Sie das Netzteil an.

3. Sobald das Board mit Strom versorgt ist, wird die Konfiguration des FPGAs (1) aus dem Flash (2) geladen und einDemoprogramm lauft ab.

Xilinx ISE (Integrated Synthesis Environment)

Starten Sie die FPGA-Entwicklungsumgebung mittels Start → Programme → Xilinx ISE 6 → Project Navigator

Das Hauptfenster (Bild 3) ist in vier Bereiche aufgeteilt:

Ubersichtsfenster zeigt hierarchisch alle zum Projekt gehorigen Files an. Ein Doppelklick auf ein File startet das zugehorigeTool im Editierfenster.

Prozessfenster Ein Doppelklick mit der linken Maustaste bzw. der Menupunkt ,,run” in dem auf einen Rechtsklick erschei-nenden Pop-Up Menu startet den zugehorigen Prozess. Ein grunes Hackchen markiert einen erfolgreich abgelaufenenProzess.

Konsole zeigt die Ausgabe des zuletzt abgelaufenen Prozesses inkl. Warnungen und Fehlermeldungen an.

Editierfenster Hier konnen z.B. VHDL Files bearbeitet werden.

Editierfenster

Uebersichtsfenster

Prozessfenster

Konsole

Abbildung 3: Xilinx Project Navigator

Page 4: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 4

Aufgabe 1.1 Gatter Schema

1. Erstellen Sie zuerst ein neues Projekt: File → New Project (Bild 4). Wahlen Sie als ,,Schematic” als ,,Top-LevelModule Type”. Dieses Programm scheint noch Uberreste von Windows 3.x Zeiten zu haben und vertragtz.B. Leerzeichen in Verzeichnisnamen nicht; Ihr Home-Verzeichnis sollte aber auch unter ,,T:” zu findensein.

Abbildung 4: Neues Projekt erstellen

Im nachfolgenden Fenster wahlen Sie fur das Digilent Spartan 3 Board folgende Einstellungen (Bild 5):

Device Family Spartan 3Device xc3s200Package ft256Speed Grade -4

Abbildung 5: Einstellungen fur Spartan-3 Board

Uberspringen Sie die nachsten beiden Fenster mit ,,weiter” und klicken Sie auf ,,Fertig stellen”.

2. Fugen Sie dem Projekt nun ein weiteres File hinzu, indem Sie im Ubersichtsfenster mit der Rechten Maustaste klickenund ,,New Source” auswahlen. Markieren Sie auf der linken Seite ,,Schematic” und klicken Sie auf ,,weiter” und,,fertig stellen” (Siehe Bild 6).

Page 5: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 5

Abbildung 6: Neues Schema hinzufugen

Nun offnet sich ein neues Fenster zur Schemaeingabe (Bild 7).

SelectCursor

AddWire

AddI / O Marker

Addsymbol

Abbildung 7: Schaltung zeichnen

Page 6: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 6

3. Bauen Sie nun folgende Funktion mit Gattern auf: Z = (A∨B)∧ (A∨B) (siehe Bild 7). Platzieren Sie dazu zuerst dieGatter indem Sie das ,,Add Symbol” Tool auswahlen und in der ,,Logic” Kategorie das entsprechende Gatter markieren.Anschliessend konnen Sie mit ,,Add Wire” die Bauelemente verdrahten und mit ,,Add I/O Marker” die Ein- bzw.Ausgange festlegen. Den ,,I/O Markern” werden eindeutige Defaultnamen zugeordnet; um diese zu andern wahlenSie das ,,Select Cursor” Tool aus und machen einen Doppelklick auf den entsprechenden Marker. Im nachfolgendenFenster konnen Sie den Namen andern und angeben, ob dies ein Ein- oder Ausgang ist (Bild 8).

Benennen Sie die Inputs A und B und den Ausgang Z.

Abbildung 8: I/O Marker umbenennen

Wenn Sie das Schema fertig gezeichnet haben, schliessen Sie den Schemaeditor wieder.

4. Nun mussen Sie die virtuellen ,,I/O Marker” den physikalischen Pins des FPGA’s zuweisen, doppelklicken Sie dazu imProzessfenster (siehe Bild 3) auf User Constraints → Assign Package Pins. (Beantworten Sie die ev. nachfolgendeFrage einfach mit ,,OK”).

In der linken unteren Halfte konnen Sie nun jeden Input-Pin einem Druck- oder Schiebeschalter (siehe Tabellen 3und 2) und jeden Output-Pin einer LED (Tabelle 4) zuweisen. Achten Sie bitte darauf, dass Sie keinen Pinzuzuweisen vergessen (erkennbar an einer fetten Schrift im linken oberen Teil) und dass Sie keinen Ausgangeinem Schalter zuweisen! Ein Kurzschluss mit Beschadigung des FPGAs ware die Folge!

Nehmen Sie folgende Zuweisung vor:

,,I/O Name” ,,I/O Direction” ,,Loc”Z Output P11B Input K13A Input K14

Speichern Sie Ihre Anderungen und schliessen Sie das Fenster wieder.

(Achten Sie im Folgenden darauf, dass im Ubersichtsfenster das Schema, d.h. ,,logic.sch” ausgewahlt ist, sieheAbbildung 3).

5. Offnen Sie das Pop-Up Menu (rechte Maustaste) uber Generate Programming File und klicken Sie auf Properties. . . (Bild 10).

Stellen Sie Startup Options → FPGA Start-Up Clock auf JTAG Clock (Bild 11).

6. Starten Sie nun die Synthese: Rechtsklick auf Generate Programming File → Run.

7. Wenn alle Prozesse fehlerfrei abgeschlossen worden sind kann die Programmierung beginnen: Rechtsklick auf Confi-gure Device (iMPACT) → Run.

Wahlen Sie im neu geoffneten Fenster: Boundary-Scan Mode, OK → Automatically Connect to cable andidentify Boundary-Scan chain, OK.

Im nachfolgenden Fenster erscheinen zwei ICs, das linke ist das FPGA selbst; weisen Sie ihm das File ,,logic.bit” zu.Das rechte ist das Flash-ROM, in das wir die Daten aber nicht ablegen werden; wahlen Sie im Dateiauswahldialog,,Bypass” aus (rechts unten).

Page 7: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 7

Abbildung 9: Pin Assignment.

Abbildung 10: Generate Einstellungen

Page 8: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 8

Abbildung 11: Startup Options → FPGA Start-Up Clock auf JTAG Clock setzen

Abbildung 12: Design auf FPGA Ubertragen.

8. Klicken Sie anschliessend mit der rechten Maustaste auf das linke IC und wahlen Sie Programm.... Uberspringen Siedas nachfolgende Fenster mit ,,OK”. Nun wird das FPGA neu programmiert . . .

Manchmal schlagt die Ubertragung auch fehl; wiederholen Sie in diesem Fall den Vorgang einfach noch einmal.

Uberprufen Sie nun die Schaltung auf dem FPGA! Welche Funktion wurde implementiert?

Page 9: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 9

VHDL-Einfuhrung

Nun begeben wir uns eine Stufe hoher (siehe Bild 1) und bauen die selbe Funktion auf Register Transfer Level (d.h. inVHDL) auf.

Laden Sie das File dt-pract1.zip von der Vorlesungsseite herunter und entpacken Sie es in Ihrem Homeverzeichnis.

Offnen Sie im Verzeichnis part1 das Projekt part1.npl:

File → Open Project (gehen Sie wieder von ,,T:” aus)

Aufgabe 1.2 VHDL-Syntax

Das VHDL-Modell in Bug1.vhdl hat noch einige syntaktische Fehler. Finden Sie diese, bis es erfolgreich synthetisiertwird! Das heisst, der Synthetisierer darf keine Fehlermeldungen mehr ausgeben.

Wahlen Sie dazu die zu synthetisierte Datei im Ubersichtsfenster aus und klicken Sie mit der rechten Maustaste im Pro-zessfenster auf Synthesize - XST und starten den Prozess mit run (siehe Abbildung 13). (Ev. mussen Sie die Datei zuerstspeichern, bevor Sie run auswahlen konnen.)

Abbildung 13: Design synthetisieren.

Wenn Sie nun im Prozessfenster Synthesize - XST → View RTL Schematic mit einem Doppelklick starten, dann konnenSie sich anschauen, wie der Synthetisierer aus dem VHDL Code die Gatter zusammengebaut hat. In Abbildung 14 sehenSie das ganze Design als Black Box dargestellt, so wie es durch die entity Deklaration im VHDL Code spezifiziert wird.Mit einem Doppelklick auf dieses Symbol wird der innere Aufbau stufenweise dargestellt (Abbildung 15). Mit den grunenPfeilen (mit ,,Pop” / ,,Push” angeschrieben) konnen Sie in eine selektierte Komponente hineinschauen (,,Push”) oder mit,,Pop” wieder zuruckgehen.

Page 10: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 10

Abbildung 14:

Pop Push

Abbildung 15:

Aufgabe 1.3 Multiplexer

Offnen Sie nun das Projekt in part2. Ein Multiplexer ist eine Einheit, welche drei Eingange hat: sel, i1 und i0. 1 Dabei wirdbeim einzigen Ausgang o i1 zuruckgegeben, falls sel = 1, und i0 sonst. Untenstehend eine vereinfachte Wahrheitstabelle,wobei − fur “Don’t care” steht:

1Die ganze Welt benutzt in der Digitaltechnik jeweils das hochste Bit (MSB) zuerst. Die ganze Welt? Nein, ein nicht ganz kleiner Prozessor-hersteller in den USA leistet nach wie vor dieser intuitiven Konvention heftigen Widerstand. Dank einer Prozessorfamilie, welche findige Ingenieureseit langem zusammenbrauen, ist diese Firma praktisch unbesiegbar.

Page 11: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 11

sel i1 i0 o0 − 0 00 − 1 11 0 − 01 1 − 1

a) Entity-Deklaration

Offnen Sie das File Mux2to1.vhdl (Doppelklick im Ubersichtsfenster). Dieser Teil enthalt die Inputs und Outputs sowiedie dazugehorigen Datentypen. Vervollstandigen Sie die Deklaration der Entity zu einem Multiplexer mit sel, i1, i0 und o.(Wichtig: Benennen Sie die Inputs und Outputs genau wie angegeben, wenn Sie den Multiplexer auf dem Board laufenlassen mochten.)

b) Verhalten des Multiplexers: Architecture

Die Architecture beschreibt nun das Verhalten des Multiplexers mit dem in der Entity vorgegebenen Interface. Uberlegen Siesich, wie Sie die oben beschriebene Entscheidung mit Hilfe der Wertetabelle in eine Boole’sche Formel umwandeln. FugenSie dann in der Architecture func diese Formel ein. Versuchen Sie Ihr Design (wie in der vorherigen Aufgabe beschrieben)zu synthetisieren!

c) Testbench / Simulation

Nun sollten Sie nicht der Implementierung blind vertrauen. Darum wird diese getestet. Im File Mux2to1 tb.vhdl findenSie das Skelett zu einer Testbench. Diese enthalt wie ublich keine Ein- und Ausgange. Stattdessen verwendet sie die EntityMux2to1 und testet diese systematisch mit verschiedenen Werten. Fugen Sie unten im Code weitere Eingaben ein, um allemoglichen Kombinationen von Inputs zu testen.

Die Testbench ist nicht synthetisierbar, da sie Code enthalt, der sich nicht direkt in Gatter ubersetzen lasst, wie z.b. waitfor 50 ns.

Starten Sie daher ModelSim zur Simulation Ihres Multiplexers: Programme → ModelSim XE III → ModelSim.

Offnen Sie part2/part2.mpf uber File → Open (ev. mussen Sie dazu im Filedialog den Filetyp auf ,,Project Files /*.mpf” umstellen, damit die Datei angezeigt wird).

ModelSim kompiliert die Dateien, so dass diese im Simulator lauffahig sind und kann daher mit den synthetisierten Netzlistennichts anfangen. Kompilieren Sie deshalb alle Dateien: Compile → Compile All (siehe 16).

Abbildung 16: Modelsim

Falls sich alle Dateien kompilieren lassen (bei Status erscheint ein grunes Hakchen), lasst sich die Simulation starten,

Page 12: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 12

indem Sie von der Project zur Library Ansicht wechseln und nach einem Rechtsklick auf work/mux2to1 tb → Simulateauswahlen (siehe Abbildung 17).

Abbildung 17: Simulation starten

Nun mussen Sie die Signale auswahlen, die Sie anzeigen lassen mochten: Rechtsklick auf Mux2to1 tb/dut → Add → Addto Wave. Lassen Sie die Simulation laufen, indem Sie run -all in die Kommandozeile in der unteren Halfte eingeben(siehe Abbildung 18).

Abbildung 18: Simulation des Multiplexers

Falls Sie mochten, konnen Sie Ihr Design nun, wie in der vorherigen Aufgabe beschrieben, aufs Board ubertragen und laufenlassen: wechseln Sie zuruck zur Xilinx ISE, wahlen Sie die Datei Mux2to1.vhdl aus und starten Sie GenerateGenerateProgramming File. Der Schiebeschalter ganz links entspricht dem Signal sel und die beiden Nachfolgenden den beidenanderen Eingangen des Multiplexers.

Aufgabe 1.4 Multiplexer mit Netzliste

Wechseln Sie wieder zur Xilinx ISE und bleiben Sie nun im selben Projekt part2. Den vorher verwendeten Multiplexerkonnen Sie auch anders implementieren, indem Sie statt den eingebauten logischen Operationen ein vorgegebenes Nand 2-Gatter verwenden. Dieses hat zwei Inputs und einen Output.

Page 13: Digitaltechnik #252-0014-00 Rechner¨ubung 1...FPGA Pin K13 K14 J13 J14 H13 H14 G12 F12 Tabelle 2: Schiebeschalter Mit der Nummer 13 auf Abbildung 2 sind Drucktaster bezeichnet, welche

Rechnerubung 1 13

a) Umwandlung der Logik zu nand

Angenommen, Sie durften nur nand-Gatter mit zwei Eingangen verwenden. Es ist bekannt, dass jede Boole’sche Funktionsich durch genugend viele solche Gatter darstellen lasst. Formen Sie die in der Architecture func verwendete Formel so um,dass sie nur noch nand enthalt! Benutzen Sie die aus der Logik bekannten Umformungen.

b) Neue Architecture

In Mux2to1.vhdl finden Sie ganz unten ein Skelett fur die zweite Architecture net, welche die Entity Mux2to1 imple-mentiert. Um die Implementation zu vervollstandigen, mussen Sie:

• Die Benutzung der Komponente Nand 2 vervollstandigen.

• Verschiedene Gatter instantiieren und diese verbinden. Dabei brauchen Sie sicher noch Signale, die fur die Drahtestehen, welche die einzelnen Gatter verbinden.

Danach konnen Sie die Testbench so abandern, dass die neue Architektur verwendet wird. Testen Sie das Ergebnis! Wielange dauert es nun maximal, bis der gewunschte Output anliegt? Was fallt Ihnen noch auf?