Frage

Für ein mittelfristiges Projekt der Universität muss ich einen konfigurierbaren Prozessor entwerfen, den Code in VHDL schreiben und ihn dann auf einem Spartan 3E FPGA-Board von Digilent synthetisieren. Ich bin ein Anfänger. Können Sie mich also auf einige Informationen über konfigurierbare Prozessoren verweisen, auf einige Ideen, die sich mit dem Konzept beziehen?

War es hilfreich?

Lösung

Sie können meine überprüfen Antwort auf eine verwandte Frage. Wir haben fast dasselbe gemacht und eine CPU in VHDL für ein FPGA -Board gebaut.

Andere Tipps

Dies ist nur ein Modell. Bitte beachten Sie, dass ich es aufräumen werde

Fetch Instruct1,
Fetch Instruct2, Fetch datas1
Fetch Instruct3, Fetch datas2, Process Datas11
Fetch Instruct4, Fetch Datas3, Process Datas2, Store1 Datas1
Fetch Instruct5, Fetch Datas4, Process Datas3, Store2 Datas1
Fetch Instruct6, Fetch Datas5, Process Datas4, Store3 Datas11
Fetch Instruct7, Fetch Datas6, Process Datas5, Store4 Datas1
Fetch Instruct8, Fetch Datas7, Process Datas6, Store5 Datas1

Grundsätzlich sind dies die Hauptkomponenten eines Prozessors Teil 1 ALU: Arithmetische Logikeinheit (hier würde das Drake -Eingang nützlich sein). Ein Alu verfügt über 2 Eingangsanschlüsse und einen Ausgangsanschluss. Die 2 Eingangsports werden eingeschaltet und das Ergebnis ausgegeben. Um zu wissen, welche Anweisung der Alu erfüllen muss, gibt es einen Steueranschluss. Grundsätzlich ist dies der Name des Befehls. Wenn der Steueranschluss 4Bit enthält, gibt es 16 mögliche Anweisungen.

Teil 2 Registereinheit: Dies ist eine Reihe von Speicherzellen (Cache -Speicher). Der Inhalt dieses Speichers wird häufig auf die Eingangsports der ALU übertragen.

Teil3 -Steuereinheit: Dies ist wie der Orchestermeister der CPU. Seine Aufgabe ist es, die Daten an die ALU -Eingabe 2Read zu erhalten, die in den Anweisungsregistern diese Codes an die ALU -Steueranschlüsse senden muss

Schnittstelle. So kommunizieren der Widder und andere Peripheriegeräte mit der CPU

Jedes Mal, wenn die Intruction ein Ergebnis ausgibt, muss sie gespeichert werden. Es kann im RAM gespeichert werden, sodass ein RAM -Schreiben fertig sein muss, sobald das Ergebnis fertig ist. Gleichzeitig kann ein RAM von den Eingängen der nächsten Anweisungen auftreten. Auch gleichzeitig kann die nächste nächste Anweisung vom RAM abgerufen werden.

Die Erzeugung von 1 Anweisungen erfordert normalerweise mehr als 1 Taktzyklus. Die Verarbeitung einer Struktur ist analogen zur industriellen Produktion. Die Kettenarbeit ist also erledigt.

VLIW Die von uns geschriebene Programmierung ist linear, was bedeutet, dass Anweisungen nacheinander stattfinden. Aber CPUs heute (nicht Waffen) haben mehrere ALUs, sodass mehrere Anweisungen gleichzeitig verarbeitet werden.

Sie haben also die Kette für Verarbeitungseinheiten, die mehrere Anweisungen gleichzeitig bearbeiten (Pipeline), und Sie haben eine Menge dieser Einheiten (Superscalar).

Es wird dann zu einer Frage, was/Sie Taylor Ihre CPU -Architektur tun können/müssen.

Ich habe ein ähnliches Projekt durchgeführt und einen Prozessor mit einer 5-stufigen Pipeline in VHDL implementiert.

Das Wichtigste zuerst, Sie müssen die Architektur der Funktionsweise der Prozessoren verstehen. Ohne zu verstehen, was jeder Stange tut und welche Art von Kontrollsignalen Sie benötigen, haben Sie keine Hoffnung, tatsächlich einen in VHDL zu schreiben.

Zweitens, zeichnen Sie Diagramme darüber, wie Anweisungen und Daten durch Ihren Prozessor fließen (dh in jeder Phase). Wie wird jede Stufe aneinander angeschlossen? Wohin gehen die Kontrollsignale? Woher kommen meine Eingaben und wohin gehen meine Ausgänge?

Sobald Sie ein solides Diagramm haben, sollte die tatsächliche Implementierung in VHDL relativ einfach sein. Sie können die Verhaltensmodellierung von VHDL verwenden, um genau zu erklären, was Sie im Diagramm sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top