Benutzte Pins
Clock: Pin B13
LEDs: siehe folgende Tabelle
| Signal Name | Header Pin | LED Ref Des | 2VP7 Pin | Bank Number | Voltage Tolerance |
|---|---|---|---|---|---|
| FPGA_GPIO_00 | PIO.J10.1 | PIO.DS8 | T8 | Bank 3 | 3.3V |
| FPGA_GPIO_01 | PIO.J10.2 | PIO.DS9 | P7 | Bank 3 | 3.3V |
| FPGA_GPIO_02 | PIO.J10.3 | PIO.DS10 | R5 | Bank 3 | 3.3V |
| FPGA_GPIO_03 | PIO.J10.4 | PIO.DS11 | R6 | Bank 3 | 3.3V |
| FPGA_GPIO_04 | PIO.J10.5 | PIO.DS12 | P8 | Bank 3 | 3.3V |
| FPGA_GPIO_05 | PIO.J10.6 | PIO.DS13 | R8 | Bank 3 | 3.3V |
| FPGA_GPIO_06 | PIO.J10.7 | PIO.DS14 | T5 | Bank 3 | 3.3V |
| FPGA_GPIO_07 | PIO.J10.8 | PIO.DS15 | T6 | Bank 3 | 3.3V |
| FPGA_GPIO_08 | PIO.J10.9 | PIO.DS16 | R7 | Bank 3 | 3.3V |
| FPGA_GPIO_09 | PIO.J10.10 | PIO.DS17 | T7 | Bank 3 | 3.3V |
| FPGA_GPIO_10 | PIO.J10.11 | PIO.DS18 | G15 | Bank 0 | 2.5V |
| FPGA_GPIO_11 | PIO.J10.12 | PIO.DS19 | AA13 | Bank 4 | 2.5V |
| FPGA_GPIO_12 | PIO.J10.13 | PIO.DS20 | AB13 | Bank 4 | 2.5V |
| FPGA_GPIO_13 | PIO.J10.14 | PIO.DS21 | AC13 | Bank 4 | 2.5V |
| FPGA_GPIO_14 | PIO.J10.15 | PIO.DS22 | AB14 | Bank 5 | 2.5V |
| FPGA_GPIO_15 | PIO.J10.16 | PIO.DS23 | AA14 | Bank 5 | 2.5V |
| FPGA_GPIO_16 | PIO.J10.17 | PIO.DS24 | Y21 | Bank 6 | 2.5V |
| FPGA_GPIO_17 | PIO.J10.18 | PIO.DS25 | Y22 | Bank 6 | 2.5V |
| FPGA_GPIO_18 | PIO.J10.19 | PIO.DS26 | Y23 | Bank 6 | 2.5V |
| FPGA_GPIO_19 | PIO.J10.20 | PIO.DS27 | Y24 | Bank 6 | 2.5V |
| FPGA_GPIO_20 | PIO.J10.21 | PIO.DS28 | AA26 | Bank 6 | 2.5V |
| FPGA_GPIO_21 | PIO.J10.22 | PIO.DS29 | W21 | Bank 6 | 2.5V |
| FPGA_GPIO_22 | PIO.J10.23 | PIO.DS30 | W22 | Bank 6 | 2.5V |
| FPGA_GPIO_23 | PIO.J10.24 | PIO.DS31 | W23 | Bank 6 | 2.5V |
| FPGA_GPIO_24 | PIO.J10.25 | PIO.DS32 | W24 | Bank 6 | 2.5V |
| FPGA_GPIO_25 | PIO.J10.26 | PIO.DS33 | W25 | Bank 6 | 2.5V |
| FPGA_GPIO_26 | PIO.J10.27 | PIO.DS34 | W26 | Bank 6 | 2.5V |
| FPGA_GPIO_27 | PIO.J10.28 | PIO.DS35 | V20 | Bank 6 | 2.5V |
| FPGA_GPIO_28 | PIO.J10.29 | PIO.DS36 | V21 | Bank 6 | 2.5V |
| FPGA_GPIO_29 | PIO.J10.30 | PIO.DS37 | V22 | Bank 6 | 2.5V |
| FPGA_GPIO_30 | PIO.J10.31 | PIO.DS38 | V23 | Bank 6 | 2.5V |
| FPGA_GPIO_31 | PIO.J10.32 | PIO.DS39 | V24 | Bank 6 | 2.5V |
Die Zuweisung zwischen Signalen und Pins erfolgt zeilenweise in einem
Constraint File (".ucf" File"). Das File muss also
erstellt und dem Projekt zugefügt werden.
Syntaxbeispiel: NET "MyClock" LOC = "B13";
Board:
Folgende 'Dinge' werden gebraucht:
Die Programmierung erfolgt über JTAG (Boundary Scan). Bitte beachtet, dass ihr das FPGA in der Chain auswählt und nicht das Flash überschreibt. Leider muss das Downloadtool ("Impact") vom admin gestartet werden, da es unter Userrechten nicht funktioniert. Für Hinweise, wie man unter W2K Server ein Programm permanent 'suid' setzen kann, wären wir dankbar ;-)
Vorgehen im Impact: initialize chain, den Flash überspringen und dem FPGA den richtigen Bitstream zuweisen. Dann ''program''.
Wenn ein Download nicht möglich ist, muss u.U. das Board aus und wieder eingeschalten werden.
Sonstiges
Bitte nicht das vorinstallierte Linux starten, da es auf dem Board keine User Accounts gibt und das System dann von Root herunter gefahren werden muss. Das Linux startet nämlich von einem IBM MicroDrive und nicht aus dem ROM. Einfach ausmachen geht also nicht..
Aufgabe 2: Implementierung eines Programms für einen Mikrocontroller
Das EDK macht folgendes: Zuerst baut es eine Hardwarekonfiguration aus VHDL Modulen. Diese sind im mitgelieferten Projekt schon definiert. Weiterhin compiliert es das C-Programm. Am Ende wird der Objekte in den im ersten Schritt entstandenen Bitstream eingebunden, und zwar so, dass er im BRAM liegt. Der PowerPC, der 'fest verdrahtet' im FPGA integriert ist, bootet dann daraus.
Das ganze geht weitgehend automatisch, der letzte Schritt heisst im Tool 'update bitstream'.
Aufpassen: Es entstehen 2 Bitfiles: system.bit und download.bit. Im ersten ist nur der FPGA-Code, im zweiten zusätzlich der eingebundene Objektcode. Also die richtige Variante wählen.
Aufgabe 3: Tic-Tac-Toe auf dem ML300
Ab Aufgabe 3 wird auf einer Linux Maschine (139.18.4.89) gearbeitet, einloggen über ptty oder anderen ssh client. Account Name ist g<gruppe>, also z.B. g7. Alle wesentlichen files, also z.B. sourcen und doku, finden sich unter /tools/local/ppc auf der Linux Box.
Pfade
PATH mit /tools/local/v2pdk/tools/linux/xilinx/bin und /tools/local/v2pdk/tools/linux/gnu/bin erweitern, gleiches für LD_LIBRARY_PATHSourcen: /tools/local/v2pdk/source/sw_old/apps/v2ptictac
Im Makefile ROOT = /tools/local/v2pdk/tools/linux/gnu/
und V2PRO = /tools/local/v2pdk setzen.
Das Preafix für Crosscompiler usw ist powerpc-eabi-
Debugger (XMD und powerpc-eabi-gdb)
Der xmd läuft leider nur auf der Windows Maschine. Daher muss das Binary (.elf file) mit pscp oder einem andern scp client von der Linux Maschine auf die Windows Maschine kopiert werden (sorry).
Der XMD findet sich unter, wenn man im Windows Startmenue für das EDK 'xygshell'
auswählt. Dann erscheint eine bash, dort kann man dann xmd starten. Im
XMD 'ppcconnect' aufrufen.
Das binary (.elf file) kann danach mit 'dow <file>' auf das target
geladen werden, start mit 'run'.
Alternativ kann nach 'ppcconnect' in einer zweiten shell der
powerpc-eabi-gdb gestartet werden. Dort dann einen target connect machen
(xmd/tcp nach localport, port 1234) und dann file hochladen. Start
mit dem 'finish' button, dann läuft das programm los..
Aufgabe 4: Linux auf dem ML300
Pfade
PATH mit /tools/local/eldk/usr/bin erweitern
Aufgabe 5: Implementierung eines Programms unter Linux
Das Vorgehen ist im Tutorial beschrieben, dass am Platz ausliegt (Aufgabe core led). Die core-led.c datei ist in /tools/local/ppc/kernel und enthält schon einen grossen teil des Codes.