Hi
Da es mir die CPLDs angetan haben, hab ich ein neues Projekt in Angriff genommen, getauft auf den Namen "PyRamIDE".
Angedacht ist es als CD32 Erweiterung, mit 8MB DRAM, IDE, Floppy und einem Clockport.
Nach über ein Monat kämpfen mit VHDL, "Leitungsschmodder", CD32 Eigenheiten und wirren Synthesen von ISE, läuft der erste entscheidende Teil: das DRAM interface.
Eh das ding fertig ist, vergehen bestümmt noch mehrere Monate.
ScreenShots :
screenshot0.jpg screenshot1.jpg screenshot2.jpg
Prototyp ala Lochraster und Fädeldraht :
Proto0.JPG
Dev-Board mit jedemenge Abgriffe für LA und Oszi :
PyRamIDE-DevV1-small.png PyRamIDE-dev-front.jpg PyRamIDE-dev-bestueckt.jpg
Details & Stand der Dinge : (10.10.2012)
CPLDs :
-2x XC9572 84Pins (Ramses & Takelot)
-28MHz Clock, generiert mit 74LS86 aus CPU_CLK
DRAM :
-gesteuert von CPLD : Ramses
-8MB PS/2 EDO
-wird per Autoconfig angemeldet
-voller 32Bit Zugriff, ohne waitstates, mit RAS before CAS
-RAS/CAS Adressierung über Ramses, seperate muxer entfallen
-Auto-Refresh: CAS before RAS
-Ramses Code fertig
-läuft nun mit 14MHz CPU-Clock
IDE :
-gesteuert von Takelot
-gepuffert
-Code läuft, jedoch nur ohne Ramses
Floppy :
-"Emulation" der entsprechenden CIA Register per Takelot & 74LS245
-Software: noch nicht begonnen
ClockPort :
-gesteuert von Takelot
-gepuffert
-Software: noch nicht begonnen
RTC :
-Ricoh RTC: RP5C01A
-gesteuert von Takelot
-gepuffert
-Software: noch nicht begonnen
UPDATE : 21.10.2012 :
Ich hab das Konzept der PLDs nochmal überdacht, mit einer mir erscheinenden besseren Lösung:
Die PLDs übernehmen nun nichtmehr getrennt die aufgaben, sondern sind abhängig voneinander.
Ramses dient nun als Adressdekodierer, so brauch ich nicht alle AdressLeitungen an beide Chips bringen.Desweiteren übernimmt er das Auseinanderklabüsern der "ByteSelection" und den AdressMuxer für den Ram.
Takelot steuert nun den Ram, und übernimmt die AutoConfig,ClockPort,Gayle- und CIA-Emu.
Das LayOut für die BackPlane hab ich auch fast fertig, auf dieser sitzt Ramses, der Ram und die extralogic für Floppy.
Da noch ein wenig Platz in Richtung der äusseren Seite ist, werd ich dort noch 2 USB Slots plazieren, wo man zB eine Subway anschliessen kann.
BackPlane Layout auf Pappe geklebt :
BP-V1-Pappe0.jpg BP-V1-Pappe1.jpg BP-V1-Pappe2.jpg
UPDATE : 25.01.2013 :
Die Layouts der beiden Platinen sind fast fertig, ein paar kleinigkeiten wie zB. Beschriftung fehlen noch.
Ich hab jetzt auch 2 Prototypen bestellt, mal schauen wie sich die PLDs dann verlöten lassen.
Die BackPlane hab ich nun um 2 USB Buchsen erweitert, dort kann man dann von innen die Subway anschliessen.
BackPlaneV0.jpg
Auf der MainPlane sitzt "Takelot" der alles steuert,
2 ClockPorts, einer extra für eine Subway zum ranstecken.
Dazu kommen dann noch 2 IDE SteckPlätze, einer für ein gewinkelten anschluss um zB eine SSD direct ranzustecken.
Daten, Adress und Signal Leitungen sind alle gepuffert.
Und zu guter letzt noch ne RTC.
MainPlaneV0.jpg
UPDATE : 16.02.2013 :
Die Platinen sind planmässig gekommen

