Wie kann ich ein DRAM o. SDRAM mit einen Spartan 2 betreiben

Hallo zusammen

Ich habe von meinem Chef eine Aufgabe (langfristiges Nebenprojekt ohne Zeitdruck) bekommen mit einem Spartan2 und einem DRAM oder besser SDRAM ein Dualport-RAM zu simulieren. Doch im Moment stehe ich am Berg da die Erfahrung fehlt.

Am einfachesen w=E4re es wenn es irgendwo ein einfaches Beispiel geben w=FCrde das ich dann erweitern/verbessern k=F6nnte.

Kennt jemand so ein Beispiel ?

Wer hat schon was =E4hnliches Gemacht?

Mit freundlichen Gr=FCssen

Thomas

Reply to
enigmaolten-thomas
Loading thread data ...

schrieb im Newsbeitrag news: snipped-for-privacy@h48g2000cwc.googlegroups.com... Hallo zusammen

Ich habe von meinem Chef eine Aufgabe (langfristiges Nebenprojekt ohne Zeitdruck) bekommen mit einem Spartan2 und einem DRAM oder besser SDRAM ein Dualport-RAM zu simulieren. Doch im Moment stehe ich am Berg da die Erfahrung fehlt.

Am einfachesen wäre es wenn es irgendwo ein einfaches Beispiel geben würde das ich dann erweitern/verbessern könnte.

Kennt jemand so ein Beispiel ?

Wer hat schon was ähnliches Gemacht?

Mit freundlichen Grüssen

Thomas

Das ist eine ganz normale Standardanwendung für FPGA's. Allerdings viel für einen Anfänger.

Zuerst einmal kann man so ein virtuelles DPRAM nur dann als solches betreiben, wenn man spezielle Einschränkungen macht. Denn gleichzeitig kann man ein SDRAM nun mal nicht beschreiben oder belesen oder beides. Man muss also die Zugriffe serialisieren, sodass also mehr als die doppelte SDRAM Zugriffszeit für einen simulierten DPRAMzugriff nötig ist. Je nach Anwendung sind sogar Fifos auf beiden Ports nötig.

Anfangen kann man sinnvollerweise auf 2 Arten:

  1. Man nimmt erst mal ein SRAM oder internes BlockRAM eines FPGA'S (das zwar schon ein DPRAM ist, man verwendet aber nur einen Port für die Funktion, den anderen zum reinschauen - also zum Debugging). Dazu baut man die Zugriffssteuerung und die Fifos. Wenn alles geht, baut man einen SDRAMcontroller statt dem statischen BlockRAM.

  1. Erst baut man einen SDRAM controller, dann die Zugriffssteuerung.

Vor allem sollte man sich eine Debugumgebung bauen, nur simulieren hilft in der Praxis nicht, da man viel falsch simulieren kann. Also ein PC-Interface (z.B. über JTAG, USB oder Parallelport SPI) mit PC-Software bauen, mit dem man die Innereien der Rams live betrachten kann. Später kann man auf dem PC dann auch Ramtestprogramme laufen lassen. Es gibt von Xilinx auch das excellente Chipscope, das allerdings was kostet.

Um sich zu motivieren kann man sich auch überlegen was man mit dem DPSDRAM machen kann. Z.B. eine schöne Audioanwendung, dann baut man noch so was leckeres wie einen TAS3002 dazu...

formatting link

Also dann ran an die LUT's !

MIKE

--
www.oho-elektronik.de
OHO-Elektronik
 Click to see the full signature
Reply to
M.Randelzhofer

Bein EDK sind SDRAM-Controller dabei, die kannst Du Dir ja mal anschauen.=

- Philip

--=20 Die einzige Frau von der ich mir was sagen lasse ist die vom Navigationssystem. (Dieter Bohlen)

Reply to
Philip Herzog

Hallo Mike

Erst mal danke dass du dich gemeldet hast.

Im Moment brauche ich wirklich eine Motivation da mit bei der Umsetzung gar nicht recht weiss wie ich genau anfange soll. Ich m=F6chte eben denoch nicht vorw=E4rts kommen um mich zu motivieren. Wenn ich von Anfang an nur Grundlagen durchnehme verzweifle ich vorher.

Bei der Microcontroller habe ich mich auch recht schnell mit einsetzbaren Anwendungen befasst obowohl gewissen Grundlagen gefehlt haben, denoch kam ich recht schnell vorw=E4rts.

