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.
Hallo Erdi Riecht nach Chiptuning. Aber das geht schon es ist nicht utopisch Gruss Weihnachtsmann
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.)
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?
Ein SRAM würde vieles Vereinfachen sofern du nicht allzuviel MB brauchst.
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.
@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.
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
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.
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
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.
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
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.
Dann schau dir mal den EP9302 von Cirrus Logic an. Der hat ein externes SDRAM Inteface und kann 100MHz. Rene
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. :)
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.
lpc22.. haben ext. interface.. gibt einen uclinux port und nebenbei bekommt man die z.b bei rs ;)
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
> 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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.