mikrocontroller.net

Forum: FPGA, VHDL & Co. Programmspeicher emulieren


Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Erdi

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


Gruss

Weihnachtsmann

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.)

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Weihnachtsmann (Gast)
Datum:

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

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hannes Hering (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Autor: ERDI-Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: dose (Gast)
Datum:

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

Rene

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. :)

Autor: dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probieren geht über studieren.

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

Autor: dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.synertronixx.de/produkte/scb9328/scb9328.htm

Dann versenk doch gleich so ein Modul.

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hans (Gast)
Datum:

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

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Patric (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hans
der ist in Verilog

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.