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
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
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
@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
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
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
> 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
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
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
> 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
> 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.
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
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
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
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
"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
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
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
@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!!!
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.
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?).
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
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! ;-) )
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)
?
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