Entwerfen eines Peripheriegeräts für eine Softcore-CPU

Ich habe für einen Teil meiner Universitätsarbeit ein Hardwaremodul in VHDL implementiert und möchte es als Teil eines NIOS II-Kerns in meinem Cyclone 2 FPGA implementieren. Dies verwendet die Avalon-Schnittstelle. Welche Ressourcen kann ich beim Entwerfen eines generischen Moduls einsehen? Ich habe keine Ahnung, wo ich mit diesem Teil meines Projekts anfangen soll.

Ich weiß nicht, ob mein Design ein Sklave oder ein Meister sein wird. Kann mir jemand beim Entwerfen des Teils meines Projekts in die entsprechende Richtung weisen.

Ich möchte also, dass mein Hardwaremodul einige zusätzliche Anweisungen der CPU bildet, um die Ausführung eines bestimmten Algorithmus zu beschleunigen. Wir haben also einen Assembly-Aufruf in meinem C-Programm, das den Hardware-Verschlüsselungs-Coprozessor verwendet.

Mein Hardwaremodul ist das DES-Verschlüsselungsmodul, und ich möchte einige zusätzliche Anweisungen, damit ich einen CPU-Kern an mein Modul anschließen kann.

Haben Sie sich dieses Dokument angesehen: altera.com/literature/hb/qts/qsys_components.pdf
Wenn es vom Prozessor gesteuert wird, möchten Sie es wahrscheinlich als Slave. Quartus hat einige Tools zum Definieren einer "Komponente" mit bestimmten Input/Output-Bussen, die Ihnen beim Einstieg helfen können. Es wäre hilfreich, wenn Sie Ihr Modul etwas genauer beschreiben würden, wie viel davon gebaut ist und was es tut.
@ pjc50 Da bin ich mir nicht sicher. Ich werde noch weitere Informationen hinzufügen, damit mich jemand in die Richtung weisen kann, in die ich gehen möchte. Ich weiß es wirklich nicht.

Antworten (1)

Möglicherweise möchten Sie dies als benutzerdefinierte Anweisung und nicht als Speicher-zugeordnetes Peripheriegerät implementieren. Beginnen Sie mit dem Lesen des NIOS II Custom Instruction Guide. Wahrscheinlich möchten Sie eine "Multicycle"-Anweisung implementieren, damit Sie einige Zyklen benötigen, um die DES-Werte zu berechnen.

Die Anleitung erklärt, wie die Befehlsmnemonik Ihre Hardware auslöst. Das Ergebnis wird zusammen mit dem ALU-Ausgang gemultiplext und an die Registerdatei geleitet. Das Beispiel in der Anleitung ist ein CRC-Generator, architektonisch also etwas ähnlich.