Forum: FPGA, VHDL & Co. Softcore im FPGA, AVR oder 8051


von Stefan (Gast)


Lesenswert?

Hallo,
ich habe mir vorgenommen mich mal etwas intensiever mit Softcores im 
FPGA auseinanderzusetzen. Normale kleinere Sachen mit CPLDs hab ich 
schon gemacht. Ich habe mich für Xilinx Spartan 3 entschieden, wobei 
welcher FPGA von welchem Hersteller ja eigendlich nichts mit der frage 
zu tun hat. Nun ja, verbreitet ist ja der 32Bit Prozessor PicoBlaze von 
Xilinx. Doch ich denke solch hohe anforderungen habe ich nicht. Ich 
dachte eher an AVR oder 8051. Nun habe ich grundsatz Fragen. Ein AVR 
dürfte  doch eingedlich nicht viel schneller sein als ein Single Clock 
8051 Core? Kann ich soclh einen Softcore bei z.B 100MHz laufen lassen? 
Wie läuft das mit RAM und ROM? Muss das beides extern sein? Ich glaube 
das ROM Image kann mit in den VHDL Code eingebaut werden oder? Ich habe 
mir mal den AVR Core und den 8051 Core von opencores.org angesehen. Der 
AVR Core hat ja nur 2 8Bit Ports, das ist mir zu wenig. Gibs irgendwo 
einen der mind 4 hat? Gleiches beim 8051 Core, der hat seoweit ich 
gesehen habe 4 8Bit Ports. Aber gibt es einen 8051 Core, an dem Adress 
und Datenbus quasi nach außen geführt ist? Dann könnte man sich mit nem 
Adressdecoder so viele Ports abzwacken wie man will. Natürlich begrenzt 
das der Adressraum, aber das müsste doch gehen oder?

mfg
Stefan

von Roger S. (edge)


Lesenswert?

Der Xilink 32Bit Softcore heisst MicroBlaze, der PicoBlaze ist ein 8 
Bitter.
Was heisst eigentlich hohe Anforderungen? Evtl. willst du die Software 
in C Schreiben, da eigenet sich der MicroBlaze deutlich besser als ein 
8051.

Ich hab bis jetzt keinen 8051 core gesehen welcher punkto Performance 
und Logik Resourcen einem Core von den beiden grossen FPGA Hersteller 
das Wasser reichen konnte. Geschweige denn die Erweiterbarkeit und IDE.

Ich rate dir davon ab etwas mit 8051 auf einem FPGA anfangen zu wollen, 
ausser du bist auf einem Retro Trip.

Bei allen Cores kannst du das Memory natuerlich intern in Block RAMs 
realisieren.

Cheers, Roger

von Stefan (Gast)


Lesenswert?

Hallo,
danke für die schnelle Antwort. Aber der Microblaze ist nicht kostenlos 
oder?

mfg
Stefan

von Florian (Gast)


Lesenswert?

Hallo,

ich spiele auch mit dem Gedanken mir ein Spartan3 Board zu kaufen. 
Allerdings würde ich gerne etwas flexiebleres haben. uclinux mit 
Microblaze wäre schon fat.Jetzt meine Frage: Bekomm ich den Microblaze 
auf allen Boards, die nen Xilinix FPGA drauf haben zum laufen? Und wie 
sieht das mit uclinux aus? Wäre toll wenn jemand mal generell etwas über 
softcores erzählen würde.

Gruß
Florian

von Rick Dangerus (Gast)


Lesenswert?

@Stefan:

Wenn die Cores verfügbar sind, kannst Du sie auch erweitern bzw. dir die 
gewünschten Signale rausziehen. Wo liegt da das Problem?

Rick

von TheMason (Gast)


Lesenswert?

@florian

also um ucLinux laufen zu lassen bedarf es einiges an RAM. ich würde mal 
so tippen 4-8 MBytes mindestens. Zudem benötigst du auch Flash (fürs 
Booten)
Bei Trenz-Elektronik bekommt man Module die ucLinux-Ready sind. ich 
glaube ab ca 159 Euros. u.u ist da das Linux schon direkt drauf. 
Kommunikation war meine ich via Ethernet.

gruß
rene

von Benedikt S. (Firma: embedded projects GmbH) (flopper)


Lesenswert?

Kann das sein, das es MicroBlaze nur zum kaufen (300 EUR oder so) gibt?
Oder wo finde ich denn die Sourcen dazu?

