Sowas wirst du nirgends mehr auftreiben. Muss es denn schnell sein? Wenn nicht, kann man die DRAM Ansteuerung (Refresh und Adress Multiplex) per Software machen. Das DRAM laesst sich dann aber nicht in den normalen Addressraum einblenden ...
Micha
--
Mails containing HTML or binary windows code are rejected.
Manche CPUs hatten auch Pin der anzeigt ob CPU Befehl dekodiert und damit Buszugriff möglich ist.
Es wäre angemessen zu sagen welche CPU und welche DRAMs. Die Antwort ist aber wohl immer, wie schon gesagt, selber stricken. Datenblatt des TMS4500A kann ich bei Bedarf scannen, aber selbst wenn man das obsolete Teil noch auftreibt ist es keine sinnvolle Lösung.
Naja, bei manchen Controllern ist der externe Bus auch als normale Inputs/Outputs konfigurierbar, bzw. der externe Bus ist eine Sonderfunktion der entsprechenden Pins.
Dann könnte man den Refresh in einem Interrupt machem, in dem man das externe RAM temporär weg konfiguriert, per normalen IO die Pins entsprechend schaltet um einen Refresh durchzuführen, und dann das RAM wieder hinzu konfiguriert...
Das ist Vorraussetzung wenn man nicht eigene Ports spendieren will.
Das kommt auf die RAMs an. Alle halbwegs aktuellen DRAMs koennen die Refresh-Adresse selbst erzeugen, d.h. es reicht fuer einen Refresh an ein paar Steuerleitungen zu wackeln. Wenn man die auf sonst unbenutzte Pins legt, kann man refreshen ohne an der Busconfig rumspielen zu muessen (weil der Bus fuer den Refresh nicht benoetigt wird).
Wichtiger ist, dass der Refresh-Interrupt eine so hohe Prioritaet hat, dass keine Daten verloren gehen.
Dafuer aber billig und nicht von abgekuendigten Chips abhaengig. Nur eben nicht schnell ... Ein AVR@16MHz hat es bei mir mit asynchronen DRAMs auf ca. 180KiByte/s gebracht (allerdings mit 11Bit Bus und RAS-only Refresh, mit 8bit Bus und CBR Refresh sollte noch einiges mehr gehen).
Micha
--
Mails containing HTML or binary windows code are rejected.
Mhh, hatte mir eigens dafür sogar mal SIMM und SIMM-Sockel (einreihig, sehr einfach zu verlöten) gekauft, allerdings dann das Projekt nie begonnen.
Aber eine Frage habe ich dazu: wie bekommst du die Daten in den uC eigentlich _rein_? Das war bei mir nämlich ein riesen Problem. Das RS232 mit 115200 Baud zu verwenden ist ja ein bischen lächerlich... Gibt's da auch was schnelleres?
mit SCSI gemacht. Der PIA mit dem AVR bringt auf dem Papier etwa 200KiByte/s, auch wenn die in diesem Fall nicht ausgereizt werden koennen weil die Target CPU bremst.
Eine simplere Loesung waere z.B. mit einem FTDI FT245B ueber USB. Damit habe ich in einem Projekt fuer meinen Arbeitgeber ca. 200KiByte/s auf einem AVR@11.1MHz erreicht (allerdings auf ATA statt auf DRAM und mit
64KiByte SRAM Puffer, und auch nur mit dem "closed source" WindowsNT Treiber).
Mit IEEE-1394 koennte auch was gehen, da bietet TI Protokollchips dafuer an. Die Frage ist wie leicht bzw. schwer die zu bekommen sind ...
Werte >200Kibyte/s erreicht man mit AVRs bei nichttrivialen Protokollen nur, wenn die nichts anderes machen muessen. Wenn mehrere Jobs drauf laufen ist man schnell bei 100KiByte/s oder darunter ... immernoch eine Groessenordnung ueber RS-232. Wenn du mehr willst, solltest du mehr CPU-Power spendieren als AVRs bringen koennen.
Micha
--
Mails containing HTML or binary windows code are rejected.
Cool, danke für den Tipp! Den Chip habe ich auch bei Reichelt gefunden. Hast du einen Link auf ein Beispielprojekt für den Chip, für 6 Euro will ich den nicht durch rumprobieren ruinieren.
100 kB/s müsste satt reichen. Die 14,1 kB/s, die RS232 bei 115200 Baud zur Verfügung stellt, sind einfach ein Witz.
Auf der anderen Seite reicht bei einer seriellen Konsole 9600 Bps mehr als aus um einen Rechner zu installieren und administrieren.. Die Anwendung machts. :)
Wenn es für den Anfang was ganz einfaches sein soll, ich hab mir mal ein Layout für eine einfache Platine gemacht, mit der man den auf dem Steckbrett betreiben kann. Ein paar Fotos finden sich hier:
formatting link
, Schaltplan bzw. Eagle-Dateien kann ich auf Wunsch zuschicken. Das Ding scheint auch zu funktionieren, zumindest kann man am PC Daten (von einem AVR gesendet) über den VirtualComPort-Treiber und über den D2XX-Treiber (dll-Interface) empfangen. Im Prinzip ist das aber nichts weiter als die auf
formatting link
verfügbare Application Note auf eine Platine umgesetzt.
Ich glaube nicht, dass du den Chip durchs Probieren ruinierst. Jedenfalls nicht solange du ihn richtig beschaltest (die Schaltung ist in den ANs ja lang und breit dokumentiert). Eher durch Kurzschluss oder Ueberhitzung bei Freiluftverdrahtungspfusch, d.h. du brauchst eine vernuenftige Platine wie z.B. das Board von Thomas.
Was willst du denn machen wofuer 14KiByte/s ein Witz sind und
100KiByte/s satt reichen?
Micha
--
Mails containing HTML or binary windows code are rejected.
Ich baue einen Displaycontroller für ein 400x300 LCD, das vom PC aus angesteuert werden soll.
400x300 Pixel sind 15000 Bytes. Bei 11520 Bytes/s habe ich ein komplett neuen Bildschirminhalt im FIFO alle 1,3 Sekunden: das ist unerträglich wenn man wirklich was steuern will. Bei 100kB/s kann ich ca 6,8 fps erreichen (bei vollem Redraw!). Das ist schon echt gut!
Wenn dann noch zusätzliche Tricks verwandt werden (ich dachte an einen einfachen Huffman bzw. Shannon-Fano sowie ein Übertragen von nur geänderten Zeilen), wird das Ding recht flott.
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.