Forum: FPGA, VHDL & Co. "Best Practices" für Mikrocode-Programmierung?


von Mikrocode-Programmierer (Gast)


Lesenswert?

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!

von kolabier (Gast)


Lesenswert?

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.

von Anguel S. (anguel)


Lesenswert?

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...

von Mike (Gast)


Lesenswert?

LOL, immer drauf ;-)

No brain, no pain!

von Mikrocode-Programmierer (Gast)


Lesenswert?

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...

von Michael E. (cuby)


Lesenswert?

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...

von Klaus F. (kfalser)


Lesenswert?

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.

von Mikrocode-Programmierer (Gast)


Lesenswert?

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.

von Klaus F. (kfalser)


Lesenswert?

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.

von Mikrocode-Programmierer (Gast)


Lesenswert?

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)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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.

von Klaus Falser (Gast)


Lesenswert?

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?

von (prx) A. K. (prx)


Lesenswert?

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.

Beitrag #5444541 wurde von einem Moderator gelöscht.
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
Noch kein Account? Hier anmelden.