Forum: FPGA, VHDL & Co. Programmspeicher emulieren


von ERDI - Soft (Gast)


Lesenswert?

Hi Leute,

für eines meiner Projekte werde ich nen CPLD oder gar FPGA benutzen, um
nen DRAM-Controller zu realisieren, damit ein µController daruf
zugreifen kann.

Die Frage: Wie einfach, oder schwer, ist es, mit dem CPLD nen
Programmspeicher mit Programm zu emulieren???

Man muss sich das folgendermaßen vorstellen. Der µController bräuchte
normalerweise externen Programmspeicher. Das wäre im Idealfall ein
kleines Flash mit dem Startprogramm, welches von irgedwoher (z.B. USB
oder dergleichen) die komplette Firmwre bekommt, um diese im DRAM
abzulegen und von dort aus zu starten.

Da ich aber nicht unbedingt noch nen zuätzlichen Flash mit verbauen
will, wäre eben die Frage, ob der CPLD, nachdem der Strom eingeschaltet
wurde, dieses Flash mit Programm emuliert (simuliert???) und so den
µController startet, der dann seinerseits wieder das Programm von
woanders herholt und ins DRAM speichert.
Danach blendet der CPLD das Starprogramm aus, sodass eben das DRAM ab
Adresse 0x0000 zur Verfügung steht.

Würde das funktionieren? Oder rede ich hier von absolut utopischen
Träumen?


Gruß, ERDI - Soft.

von Weihnachtsmann (Gast)


Lesenswert?

Hallo Erdi

Riecht nach Chiptuning.
Aber das geht schon es ist nicht utopisch


Gruss

Weihnachtsmann

von ERDI - Soft (Gast)


Lesenswert?

Ne, hat nix mit Chiptuning zu tun. Hab ja noch nicht mal ein
motorisiertes Fahrzeug. ;)

Nein, das Ganze sollte ein µController-Projekt werden, bei dem ich ne
Festplatte habe, auf der die Firmware liegt. An die komme ich aber
nicht ohne Treiber ran. Zusätzlich soll das System noch nen DRAM
bekommen, der ja aber bekanntlich den Inhalt verliert, wenn der Saft
fehlt, aber über nen CPLD oder ähnlichem refresht wird. Um mir nun noch
ein Boot-Flash zu sparen, würde ich eben gerne beim Booten ne
Befehlssequenz im DRAM abbilden, die dann gestartet wird und sich
darauf die Firmware von der Platte holt. (Bzw. der µController macht
das dann.)

von Jochen Pernsteiner (Gast)


Lesenswert?

Das geht schon, aber mehr als ein paar Bytes wirst Du auf einem CPLD
nicht speichern können (Anzahl der Register des CPLD).
Wieviel Bytes brauchst Du denn?

von Weihnachtsmann (Gast)


Lesenswert?

Ein SRAM würde vieles Vereinfachen sofern du nicht allzuviel MB
brauchst.

von ERDI - Soft (Gast)


Lesenswert?

Tja, das ist ne gute Frage. Im Prinip ne komplette Routine, um ein paar
KByte bis hin zu ein paar Megabyte aus ner IDE-Platte auszulesen und im
DRAM abzulegen. (Ich schätze mal, das sich das im 1 - 2 stelligen kByte
Bereich bewegt.)

Aber wie mir scheint, ist ein zusätzliches Flash wohl billiger und
einfacher, auch wenn es das Layout verkompliziert.

Wenn ich jetzt wüßte, wie gut man als Privatmann an die Cylones von
Altera rankommt. Die haben ja schon ein DRAM-Interface. Und so
wahnsinnig teuer sind die ja auch nicht. Derzeit hab ich mit den
ispLSI5128 als DRAM-Controller ausgesucht. Da gibts ja, zum Glück,
schon ne fertige App-Note von Lattice. Damit werden von den 128
verfügbaren Zellen etwa 80 benutzt.

von ERDI - Soft (Gast)


Lesenswert?

@Weihnachstmann:

32MByte will ich schon haben. Schnell muss es nicht unbedingt sein.
(Natürlich schnell genug, um mal ein paar 10kByte pro Sekunde zu
verschieben.) Also fällt SRAM allein schon wegen der größe raus.

von Hagen (Gast)


Lesenswert?

Mal ne Frage vorweg: mit welchem µC willst du dann auf diesen externen
DRAM Programmspeicher zugreifen ? Ein AVR wohl kaum da dieser nur
Programme aus seinem internen Flash heraus ausführen kann.

Gruß Hagen

von ERDI - Soft (Gast)


Lesenswert?

Ne, das soll ein DS80C400 werden (8051). Gleich mit Ethernet und allem
drum und dran. Muss dann zwar ein bißchen Banking einbauen, was aber
nicht das Problem sein sollte.

von Sven Johannes (Gast)


Lesenswert?

Moin...

Naja, mach dich mal auf den harten Aufschlag gefasst...

DRAM ist nicht so wild, insbesondere wenn du es ohne PLL/DLL Lock
betreibst, also bei 10% Takt. Könnte bei deine Anwendungen reichen.

Den MC vom FPGA aus zu booten ist mir ganz neu, kenne ich nur
andersrum, aber man soll ja immer offen für Neues sein.

Das blöde ist jetzt nur, dass nur FPGAs ernsthaft RAM/ROM Strukturen
haben, CPLDs kannst du da getrost vergessen. Die FPGAs werden aber
selbst von einem Flash oder ebend dem MC konfiguriert.