Ich m=FCsste mindestens 4 MB RAM Adressieren k=F6nnen.

Du sprichst hier von DPSDRAM von denen habe ich noch nichts geh=F6rt. Meinst du nicht DDR-SDRAM ?

Mfg

Thomas

Reply to
enigmaolten-thomas

Tja, Microcontroller sind in ihrer Struktur schon völlig vorgegeben, und ein paar Beispielassemblerprogramme reichen um da schnell reinzukommen. Bei programmierbarer Logik kann man auch fertige "cores" für diverse funktionen einsetzten, aber meistens passen die nicht für die jeweilige Anwendung. Besser ist also DIY. (Do It Yourself)

Wie ist dein Kenntnisstand in "Logic Design" ? Welche Sachen hast du schon gemacht ?

Was ist die genaue Anwendung, bzw. was sind die Timingvorgaben ?

DPSDRAM -> Dual Ported SDRAM, also das was du bauen möchtest.

Noch etwas Standortwerbung: Geh jetzt zum Dachauer Volksfest. Da gibts die Mass leckeres Bier für 4Euro10, und es herscht noch die berühmte bayerische Gemütlichkeit. Prost !

MIKE

--
www.oho-elektronik.de
OHO-Elektronik
 Click to see the full signature
Reply to
M.Randelzhofer

Schlecht

ich habe vor ca. 10 Jahren mit dem normalen Spartan einen kleinen Logic-Anlayzer gemacht. Habe aber nichts mehr davon und habe leider sehr viel vergessen.

Ich m=FCsste die Steuerung von einem Blockheizkraftwerk in Echtzeit anpassen und ver=E4ndern. ca. 50 ns 2MB

Warum spukt mir google zu diesem Begriff "DPSDRAM" nur 2 Resultate aus ?

W=E4re sicher nicht schlecht, ist f=FCr mich zu weit :-(

Gruss

Thomas

Reply to
enigmaolten-thomas

snipped-for-privacy@yahoo.de schrieb:

Dann solltes du es vielleicht erstmal locker angehen wie von anderen schon beschrieben.

?????

Weil es die AFAIK gar nicht oder nur ganz selten gibt. 99.9%++ sind normale single port SD-RAMs. Ach ja, IDT hat glaub ich echte dual port SDRAMS. Für die Weicheier ;-)

MFG Falk

Reply to
Falk Brunner

Das sind meistens grosse Dieselmotoren bei denen wird w=E4hrend des Betriebs den Einspritzbegin, Einspritzmenge und Ladedruck anpassen um entweder einen m=F6glichst hohen Wirkungsgrad zu erzielnen oder einen m=F6glichst hohe Leistungsabgabe. Je nach Kundenwunsch. Doch das m=FCsste in Echtzeit geschehen da sonst der Aufwand zu gross ware. Eigentlich vergleichbar mit dem Chiptuning von Autos.

Reply to
enigmaolten-thomas

snipped-for-privacy@yahoo.de schrieb:

Schön und gut, aber was soll deine Angabe bedeuten? Musst du 2MB (MegaBit oder MegaByte?) in 50ns kopieren? Dass wird eng ;-)

MfG Falk

Reply to
Falk Brunner

Ich muss ein EPROM mit 50ns Zugiffszeit und einer maximalgr=F6ssse 2 Stk x1MB ( MegaByte) emulieren.

Reply to
enigmaolten-thomas

schrieb im Newsbeitrag news: snipped-for-privacy@i3g2000cwc.googlegroups.com...

Hallo Thomas,

Dafür ist ein SRAM ideal geeignet.

Mit SDRAM siehst du doch kein Land bei 50ns wahlfreiem Zugriff. Das braucht eine Handvoll Takte bis das erste Byte herauskommt. Wenn das nächste geforderte Byte nicht von der folgenden Adresse ist, dann geht das (Warte)Spiel von neuem los.

formatting link
Ein Single Read oder Write dauert jeweils 7 Takte. Trc=7*6ns=42ns Da dein FPGA bestimmt auch nochmals 20ns fürs Einsynchronisieren und Ausgeben verbaucht, kann das gar nicht funktionieren.

Mit SRAM wird das dagegen ein Kinderspiel. Es gibt SRAM 1M*8, 1M*16 und 2M*8.

