Forum: FPGA, VHDL & Co. IP core für Spartan3 FPGA mit gcc-Unterstützung


von Andreas N. (poolspieler)


Lesenswert?

Hallo,
ich suche gerade einen passenden IP core für ein XC3S400 FPGA.
Am besten wäre der core in VHDL geschrieben - kann aber zur Not auch 
Verilog sein.
Es soll vom gcc unterstützt werden - evtl. auch nach aufspielen eines 
Toolchains.
Falls es einen anderen C-Compiler gibt, wäre es auch eine Möglichkeit.
Es sollen mindestens 64k Program Memory und 64k Data Memory unterstützt 
werden.

Ich habe mir bei www.opercores.org z.B. den 8051 oder den OpenRISC 1000 
angesehen - was haltet Ihr davon? Sollte es damit (in endlicher Zeit) 
möglich sein, sich eine anständige Entwicklungsumgebung aufzubauen???

Oder mit welchen Softcore Prozessoren arbeitet Ihr (MIT C-Compiler)?

Beste Grüße,

Andreas

von Roger S. (edge)


Lesenswert?

Hatte schon den LEON3 von Gaisler im einsatz.

http://www.gaisler.com/cms/

Laeuft gut, compiler ist ein gcc, debugging und ISP recht einfach ueber 
verschiedene interfaces. Kann dir aber nicht sagen ob das in einem 
XC3S400 gut Platz hat.

Arbeiten tu ich hauptsaechlich mit NiosII, aber das nuetzt dir wohl 
nicht viel.

Der Microblaze wuerde deinen Anforderungen wohl am besten gerecht, 
ausser es muss eine 'gratis' Loesung sein.

Cheers, Roger

von Andreas N. (poolspieler)


Lesenswert?

Hallo Roger,
vielen Dank für Deine Antwort!
Den Microblaze habe ich mir auch schon angeschaut. Eine 'gratis' Lösung 
(wie z.B. der zu kleine PicoBlaze) muss es nicht unbedingt sein - aber 
unnötige Kosten möchte ich meiner Firma halt auch ersparen...
Wenn ich mir sicher wäre, dass MicroBlaze für meine Ansprüche gut 
funktioniert, dann würde ich mir evtl. auch das EDK kaufen.
Oder würde ich dann auch das SDK von Xilinx brauchen???

