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, danke für die schnelle Antwort. Aber der Microblaze ist nicht kostenlos oder? mfg Stefan
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
@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
@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
Kann das sein, das es MicroBlaze nur zum kaufen (300 EUR oder so) gibt? Oder wo finde ich denn die Sourcen dazu? Gruss Bene
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
@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.
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
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.