Gruß Helmut

Reply to
Helmut Sennewald

a) Ihr baut auch euere Oszilloskope selbst ? b) die ursprüngliche Frage nach "Dualport-RAM" ist dann etwas schief: "EPROM" wird vom Target wohl nur gelesen und vom Entwicklungs-PC nur geschrieben. Das vereinfacht den Bau eines EPROM-Simulators. Zudem ist dann nicht klar warum man für den nicht SRAM nimmt und sich das FPGA spart. c) Könnt ihr eure Boards nicht entwicklungsfreundlich auslegen indem da parallel SRAM zum EPROM liegt ? D.h. im Entwicklungs- modus nur etwas EPROM für den Bootloader und Rest SRAM. Im Produktionsmodus alles EPROM und SRAM nicht bestückt. Damit spart man sich bei "50nsec" die üblichen Probleme wenn man von extern über Flachbandkabel kontaktieren will.

MfG JRD

Reply to
Rafael Deliano

Hallo Rafael Rafael Deliano schrieb:

Wieso meinst du ?

Ich dachte man k=F6nne dies mit einem Dualport-RAM ebenfalls l=F6sen

Das Problem ist ,dass nicht alle Ger=E4te von uns sind und wird die Software nur soweit kennen dass wir wissen an welcher Adresse z.B. der Ladedruck ist. Einen Bootloader kann man da wohl nicht integrieren.

Reply to
enigmaolten-thomas

Einen "EPROM-Simulator" als Gerät kann man kaufen. Man kann ihn natürlich auch selber entwickeln, aber dann sollte man klare Vorstellung haben was man will.

Es wäre nicht zu vermuten, daß einstellbare Konstanten eines Reglers sich in EPROM befinden. Eher in einem separaten EEPROM. Es hört sich auch nicht sinnvoll an in einem fremden Regler auf unterster Ebene an Parametern pfuschen zu wollen.

Wenn man mit dem zugekauften Regler bzw. Regleralgorithmus nicht glücklich ist, wären die überschüssigen Energien wohl besser angelegt den Regler selber neu zu entwickeln.

MfG JRD

Reply to
Rafael Deliano

Klar kann man so was kaufen. Es geht darum dass wir eine eigene Software dazu verwenden wollen. Und darum dass ich dabei auch was lerne.

Es ist aber so dass sich alle Konstanden, Kennlinien, Kennfelder mit dem Programmcode auf einem EPROM befinden. Ist auch bei den allermeisten Autosteuerger=E4ten so(neusten Ausgeschlossen).

Also ersten machen wird das schon lange mit viel Erfahrung und es ist noch nie was passiert. Auch verantworten wir dies selber. Auch ist es so dass verschiene Hersteller gibt die in ihrer Betriebsanleitung angeben wo welche Werte sind und wie stark man sie ver=E4ndern darf. Nur muss man dann jedes mal ein neues EPROM brennen Zeitintensiv ist.

Es geht darum dass wir auch mechanische Verbesserungen und Neuerungen vornehmen die es erfordern das Ger=E4t neu anzupassen. Auch ist es so dass der Kunde sein altes Ger=E4t weiter verwenden will und nicht ein zugekauftes von uns will.

Reply to
enigmaolten-thomas

"Rafael Deliano" schrieb im Newsbeitrag news: snipped-for-privacy@t-online.de...

Motorelektronik pimpen, egal was der Motor dazu sagt, und dann fuer nen 1000er an Tiefergelegte verticken.

Die Motorelektronikhersteller werden allerdings auch gemeiner, Komprimierung und Verschluesselung halten Einzug, ROM ist eh im uC, ausserdem ist der Code inzwischen Megabytes gross, damit er auch die standardisierten Abgas- und Verbrauchsmessungsfahrten aus allen Laendern (er)kennt, und dann auf besonders spritsparend umschaltet, und die Leistungsmessungszyklen erkennt und dann auf besonders leistungsstark umschaltet, und der Kunde wundert sich, warum seine Moehre 2 l/100km mehr verbraucht als angegeben und so lahmarschig ist, obwohl sie so viel PS haben soll.

So lange man nur am Vergleichswert fuer den maximalen Ladedruck rumspielt, geht das ja noch. Ohne groessere maximale Einspritzmenge kommt man ja kaum auf wirklich interessante Leistungssteigerungen.

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://www.geocities.com/mwinterhoff/
 Click to see the full signature
