Forum: FPGA, VHDL & Co. Altera NIOS extern RAM anbinden ohne Lizenz


von Spice (Gast)


Lesenswert?

Hi Zusammen,

ich habe folgendes Problem und vielleicht kann mir jemand weiterhelfen. 
Ich habe mir blauäugig ein Bemicro SDK Board (Cyclone IV E) gekauft und 
mir mühevoll die Entwicklungsumgebungen installiert und erfolgreich ein 
paar kleinere Spielereien mit dem NIOS II angestellt.
Nun wollte ich endlich mal das externe Mobile DDR RAM testen und stelle 
fest, dass die IP Cores zur Ansteuerung des Speichers lizenzpflichtig 
sind, was mich schon wieder tierisch aufregt.
Nachdem ich nun etwas über die Lizenzpolitik von Altera gelesen habe, 
wird mir schlecht, aber dennoch würde ich ganz gerne ein Cyclone IV E 
mit einem externen Speicher koppeln und über Qsys zur Ansteuerung ein 
Core verwenden, der mich nicht dran hindert POF Files zu generieren oder 
die Zeitlimitierte Version kompiliert.
Mich interessiert dabei, ob es Speicherbausteine gibt, die ich an das 
FPGA anbinden kann, einen Core (Speichercontroller) verwenden kann, wo 
ich nicht direkt eine Lizenz brauche und trotzdem mein Design 
kompilieren und auf ein EPCS laden kann, wo das FPGA sich später die 
Configs herholt und den NIOS lädt.
Welche Speicherbausteine setzt ihr ein und mit welchem kostenlosen Core 
oder Komponente bei Qsys verwendet ihr?
Da ich erst dabei bin, mich in die Thematik einzuarbeiten, bin ich nicht 
gewillt für den Kram direkt eine Lizenz zu holen, dennoch möchte ich 
nicht auf den Luxus verzichten ein Board über mehrere Tage laufen zu 
lassen (ohne Host oder Timelimited). Welche Möglichkeiten gibt es da?
Was für Speicher benötigt man für ein kleines Nios Linux System?

Besten Dank im voraus und Gruß
Spice

: Verschoben durch User
von Pandur S. (jetztnicht)


Lesenswert?

Du kannst die Speicheranbindung ja auch selbst schreiben ... eine Frage 
der Abwaegung. Wie lange dauert's wie viel kostet der Einkauf. Fuer 
einen Prototypen, fuer den Proof of Konzept kann man sich vielleicht 
eine Lizenz fuer ein Stueck kaufen. Falls nicht - selbst schreiben.

von Sigi (Gast)


Lesenswert?

Shau noch mal in die PDFs rein, da wird ein
Link zu einer Eval-Version eines IP-Cores
angegeben. Ist zwar nur Eval, aber besser
als nichts.
Ausserdem gibt's im Netz sicherlich noch
ein paar freie IP-Cores, einfach mal suchen.

von derguteweka (Gast)


Lesenswert?

Moin,

bin mir nicht mehr sicher, weil's schon ca. 8 Jahre her ist, aber es 
koennte sein, dass damals der "SDR"-SDRAM Controller nix extra gekostet 
hatte, erst die DDR-SDRAM Cores...

Gruss
WK

von Sigi (Gast)


Lesenswert?

Mir ist nooch eingefallen, dass bei einigen der
Terasic-Booards DDR- und DDR2-RAMs verbaut sind.
Entweder werden von QuartusII DDR-IPs angeboten
(müssten dann im Qsys-Katalog sein) oder sie
werden auf den zugeh. CDs zu finden sein. Such mal
da weiter.
Ich selbst habe ein NEEK-Board, da ist ebenfalls
DDR-RAM verbaut. Fang da mal an zu suchen.

von Kest (Gast)


Lesenswert?

SDRAM Controller sind konstenfrei.
DDR/DDR2/DDR3 Controller im Cyclone V sind teilweise als Hard-IP 
ausgeführt und sind ebenfalls frei. Als Software-IP allerdings nicht.

Hast Du Cyclone iv, kannst Du trotzdem DDR Controller verbauen, 
allerdings musst Du, solange Du damit rumspielst, Altera-JTAG dran haben 
(Evaluation-Modus)

Grüße
Kest

von Spice (Gast)


