Forum: FPGA, VHDL & Co. xilinx newbie und microblaze


von Frank B. (fbergemann)


Lesenswert?

Hallo,

ich versuche gerade meine ersten Schritte mit dem Spartan 3AN.
Und da hab' ich mir den MicroBlaze ausgesucht - anhand dem hier:
https://cvorg.ece.udel.edu/cpeg422f08/documents/s3embedded_tutorial_XPS_SDK_flow.pdf

Das erste Problem sind die diversen Installationspakete (DVDs), die ich 
mit dem board bekommen habe:

1) Xilinx 9.2i Design Tools Evaluation DVD (ISE)

2) Doppel-DVD:
2.1) Embedded Development Kit 9.2i
2.2) ISE 9.2i

3) Vivado
3.1) Vivado Design Suite 2013.2
3.2) ISE Design Suite 14.6

Ich nehme mal an 3) ist aktuell und 1) und 2) sind "nur" ältere 
Versionen?

Ich hab' dann von der ISE Design Suite 14.6 unter EDK das XPS 
aufgerufen.
Aber das meckert schon beim Starten, daß ich keine Lizenz dafür habe.
"A license was not found for the XPS feature...."

Ich hab' dann ein paar Lizenzen installiert - was gelinde gesagt ein 
Krampf ist. Ich hab' jetzt eine Datei Xilinx.lic und eine Datei 
Xilinx_License.xml. Aber beim Xilinx License Configuration Manager muß 
man trotz "Load License" noch die Environment Variablen 
XILINXD_LICENSE_FILE und LM_LICENSE_FILE setzen.
Was denn worauf bitte?

Auch nach dem Einspielen der o.g. Lizenzfiles, meckert XPS immer noch.
Inzwischen habe ich dann google'd, dass XPS eine kommerzielle Lizenz 
erfordert(?). Andererseits soll es ohne kommerzielle Lizenz wenigstens 
möglich sein, mit einem "abgemagerten MicroBlaze" zu arbeiten. Aber 
womit geht das dann (mit welchem Tool?).

- Danke!

Gruss,
Frank

von Uwe N. (Gast)


Lesenswert?

Ok, bin nicht so der Experte, versuch es trotzdem ;)

VIAVADO und SPARTAN x geht nicht. VIVADO unterstützt alle KINTEX, 
VIRTEX7, ARRTIX und ZYNQ Devices. Also nur die "neuen"...

Wo hast du den deine Lizensfiles her? Aus dem Netz geladen? Diese 
Lizensen sind an deine Hardware gebunden (MAC/ HD).

Wenn du unbedingt den MicroBlaze ausprobieren willst, dann nim VIVADO. 
Hier ist er nämlich enthalten (auch im WebPack). Aber dann geht eben 
kein S3...

Ansonsten schau mal in den IP Katalog: hier sollte (in einer halbwegs 
aktuellen Version) von ISE der "MCS" enthalten sein. Das ist die 
abgespeckte MicroBlaze Version.

von Frank B. (fbergemann)


Lesenswert?

Ich hab' keine Lizenzfiles aus dem Netz gezogen.
Die Lizenzfiles hab' ich über das "Manage Xlinx Licences" and dann über 
die xilinx web-page angefordert nachdem ich einen account angelegt habe.
Das ist dann aber wohl nur die freie WebPack License. (Wie gesagt, ich 
finde die ganze License-Prozedur mehr als verwirrend.)

Wenn Du sagst:
> Diese  Lizensen sind an deine Hardware gebunden (MAC/ HD)

Dann meinst Du die kommerziellen Lizenzen - richtig?
Ich hab' das board aus zweiter Hand bekommen. Damit wären Hardware 
gebundene Lizenzen dann auch hinfällig.

> VIAVADO und SPARTAN x geht nicht.
> VIVADO unterstützt alle KINTEX, VIRTEX7, ARRTIX und ZYNQ Devices.
> Also nur die "neuen"...

OK, dann kann ich Vivado erst mal abhaken. Ich frage mich dann 
allerdings, wieso ich deren Installations-CD dann mitbekommen habe für 
ein S3 board(?).
Und dann noch diese beiden Varianten
1) Xilinx 9.2.i Design Tools Evaluatiob DVD
2) Embedded Development Kit (EDK) - wo ISE auch noch mal drin ist

Die DVDs zu 1) und 2) sind alle von 2007. Scheinbar ist Vivado aktueller 
(2013) aber eben für S3 nicht brauchbar.

Ich lade mir gerade noch mal ISE 14.7 runter. Mal sehen, ob's dann damit 
klappt.

von Frank B. (fbergemann)


Lesenswert?

Werde ich den "MCS" dann in ISE finden?
Oder brauch' ich dafür das SDK?
Gruss,
Frank

von Uwe N. (Gast)


Lesenswert?

Frank Bergemann schrieb:
> Wenn Du sagst:
>> Diese  Lizensen sind an deine Hardware gebunden (MAC/ HD)

> Dann meinst Du die kommerziellen Lizenzen - richtig?