Gruss Bene

von Stefan (Gast)


Lesenswert?

Hallo,
ich denke auch das es PicoBlaze und MicroBlaze nur zum kaufen gibt. Ich 
habe den PacoBlaze gefunden. Der ist mit dem Pico kompatibel, dafür gibs 
auch n C-Compiler.

mfg
Stefan

von Peter D. (peda)


Lesenswert?

Einen MC in einen FPGA zu integrieren lohnt sich nur in den seltensten 
Fällen.

Will man einfach nur mehr IOs haben, ist es einfacher und billiger, 
einen kleinen CPLD oder Standard CMOS-Latches/Schieberegister an nen MC 
ranzupappen.

Es muß also schon wirklich ne Anwendung sein, wo man auch mit externem 
MC einen FPGA gebraucht hätte.


Ohne Deine konkrete Anwendung zu kennen, kann man also keinen Tip 
abgeben.

Auch dürfte man kaum die Sourcen kriegen, sondern nur ne fertige 
Library.

Durch interne Laufzeiten laufen die Cores in der Regel auch nicht mit 
der vollen Taktfrequenz.


Peter

von Roger S. (edge)


Lesenswert?

> Einen MC in einen FPGA zu integrieren lohnt sich nur in den seltensten
> Fällen.

Ist doch arg Anwendungspezifisch, wir verbauen in unseren Projekten fast
immer ein FPGA und seit etwa drei Jahren praktisch keine externe MCU 
mehr.

> Durch interne Laufzeiten laufen die Cores in der Regel auch nicht mit
> der vollen Taktfrequenz.

Diesen Satz haett ich doch gern mal genauer erklaert, da er naemlich 
nicht so viel Sinn macht.

Cheers, Roger

von Stefan (Gast)


Lesenswert?

Hallo,
also ich bin für mich jedenfalls noch nicht vom 8051 weg. Ich hab aber 
immer noch nichts ordentliches gefunden. Ich habe schon VHDL Designs 
gefunden die in nem Spartan3 mit bis zu 100Mhz laufen, bei 1 Takt pro 
Befehl macht das ja schon ordentlich Spaß. Die kosten dann aber alle 
was. Das soll für mich ja auch alles nur Hobby sein. Ich will mal sowas 
wie ein Digitaloszi bauen. So viel wie möglich soll im FPGA 
untergebracht werden. Z.B. auch ein Display Controller für ein Farb LCD 
mit 320x240 Pixeln. Extern braucht es dann noch AD Wandler und RAM/ROM.

mfg
Stefan

von Peter D. (peda)


Lesenswert?

Roger Steiner wrote:

>> Durch interne Laufzeiten laufen die Cores in der Regel auch nicht mit
>> der vollen Taktfrequenz.
>
> Diesen Satz haett ich doch gern mal genauer erklaert, da er naemlich
> nicht so viel Sinn macht.


Ich meine damit, wenn man nur einen 2:1-Teiler baut, läuft der z.B. mit 
300MHz.
In so einem MC-Core sind aber ungleich komplexere Ausdrücke drin und 
dann ists mit den 300MHz Essig (mehr Gatter = längere Durchlaufzeit).

Ich habs mal in so einem Tagesseminar gesehen, da wurde ein PIC-Core 
einprogrammiert und durchgestept.
Sehr schön war zu sehen, wie er bei zu hohem Takt abschmiert.
Ich glaub, maximal waren 20MHz gestattet und die werden ja beim PIC dann 
nochmal durch 4 geteilt.

Warscheinlich wird es auch schnellere Cores geben, die kosten dann eben 
mehr Money und mehr FPGA-Platz.


Peter

von Roger S. (edge)


Lesenswert?

> Ich meine damit, wenn man nur einen 2:1-Teiler baut, läuft der z.B. mit
> 300MHz.

Aus der Luft gegriffene Angaben kommen immer gut. Vor allem da ja alle 
FPGAs in dem Bezug identisch sind.

> In so einem MC-Core sind aber ungleich komplexere Ausdrücke drin und
> dann ists mit den 300MHz Essig (mehr Gatter = längere Durchlaufzeit).

Und jetzt? Es geht ja auch nicht darum PIC und AVR Cores mit 100MHz und 
mehr zu betreiben.
Bloss weil ein Softcore nicht im dreistelligen MHz Breich laeuft macht 
ihn noch lange nicht hinfaellig.
Bei einer FPGA lastigen Anwendung wo Software mit im Spiel ist laesst 
sich so moeglicherweise die MCU aus der BOM streichen.