Ein kleiner Flash, EEPROM oder NVRAM ist da sicher die sinnigere
Lösung.

--
 Sven Johannes

von ERDI - Soft (Gast)


Lesenswert?

Sowas in der Richtung dachte ich mir bereits. Allerdings sind die
Konfigurationseeproms meist seriell, was das Layout einfach hält. Mich
scheut einfach davor, den Bus über 5 Bauteile hinwegzuführen.
Professionelle Platinen sind mir eigentlich zu teuer, schon gar, wenn
das Gerät in der Testphase ist, also immer noch Fehler ohne Ende haben
kann (aber nicht muss. Bisher waren es nur Kleinigkeiten, die ich
falsch gemacht oder vergessen habe.).

Na ja, werde wohl bei dem CPLD für den DRAM-Controller bleiben (der
auch schnell genug sein sollte. Lattice gibt in ihrer App-Note ne
Frequenz von über 150MHz für den fertigen DRAM-Controller an. Da ist
die CPU definitiv zu langsam für.) und dem Controller doch nen Flash
spendiere, von dem er booten kann. Evtl. kann ich den nach dem booten
ja auch einfach aus dem Adressraum ausblenden, sodass nur noch der DRAM
als Programmspeicher (und natürlich auch als Datenspeicher) dient. Oder
ich mach mir an der FH gleich ein eigenes IC. ;) (Wohl übertrieben.)

Dann danke ich euch schonmal für die Hilfe. Sollte jemandem noch was in
der Richtung einfallen, ich bin noch offen für alles.


Gruß, ERDI - Soft.

von Hannes Hering (Gast)


Lesenswert?

Hallo,

ich befass mich auch grade mit einem DS80C400 und DRAM Anbindung. Hast
du schon irgendwelche Ergebnisse mit dem Lattice AppNote
zusammenbekommen? Ich bin noch nicht so fit in CPLD Programmierung,
aber ich halt's für möglich ausreichend viel Code um das DRAM mit nem
Boot-Code von ner Festplatte o. ä. zu beschreiben in nen CPLD zu
packen.

Wär nett, wenn du Infos zu DRAM Controllern, die du schon hast oder
Codeschnipsel zu schicken teilen würdest! ;)

MFG

Hannes

von dose (Gast)


Lesenswert?

Hallo,

das klingt eher für eine Anwendung mit einem ARM als mit einem 51er
Derivat.

von ERDI-Soft (Gast)


Lesenswert?

Daran dachte ich auch schon, allerdings kenne ich derzeit keinen (von
Privat zu erwerbendem) ARM, der auch ein externes Speicherinterface
hat.
Und der genannte DS80C400 kann immerhin 16MByte linear adressieren.
Und zu den langsamsten gehört er auch nicht unbeddingt. Er hat braucht
zwar immer noch 4 Taktzyklen für einen Maschinenzyklus, aber man kann
ihn auf immerhin 75MHz laufen lassen.

von dose (Gast)


Lesenswert?

Dann schau dir mal den EP9302 von Cirrus Logic an. Der hat ein externes
SDRAM Inteface und kann 100MHz.

Rene

von ERDI - Soft (Gast)


Lesenswert?

Klingt gut (vor allem die Linuxkompabilität), allerdings von Privat wohl
kaum zu bekommen.
Und solange man den privat nicht bekommt, fällt der automatisch aus der
Auswahlliste raus. Billig dürfte der auch nicht gerade sein. :)

von dose (Gast)


Lesenswert?

Probieren geht über studieren.

http://www.aufzu.de/semi/cirrus.html

von dose (Gast)


Lesenswert?

http://www.synertronixx.de/produkte/scb9328/scb9328.htm

Dann versenk doch gleich so ein Modul.

von ERDI - Soft (Gast)


Lesenswert?

Irgendwie soll das Ganze aber auch noch bezahlbar bleiben. Und als armer
Student hat man nicht mal eben 150 Euro für so ein Board übrig. (Hätte
ich die 150 Euro, würde ich mir ein Via EPIA Board holen. D kann man
dann noch ein paar sachen mehr mit machen.) Auch wenn es wirklich
interessant ist. Aber DS80C400, SDRAM und CPLD bekomme ich für nen
Bruchteil des Preises.
Und Board muss ich sowieso machen, ob jetzt mit DS80C400 oder ARM.

von Hans (Gast)


Lesenswert?

lpc22.. haben ext. interface.. gibt einen uclinux port und nebenbei
bekommt man die z.b bei rs ;)

von FPGA-User (Gast)


Lesenswert?

nur so am Rande,

in die größten CPLDs passen max. 38 Bytes wenn Du sie
als Speicher verwendest, es sei denn es gibt welche
mit extra Speicherblöcken drin (wäre mir neu)

bezweifle, dass man einen SDRAM-Controller in ein
CPLD rein bekommt

wenn Du einen SDRAM-Controller in VHDL findest, der
Freeware ist und keinen speziellen Bus hat (Wishbone...)
dann bitt ich um postings hier

von Patric (Gast)


Lesenswert?

> wenn Du einen SDRAM-Controller in VHDL findest, der
> Freeware ist und keinen speziellen Bus hat (Wishbone...)
> dann bitt ich um postings hier

xapp134 kennst du?

von Hans (Gast)


Lesenswert?


von FPGA-User (Gast)


Lesenswert?

@Hans
der ist in Verilog

@Patric
danke für den Tip, schau ich mir mal an

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.