Nein alle Versionen, egal ob WebPack oder kommerziell benötigen eine
Lizenz.

Frank Bergemann schrieb:
> OK, dann kann ich Vivado erst mal abhaken. Ich frage mich dann
> allerdings, wieso ich deren Installations-CD dann mitbekommen habe für
> ein S3 board(?).

Ich bekam, wenn ich mich recht entsinne, damals (vor ca.2 Jahren)auch 2 
DVDs.

Frank Bergemann schrieb:
> Werde ich den "MCS" dann in ISE finden?

Ja sicher. Der findet sich genau dort, wo die anderen IPs (z.B.Block RAM 
etc.) zu finden sind.
Leider kann ich aktuell da nicht präziser werden, da ich seit geraumer 
Zeit nicht mehr mit ISE "gespielt" habe.
Mich reizen die ZYNQ Teile sehr, deshalb bin ich auch zum VIVADO-Tool 
übergelaufen.

Das SDK brauchst zur Software Entwicklung. Das ist afaik mittlerweile 
ebenfalls frei (benötigt aber auch eine Lizenz).

von W.S. (Gast)


Lesenswert?

Frank Bergemann schrieb:
> ich versuche gerade meine ersten Schritte mit dem Spartan 3AN.
> Und da hab' ich mir den MicroBlaze ausgesucht

Sollte dir das nicht ein wenig zu denken geben?
kopfschüttel..

W.S.

von Frank B. (fbergemann)


Lesenswert?

Weil ich mit einem SoftCore anfange?
Ich hab' ein bißchen Erfahrung mit dem AVR32 und Atmel Studio.
Daher dachte ich, ich will erst mal blackbox-mäßig eine CPU drin haben 
und ein einfaches "Hello, World!" Program zum Laufen kriegen.
Den MSC konnte ich jetzt auch mit dem CORE Generator anlegen.
Ich konnte den dann auch in ein SDK mini-Programm einbinden.
Allerdings bekomme ich es noch nicht auf das target.
Ich nehme an, das SDK setzt voraus, dass der MCS schon plaziert ist?
Wie bekomme ich denn den MCS deployed?

: Bearbeitet durch User
von qwerty (Gast)


Lesenswert?

Hallo,

bevor du wirklich mit einem Softcore auf einem FPGA anfängst würde ich 
dir wirklich empfehlen zuerst einmal die Grundlagen zu erlernen.

1) Blinki
2) Blinki gesteuert durch Taster
3) Blinki mit unterschiedlichen Frequenzen von der internen PLL
4) UART mit Hilfe von State Machines
5) Debuggen mit ChipScope (falls Lizenz vorhanden, ansonsten wirds 
haarig)
6) Dann kann man sich noch mit Timing Constraints auseinander setzen
7) Mit FIFOs was machen
8) Mit interne RAMs arbeiten
9) Mir fallen tausend Dinge ein, die dich als Anfänger für Tage 
beschäftigen kann...

Erst wenn du dich hier wirklich sicher fühlst kannst du mit einem 
Softcore anfangen. Ein Softcore ist ziemlich komplex und meist mehr als 
nur eine Blackbox. Wenn du da nicht einigermaßen weißt was du tust, dann 
kann das ein sehr steiniger Weg sein.

Wenn einer mit FPGAs viel Erfahrung hat, dann ist auch für den 
MicroBlaze nicht gerade was, was man in einer Stunden implementiert hat 
und ein "Hello World" rausziehen kann. Da kann man gerne auch mal Tage 
damit verbringen...

Also lerne ersteinmal generell mit dem FPGA zu arbeiten, bevor du einen 
Softcore implementieren willst

von Frank B. (fbergemann)


Lesenswert?

Inzwischen habe ich schon mal rausbekommen, dass ich den MCS mit 
PlanAnhead erstellen kann - das ist sehr schön hier beschrieben:
https://www.youtube.com/watch?v=rv_BYDPlwHo

Allerdings kann ich das damit erzeugte bitstream file nicht zusammen mit 
dem "Hello, World!" Program aus dem SDK aufs S3 bringen. Da bekomme ich 
noch den Fehler:

Command Line: elfcheck -hw
E:/Users/FBE/Xilinx-Projects/hw_platform_mcs/system.xml -mode bootload 
-mem BRAM
-pe microblaze_mcs_v1_4
E:/Users/FBE/Xilinx-Projects/McsDemo2/Release/McsDemo2.elf

ELF file  : E:/Users/FBE/Xilinx-Projects/McsDemo2/Release/McsDemo2.elf
elfcheck passed.

data2mem -bm E:/Users/FBE/Xilinx-Projects/hw_platform_mcs/system_bd.bmm 
-bt \
E:/Users/FBE/Xilinx-Projects/bft_core/bft_core.runs/impl_1/bft.bit -bd \
E:/Users/FBE/Xilinx-Projects/McsDemo2/Release/McsDemo2.elf tag 
microblaze_mcs_v1_4 -o b \
E:/Users/FBE/Xilinx-Projects/hw_platform_mcs/download.bit