> Ich habs mal in so einem Tagesseminar gesehen, da wurde ein PIC-Core
> einprogrammiert und durchgestept.
> Sehr schön war zu sehen, wie er bei zu hohem Takt abschmiert.
> Ich glaub, maximal waren 20MHz gestattet und die werden ja beim PIC dann
> nochmal durch 4 geteilt.

Hach wie schoen! Und daraus folgt nun dass in allen FPGAs Softcores 
nicht hoeher als 20MHz getaktet werden koennen und dabei doch nur mit 
einem viertel der Taktfrequenz laufen.

Cheers, Roger

von Thomas B. (yahp) Benutzerseite


Lesenswert?


> Es muß also schon wirklich ne Anwendung sein, wo man auch mit externem
> MC einen FPGA gebraucht hätte.

Das ist doch genau, was Peter ursprünglich schrieb. Man braucht schon 
einen Beweggrund einen FPGA zu nehmen und dann kann es sinnvoll sein 
einen Softcore einzusetzen, um einen zusätzlichen externen µC zu sparen. 
Bloss auf Biegen und Brechen einen FPGA zu nehmen, um mit dem dann "nur" 
einen Softcore zu betreiben ist meistens Humbug. Bloss weil sie "in" 
sind, sind sie nicht immer die optimale Lösung. Das sollte man nicht 
vergessen.

von Peter D. (peda)


Lesenswert?

Roger Steiner wrote:
>
> Hach wie schoen! Und daraus folgt nun dass in allen FPGAs Softcores
> nicht hoeher als 20MHz getaktet werden koennen und dabei doch nur mit
> einem viertel der Taktfrequenz laufen.


Wenn Du das daraus schlußfolgerst, dann mußt Du aber nen ganz schönen 
Knick in der Optik haben.

Ich habe jedenfalls nirgend sowas behauptet.

Es sollte doch wohl jedem klar sein, daß es sich dabei nur um 
Beispielzahlen handelte.

Für konkrete Zahlen hätte ich ja einen konkreten FPGA-Typ und eine 
konkrete Softcore-Version angeben müssen.


Ich fand es jedenfalls schon interessant, daß es verschiedene Softcores 
für den selben MC gibt, und die, die es für lau gibt, meistens nicht 
sonderlich optimiert sind.


Peter

von Stefan (Gast)


Lesenswert?

Hallo,
also Peter hat schon recht. Die Cores die es für Lau gibt sind meist 
nicht so optimiert wie die kommerziellen. Ich werd einfach mal n bischen 
rumspielen und verschiedene austesten. villeicht finde ich ja n Core der 
meinen Ansprüchen gerecht wird. Ich will es ja wirklich machen weil 
FPGAs In sind. Wenns immer nur ums Geld gehen würde dann bräuchte man 
sich ja in seiner Freizeit mit nichts anderem zu beschäftigen als auf 
dem Sofa zu liegen und Fern zu sehen. Das kostet halt nur GEZ, was man 
eh schon zahlt.

mfg
Stefan

von Andreas (Gast)


Lesenswert?

Hallo,

also wenn Du einen guten 8051 Softcore suchst dann wirf mal einen Blick 
auf den T51 von Opencores. Ich habe am Design mitgearbeitet und warte 
diesen auch bei OpenCores. Der T51 ist von seiner Leistungsfähigkeit auf 
jeden Fall mit einem komerziellen Core vergleichbar (1 Takt per byte 
fetch => bis zu 1 Mips / MHz).
Ich habe z.B. für Elektor diverse Beispielsysteme für den FPGA-Kurs auf 
Basis des T51 erstellt. Dabei schafft der T51 auf dem Altera Cyclone 
FPGA problemlos 50 MHz.
Softwareseitig ist der T51 vollständig kompatibel zu einem 8052 / 32 
(ist nur bis zu 12x schneller als das Original).

MfG.
Andreas

von Ralf (Gast)


Lesenswert?

Hi Andreas,

mal n paar Fragen bzgl. dem T51-Core.

- Läuft der auch auf nem Spartan3?
- Kann man sich die VHDL-Daten auch in "schematischer" Form angucken? 
Ich bin
  noch nicht so fit auf FPGAs, und Bilder sagen mehr als tausend Worte 