Reply to
MaWin

@MaWin

Auf Kommentare von dir kann ich gut verzichten.

Es gibt hier Leute die wissen immer alles Besser. Ich kann es einfach schon gar nicht mehr anh=F6ren.

Es geht hier rein um die technisch Frage einen Emulators und nicht um unsere Firmenpolitik die funktionerit auch ohne dich !!!

1=2E Steigern wird die Leistung nur ganz selten !!!! 2=2E Verantworten wird dies und nicht du !!!

Zum 1000x wir machen nur selten sehr Leistungssteigerungen sondern Anpassungen und vor allem sind es keine Steuerger=E4te von Fahrzeugen und diese sind weder Verschl=FCsselt noch was anderes.

Ich glaube du hast in deinem Leben =FCberhaupt noch nie ein Blockheizkraftwerk gesehen !!

PS:

Bitte es sollen sich nur Leute melden die mir zum Thema Emulator weiterhelfen k=F6nnen. Auf Besserwisser, Moralapostel und sonstige Miesmachen k=F6nnen wir gut verzichten, denn bist jetzt ist es auch ohne sie gelaufen.

Reply to
enigmaolten-thomas

schrieb im Newsbeitrag news: snipped-for-privacy@74g2000cwt.googlegroups.com...

Wenn du normal reagiert haettest "Nee, nee, wir machen BHKWe" haette man es dir glauben koennen, aber bei einer dermassenen ausgeflippten Reaktion ist das absolut unglaubwuerdig, so reagiert nur jemand bei dem ins Schwarze getroffen wurde.

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://www.geocities.com/mwinterhoff/
 Click to see the full signature
Reply to
MaWin

Ohne auf Sinn und Unsinn in dieser Anwendung eingehen zu wollen, nur bezüglich EPROM-Simulator: Es bleibt zu hoffen, daß die EPROMs in DIL-Sockeln mit Präzisionskontakten stecken, sodaß man den Eigenbau als Huckepackplatine bequem stecken kann. Kabel machen sich bei 50nsec nicht so gut. Man verwendet typisch SRAMs passen zum EPROM, hier also 1MByte x 8 aber schneller als 50nsec. Zwischen SRAM und Target befinden sich octal Treiber ( 74HCTxx bzw wohl moderner ) damit man die SRAMs zum Laden isolieren kann. Für ein kleines EPROM würde man zum Laden einen Controller z.B. in DIL40 nehmen. Ca. 8051 oder

68HC908. Der kann mit einigen octal Registern einen Bus mit Adreßbereich 1M x 8 simulieren und sich nach dem Laden selbst und seine Register tristate schalten. Verbindung zum PC wäre im einfachsten Fall über V24 mit 19200 Baud und würde direkt Intel-Hex Files akzeptieren. Da könnte man auch simpel optische Isolation vornehmen, was manchmal zweckmässig ist. Bei 19200 Baud & Intel-Hex braucht jedes Byte aber 1msec, das wird für 27C256 bereits unakzeptabel. Modernerer Controller dessen UART bei 115k noch mitmacht. bringt etwas Verbesserung. Vermutlich müsste man aber für grosse EPROMs auf USB übergehen. Andere Variante: man baut den adressierbaren Speicher des Controllers auf 2M Byte x 8 aus und installiert dort auch die bisherigen EPROMs. Nach Reset booted der Controller das EPROM lokal ins SRAM, was schneller geht. Nur veränderte Speicherbereiche kommen danach per V24 und werden überschrieben.

MfG JRD

Reply to
Rafael Deliano

Hallo Rafael Rafael Deliano schrieb:

Ja die sind meistens gesockelt. 50 ns habe noch lange nicht alle. Ja ein langes Kabel w=E4re schlecht aber das ist kein Problem da es kurz gehalten werden kann.

Jetzt stehe ich auf der Leitung. Verstehe ich das richtig dass du das normale EPROM paralle zum SRAM schaltetst und das SRAM mit Tristate isolierst dann die Daten reinladest und da dann das EPROM auf CE schaltest und dann das SRAM aktivierst?

M=F6chte was mit FPGAs machen damit ich noch was dabei lerne.

Gruss

Reply to
enigmaolten-thomas

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.