Ich habe mir (vor längerer Zeit) schon mal eine Trial heruntergeladen. 
Doch aus Zeitgründen konnte ich diese wahnsinnig mächtigen Tools gar 
nicht ausprobieren. Und jetzt dürfte die Version abgelaufen sein :-(

Kann mir evtl. jemand sagen, was für Tools (wenn man einen C-Compiler 
einsetzen will) für den MicroBlaze nötig sind?

Grüße,
Andreas

von Roger S. (edge)


Lesenswert?

Mein letztes MicroBlaze Projekt ist schon etwa vier Jahre her.
Der gcc/gdb war dann schon Bestandteil des EDK.
Software Entwicklung ging damit ziemlich flott (Heute vermutlich noch 
besser).
Alles in allem habe ich mit dem MicroBlaze sehr gute Erfahrungen 
gemacht.

Cheers, Roger

von Klaus F. (kfalser)


Lesenswert?

Ein XC3S400 hat aber nur 288Kbits Block Ram, und diese sind zu 16 x 2Kx9 
bit organisiert.
Du hast intern also nur 32 KByte Speicher.
Wenn Du 64 KByte Programmspeicher und 64KByte RAM brauchst, musst Du 
externen Speicher ansprechen.

von Christian R. (supachris)


Lesenswert?

Also ich würde auch den MicroBlaze empfehlen. Da hat man alles aus einer 
Hand. Das EDK ist bissl gewöhnungsbedürftig, aber nach etwas 
Einarbeitung funktioniert es gut. Der Microblaze wird dann über 
Eclipse/GCC/GDB programmiert und debuggt. Debuggen geht über das normale 
JTAG Kabel von Xilinx. Musst halt schauen, dass du eventuell einen 
größeren Spartan nimmst, mit mehr Blockram, der 400er ist da schon arg 
klein.

von Andreas N. (poolspieler)


Lesenswert?

Hallo,
vielen Dank für Eure Antworten.
Ich bin gerade dabei, mir das aktuelle EDK herunterzuladen.

Die ersten Tests werde ich wohl mit dem XC3S400 machen und mich mit 
weniger Platz zufrieden geben.
Bei Erfolg muss ich dann wohl auf einen größeren umsteigen - ich wollte 
allerdings dem Ball Grid Arrays so lange wie möglich ausweichen...
Damit habe ich halt noch keine Erfahrung...

Beste Grüße,

Andreas

von Klaus F. (kfalser)


Lesenswert?

> ich wollte allerdings dem Ball Grid Arrays so lange wie
> möglich ausweichen..
Davor braucht man zumindest im professionellen Bereich keine Angst zu 
haben.
Ein guter Dienstleister für die Leiterplattenfertigung schafft das ohne 
Probleme.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Andreas N. wrote:
> Falls es einen anderen C-Compiler gibt, wäre es auch eine Möglichkeit.
> Es sollen mindestens 64k Program Memory und 64k Data Memory unterstützt
> werden.

T51-Core. Wird vom sdcc unterstützt, Anleitung zum Einstieg findest 
du im verlinkten Artikel.

von Andreas N. (poolspieler)


Lesenswert?

Klaus Falser wrote:
>> ich wollte allerdings dem Ball Grid Arrays so lange wie
>> möglich ausweichen..
> Davor braucht man zumindest im professionellen Bereich keine Angst zu
> haben.
> Ein guter Dienstleister für die Leiterplattenfertigung schafft das ohne
> Probleme.

Hallo Klaus,
das ist schon richtig.
Ich lasse z.B. bei MVPCB fertigen. Die kriegen das mit Sicherheit hin.
doch bisher habe ich nur in zwei Layern (mit Target) gearbeitet und bei 
Bal Grids werde ich sicherlich mehrere Layer benötigen.
Das soll auch noch nicht das Problem sein.
Aber wenn ich jetzt eine für mich neue Prozessor-Technologie UND eine 
neue Leiterplatten UND Bestückungstechnik beginne, dann wird mir halt 
die Anzahl der Fehlerquellen langsam zu hoch...

Vielleicht sollte ich mich einfach mal mit unserem Bestücker 
kurzschließen... Der hätte sicherlich ein paar Tips für mich.

Gruß,
Andreas

von Klaus F. (kfalser)


Lesenswert?

> bisher habe ich nur in zwei Layern (mit Target) gearbeitet
Für den Betrieb eines XC3S400 im professionellen Einsatz würde ich 4 
Layer dringend empfehlen ...

von Andreas N. (poolspieler)


Lesenswert?

Hallo,
ich habe nun meine ersten Schritte mit dem EDK (+SDK) gemacht.
Ich bin schon mal so weit, dass ich Daten auf der LCD ausgeben kann (war 
ein Demoprojekt auf der Xilinx-Seite).
In einem von mir selbst erstellten Projekt kann ich Daten über die 
RS232-Schnittstelle ausgeben und die LEDs ansteuern.
Ich denke, dass ist schon mal einiges.

Mein Problem:
Warum funktioniert z.B. der printf-Befehl nicht - der abgespeckte 
xil_printf-Befehl aber schon?

Fehlermeldung des SDK für mein Programm MIT printf:
1
**** Full rebuild of configuration Debug for project MeineApplikation ****
2
3
make clean all 
4
rm -rf MeineApplikation_main.o  MeineApplikation_main.d  MeineApplikation.elf
5
mb-gcc -c -mno-xl-soft-mul -mxl-pattern-compare -mcpu=v7.10.a -I../../microblaze_0_sw_platform/microblaze_0/include -xl-mode-executable -g -O2 -oMeineApplikation_main.o ../../../MeineApplikation/src/MeineApplikation_main.c
6
 
7
Building target: MeineApplikation.elf
8
mb-gcc -o MeineApplikation.elf MeineApplikation_main.o    -mno-xl-soft-mul -mxl-pattern-compare -mcpu=v7.10.a  -L../../microblaze_0_sw_platform/microblaze_0/lib -xl-mode-executable   
9
Finished building: MeineApplikation.elf
10
11
************** Validating ELF File **************
12
13
Validating ELF Section Addresses with Hardware Address Map...
14
elfcheck -noheader -mhs C:/Workdir/Xilinx/Tests/meinTest/system.mhs -p xc3s500efg320-4 -xmpdir C:/Workdir/Xilinx/Tests/meinTest -pe microblaze_0 MeineApplikation.elf
15
ERROR:MDT - Section .text (0x50 - 0xEF53) does not fit completely into memory
16
   ilmb_cntlr (0x0 - 0x7FFF).
17
ERROR:MDT - Section .init located at address 0xEFA4 does not map to any memory
18
   found in the hardware design.
19
ERROR:MDT - Section .fini located at address 0xEFCC does not map to any memory
20
   found in the hardware design.
21
ERROR:MDT - Section .ctors located at address 0xEFEC does not map to any memory
22
   found in the hardware design.
23
ERROR:MDT - Section .dtors located at address 0xEFF4 does not map to any memory
24
   found in the hardware design.
25
ERROR:MDT - Section .rodata located at address 0xEFFC does not map to any memory
26
   found in the hardware design.
27
ERROR:MDT - Section .data located at address 0xF580 does not map to any memory
28
   found in the hardware design.
29
ERROR:MDT - Section .eh_frame located at address 0xFAB0 does not map to any
30
   memory found in the hardware design.
31
ERROR:MDT - Section .jcr located at address 0xFAB4 does not map to any memory
32
   found in the hardware design.
33
ERROR:MDT - Section .bss located at address 0xFAB8 does not map to any memory
34
   found in the hardware design.
35
ERROR:MDT - Section .stack located at address 0xFB24 does not map to any memory
36
   found in the hardware design.
37
ERROR:MDT - elfcheck failed!
38
INFO:MDT - Try using the linker script generation tools to generate an ELF that
39
   maps well to your hardware design.
40
make: *** [MeineApplikation.elf] Error 2
41
Build complete for project MeineApplikation

Wo anders im Netz habe ich gelesen, dass es wohl daran liegt, dass der 
printf-Befehl nicht ins BRAM passt (ich benutze KEIN SRAM - um alles am 
Anfang möglichst einfach zu halten...)

OK, selbst wenn es so ist, dass der printf-Befehl nicht passt - wo finde 
ich eine Referenz mit den portierten Xilinx-C-Befehlen wie z.B. 
xil_printf?

Wäre schön, wenn mir jemand ein paar Tips geben könnte.

Beste Grüße,

Andreas

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.