:-)
- Kann man leicht Erweiterungen vornehmen? Z.B. weitere Ports usw.

Ralf

von Axel (Gast)


Lesenswert?

"Ist doch arg Anwendungspezifisch, wir verbauen in unseren Projekten 
fast
immer ein FPGA und seit etwa drei Jahren praktisch keine externe MCU
mehr."

Hmm, die meisten MCU bringen Flash mit. Der muss ansonsten extra 
aufgelötet werden.

Wenn ich aber schon einen extra Baustein auflöte, kann ich auch gleich 
einen extra Micro nehmen, der an den Flash in der Regel optimal 
angebunden ist, bei dem ich nicht noch endlos FPGA Speicher zum 
Speichern des Codes spendieren muss, der einen Teil meiner Logic evtl. 
schon mitbringt (USB oder so) und der mich nicht auf einen FPGA 
Hersteller festlegt.

Aber WENN ich schon einen Core nehme, würde ich einen von Opencores 
nehmen. Da kann man zur Not wenigstens mal was spezifisches anpassen, z. 
B. Adress/Datenbus rauslegen.

Gruss
Axel

von VHDL_Mensch (Gast)


Lesenswert?

@Axel: Wenn das Programm nicht allzu groß ist, kann man es auch im FPGA 
unterbringen. Ansonsten läßt sich der Code auch im FPGA-PROM 
unterbringen.

von Andreas (Gast)


Lesenswert?

Hallo,

Auf einem Spartan 3 läuft der T51 problemlos.
Der Resourcenverbauch ist z.B. bei einem Spartan 2 2S150 ca. bei 70% 
(Komplettes 8052 System mit ROM / RAM intern als Blockram).

Der T51 hat einen Wishbone Bus für Speichererweiterungen (XRAM) bzw. 
einen SFR bus an den problemlos eigene SFR's (I/O-Ports, Timer etc.) 
angeschlossen werden können.
Wie bereits gesagt habe ich den T51 für Elektor für deren FPGA-Kurs 
portiert. Dort habe ich in der Zwischenzeit den T51 um USB und Ethernet 
erweitert. Die Beispiele vom Kurs können bei Elektor runtergeladen 
werden (USB und Ethernet kommt aber erst).

MfG.
Andreas

von Falk (Gast)


Lesenswert?

Tach die Herren,

bin neu hier. Aber nicht in der Welt der FPGAs. ;-)

ALSO. Just my two cent.

Ich hab beruflich ne Menge mit FPGAs gemacht, vor allem Xilinx. Den 
Picoblaze kann ich wärmstens empfehlen. Er ist KOSTENLOS. Er ist schell! 
Ca. 60 MHz in nem Spartan3. Und er braucht für JEDEN Befehl 2 Takte, 
macht also 30 MIPS. Not bad. Und der ist sehr resourcenschohnend, AFAIK 
70 Slices oder so. Für Steueraufgaben (LCD, IO, Tasten, UART Terminal 
etc.) ist er ideal. Ich hab mal nen Datenprozessor damit gebaut, der hat 
2 Mbit/s bearbeitet/konvertiert (Naja, bissel Gemüse war dann schon noch 
drum rum ;-).

OK, genug Werbung gemacht.

MfG
Falk

von FPGAling Kasimir (Gast)


Lesenswert?

@Andreas und auch alle andern:
Wo bekommt man denn Infos, wie man den T51 von Opencores "verarbeiten" 
muss damit sich was tut? Habe schon an den 8032 RAM drangebaut und ein 
Hexfile reingeschustert, aber da tut sich nicht so viel. Hab auch schon 
das Elektor Projekt versucht, aber da tat sich auch nix. Liegt wohl an 
meinen mangelnden Kenntnissen über den 8051, darum such ich ne Anleitung 
für Anfänger, habt ihr nen Link?
Danke!!!

von Andreas (Gast)


Lesenswert?

Hallo,

eine Anleitung für Anfänger gibt's leider nicht.
Aber ich denke ein guter Einstieg ist die bei OpenCores eingecheckte 
Testbench. Weiters würde ich den T8052 als Basis für ein eigenes System 
empfehlen. Dieser ist schneller und leichter verständlich als der T8032
Als Einstieg würde ich Dir empfehlen einfach mal den T8052 mit Testbench 
in Modelsim zu simulieren. Dann sollte die Arbeitsweise sehr schnell 
klar werden.

von FPGAling Kasimir (Gast)