ERROR:Data2MEM:47 - Not all BitLanes in ADDRESS_SPACE 
'microblaze_mcs_v1_4.lmb_bram' have BMM location constraints.
    Some data for this ADDRESS_SPACE may be lost during BIT file
    replacement. Verify that the BMM file has location constraints
    for all BitLanes.

      Bitlane(s)
   ----------------
   mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S9.The_BRAMs[3].RAMB16_S9_1 
[7:0]
   mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S9.The_BRAMs[2].RAMB16_S9_1 
[15:8]
   mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S9.The_BRAMs[1].RAMB16_S9_1 
[23:16]
   mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S9.The_BRAMs[0].RAMB16_S9_1 
[31:24]

FPGA Programming Failed due to errors while initializing bitstream.

Kann mir da jemand helfen?

von Frank B. (fbergemann)


Lesenswert?

@W.S. und @qwerty:
Ich kann euren Hinweis verstehen, dass man vielleicht erst mal mit dem 
Krabbeln anfangen sollte, bevor man beginnt zu laufen.
Aber egal, ob top-down oder bottom-up: Ich werde erst mal nix selber 
machen können, sondern als Einsteiger "abkupfern", "nachvollziehen", 
"ändern und sehen was passiert". Und vielleicht will ich erst mal nur 
schon am Anfang sehen, wohin das letztendlich führen kann, wenn man sich 
die Zeit nimmt und tief in die Thematik einsteigt. Statt eines "Hello, 
World!" Demos auf einem abgemagerten MicroBlaze Prozessors wäre mir da 
ein lauffähiges Minimig - auf dem ich "Battle Squadron" zocken kann - 
sogar lieber :-) (Das war jetzt rhetorisch - ich hätte lieber das 
"Hello, World!" demo. Da hab' ich schon mal ein Interface zum PC und 
kann die Basic-Schritte für FPGA um den SoftCore drum herum dann 
machen.)
Ich weiß, dass es generell schon fragwürdig ist in ein FPGA einen 
generel-purpose SoftCore zu plazieren. Aber ich finde es toll, wenn man 
in der Praxis nachvollziehen kann - und wenn auch nur als Dummer User - 
dass ich heute eine Propeller CPU, morgen einen MicroBlaze und 
übermorgen vielleicht einen Satz von XMOS CPUs nachbilden kann. Einfach 
nur um die Flexibilität zu sehen. Und am Ende steht die Hoffnung dass 
irgendwann mal irgendwer ermöglicht, daß ich für meinen PC einen 
Web-Service nutzen kann, dem ich sage: Ich hab' da ein DE2-115 über 
Ethernet und noch so ein S3 über USB am PC - bitte zieh mir mal einen 
Version von GIMP (z.B.) die das auch ausnutzt, wenn ich da Filter auf 
meine Sternen-Fotos anwenden will.

von Fpgakuechle K. (Gast)


Lesenswert?

Uwe N. schrieb:

> Das SDK brauchst zur Software Entwicklung. Das ist afaik mittlerweile
> ebenfalls frei (benötigt aber auch eine Lizenz).

Nach meinen Recherchen auf der Xilinx-Website war das micht so.

http://www.xilinx.com/images/tools/ise_support_lg.GIF


Für einige Zynps ist das EDK in dem kostenlosen WebPack drin. Für die 
Spartan-3 ginbt das wohl nicht. Wobei ich nicht genau sagen kann wo das 
EDK wegen fehlender Lizenz abbricht, möglicherweise erst bei der 
Generierung bitstream, so das das compiliere etc funktioniert man aber 
das Design nicht auf den FPGA geladen bekommt.

Falls ich mich irre, bitte mit Link-angabe korrigieren

MfG,

von Frank B. (fbergemann)


Lesenswert?

Ich kann mal genauer beschreiben, was ich verwende und wo es genau 
klemmt:

Ich hab' mir von xilinx.com das Xilinx_ISE_DS_Win_14.7_1015_1.tar 
heruntergeladen und installiert.
Da gibt's dann anschliessend im Windows Start-Menue einen Eintrag:
Alle Programme
  Xilinx Design Tools
    ISE Design Suite 14.7

Dann hab' ich mir auf youtube das video "The MicroBlaze Microcontroller 
System" angesehen (https://www.youtube.com/watch?v=rv_BYDPlwHo).
Ca ab 02:00 min fängt da die "Exercise" an - mit "PlanAhead" als 
Einstieg.
Das habe ich mitgemacht bis zum zu einer kritischen Stelle bei 06:20 
min.
Da wird nämlich aus einer der bis dahin bereits erzeugten files (ein 
*.veo file) etwas mit cut&paste herausgenommen und soll dann weiter 
verarbeiten werden "...put it where i want in the hierarchy...".
Genau der Teil wird nicht genau erklärt. Uns es gibt auch keine 
Überleitung zum SDK.

Ich vermute(!) mal, daß es bei mir deshalb nicht funktioniert, weil ich 
zwar im Prinzip den core generiert/vorbereitet habe, aber dem tool nicht 
gesagt habe wo und wie genau der im FPGA plaziert werden soll. Z.B 
müssen ja "externe" Anschlüsse des Soft-Code irgendwo konkret angebunden 
werden.
Es fehlt auch noch die Auswahl des target boards (bei mir Spartan-3an).

