Hallo allerseits Ich habe soeben meinen neusten Softcore Prozessor namens Proteus gratis zum Download zur Verfügung gestellt. Der Prozessor ist über 23 Generics stark konfigurierbar (z.B. lassen sich Instruktionen ein-/ausschalten, die Wortbreite lässt sich ändern, die Anzahl der GP-Register ist einstellbar etc.). Er unterstützt auch Benutzerdefinierte Instruktionen und es gibt einen passenden Assembler sowie eine Builder Software (momentan nicht gratis). Der Prozessor hat ein separates Instruktions und Dateninterface, beide sind Wishbone kompatibel. Wer interesse hat kann sich den Proteus Prozessor hier herunterladen: http://www.logicsolutions.ch/Download.htm Für Fragen stehe ich gerne zur Verfügung, die e-mail findet Ihr auch auf meiner Homepage. Gruss Oli
p.s. Es gibt auch einen JTAG Debugger, der es sogar ermöglicht mehrere Prozessoren auf einem FPGA zu debuggen.
Hallo Oliver, das sieht alles sehr interessant aus - ich bin seit längeren auf der Suche nach einem 8-Bit Core für meinen Spartan 3E. Es gibt ja anscheinend doch schon ein paar ... Das Problem mit allen bisher gefundenen ist die Einschränkung auf 1024 Befehle. Warum ist das eigentlich so ? (Bin allerdings kein VHDL-Experte) Gruss Uwe
Wohl weil ein Blockram 18kBit gross ist und eine Instruktion üblicherweise 18 oder 16 Bit breit. Das ergibt dann 1k Instruktionen. Bei Proteus kannst du bis zu 64k Instruktionen ausführen. Hier gibt es diese Beschränkung also nicht.
Uwe N. schrieb: > Warum nutzt man nicht mehrere RAM-Blocks ? hängt davon ab wieviele ein entsprechend kleiner fpga davon hat
Die genaue Anzahl ist ja erstmal irrelevant, selbst auf einem Virtex hat z.B. der Xilinx'sche PicoBlaze nur für 1024 Befehle Platz. Ist der Aufwand beim umschalten der "Bänke" (RAM-Blocks) so aufwendig ?
Es ist praktisch kein Aufwand mehrere Blöcke zu verwenden. Aber man muss dann auch die Instruktionen für entsprechend lange Programmsprünge zur Verfügung stellen. Hat man eine 18-Bit Instruktion wird es sehr schwer z.b. Sprünge über einen 14-Bit Adressraum in den Instruktionssatz einzufügen. Deshalb beschränken sich viele auf einen RAM Block (1k instruktionen). Ich habe beim Design von Proteus selbst gsehen, dass es nicht einfach ist lange Programmsprünge in einen 16-Bit Instruktionssatz zu kriegen...
Danke für dein Feedback, Oliver. Ist vielleicht ein naiver Gedanke von mir, aber könnte man den Adressdecoder nicht mit einer gewissen Eigenintelligenz ausstatten, so das der zusätzliche Adress-Verwaltungsaufwand sich nicht auf die Instruktionen auswirkt ? (wie gesagt, bin in Sachen Hardware-Programmierung ein Newbie)
Uwe N. schrieb: > Danke für dein Feedback, Oliver. > Ist vielleicht ein naiver Gedanke von mir, aber könnte man den > Adressdecoder nicht mit einer gewissen Eigenintelligenz ausstatten, so > das der zusätzliche Adress-Verwaltungsaufwand sich nicht auf die > Instruktionen auswirkt ? (wie gesagt, bin in Sachen > Hardware-Programmierung ein Newbie) Bei den größeren 8Bit PICs gabs da mal 1-2 Bank-Bits, die bei Sprüngen gesetzt/gelöscht wurden, je nachdem in welche Bank man springen wollte. Sowas kann der Assembler normalerweise alleine erledigen und solang man innerhalb einer Bank bleibt, braucht man auch nichts setzen/löschen. Vermutlich könnte man sowas sogar nachträglich recht einfach in einen solchen Softcore integrieren. Grüße, Steuerbert
Steuerbert schrieb: > Bei den größeren 8Bit PICs gabs da mal 1-2 Bank-Bits Jaja, das haben schon viele angefangen. Trotzdem ist dieses Bank-Switching einfach nur hingebastelter Murks. > Vermutlich könnte man sowas sogar nachträglich recht einfach in einen > solchen Softcore integrieren. Da wäre dann aber die generelle Verbreiterung des Adressbusses weit sinnvoller. Ein relativer Sprung ist davon nicht betroffen, für einen absoluten Sprung könnte es 2 verschiedene Reichweiten geben (so gesehen beim AVR mit ajmp und ljmp)...
So ähnlich macht Proteus das auch. Es gibt relative Sprünge und für Absolute Sprünge über eine Sektorgrenze hinweg werden zwei Instruktionen benötigt (eine für das Setzen eines Hilfsregisters und eine für den Sprung, diese Aufteilung bleibt aber vor dem Programmierer Verborgen und wird vom ASsembler übernommen). Gruss Oli
@Jens Welche Schululngsunterlagen? Die Architekturbeschreibung, der Sourcecode und alle Tools (bis auf den Builder) sind frei erhältlich und du kannst sie von meiner Homepage herunterladen (Link im ersten Beitrag dieses Threads).
Hi Oliver, ich meinte die Altera Quartus Unterlagen auf deiner Seite. Gruss, Jens
@Jens Das kommt auch auf den Verwendungszweck an. An Lehrbetriebe habe ich die gesamten Unterlagen jeweils für etwas über CHF4'000 verkauft. Brauchst du die Unterlagen nur für dich oder für die Ausbildung von Azubis oder Schülern? Falls du die Unterlagen nur privat für dich brauchst könnte ich dir etwas entgegenkommen. Ausserdem musst du ja nicht alle Module kaufen. Die Unterlagen sind folgendermassen unterteilt: - Einführung ins Thema Programmierbare Logik - Marktübersicht (Stand 2008) - Quartus II Design Flow - Time Quest Timing Analyzer - Quartus II JTAG Tools Zu jedem Kapitel gibt es eine Übung, eine Referenzlösung zur Übung und einen Kurztest. Falls du interesse hast, schreibe mir doch eine e-mail: info@logicsolutions.ch Gruss Oli
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.