Small Simple FPGA 16-bit Microprocessor: Tests
ssfp16
Small Simple FPGA 16-bit Microprocessor

5 Installation und Tests

5.1 Installation

"ssfp16.zip" in einem beliebigen Verzeichnis entpacken.

5.2 Testumgebung

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.

5.3 Testprogramm

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