Hallo,
kennt jemand von euch gute Dokumente im Netz oder Literatur, die sich
mit dem Thema "Mikrocode-Programmierung" für IP-Cores beschäftigt.
Speziell interessieren mich Herangehensweisen, Konzepte, "Best
Practices", Excel-Sheets für die Microcode-Erzeugnung etc.
Mich würde auch interessieren, wie ihr die Mikrocode-Programmierung in
der Praxis angeht.
Danke!
Als erstes poste ich immer erstmal boss-like ein paar Buzzwords in
Foren, und gucke, wie die Welt so drauf reagiert.
Excel ist auf jeden Fall DAS Top-Werkzeug meiner Wahl, das keinem
Entwickler fehlen sollte.
kolabier schrieb:> Als erstes poste ich immer erstmal boss-like ein paar Buzzwords in> Foren, und gucke, wie die Welt so drauf reagiert.> Excel ist auf jeden Fall DAS Top-Werkzeug meiner Wahl, das keinem> Entwickler fehlen sollte.
Mir kommen diese Begriffe auch Boss-like oder Berater-like vor, nicht
Programmierer...
Hä... Ich bin weder Boss noch Berater, sondern Programmierer! Warum
kriege ich eigentlich so blöde Antworten auf eine vernünftige Frage?
Falls die Frage nicht "vernünftig" sein sollte, dann erklärt mir bitte
warum!
Ich habe schon die oben angegebenen "Buzzwords" gegoogelt, konnte aber
nichts finden. Und da ich bisher noch keine (hilfreichen) Antworten
bekommen habe, gehe ich mal davon aus, dass es dazu - im Gegensatz zu
anderen FPGA-Themen - tatsächlich nicht allzu viele Infos im Netz
gibt...
Hi,
viel zum Thema Microcode-Entwicklung findet sich wirklich nicht - unter
dem Stichwort "Microprogramming" kommt man teilweise weiter. Viele
Arbeiten zu dem Thema kommen eher aus den 70er/80er Jahren, wie z.B.
(shameless plug) unser "MIMOLA"-System:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.94.2653&rep=rep1&type=pdf
Zum Einstieg in Microcode-Programmierung ist vielleicht der MikroSim
nicht übel, mit dem u.a. die Studenten in Marburg "gequält" wurden
(leider nur eine Windows-Anwendung):
http://en.wikipedia.org/wiki/MikroSim
Beim Free-6502 core (eine Implemetierung des guten alten MOS6502) ist
ein Spreadsheet für den Microcode dabei, das vielleicht ganz interessant
ist. Leider ist free-ip.com schon seit ein paar Jahren offline (bzw.
eine Spammerdomain), aber archive.org hat die letzte Release des Cores
noch:
http://replay.waybackmachine.org/20011216121838/http://www.free-ip.com/6502/Free6502_v07.ZIP
Unter "microcode" findet sich das entsprechende Excel-Sheet und eine
csv-Datei.
Zu state machine-Entwurf mit Mikroprogrammierung und Excel gibt es hier
noch ein paar Informationen: http://www.grimmeissen.com/page.aspx?ID=21
Die Uni Toronto hat Microprogramming Notes unter
http://www.dgp.toronto.edu/~ajr/258/notes/micro/
Ein paar ganz interessante Blogartikel zum Thema "Spreadsheets für
Hardwareentwurf" finden sich unter
http://fpgacomputing.blogspot.com/2007/09/replacement-for-von-neumann-model.html
(und Folgeartikel). Nicht direkt Microcode-bezogen, aber vielleicht auch
ganz interessant.
Vielleicht helfen dir die paar Links schonmal weiter...
Mikrocode-Programmierer schrieb:> Warum kriege ich eigentlich so blöde Antworten auf eine vernünftige Frage?
Weil die meisten, so wie ich, die beiden Begriffe Microcode und IP-Core
nicht so recht unter einen Hut kriegen und Du einfach nicht genügend
Informationen gegeben hast, was Du eigentlich brauchst und willst.
Da hätte ich z.B. einmal vermutet, dass Du nicht genau weisst, wovon Du
sprichst.
Unter Microcode verstehe ich eine Low Level Programmiersprache gewisser
CISC Prozessoren wie die Intel Familie und hat mit IP-Cores so im ersten
gar nichts zu tun.
IP-Cores werden mit VHDL oder Verilog geschrieben, das ist etwas ganz
anderes.
Danke Michael für den ersten hilfreichen Beitrag und die Links. Ich
werde mir die gleich nochmal genauer anschauen.
Klaus Falser schrieb:> Unter Microcode verstehe ich eine Low Level Programmiersprache gewisser> CISC Prozessoren wie die Intel Familie und hat mit IP-Cores so im ersten> gar nichts zu tun.> IP-Cores werden mit VHDL oder Verilog geschrieben, das ist etwas ganz> anderes.
Okay, vielleicht habe ich mich da missverständlich ausgedrückt. Auf
CISC-Prozessoren wollte ich nicht hinaus. Ich benötige die
Mikroprogrammierung um einen komplexen Datenpfad zu steuern. Es handelt
sich dabei um einen einen Algorithmus aus der Bildverarbeitung, den ich
auf einen FPGA (bzw. als IP-Core) implementieren möchte.
Mikrocode-Programmierer schrieb:> Ich benötige die Mikroprogrammierung
Was verstehst Du unter Microprogrammierung?
Du willst einen Algorithus in einem FPGA realisieren, ok.
Dazu hast Du 3 Möglichkeiten :
- Du realisierst den Algorithmus in Hardware des FPGA. Dazu musst Du den
Algorithmus in VHDL oder Verilog umsetzen. Das ergibt (meistens) die
schnellste Abarbeitung des Algorithmus, aber man ist limitiert in Bezug
auf Speicher, Floating Point Berechnung usw.
- Du realisierst mit dem FPGA eine embedded Prozessor, und der arbeitet
den in C geschriebenen Algorithmus ab. Das ergibt aber keine
Geschwindigkeitsvorteile gegenüber einem PC.
- Man verwendet einen Mischung der oben genannten Methoden, indem man
bestimmte Teile, z.B. die FFT in Hardware realisiert und andere Teile
des Algorithmus vom embedded Prozessor rechnen läßt.
Hi,
falls noch anderen Leute auf diesen Thread gestoßen sind: Ich habe zwei
interessante Dokumente zum Thema Mikrocode-Programmierung gefunden:
1. http://ati.ttu.ee/~alsu/EK_2008_MicrProgr_RTL.pdf
2. "Implementation of Microprogrammed Control in FPGAs", Bruce W. Bomar,
April 2002 (Gefunden bei IEEE)
Klaus Falser schrieb:> Dazu hast Du 3 Möglichkeiten :
4) Er implementiert einen anwendungsspezifischen Prozessor mit genau den
Befehlen die er für seine Aufgabe benötigt, so ähnlich wie in dem
Projekt Audio-DSP mit Spartan 3-FPGA. Und dafür kann man schon mal
nachfragen was sich so anbietet für die Erstellung der Programme. Ich
verstehe nicht wieso diese Frage hier so "heruntergemacht" wird.
Andreas Schwarz schrieb:> Ich verstehe nicht wieso diese Frage hier so "heruntergemacht" wird.
Ich hoffe nicht, hier jemanden oder etwas heruntergemacht zu haben.
Wenn jemand aber, und ich denke, das war hier leider der Fall, 2 oder 3
Stichworte hinschmeisst, und man sich schwer tut, Wissenstand oder
Hintergründe der Fragestellers einzuschätzen, dann müssen die Antworten
halt auch ein bisschen nebulös ausfallen.
Wie soll man jemandem korrekt helfen, wenn man nicht weiss, ob der
Fragesteller ein größenwahnsinniger 14jähriger ist, der ein, zwei
Artikel gelesen hat und jetzt seine eigene CPU schreiben will oder ob es
ein Uni-Diplpomand mit konkreten Vorstellungen ist, der noch auf ein
paar Ideen hofft?
Andreas Schwarz schrieb:> verstehe nicht wieso diese Frage hier so "heruntergemacht" wird.
Vielleicht aufgrund der in diesem Kontext auf den ersten Blick etwas
deplaciert wirkenden Erwähnung von Excel-Sheets, mit denen man gemeinhin
andere Sphären assoziiert (Stichwort BWL ;-). Wobei ich aber für möglich
halte, dass jemand das mal als Editor/Assembler für die Entwicklung von
Mikrocode verwendet hat, so absurd ist das nicht.