Lesenswert?

Danke für den Tip!
Wie ist denn Deine Empfehlung dafür, wie ich am einfachsten ein Programm 
(also ein Hex-File) für den 8051 auf dem FPGA hinterlasse oder auch von 
einem externen Flash lesen lasse, welche Anschlüsse (Data_I, 
Address_Out.. und nochwas?) sind denn dafür ausschlaggebend, und muss 
man dafür noch voreinstellen und wo (Startadresse?).

von Andreas (Gast)


Lesenswert?

Hallo,

also wenn ich Deine Frage richtig verstehe dann geht es darum wie Du das 
Programm (hexfile) in den FPGA hineinbekommst ?
Bei einem Altera FPGA ist dies am einfachsten, denn da kannst Du dieses 
als Initialisierungsfile direkt angeben (Synthese liest dann das hexfile 
und initialisiert den Blockram damit). Updaten kann man es ganz einfach 
mit dem "In-System memory content editor" welches es erlaubt zur 
Laufzeit via JTAG den Inhalt von Speicherblöcken upzudaten.
Bei Xilinx ist es nicht ganz so einfach. Hier muss man den Inhalt des 
hexfiles mittels eines Tools in eine Blockraminitialisierung 
konvertieren.

Weiters habe ich einen Bootloader geschrieben der es erlaubt ein 
Programm via RS232 in den Blockram downzuloaden. Diesen kann man 
natürlich so ändern dass das Programm von einem ext. Flash gelesen wird.

Einen externen Flash / SRAM (parallel) kannst Du ganz einfach an den 
externen Wishbone Bus des T8052 anschliessen (XRAM_* Signale).

MfG.
Andreas

von FPGAling Kasimir (Gast)


Lesenswert?

Ja stimmt, das ist (wenn man es endlich richtig macht..) sehr einfach 
bei Altera mit dem Draufspielen des Speicherinhaltes. Endlich hab ich 
das verstanden.
Jetzt muss ich nur noch rausfinden warum das Programm nicht anläuft, 
irgendwie muss ich wohl noch dafür sorgen, dass es nach Auslesen des 
ersten Bytes aus dem Speicher irgendwie weiter geht.
Bislang ist der 8032er mit einem 1024 Byte RAM verschaltet. Anscheinend 
falsch.
Aber ich teste erstnochmal in Ruhe mit dem 8052er bevor ich mich 
beschwere dass es nicht funzt.
Also schonmal einen schönen Abend.

(Ich werde irgendwann noch zum Profi, und dann dürft ihr mich alle 
ausfragen! ;-) )

von J. S. (engineer) Benutzerseite


Lesenswert?

Ok, Du Profi - wie sieht es denn jetzt aus? Hast du nun ein Alteraboard 
oder bist Du doch bei Xilinx verblieben? Ich habe mich in Sachen Altera 
in den (freien!) Leon eingearbeitet und auch schon etwas mit dem Nios 
gemacht. Gäbe es denn auf der Xilinx-Seite etwas Gleichwertiges (freies) 
?

von Pascal (Gast)


Lesenswert?

Hello,

Many people write that it is quite easy to add additional peripherals to 
the T51 core by means of the SFR bus.

Are there any VHDL examples out there on the net? =)

Reason why I am asking: I want to extend/modify the T51 IP core to make 
the 8052 into a 100% compatible NXP 80C522 microcontroller.

As you might know, this means: 1) I2C, 2) Compare registers, 3) PWM, 
etc.

The extended T51 should be 100% compatible with the 80C522, meaning that 
the original ROM code should run flawless.

Adding a peripheral to the SFR bus might be easy, but if so, how come 
that there are no concrete VHDL examples for the T51 IP core in 
particular.

Additional question: If you add a peripheral by means of Wishbone, does 
the microcontroller code need to know about the peripheral bus, or would 
it work in similar way as if it was connected to the Intel SFR bus? It 
looks like using the Wishbone bus, would mean customer microcontroller 
code, therefore I prefer to stick with the original SFR bus, as that was 
designed exactly for the purpose to have a common 8051 core, and extend 
the core to its own flavour while staying compatible...

But again.. then I would like to have some example.

Is there anybody out there who did a similar project like the one I 
suggested.. e.g. converting T51 8052 into a 80C522 microcontroller IP 
core =)

BTW. It's totally okey to write back in German if that is easier for 
you. I do understand german.

Thanks for your help,

/Pascal

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.