Wenn ich dann anschliessend versuche, das *.bit file und das *.bmm file 
zusammen mit einem *.elf file aufs FPGA board zu bringen, klappts nicht 
(siehe Fehler oben).

: Bearbeitet durch User
von Fpgakuechle K. (Gast)


Lesenswert?

Aus genannten Lizenzgründen halte ich deine bemühungen für vergebliche 
Müh, deshalb halte ich mich mit Vorschlägen zurück.

Falls du es doch probieren willst, lad dein Design (ncd file nach place 
und route oder ncd file nach mapping) in den FPGAeditor und schau welche 
Blockrams genutz werden. Diese Info muß dann wohl händisch ins .BMM 
eingetragen werden.

Besser allerdings du nimmst einen Softcore/board bei dem es keine 
Lizenzprobleme gibt. Altera mit NIOS scheint da um Längen besser 
geeignet als Xilinx.

Oder du nimmst einen Core der kein EDK benötigt wie Picoblaze von Xilinx 
oder diverse OpenSource Geschichten (bspw schreibt der Autor von 
http://www.dossmatik.de/mais-cpu.html hier im Forum mit).

Wie es bei diesen CPU's mit C-support und peripheral-cores ausschaut ist 
ein anderes Thema.

MfG,

von Uwe N. (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> Uwe N. schrieb:
>
>> Das SDK brauchst zur Software Entwicklung. Das ist afaik mittlerweile
>> ebenfalls frei (benötigt aber auch eine Lizenz).
>
> Nach meinen Recherchen auf der Xilinx-Website war das micht so.

Schau mal hier:

http://www.xilinx.com/products/design-tools/ise-design-suite.html

unter "Availability" in die Tabelle, da ist das SDK in der WebPack 
Spalte mit drin.

von Lattice User (Gast)


Lesenswert?

Uwe N. schrieb:
> Fpga Kuechle schrieb:
>> Uwe N. schrieb:
>>
>>> Das SDK brauchst zur Software Entwicklung. Das ist afaik mittlerweile
>>> ebenfalls frei (benötigt aber auch eine Lizenz).
>>
>> Nach meinen Recherchen auf der Xilinx-Website war das micht so.
>
> Schau mal hier:
>
> http://www.xilinx.com/products/design-tools/ise-design-suite.html
>
> unter "Availability" in die Tabelle, da ist das SDK in der WebPack
> Spalte mit drin.

In der Zeile für den MicroBlaze Soft Processor steht aber:
    Device locked to three smallest Zynq devices

Ditto für Platform Studio und Embedded IP Peripherals.

von Frank B. (fbergemann)


Lesenswert?

schaut euch doch bitte mal das youtube video an, dass ich oben verlinkt 
habe. Der MCS ist eine lite-weight Variante vom MicroBlaze, die auch 
ohne Lizenz verwendet werden kann. Siehe auch hier: 
http://www.xilinx.com/tools/mb_mcs.htm

von Uwe N. (Gast)


Lesenswert?

Lattice User schrieb:
> In der Zeile für den MicroBlaze Soft Processor steht aber:
>     Device locked to three smallest Zynq devices
>
> Ditto für Platform Studio und Embedded IP Peripherals.

Ja, Frank möchte aber seinen Spartan 3AN verwenden. So wie ich das 
verstehe, gilt das "Device Lock" für die kleinsten ZYNQs, d.h., einen 
Spartan 3AN
kannst du schon mit dem MCS verwenden.

von Lattice User (Gast)


Lesenswert?

Frank Bergemann schrieb:
> schaut euch doch bitte mal das youtube video an, dass ich oben verlinkt
> habe. Der MCS ist eine lite-weight Variante vom MicroBlaze, die auch
> ohne Lizenz verwendet werden kann. Siehe auch hier:
> http://www.xilinx.com/tools/mb_mcs.htm

Im Kleingedruckten steht aber:
(1) - In ISE WebPACK - MicroBlaze and MicroBlaze MCS are available 
device locked to the smallest three Zynq devices only


Uwe N. schrieb:
> Lattice User schrieb:
>> In der Zeile für den MicroBlaze Soft Processor steht aber:
>>     Device locked to three smallest Zynq devices
>>
>> Ditto für Platform Studio und Embedded IP Peripherals.
>
> Ja, Frank möchte aber seinen Spartan 3AN verwenden. So wie ich das
> verstehe, gilt das "Device Lock" für die kleinsten ZYNQs, d.h., einen
> Spartan 3AN
> kannst du schon mit dem MCS verwenden.

Ich interpretiere das anders herum, mit ISE gibt es den MCS mur für die 
3 kleinsten Zynq. Siehe auch das Kleingedruckte von der MCS Seite.

Erst mit Vivado gibt es diese Einschränkung nicht mehr, aber Vivado 
unterstützt den Spartran 3 nicht.

PS: Irrtum vorbehalten, den die Gedankengänge von Lizenzpolitikern sind 
of schwer nachvollziehbar.
Der Zynq hat ja einen ARM, braucht also den MicroBlaze nicht, aber 
vermutlich andere Komponenenten des SDKs.

von Fpgakuechle K. (Gast)


Lesenswert?

Ja und ich dachte es kann nur einem Microblaze geben  ....

und jetzt kommt Xilinx und schüttelt MicroBlaze und MicroBlaze MCS aus 
dem Ärmel. Also ich kannte bis jetzt nur das EDK (Embedded Development 
Kit) mit dem man ein microblaze system zusammenklickt und das SDK für 
die Software.
Und das EDK kostet.

Jetz haben wir also einen fertigen Minimal-core (wohl aus dem 
Coregenerator) und den kann man wie jeden Core bisher in seiner VHDl 
Top-level beschreibung instanzieren. Noch die Pinbelegung ins ucf 
gehackt, timing constraint gesetzt und es kann synthetisiert werden.

Evenmtuell fehlt dir das top level design mit den extra instanziierten 
Blockrams) und das ucf. Videos schaue ich mir ungern an, geschrieben 
Doku ist
imho nur durch mehr Doku zu ersetzen. Mal schauen, vielleicht kann ich 
demnächst mal einen MicroBlaze MCS verbauen. Scheint so eine Art 
aufgepimpter Picoblaze mit C -Compiler zu sein.

MfG,

von Klaus F. (kfalser)


Lesenswert?

Lattice User schrieb:
> Ich interpretiere das anders herum, mit ISE gibt es den MCS mur für die
> 3 kleinsten Zynq. Siehe auch das Kleingedruckte von der MCS Seite.

Schaut nicht so aus.
Habe mit 14.4 testweise den Core Generator aufgerufen und man kann den 
Microblaze MCS für die verschiedensten Bausteine konfigurieren.
Gibt aber ein paar Einschränkungen bezüglich Gehäuse und Speedgrade.

: Bearbeitet durch User
von Fpgakuechle K. (Gast)


Lesenswert?

Xilinx hat unter
http://www.xilinx.com/support/documentation/sw_manuals_j/xilinx14_5/pg048-microblaze-mcs.pdf

eine zumindest ansehliche Textanleitung. Auf Seite 44 ist eine 
Ablaufskizze des Ablaufs unter ISE. An welcher Stelle hängst Du.


MfG,

PS:
Hab jetzt erst mal eine aktuelle ISE 14.7 installiert, es wird noch ein 
paar Tage dauern bis hier was läuft.

von Frank B. (fbergemann)


Lesenswert?

Hat ein bißchen gedauert.
Ich hab' jetzt die Beschr. von Xilinx ausprobiert.

Geht jetzt bei diesem Schritt schief:
microblaze_mcs_data2mem 
/sdk-workspace-path/sdk-program/Debug/sdk-program.elf

Output:
=======
microblaze_mcs_data2mem 
E:/Users/FBE/Xilinx-Projects/mcs-demo/Debug/mcs-demo.elf
microblaze_mcs_data2mem: Found 1 MicroBlaze MCS core.
microblaze_mcs_data2mem: Using "mcs-demo.elf" for microblaze_mcs_v1_4_0
microblaze_mcs_data2mem: Existing bitgen "-bd" options unchanged.
microblaze_mcs_data2mem: Running "data2mem" to create simulation files.

ERROR:Data2MEM:104 - Unknown memory type, 'RAMB32', for the specified 
device 'xc3s700an'. Or unknown user defined memory type.
   Line #3, File 
"E:\Users\FBE\Xilinx-Projects\bft_core\bft_core.srcs\sources_1\ip\microb 
laze_mcs_v1_4_0\microblaze_mcs_v1_4_0.bmm".
    ADDRESS_RANGE RAMB32
                  ^

child process exited abnormally

von Frank B. (fbergemann)


Angehängte Dateien:

Lesenswert?

sorry, muss noch mal einen Schritt zurückmachen.
Hab' noch mal ganz von vorn angefangen.
Dann bekomme ich als erstes eine Reihe von Fehler bei "Run Synthesis":
1
Synthesis[HDLCompilers 26] "E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/async_fifo.v" line 88 expecting 'end', found 'localparam'
2
[HDLCompilers 26] "E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/async_fifo.v" line 88 unexpected token: 'sub_fifo_width'
3
[HDLCompilers 26] "E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/async_fifo.v" line 88 expecting 'endgenerate', found '('
4
[HDLCompilers 26] "E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/async_fifo.v" line 88 unexpected token: '<='
5
[HDLCompilers 26] "E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/async_fifo.v" line 88 expecting 'endmodule', found '9'
6
[HDLCompilers 26] "E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/async_fifo.v" line 234 unexpected token: 'reg'
7
[HDLCompilers 26] "E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/async_fifo.v" line 276 unexpected token: 'reg'
8
[HDLCompilers 26] "E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/async_fifo.v" line 374 unexpected token: 'reg'
9
[HDLCompilers 26] "E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/root.v" line 2 expecting 'EOF', found 'microblaze_mcs_v1_4_0'

: Bearbeitet durch User
von Lattice User (Gast)


Lesenswert?

Bei Verilog werden alle Sourcedateien wie eine grosse Datei behandelt. 
Das kann zu Verschleppung von Fehlermeldungen führen, z.B. bei einem 
vergessenen endmodule.
1
"E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/async_fifo.v" line 88 expecting 'end', found 'localparam'
kann also auch eine Folge eines Fehlers in der davor bearbeiteten Datei 
sein.

von Lattice User (Gast)


Lesenswert?

1
"E:/Users/FBE/Xilinx-Projects/bft_core2/bft_core2.srcs/sources_1/imports/hdl/async_fifo.v" line 88 expecting 'end', found 'localparam'

Könnte auch sein dass er sich am localparam stört, das gibt es erst ab 
Verilog 2001. Überprüfe mal die Verilogeinstellung.

von Frank B. (fbergemann)


Lesenswert?

ist bereits richtig gesetzt:
1
verilog_version=Verilog 2001

von Frank B. (fbergemann)


Lesenswert?

Muss ich noch irgendwas aus dem erzeugten microblaze_mcs_V1_4_0.veo 
wohinkopieren?
1
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
2
microblaze_mcs_v1_4_0 your_instance_name (
3
  .Clk(Clk), // input Clk
4
  .Reset(Reset), // input Reset
5
  .UART_Rx(UART_Rx), // input UART_Rx
6
  .FIT1_Toggle(FIT1_Toggle), // output FIT1_Toggle
7
  .PIT1_Toggle(PIT1_Toggle), // output PIT1_Toggle
8
  .GPO1(GPO1) // output [23 : 0] GPO1
9
);
10
// INST_TAG_END ------ End INSTANTIATION Template ---------

Aber wohin?

von Fpgakuechle K. (Gast)


Lesenswert?

Du musst ein Top-block für dein FPGA design schreiben, das kennt als in 
outs nur FPGA-pins also den Takteingang, buttons und LED's sowie falls 
gewüncht UART-Pins (RX,TX). als Blöcken hat dieses Top-modul dann den 
micro-blaze core, wahrscheinliche Blockrams für dem Microblaue und 
Taktaufbereitung (DCM).
den mikroblaze core bindest du ein in dem du das von dir gezeigte 
INSTANTIATION Template kopierst. Schau mal nach einen Beispiel für ein 
verilog top design bspw pacoblaze (8bit core in verilog).

MfG,


Crashkurs verilog module:
http://projects.csail.mit.edu/beehive/FPGA_Verilog.pdf

Ein ganzes Lahrbuch mit FPGA-Verilog-Evalboard beispielen:
http://www.digilentinc.com/Data/Textbooks/Intro_to_Digital_Design-Digilent-Verilog_Online.pdf

von Frank B. (fbergemann)


Lesenswert?

Das Lehrbuch fängt recht vielversprechend an.
Für die Praxix-Beispiele wird auf Seite 4 auf *.ucf files verwiesen, die 
man bei www.lbebooks.com downloaden kann. Allerdings nur für das BASYS 
board und das Nexys-2 board.
Wo bekomme ich denn ein passendes *.ucf file für mein Spartan-3AN her?

von Fpgakuechle K. (Gast)


Lesenswert?

Frank Bergemann schrieb:
> Das Lehrbuch fängt recht vielversprechend an.
> Für die Praxix-Beispiele wird auf Seite 4 auf *.ucf files verwiesen, die
> man bei www.lbebooks.com downloaden kann. Allerdings nur für das BASYS
> board und das Nexys-2 board.
> Wo bekomme ich denn ein passendes *.ucf file für mein Spartan-3AN her?

bei Xilinx findet sich diese seite für die mitgelieferten Demos für das 
Starterkit.:
http://www.xilinx.com/products/boards/s3astarter/reference_designs.htm

Die Zipdatei unter Demo Designs enthält unter demo/sources ein ucf file 
das zu passen scheint. Schau dir mal auch die datei boarddemo.v an, das 
ist eine verilog-datei mit einem erwähnten Top-level für das board.

Schau dir auch mal den userguide (UG334) für das Board an. Darin wird 
jedes interface auf dem Board beschrieben und ein passendes 
ucf-schnipsel gezeigt.
Bspw. dort: http://www.gta.ufrj.br/ensino/EEL480/spartan3/ug334.pdf

MfG

von Frank B. (fbergemann)


Lesenswert?

Introduction to Digital Design
Using Digilent FPGA Boards
─ Block Diagram / Verilog Examples

Für das simple Switch/LED sample im Anhang kann ich in Active-HDL unter 
Synthesis/Options "Spartan3AN" als "Family" nicht auswählen, sondern nur 
"Xilinx14x Spartan3A". Zur Auswahl steht auch auch noch eine "Xilinx14x 
Automotive_Spartan3A".
Ich hab' für "Family" "Xilinx14x Spartan3A" ausgewählt und für "Device" 
"3s700anfgg484" - ist das richtig?

Bei starten der Synthese bekomme ich aber einen Warnung:

# Running synthesis...
# Synthesis: 0 errors, 0 warnings
# Design: Warning: Library SPARTAN3A required for the selected device 
family has not been installed.

Und wenn ich versuche mit der Implementation weiterzumachen, kommt der 
Fehler:

# Checking if synthesis needs to be updated...
# Checking if implementation needs to be updated...
# Error: The specified netlist file does not exist.

von Josef G. (bome) Benutzerseite


Lesenswert?

Frank Bergemann schrieb:
> Using Digilent FPGA Boards

Das Spartan-3AN Starter Kit ist kein Digilent-Board, sondern ist von
Xilinx (auch wenn es möglicherweise von Digilent gefertigt wird).

Die Originalquelle des von FPGA Kuechle genannten UG334 ist
http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdf

von Josef G. (bome) Benutzerseite


Lesenswert?

Im UG334 Seite 24 ist unter "Related Resources"
ua. ein UCF-File zu finden.

von Fpgakuechle K. (Gast)


Lesenswert?

Frank Bergemann schrieb:
> Introduction to Digital Design
> Using Digilent FPGA Boards
> ─ Block Diagram / Verilog Examples
>
> Für das simple Switch/LED sample im Anhang kann ich in Active-HDL unter
> Synthesis/Options "Spartan3AN" als "Family" nicht auswählen, sondern nur
> "Xilinx14x Spartan3A". Zur Auswahl steht auch auch noch eine "Xilinx14x
> Automotive_Spartan3A".


Die Nennung von "Active-HDL" verwirrt mich hier, ebenso Xilinx14. 
Screenshoot in PNG wäre hilfreich.
Active-HDL ist doch ein Simulationstool das bringt uns in Sachen 
synthese nicht weiter. Auch arbeite ich persönlich nicht mit Active-HDL.

> Ich hab' für "Family" "Xilinx14x Spartan3A" ausgewählt und für "Device"
> "3s700anfgg484" - ist das richtig?
>
> Bei starten der Synthese bekomme ich aber einen Warnung:
>
> # Running synthesis...
> # Synthesis: 0 errors, 0 warnings
> # Design: Warning: Library SPARTAN3A required for the selected device
> family has not been installed.

Library SPARTAN3A sollte eigentlich nur für die Simulation interessant 
sein. Für die Simualtion müßen da noch modelle der FPGA-internen 
componenten installiert werden. Dazu sollte sich was im Manual des 
Simulators finden.


> Und wenn ich versuche mit der Implementation weiterzumachen, kommt der
> Fehler:
>
> # Checking if synthesis needs to be updated...
> # Checking if implementation needs to be updated...
> # Error: The specified netlist file does not exist.


Schätze das Synthese tool findet die genrierten Netzlisten des 
mikroblaze nicht. Dazu muss man einen Pfad zu dem Verzeichniss mit den 
generierten dateien des coregenerators richtig setzen, ngdbuilt ist der 
implementierungsschritt der nach coregen-netzlisten sucht. Oder versuche 
die sourcedateien des Cores wie selbsterstellte sources einzubinden, 
besser die .xco Datei. Schau mal ob "Add Source" mit xco funktioniert.

Da steht ein bißchen dazu:
http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/ise_c_using_coregen_ip.htm

Falls vorhanden an einem gut dokumentierten Beispieldesign üben 
generierte Cores einzubinden, da scheint in der ISE noch nicht alles 
konfiguriert

MfG,

von Frank B. (fbergemann)


Lesenswert?

@fpgakuechle:

> Die Nennung von "Active-HDL" verwirrt mich hier, ebenso Xilinx14.

Du selbst hast mich auf den link hier verwiesen:

> Ein ganzes Lehrbuch mit FPGA-Verilog-Evalboard beispielen:
http://www.digilentinc.com/Data/Textbooks/Intro_to_Digital_Design-Digilent-Verilog_Online.pdf

Auf Seite iii steht darin:
"We will use Active-HDL from Aldec to design, simulate, synthesize, and 
implement our digital designs."

Und mit Active-HDL wird dann im folgenden in dem Tutorial gearbeitet.

Gibt's denn ein vergleichbares Tutorial/Buch zum Spartan-3AN?

@bome:
In der Zwischenzeit schau' ich mal in UG334 nach...

: Bearbeitet durch User
von Fpgakuechle K. (Gast)


Lesenswert?

Frank Bergemann schrieb:
> @fpgakuechle:
>
>> Die Nennung von "Active-HDL" verwirrt mich hier, ebenso Xilinx14.
>
> Du selbst hast mich auf den link hier verwiesen:
>
>> Ein ganzes Lehrbuch mit FPGA-Verilog-Evalboard beispielen:
> 
http://www.digilentinc.com/Data/Textbooks/Intro_to_Digital_Design-Digilent-Verilog_Online.pdf

Ich hat das Buch hauptsächlich wegen der anschaulichen und 
boardspezifischen Code-schnipsel empfohlen, sozusagen als Vorlage wie 
man in Verilog Cores instantiiert und boardpins ansteuert. Als von dir 
benutztes tool hast du ja oben ISE webpack angegeben und da gehört kein 
Active-HDL dazu. Wenn du aber dazu ein brauchbares Tutorial hast klingt 
es doch schon mal ganz gut.


> Auf Seite iii steht darin:
> "We will use Active-HDL from Aldec to design, simulate, synthesize, and
> implement our digital designs."
>
> Und mit Active-HDL wird dann im folgenden in dem Tutorial gearbeitet.
>
> Gibt's denn ein vergleichbares Tutorial/Buch zum Spartan-3AN?

Wahrscheinlich nicht, der Spartan-3AN ist schon fast ein Exot, 
spartan-3A sollte aber fast identisch sein. Und so gross ist der 
Unterschied zum 3E oder 3 auch nicht. Das es zu einem Evalboard 
überhaupt ein Buch gibt ist schon fast ein Glücksfall. Besser wäre aber 
m.E. eine gut bebilderte Anleitung zum ISE-Webpack. In der ct-Hacks 1/14 
ist ein workshop zum Xilinx workflow zu finden:

http://www.heise.de/make/meldung/c-t-Hacks-1-14-jetzt-im-Handel-2110845.html

MfG,

von Fpgakuechle K. (Gast)


Angehängte Dateien:

Lesenswert?

So, mit der richtigen Anleitung und ein bisserl hacken hab ich jetzt 
fast dem mcs am Start. Was fehlt ist nur noch das board zu 
programmieren, aber das mach ich ein anderes Mal.

Diese Anleitung passt sehr gut:
http://jimselectronicsblog.blogspot.de/2014/03/implementing-microblaze-mcs-on-papilio.html

Das ist zwar ein anderes Board, der Autor kommt weitgehend ohne 
händisches Verilog aus. Ein auf dem demo für das s3an board basierendes 
top-level habe ich angehangen, der heartbeat lässt ohne C eine LED 
blinken - das ist mein Test ob das FPGA-programmieren klappt. Das sync.v 
o.ä. ist unverändert in den Sourceb für das demo zu finden, das ucf file 
habe ich auch unverändert übernommen. Mein generierte MCSA ist 
umfänglicher als der in der Anleitung, ich lasse aber viel ungenutzt.

Die Anleitung versagte an zwei stellen, da war ein fehler im bmm der 
"Pfad" zu BRAM stimmte nicht der instanzname ("erster" Teil des Pfades - 
hier nach Korrektur "mcu_core") war falsch:
1
ADDRESS_MAP microblaze_mcs_v1_4 MICROBLAZE-LE 100
2
  ADDRESS_SPACE lmb_bram COMBINED [0x00000000:0x00003fff]
3
    ADDRESS_RANGE RAMB16
4
      BUS_BLOCK
5
        mcu_core/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[0].RAMB16_S4_1 [31:28] INPUT = microblaze_mcs_v1_4.lmb_bram_0.mem;
6
7
#7ähnliche Zuweisungen gelöscht
8
      END_BUS_BLOCK;
9
    END_ADDRESS_RANGE;
10
  END_ADDRESS_SPACE;
11
END_ADDRESS_MAP;

Diese Xilinx-AR hat mich drauf gebrahct:
http://www.xilinx.com/support/answers/51538.html

Und dann meldete der Linker immer noch das das Datasegment zu groß für 
den BRAM sei. Geholfen hat dann ein "Generate linker script"

MfG,

von Fpgakuechle K. (Gast)


Angehängte Dateien:

Lesenswert?

Also der .bmm hack ist unnötig wenn man bei coregen auch den 
instanznamen so angibt wie in der top-entity. Siehe microblaze_s3an_disp 
im anhehängten screenshot und Top.

MfG,

von Fpgakuechle K. (Gast)


Lesenswert?

Jauchzen und Frohlocken!


So jetzt tut's - ich hab dem microblaze MCS auf dem S3AN am laufen. hat 
etwa drei Tage gekostet was aber gerade wegen einer Projektpause ganz 
gut passt.
Hab viele Screenshoots gemacht und bastele mal eine Anleitung draus.

Die bereits erwähnte Anleitung 
http://jimselectronicsblog.blogspot.de/2014/03/implementing-microblaze-mcs-on-papilio.html 
passt ganz gut. Ergänzen möchte aber das

man den Core besser mit 8k oder mehr  Programmspeicher generiert. Bei 4k 
das Miniprogramm zum LED-blinken zu groß - Wahrscheinlich ist noch 
irgendwo eine Einstellung falsch gesetzt -Os zum size optimierten 
compilieren war nicht die Lösung

Ebenso haben Änderungen am Core durch einen neuen Coregen-Lauf sich nur 
teilweise auf das SDK ausgewirkt. Besser war alle 3 Projekte 
(Hardwareprojekt,BSP und C-Projekt) zu löschen und neu anzulegen.

Immer den C-Source manuell abspeichen vor Build.

Generate linker script scheint nur manchmal zu helfen.

So jetzt fahr ich erst mal auf die Embedded.
MfG,

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.