Und Heute bin ich dazu gekommen diese zu bestücken, ein paar Bauteile fehlen noch, muss ich erst noch ordern bzw. rauskramen.
Die PLDs liessen sich ganz gut verlöten, jedoch muss ich noch im Layout die LötPads dafür grösser machen.
Die Backplane : hier fehlen noch ein paar Kondis und die Floppy-/USB-Buchsen.
back1.jpg
Die MainPlane : hier fehlen noch ein paar Kondis, RP5C01, Quarz und der BatterieHalter.
main2.jpg main1.jpg
So würde das ganze eingesteckt im CD32 aussehen, zur Anprobe mit Subway und na SSD.
montiert1.jpg
Ab morgen gehts dann an den passenden Code stricken
UPDATE : 27.02.2013 :
Es geht vorran... Ram und IDE laufen
Mit einer Festplatte kommt man, dank FastRam, auf eine Transferrate von ca. 2,1MB/s , mit einer CF sind es ca. 1,4 MB/s.
screenShot-IDE.jpg
Der Speed liegt unverändert bei 2839 Dhrystones.
screenShot-speed.jpg
Leider ist die Logic im Takelot nun fast komplett voll, dort werd ich umschwenken auf den Pinout-gleichen PLD 95144.
... nun gehts dann an die FloppyLogik.
UPDATE : 04.03.2013 :
Floppy läuft nun auch, aber nur bedingt.
Jedes Programm was auf ein Interrupt vom Floppy wartet, geht nicht.
Workbench booten und installieren per Floppy geht.
Spiel Installation per WHDLoad geht auch.
... next step: RTC
UPDATE : 20.03.2013 :
Da die BackPlane, ohne separate Halterung am CD32 Gehäuse, zu instabil ist,
unterzieh ich beiden Platinen ein komplettes Redesign.
Die Logik auf der BackPlane ist nun rein auf Floppy beschränkt, dafür ist nun eine RGB Buchse dazugekommen.
Desweiteren hab ich eine Grosse Öffnung in der Platine, wo man Stecker/CF-karte durchführen kann (die stecker Können dann mittels separater Abdeckung/Blende an der BackPlane befestigt werden).
BackPlane_V2_lay.JPG
Auf der MainPlane sitzt nun der ganze rest, dadurch ist diese nun auch Grösser. Zusätzlich ist noch Platz für eine 2,5" HDD.
UPDATE : 15.04.2013 :
So... RTC und ClockPort laufen nun auch.
Device Übersicht in Trident:
usb_trident_150413.jpg
SpeedTest mit USBStick an Subway:
usb_speed_150413.jpg
Die neue Boards.Library zeigt das PyRamIDE nun auch an
ShowBoards.jpg
Die MainPlane ist, sag ich mal, zu 75% fertig.
UPDATE : 05.05.2013 :
MainPlane ist nun auch fertig, jetzt heisst es nur nochmal drüber schauen, alle Verbindungen nochmal checken und ne TestSynthese machen.
MainPlane:
*wird wieder eingefügt*
Das ganze wieder zu Anprobe auf Pappe geklebt:
BackMainPlane_V2_pappe.jpg MainPlane_V2_pappe.jpg BackPlane_V2_pappe.jpg
UPDATE : 10.06.2013 :
Die neuen Platinen sind da
Anprobe:
BackPlane_v2.jpg MainPlane_v2.jpg
UPDATE : 29.11.2013 :
Platinen sind fast vollständig bestückt, fehlt nur noch ein wenig Kleinkram, und dann gehts an Code anpassen.
PyRamIde V2 (fast vollständig):
PyRamIDE_V2.jpg
Nebenbei bastel ich noch an einer Lite Version, die rein auf die BackPlane beschränkt ist ...
Specs:
8MB SRam
XC95144XL
1x CF-Slot
1x ClockPort
1x RGB
PyRamIDE Lite:
PyRamIDE_Lite_V1_t.jpg
PyRamIDE_Lite_V1_b.jpg
Update 04.03.2015:
Da mich Jumper/Schalter etc. fürs konfigurieren stören, hab ich angefangen Assembler zu lernen, um das ganze per BootRom machen zu können.
Das BootRom wird über eine separate Platine in den KickRomSockel gesteckt.
Beim Einschalten des CD32 oder bei einem Reset von ca. 5 Sekunden wird das BootRom gestartet, jeder normale Reset lässt das CD32KickRom starten.
BootRomAdapter:
BootRomCard.jpg BootRomCard_plugged.jpg
Bisher ist im BootMenu noch nicht viel zu sehen, nur ein Logo und ein SternenFeld:
BootRom_screenshot.jpg
Hier gibts noch vieles zu coden
Update 01.07.2015:
Das BootMenu nimmt langsam gestallt an, ist aber noch lange nicht fertig...
ScreenShot unter WinUAE:
BootMenu_ScreenShot.jpg
... to be continued
mfg Tommy