Sa, 11.3.: - Speicher angelegt (x,y,z) - Lesezugriff von synchronen Speichern - Initialisierung von Speichern in Assembler-Code So, 12.3.: - Schreiben in synchrone Speicher - Address Unit (Postink, postdek, nix) - Hardware Loop - Ab jetzt 16 bittig - Multiplizierer: Integer & Fractional - ALU umgestrickt (nur ein lesen/schreiben je Operand!) - Addr-Unit lässt sich leider nicht so leicht so umschreiben, Fehler treten auf! Mo, 13.3.: - Multiplier gefixed. - Schreibzugriffe auf Register-Array zusammengeführt. - Lesezugriffe von Register-Array zusammengeführt (Reihenfolge der Activation?) => Design ist jetzt deutlich kleiner! - Division durch Tabelle funktioniert - frakt. Multiplikation mit Rundung - 3D-Kram jetzt optional - Verschiedene Pages wieder eingeschaltet für verschiedene RAMs => Addressbereiche dürfen sich überschneiden - Store Befehl für Frame Buffer-Speicher - Ausgabe der Grafiksimulation Di, 14.3.: - Verhalten von LISA Signalen kapiert => funktionieren unabhängig von der Reihenfolge der ACTIVATIONS - Bedingte Sprünge - Starfield-Programm ausgebaut (Sterne aus C-Programm) - SinCos-Tabelle eingebaut - Divisionstabelle über Schleife von Assembler-Direktiven - Framebuffer-Speicher stallt die Pipeline falls schreiben nicht klappt. - Daten RAM in synchrones RAM gepackt => BRAMs können genutzt werden. Mi, 15.3.: - Habs vergessen, was genau. - Erste Versuche mit FPGA, Pixelflimmern auf Bildschirm - 2750 FPS!, Verzögerungsschleife eingebaut (50 FPS), gleiches Ergebnis - Bedingte Activations eingefügt (so dass addr_gen_unit nur einmal aufgerufen wird, falls gestallt werden muss). Wichtig: Auf active_flag==false testen, da das active in einem Register steht und erst im nächsten Takt auf true gesetzt ist. Do, 16.3.: - VHDL-Modell und Simulationsmodell unterscheiden sich! - Bei einem bedingten Sprung wurde der LC zurückgesetzt - Bei einem bedingten Sprung wurde die branch-address auf ein Signal geschrieben, das branch-flag jedoch in ein Register. Folge in VHDL: Die Branch-Adresse war 0 und der Code fängt von vorne an. - Zeichnen des Starfields funktioniert, aber nicht alle Pixel werden richtig gelöscht => Einfach ganzen Bildschirm löschen ;-) - Starfield funktioniert! Erkenntnisse: - Werte von Signalen ändern ihren Wert sofort (wie VHDL). - Die Activation-Chain ist dafür völlig ohne Belang! - In der Simulation von LISA behalten die Signale ihren Wert über Taktgrenzen, wenn die Signale nicht geschrieben werden. In VHDL werden die Signale auf Null gesetzt, falls nicht geschrieben wird. TODO: -Lesen von Framebuffer -ProgRAM in BRAM packen?