Lesenswert?

Hallo Zusammen,

vielen Dank an euch alle für die Antworten.
Ich werde mich dahingehend mal schlau(er) machen :-)

Eine Frage habe ich noch (speziell an Kest) weil er es anspricht.

Ich habe heute erfolgreich die sof und elf-Files auf einen EPCS 
geschrieben und das Board konfiguriert sich auch von selbst... ABER...
Sobald ich die Entwicklungsumgebungen schließe (also JTAG trenne), hört 
das Board irgendwann auf zu arbeiten --> Evaluation-Modus lese ich 
gerade...
Ich will das Board auch autark ohne Rechner betreiben können, was muss 
ich da tun? Ich habe schon drauf geachtet, dass ich keine Cores 
verwende, die time limited sind, aber wieso brauche ich unbedingt ein 
JTAG-Adapter an dem System, damit es läuft? Ich verwende aktuell nur den 
NIOS II/e (da lizenzfrei und eine PLL).
Wo ist da schon wieder eine Restriktion?

Besten Dank nochmal

Gruß
Spice

von Spice (Gast)


Lesenswert?

edit: Ich benutze übrigens den BeMicro SDK, falls ich das noch nicht 
erwähnt habe...

Gruß Spice

von Sigi (Gast)


Lesenswert?

Ja, das ist die Lizenzgeschichte von QuartusII
bzw. deren IPs. Deren Einschränkung ist nunmal,
dass JTAG ständig verbunden sein muss.
Unabhängiges "Laufenlassen" ist damit nicht
möglich.

von Spice (Gast)


Lesenswert?

Na das ist ja mal echt miese. Damit schließt Altera also die kleineren 
Hobbyprojekte aus.
Um also die Hardware autark laufen lassen zu können, benötigen wir also 
eine Lizenz. Welche? Quartus subscription oder ist dafür die NIOS Lizenz 
nötig? Wie hat man das zu verstehen, dass diese Lizenz nur ein Jahr 
läuft?

Wenn man sich ein Atmeldevelopmentboard kauft, bekommt man die volle 
Funktionalität vom AtmelStudio doch auch kostenlos.

Da wo es spannend wird, hört es für den Hobbyentwickler also auf... Ist 
das bei Xilinx und dem Microblaze anders?

Danke und Gruß Spice

von Spice (Gast)


Lesenswert?

Hi Zusammen,

ich verstehe es nicht... Der Nios II/e soll doch nun frei erhältlich 
sein? Heißt "frei" bei Altera etwa in Benutzung mit einem Rechner?

Danke und Gruß
Spice

von Sigi (Gast)


Lesenswert?

Naja, ganz so kannst sehe ich das nicht.

Die Hersteller leben ja nicht nur vom
FPGA-Verkauf, sondern auch von Tools
und IPs. Und wie soll der Hersteller
denn zwischen Hobby- und prof. Projekt
unterscheiden.

Und man muss bedenken, dass FPGA-Tools
bei weitem weniger verkauft werden als
uC-Tools.

von Spice (Gast)


Lesenswert?

Hi,

kann jemand bestätigen, dass der NIOS II/e ohne Lizenz auch nur mit JTAG 
läuft? Heisst das bei Altera "frei"? Oder benötigt man eine spezielle 
Version von Quartus, damit er NIOS II/e frei erhältlich ist?

Danke nochmal an alle
Gruß und schönen Sonntag
Spice

von Strubi (Gast)


Lesenswert?

Moin,

muss deine CPU denn die Power bringen, d.h. muss es wirklich uClinux 
sein, oder tut es auch bare metal? Für letzteres gibt es eine Menge 
herstellerunabhängiger Lösungen, am Schluss musst Du aber selber wissen, 
wieviel Zeit Du in kleine Details stecken willst oder was sich für dich 
amortisieren muss.
Es gibt da allerdings auch ein paar kleine Communities, die fertige und 
sehr robuste OpenSource-Lösungen haben, siehe z.B. Gadgetfactory. 
Eventuell ist ein Umstieg auf eine andere HW sehr viel günstiger, wo von 
vornherein kein Dauerärger mit versteckten Kostenfallen absehbar ist. 
Das fand ich bei Altera - abgesehen von der Schwerfälligkeit des Qsys - 
sehr intransparent und nervig.

