Forum: FPGA, VHDL & Co. Mikrocontroller in VHDL


von VHDL Anfänger (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
erstsmal zu meinem Background: Ich bin mit VHDL noch ein wirklicher 
Anfänger.
Habe ein kleines Demoboard mit dem CPLD XC9572 und habe damit meine 
ersten kleinen Binkereien gemacht... Ich hoffe, man wird mir meine etwas 
naiven Fragen verzeihen und mich nicht auf http://www.giyf.de/ verweisen 
:-)

Also ich habe irgendwo gelesen das man in so ein FPGA auch einen 
Mikrocontroller reinzaubern kann.

1. Gibt es da einen wirklich kleinen kostenlosen Core der vieleicht 
sogar in ein CPLD rein passt? Ich wäre auch mit einer 4-Bit-MCU wie 
GC49C501 schon glücklich... ;-)
GC49C501 ist eine 4-Bit-Version vom 8051

2. Wie wird so ein Mikrocontroller im FPGA programmiert? Assembler oder 
C?

3. Ist der Programmspeicher des Mikrocontroller's auf dem FPGA oder ein 
externes EPROM?

4. Gibt es den Quellcode für einen 8051-Core(bin ein alter 8051-Fan!) 
auch kostenlos zum runterladen?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Geht auf ne CPLD schon, auf nem 9572 wirds aber versammt eng :)
Für eine 4bit CPU sollte es wohl noch reichen.
Programmiert wird im schlimmstenfall in bytecode es sei den du schreibst 
dir einen Assembler oder C-Compiler...

@8051 core: schau mal auf opencores vorbei... (Siehe Google ;)

von R. F. (rfr)


Lesenswert?

www.opencore.ork ist dein Freund...
Robert

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

VHDL Anfänger schrieb:

> 2. Wie wird so ein Mikrocontroller im FPGA programmiert? Assembler oder
> C?

Hängt rein vom Core ab.  Du findest bei opencores beispielsweise auch
einen ATmega103-Clone, der ließe sich problemlos in C programmieren.
Sollte bei den von dir bevorzugten 8051s aber auch möglich sein.

Die Programmierschnittstelle muss der Core natürlich selbst implemen-
tieren, beispielsweise als ISP-Schnittstelle.  Die spricht man dann
von außen genauso an, als wäre sie ein entsprechender Controller in
(festverdrahteter) Hardware.

Allerdings hat ein Controller ja mehr als eine CPU, und nicht jedes
Peripheriegerät wird sich in einem FPGA abbilden lassen -- denk nur
an Dinge wie Analog-Komparator oder ADC.

> 3. Ist der Programmspeicher des Mikrocontroller's auf dem FPGA oder ein
> externes EPROM?

Meist einfach RAM im FPGA, d. h. ist beim Ausschalten futsch.  Da
das FPGA aber sowieso aus einem Flash-ROM geladen wird, kann natürlich
das Flash-Image auch eine Vorbelegung für den Controller-Speicher
enthalten.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>  CPLD XC9572
Da hast du nur 72 Flipflops  :-/
Allein eine einzige Registerbank eines 8051 braucht 64 Bits. Da hat dann 
gerade noch der Akku Platz, dann ists aus, 72 FFs verbraten. Kein Platz 
mehr für PC, B, PSW, SP, DPTR ...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ingrid meinte:

>> 3. Ist der Programmspeicher des Mikrocontroller's auf dem FPGA oder ein
>> externes EPROM?
>
> Meist einfach RAM im FPGA

Ähem, natürlich kann es auch ein externer RAM sein.

von Fpgakuechle K. (Gast)


Lesenswert?

VHDL Anfänger schrieb:
> Hallo,
> erstsmal zu meinem Background: Ich bin mit VHDL noch ein wirklicher
> Anfänger.
> Habe ein kleines Demoboard mit dem CPLD XC9572 und habe damit meine
> ersten kleinen Binkereien gemacht... Ich hoffe, man wird mir meine etwas
> naiven Fragen verzeihen und mich nicht auf http://www.giyf.de/ verweisen
> :-)
>
> Also ich habe irgendwo gelesen das man in so ein FPGA auch einen
> Mikrocontroller reinzaubern kann.
>
> 1. Gibt es da einen wirklich kleinen kostenlosen Core der vieleicht
> sogar in ein CPLD rein passt? Ich wäre auch mit einer 4-Bit-MCU wie
> GC49C501 schon glücklich... ;-)
> GC49C501 ist eine 4-Bit-Version vom 8051
>
> 2. Wie wird so ein Mikrocontroller im FPGA programmiert? Assembler oder
> C?
>
> 3. Ist der Programmspeicher des Mikrocontroller's auf dem FPGA oder ein
> externes EPROM?
>
> 4. Gibt es den Quellcode für einen 8051-Core(bin ein alter 8051-Fan!)
> auch kostenlos zum runterladen?

Vergiss CPLD, mit einem kleinen FPGA hast du:
 -ausreichend Platz, auch für mehrere Controller in einem Chip
 -benötigst keinen exteren SRAM als Arbeitsspeicher
 -kanns on-Chip debug hardware einsetzen (z.B. Xilinx Chipscope)
 -kannst statt 8 bit auch locker 32 bit controller realisieren

Und es gibt FPGA-s mit on-Board EEPROM (Xilinx Spartan3 - NV 
(NonVolatile)), Das kommt einer Ein-Chip Lösung schon recht nahe. teile 
des on-Board PROMs kann man ich durch sein eigenes Design nutzen, 
vielleicht als Programmspeicher für den Controller.


Xilinx hat einen 8 bit controller für CPLD im Angebot, den Picoblaze, 
aber benötigt den dicksten CPLD (512 - nicht preiswert) und externen 
Speicher.

Für den picoblaze hat xilinx auch einen Assembler. Allerdings rate ich 
vom Picoblaze ab, da dessen VHDL-Code eine Netzliste aus LUT's und FF 
ist, da lernt man nicht wirklich wie ein mikrocontroller aufgebaut ist.

Xilinx hat auch eine Fix und Fertig 32 bit Lösung: Core, C-Compiler, 
debugger, SDK nennt sich Microblaze. Isse aber nich für ohne Euro, aber 
probiere kann man 30 Tage.

Gut Naechtle,

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Fpga Kuechle schrieb:
> Für den picoblaze hat xilinx auch einen Assembler. Allerdings rate ich
> vom Picoblaze ab, da dessen VHDL-Code eine Netzliste aus LUT's und FF
> ist, da lernt man nicht wirklich wie ein mikrocontroller aufgebaut ist.
Es gibt aber eine Appnote wo der Aufbau und die herangehjensweise 
aufgeführt ist, ist recht informativ :)

von berndl (Gast)


Lesenswert?

Hi,
da der Poster ja sogar mit einer 4-bit CPU zufrieden waere, wuerde ich 
definitiv zum Picoblaze (unter Xilinx) oder zum Pacoblaze (fuer alle 
anderen FPGA Hersteller) raten. Der Assembler-Code ist recht einfach zu 
verstehen und das Teil kann schon eine ganze Menge...
Und es gibt bei Xilinx eine ganz gute Doku zu dem Teil.
Zum 'starten' genau richtig!

von Rooney B. (rooney)


Lesenswert?

Mico32 ist ein open-source VHDL softcore processor.
Vielleicht hilft dir dieser Link weiter:
http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/index.cfm

Hab ihn zwar noch nicht selber verwendet, aber dafür wirst du sicher 
einen FPGA benötigen, ein CPLD ist da definitiv zu klein.

lg
Rooney




-----------------------------------------
http://www.poms-engineering.at

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.