Ich beschreibe ein System in VHDL. Dieses System enthält bereits einen Prozessor, einen DDR-SDRAM-Controller und einen VGA-Controller. VGA liest Pixel aus dem SDRAM (bereits validiert und im FPGA bewährt).
Obwohl VGA und SDRAM bereits miteinander kommunizieren, muss die Verbindung zwischen Prozessor und SDRAM noch implementiert werden. Am Ende möchte ich einen Prozessor haben, der den im SDRAM gespeicherten Framebuffer zeichnet. Dann tritt ein Seitenwechsel auf und VGA beginnt, das neue Bild abzurufen, das vom Prozessor gezeichnet wurde.
Um den VGA anzuweisen, vom neuen Speicherort abzurufen, möchte ich den VGA-Controller (unter Verwendung des zugeordneten Speichers) über die neue Adresse des neuen Bildes informieren. Eine einfache Strategie bestand darin, einen Mux zu setzen und zu überprüfen, ob der Adressbereich in die Register des VGA-Controllers oder in den Adressbereich des Caches fällt. Muss ich mich auch um verschiedene Uhrdomänen kümmern? Wenn ja, welche möglichen Probleme sollten mich interessieren?
Zum Beispiel habe ich irgendwann in der Vergangenheit Code von x86 gesehen, der schreibt (unter Verwendung des Outb-Befehls), und der nächste Befehl war ein Inb an denselben und / oder einen verwandten Ort. Muss ich in diesem Fall die Prozessorlogik ändern, um bei solchen Vorgängen zu blockieren? Wenn ja, wie viele Fälle müssen implementiert werden? Wie viele Schnittstellen sind zu beachten?
Wie wird beim Booten der Cache verwendet, wenn alle Einträge ungültig sind? Ich glaube, es gibt ein ROM-Image mit dem Startcode. Könnte es auch einen temporären lokalen RAM für Schriften geben, die mit im ROM gespeichertem Code erstellt wurden (sw-Anweisungen)?
Fortsetzen: Ich benötige Informationen zum Implementieren von Speicherhierarchie-Schaltkreisen: Caches, Speicherzuordnungen, TLBs, virtueller Speicher usw. und wie all diese miteinander kommunizieren. Ich weiß zum Beispiel, wie man Caches und TLBs implementiert. Aber ich bin mir nicht sicher, wie ich sie miteinander verbinden soll. Ich könnte einfach etwas verwenden, das funktioniert (wie die Mux-Idee). Aber ich möchte Entwürfen folgen, die in der Industrie etabliert sind.
Was ich bereits studiert habe: - Ausführen von Mips - Computerarchitektur (Patterson) - MIPS-Handbücher - ARM-Handbücher - Intel-Handbücher
Aber keiner erklärt im Detail.
Wenn es viele Möglichkeiten zur Implementierung gibt, zeigen Sie mir bitte eine, die Sie kennen. Auch wenn es sich um Quellcode oder ein Blockdiagramm handelt. Auch hier brauche ich keine Erklärung, wie es intern funktioniert. Ich muss nur die Schnittstellen zwischen den Modulen kennen.
Danke euch allen