von Spice (Gast)


Lesenswert?

Hi,

danke für die Antwort. µCLinux brauche ich nur mal zum spielen, aber 
eigentlich reicht es mir, wenn ich konventionell programmiere, wie auf 
einem AVR/ARM & Co... Ich finde bei dem Nios sehr charmant, dass man 
z.b. ChibiOS portiert bekommt, mehr nicht... Eigentlich suche ich nach 
einem µC, der einfach schon bissl Peripherie mitbringt. UART, SPI, 
Timer, Interrupts und eventuell USB, Ethernet, SD-Card und Speicher... 
Dazu eine anständige Kommunikation mit dem Toplevel reicht mir 
eigentlich für kleinere Steuerungsaufgaben aus. Gibt es da irgendwas 
opensource-technisches?

Danke und Gruß
Spice

von mifi (Gast)


Lesenswert?

Suchst Du nun einen uC für das FPGA oder darf es auch
was eigenständiges sein? Wie z.B. ein Evalboard mit einem
Cortex-M3/M4?

von Strubi (Gast)


Lesenswert?

Hi Spice,

bei der Gadgetfactory findest du z.B. den ZPUino, der geniesst einiges 
an Popularität, gerade wenn Du aus der AVR-Ecke kommst.
Das oft genannte OpenSource-Zeug von opencores.org hat mich bisher im 
Durchschnitt eher geärgert, viel davon ist nicht zu Ende gedacht und 
artet für den Anwender oft in Gefrickel aus. Was oft fehlt, sind die 
passenden Debug-Tools. Ansich hätte ich auch noch eine Lösung auf Basis 
der ZPU-Architektur, aber leider nur für Lattice und Xilinx und 
ausschliesslich für 'langsame' Minimalsysteme mit Programm im SPI-Flash. 
Beispielfilmchen: https://www.youtube.com/watch?v=Nyvf0xb7eVs
Muss dafür aber noch etwas Doku machen, bevor es opengesourct (mein 
Gott, wat'n Deutsch) werden kann.

Grüsse,

- Strubi

von Michael F. (mifi)


Lesenswert?

Hallo Spice,

ich habe das gerade nochmal mit dem Nios und externen SDRAM
getestet. Ich habe hier keine Probleme wenn ich das USB Kabel vom
Rechner abziehe. Dann läuft die Anwendung auf dem FPGA weiter.

Hier ein NiosII(e) mit externen SDRAM und ChibiOS. Das Beispiel
läuft auf einem Altera DE0-CV:

http://www.emb4fun.de/fpga/examples/index.html

Gruß,
Michael

von Spice (Gast)


Lesenswert?

Wow besten Dank für die Nachrichten... Top Support muss ich sagen, 
besser als bei ALTERA :-D

@Strubi: Schon oft davon gehört, aber noch nicht richtig angeschaut... 
werde ich nachholen...

@Mifi: Besten Dank für die Info und den Test. Bei mir läuft das Programm 
erstmal auch weiter, jedoch nach etwa 5-15 Minuten bleibt alles einfach 
stehen ohne JTAG... Genau das macht mich halt stutzig, zumal ich in 
meiner Anwendung nur den NIOS ii/e verwende. Woran könnte das liegen?

Quartus sagt beim synthetisieren, dass zwar keine Lizenz gefunden wurde, 
jedoch für den nios e auch keine Lizenz erforderlich ist und 
synthetisiert auch normal durch.

Auf dem BeMicro SDK ist leider nur ein Mobile DDR RAM drauf, wo ich 
erstmal eine Evaluation Lizenz runterladen muss mit dem entsprechenden 
Controller Core. Soweit bin ich aber noch nicht, da ich eigentlich 
erstmal eine standalone Applikation ohne JTAG ans laufen bekommen will 
(mit dem lizenzfreien!??!? Nios ii/e) --> Daran scheitert es momentan

Gruß Spice

von Spice (Gast)


Lesenswert?

@mifi: Welche Version von Quartus benutzt du, wenn ich fragen darf? hast 
du ein License.dat file irgendwo auf den Rechner?
Meine Version 12.1 meckert, dass ich keine Lizenz habe (ist ja auch ok 
für die web Edition) aber warum der Nios irgendwann ohne Jtag aussteigt 
ist mir nicht klar. Lasse ich den Prommer dran (also USB_Blaster) bleibt 
der  (Nios ii/e) irgendwann stehen. :-(

von mifi (Gast)


Lesenswert?

Ich hatte eben die 15.0.2 benutzt, und habe definitive keine
Lizenz da ich nur die WebEdition verwende. Kannst Du das
"irgendwann" noch genauer spezifizieren? Ich würde dann hier
nochmal einen Test machen wollen.

von mifi (Gast)


Lesenswert?

Du schreibst:
>Meine Version 12.1 meckert, dass ich keine Lizenz habe
>(ist ja auch ok für die web Edition)

Das verstehe ich nicht, bei mir meckert hier nichts! Hast Du evt. die 
"Subsciption Edition" verwendet? Wenn ja, installiere mal die "Web 
Edition".

Oder benutzt Du zum Nios II/e doch das DDR RAM? Wenn das so ist dann
bricht dein Design nicht wegen dem Nios sondern wegen der Lizenz für
das DDR RAM ab. Kann das sein?

Mein Beispiel läuft jetzt schon 20 Minuten, und ich vermute das es auch
noch länger laufen wird.

von Spice (Gast)


Lesenswert?

Hey Milfi,

also ich verwende die 12.1 Webedition, nios II/e, pio, altpll, 
flash_controller, on_chip_memory und spi... Ich packe gleich nochmal die 
Ausgabe in ein paar screenshots...

Gruß Spice

von Spice (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

irgendwas ist gerade passiert und ich habe in Qsys folgende 
Fehlermeldung...
Anbei die Bilder... ich mache mal ein Neustart und versuche das Problem 
zu beseitigen :-)

Grup Spice

von Spice (Gast)


Lesenswert?

Also,

ich bin gerade wieder so weit, dass die Sachen wieder durchkompilieren 
und beim Testen habe ich festgestellt, dass die Applikation nach exakt 
2048bytes auf dem JtagUart nach dem ausstecken des JTAG-USB-Steckers 
(oder dem Schließen des Terminals), stehen bleibt.
Starte ich nach dem Hängenbleiben des Controllers ein nios2terminal neu, 
kommen die Daten aus dem puffer durch und der µC läuft wieder weiter. 
Ich hatte in der Mainloop noch eine JTAG_Debugausgabe mit einem Byte pro 
Sekunde, die mir irgendwann mein Puffer vollgeschrieben hat (nach 
relativ langer Zeit)... ISt das mein Cache was vollgeschrieben wird?
Nachdem ich nun die JTAG-Ausgabe auf 1024 Bytes pro sekunde gestellt 
habe, konnte ich reproduzieren, dass es nach 2048bytes stehen bleibt, 
wenn kein JTAG-Debugger an der Schaltung hängt bzw kein Terminal 
läuft...
Ich werde jetzt mal die JTAG-Ausgabe ausstellen und die Schaltung laufen 
lassen... vermute das war der Fehler... Wo bleiben die Daten hängen?? In 
welchem Puffer? Ich habe jeweils 1024 Bytes stacksizes (Exception, 
Interrupt) gewählt, kommt das daher?

Danke nochmal

Gruß Spice

von mifi (Gast)


Lesenswert?

Nur so mal so eine Idee auf die Schnelle. Tausch doch mal den
JTAG Uart gegen einen echten UART aus. Ist das Verhalten dann auch so?

von Frank (Gast)


Lesenswert?

Ja, das habe ich auch schon so gehört, dass wenn der Puffer der JTAG 
UART voll ist, das dann die CPU stehen bleibt.
Ich meine dass das damals auch von Altera bestätigt wurde.

Selbst ist mir das verhalten aber noch nie aufgefallen.
Wobei ich dazu sagen muss das ich schon lange keinen JTGA UART mehr 
verwendet habe.

Kann man das verhalten evtl einfach im BSP einstellen?

von Spice (Gast)


Lesenswert?

Hi,

der USB-Fifo-Chip hat 1024 Bytes, daher wundert es mich, dass nach 2kB 
die Schaltung ausfällt, aber wenn ich JTAG-Uart nicht benutze, ist alles 
grün... Danke nochmal für eure Hilfe...

Gruß Spice

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.