"ssfp16.zip" in einem beliebigen Verzeichnis entpacken.
Um den Prozessor wirklich ausprobieren zu können, ist beispielsweise ein Entwicklungsboard mit einem beliebigen Spartan3 (oder evtl. Virtex II) notwendig. Hier benutze ich das Board von Digilent, welches es für rund 100 Euro zzgl. MwSt. in Deutschland mit kurzen Lieferzeiten zu kaufen gibt. Für dieses Board ist eine kleine Testumgebung realisiert, welche die Anzeige einiger Signale, das schrittweise Abarbeiten des Programms sowie das Auslösen von Interrupts ermöglicht. So kann der Prozessor vollständig getestet werden.
Auf der 4-stelligen 7-Segment-Anzeige werden in Abhängigkeit der Schalter S0 bis S6 die in Tabelle 1 aufgelisteten Signale dargestellt.
Tabelle 1: 7-Segment-Anzeigen
| S6-S0 | Digit3 | Digit2 | Digit1 | Digit0 |
| 000 0000 - 000 1111 | I/O-Ports 0 bis 15 | |||
| 001 xxxx | adr_aus | |||
| 010 xxxx | Daten_aus | |||
| 011 xxxx | regA_adr | flags(3..0) | '0' & mux_wahl1 | '0' & mux_wahl2 |
| 100 xxxx | '0' & regWE & log_op | '0' & imm12laden & imm12loeschen & regB_imm | addiere & mitCarry & sgnd & mult | '0' & div_starten & sar & shc |
| 101 xxxx | '0' & div_busy & weiter & syncRestart | '0' & springeIntr & setzeAdr & springeRel | ramWElb & ramWEhb & csh & cas | '0' & ovfl & zhm & shm |
| 110 xxxx | befehl | |||
| 111 xxxx | ip_aus | |||
Schalter 7 ist mit dem Eingang Int_Anf_async verbunden. Steht er auf 1 und ist das IE-Flag gesetzt, wird bei nächster Gelegenheit ein Interrupt ausgelöst.
Für die Eingabe von Daten werden ebenfalls die Schalter S7 bis S0 benutzt, wobei hier S7 auf Bits 15 und 7 geht, S6 auf Bits 14 und 6 etc. High-Byte und Low-Byte des Daten-Eingangs sind somit immer gleich.
Die LEDs über den Tastern werden gemäß Tabelle 2 angesteuert.
Tabelle 2: Leuchtdioden
| LED | Bedeutung |
| LED0 | ERAMWELowByte |
| LED1 | ERAMWEHighByte |
| LED2 | ERAMLesen |
| LED3 | ExtIOLesen |
| LED4 | ports_we |
| LED5 | frei |
| LED6 | Dparity_fehler |
| LED7 | Bparity_fehler |
Die Funktion der Taster geht aus Tabelle 3 hervor.
Tabelle 3: Taster
| Taster | Funktion |
| Taster0 | 1 Takt |
| Taster1 | 16 Takte |
| Taster2 | Dauertakten ein/aus |
| Taster3 | Restart |
Durch die Synchronisation des Restart-Signals dauert es nach Drücken der Taste 3 zwei Takte, bis ip_aus auf 2 steht.
Mitgeliefert wird ein Assembler-Programm "test.asm", welches alle Befehle des Prozessors automatisch testet. Im Fall eines Fehlers wird ein Fehlercode an die Ausgabeports 0 und 1 geschrieben, um den Fehler lokalisieren zu können. Dieses Programm wird mittels
ssfp16asm test.asm -bp -dp -i
assembliert. Die vom Assembler generierten Dateien "test.lst", "test.mem" und "test_edata.mem" müssen (manuell) in das Klassen-Verzeichnis des Simulators kopiert werden (standardmäßig ssfp16sim/class). Mit "java Sim" wird der Simulator gestartet, er lädt automatisch die genannten Dateien.
Um die vom Assembler erstellte Datei "test.mem" in den Speicher des FPGA zu bekommen, ist die Datei "ssfp16.bmm" notwendig. Diese teilt dem im ISE Webpack enthaltenen Programm "data2mem" mit, wie die Daten in "test.mem" zu interpretieren sind und in welche BRAMs sie zu kopieren sind. Das Kopieren geschieht mit
data2mem -bm ssfp16.bmm -bd test.mem -bt ssfp16_testumgebung.bit -o b ssfp16_dat.bit -p xc3s200
wobei ssfp16_testumgebung.bit die vom Synthesewerkzeug erstellte Konfigurationsdatei ist. Die fertige Konfigurationsdatei kann mit
data2mem -bm ssfp16.bmm -bt ssfp16_dat.bit -d > testconf.txt
überprüft werden. Im unteren Bereich befinden sich die Inhalte der BRAMs. Die Datei "ssfp16_dat.bit" kann nun in den FPGA geladen werden. Nach dem Laden befindet sich die Testumgebung im 1-Takt-Modus. Mittels der Tasten S0 und S1 kann also das Programm schrittweise getestet werden.
| Zurück: Simulator/Debugger | Index |
Stand 16.09.2006
Copyright 2006 by Thomas Brunnengräber
Diese Dokumentation unterliegt den Bestimmungen der GNU Free Document License