Hello, Guest the thread was called5.4k times and contains 61 replays

last post from skoe at the

CPLD-basierter CIA-Ersatz inkl. PS/2-Tastatur-Anschluss?

  • Mal Copy-Paste von hier:

    Quote

    wie wäre es mit einem CIA-Nachbau in CPLD-Form, eben als Platine, die in den CIA-Sockel gesteckt wird - aber inkl. PS/2-Anschluss? Dann würde man sich das 66-Schalter-Gebastel sparen, weil man direkt Zugriff auf die CIA-Register hat, und einen CIA-Ersatz hätte man auch. Klar ist der Code dafür nicht trivial, aber z.B. das Chameleon wird das ja ziemlich genau so umsetzen.

    ...sauhund meinte dazu hier...

    Quote

    das ist in hardware noch schwieriger als in software zu realisieren .... und weder peter (chameleon) noch bero (micro64) noch ich (vice) hatten da bisher eine idee wie es mit vertretbarem aufwand machbar wäre.
    an der stelle gibts auch noch ein ganz andres problem: die meissten pc tastaturen können maximal 3 tasten gleichzeitig (und oft nichtmal beliebige, sondern 2 modifier+1 sonstige). das stösst schon bei der emulation des joysticks aufm numpad an seine grenzen.

    Warum ist das so schwierig? Also wenigstens ein reiner CIA-Ersatz ist in VHDL schon mehrfach gemacht worden.
    Oder geht's um die Anbindung von PS/2? Da muss man ja nicht päpstlicher als der Papst sein (von wegen Ghost-Keys und so), was auf dem Level der Emulation in VICE wäre wohl völlig ausreichend.
    Vielleicht ein 8x8-Bitfield im CPLD, das von außen von einem kleinen Microcontroller beschrieben werden kann. Dann kann der Microcontroller das PS/2-Handling machen (und ist relativ bequem zu programmieren), und der CPLD macht die Evaluation bei CIA-Registerzugriffen.
    Was das Rollover der Tastaturen angeht, schert mich das wenig, schließlich kann man einfach eine Tastatur kaufen, die das vernünftig macht.

  • Dann schliesst man evtl dort dies PS2 Tastatur an?


    http://www.daskeyboard.com/blog/?page_id=1458


    Zitat von dort:


    NKRO refers to N-Key Rollover, the
    ultimate in keyboards. A keyboard with N-Key Rollover can register as
    many keys as you can press at once without any key blocking issues.
    Currently, this feature is only available in keyboards with PS/2
    connectors.


    ;)

  • Damit NKRO richtig funktioniert brauchst du zu jeder Taste in der Matrix eine Diode in Reihe. Ohne ergeben sich Geistertasten (Wenn man 3 passende Tasten drückt wird noch eine weitere erkannt)


    Also funktioniert das nicht mit Folientastaturen.


    Meine Amiga-2000-Tastatur von Mitsumi war eine Tastatur die NKRO konnte. Sie hatte noch eine Platine und wirklich zu jeder Taste die erwähnte Diode. Meine Cherry G80-3000 auf der ich das hier tippe hat zwar Einzeltaster auf Platine, aber keine Dioden. :(


    Zum Thema CIA-Nachbau als CPLD: Nicht vergessen, die CIAs sind NMOS, mit deren Ausgängen kann man Dinge tun die man bei einem CMOS-Ausgang besser bleiben lässt wenn man will, daß er noch eine Weile funktioniert,

  • Vielleicht ein 8x8-Bitfield im CPLD, das von außen von einem kleinen Microcontroller beschrieben werden kann.


    Schon dieses Bitfeld braucht mindestens 64 Makrozellen, das ist für ein CPLD ziemlich viel - z.B. ~45% des CPLDs auf dem EF3.

  • Immerhin macht so nen CIA bisweilen auch timingkritischen IEC Bus. Nicht wenig CPU Rescurcen werden eines ATMega644 werden abverlangt das des auch noch mit Floppyspeedern funktioniert. Stell dir das nicht zu trivial vor.

  • Die CIA ist am CPU-Bus angeschlossen, wo sie auf mindestens 30ns genau den Bus nieder- bzw. hochohmig schalten können muss. Um das zu erreichen müsste der Microcontroller schon mit über 30MHz laufen. Dort ist aber schon die magische Grenze für fundamental-mode Quarze, außerdem kann kaum ein µC so schnell.


    Wenn das Problem gelöst wäre, dürfte es aber immer noch reichlich Hürden geben, denn ein Microcontroller kann sein Programm nur sequentiell ausführen. In der CIA laufen jedoch einige Dinge parallel ab, beispielsweise Timer, TOD und Schieberegister. Die innere Schleife des Codes müsste also eine Wiederholrate von 1MHz haben. Selbst wenn man im Schnitt 2 Takte pro Assemblerbefehl hätte, bleiben damit bei 30MHz nur 15 Kommandos für die innere Schleife. Und davon geht der Schleifenoverhead noch ab. Ich halte das für *sehr* gewagt, habe jedoch gelernt, sowas nicht "unmöglich" zu nennen :-)


    Jens

  • Dass man dem Sauhund aber auch immer alles aus der Nase ziehen muss (und dann in einem Gutteil der Fälle feststellt, dass doch nichts dahintersteckte)... was sind denn die 1,1%, die so schwierig sein sollen?
    Wiesel, danke für die Rechnung.
    Diddl, hattest Du nicht letztens von ein paar schnellen günstigen ARM-Controllern geschwärmt, wäre sowas wie der LM4F120H5QR nichts? (wo bekommt man die Dinger eigentlich einzeln her?)
    Ein FPGA wäre ja evtl. doch eine Option - nicht als normaler CIA-Ersatz (zu teuer), aber inkl. PS/2-Funktionalität evtl. spannend. Als CIA2-Ersatz könnte man da ja auch yet another Floppy-Emulation einbauen ;) . Ist nur die Frage, wie das mit der elektrischen Kompatibilität aussieht...

  • Quote

    was sind denn die 1,1%, die so schwierig sein sollen?


    das würde jetzt echt zu weit gehen das im detail aufzuzählen.... es gibt halt jede menge stellen wo dinge im detail nicht (exakt) so funktionieren wie es im datenblatt steht (und vieles was auch da garnicht erwähnt wird, und man nur von artverwandtem wie zb der VIA herleiten kann). ein clone der (nur) das abbildet was im datenblatt steht wird vmtl über die hälfte der testprogramme im vice repository nicht bestehen, und die decken noch nichtmal alles ab :) das exakte verhalten der ausgangsstufen zb ist etwas das noch nirgends 100%ig abgebildet oder gar verifiziert wurde.

  • Ah naja, mit den Quirks der CIA hatte ich schon zu tun (x64dtv und vsfReanimator lassen grüßen). Aber das ist größtenteils geschenkt - wie gesagt, eine Emulation auf VICE-Niveau ist wohl mehr als ausreichend, und da schaut man halt einfach in den VICE-Code. Klar dass man auf das Datenblatt nichts geben kann, bei welchem Chip kann man das schon.

  • ...nicht zu vergessen, dass Vice für die Emulation von ein paar Hardware-Eigenschaften Dinge tut, die Hardware so gar nicht tun kann. Vice ist manchmal ganz klasse darin, dass aus der Implementierung von Chip A eine Funktion von Chip B aufgerufen wird, um eine beobachtete Wechselwirkung zwischen den beiden zu implementieren. In einer diskreten Implementierung einer CIA dürfte das schwierig sein.

  • Außerdem muss der VICE "nur" in sich zyklusgenau sein ...


    Es wieder ganz was anderes, wenn ich mit bestehender Hardware verbunden werde, und daher "nach außen" zyklusgenau sein muss.



    Diddl, hattest Du nicht letztens von ein paar schnellen günstigen ARM-Controllern geschwärmt, wäre sowas wie der LM4F120H5QR nichts? (wo bekommt man die Dinger eigentlich einzeln her?)


    Watterot: klick

  • Haha, Forum64 wie es leibt und lebt!
    Die Frage war nicht, woher man jetzt eine CIA-Spec herbekommt oder sie sich zusammensucht (aber konstruktive Hinweise sind willkommen!), und auch nicht, ob das schwer ist oder nicht, sondern die Frage ist, wie die Hardware aussehen könnte. Und da habe ich bisher außer von Wiesel und Unseen und halb Diddl noch keinen brauchbaren Kommentar gelesen.


    (Diddl: Ich meine den µC an sich, nicht ein Evaluationsboard.)

  • Haha, Forum64 wie es leibt und lebt!


    Na da kann ich auch mitmischen:


    die Frage ist, wie die Hardware aussehen könnte


    Viereckig, evtl. sogar mit noch mehr Ecken. Beinchen unten dran zum auf's Board stecken. Und kompatibel zu Selbstbaunetzteilen. Roter Lötstoplack.

  • wäre sowas wie der LM4F120H5QR nichts? (wo bekommt man die Dinger eigentlich einzeln her?)


    Aktuell wohl nirgendwo.


    Wobei ich in dem Zusammenhang daran denken muss, dass skoe für das EF3 bzw. eine Nur-Kernal-Version davon ursprünglich auch nur einen ARM-Controller statt eines CPLDs verbauen wollte, das aber wegen Timingproblemen verworfen hat.


    sondern die Frage ist, wie die Hardware aussehen könnte. Und da habe ich bisher außer von Wiesel und Unseen und halb Diddl noch keinen brauchbaren Kommentar gelesen.


    Evtl. Lattice MachXO2? Das sind recht günstige und kleine FPGAs mit integriertem Configflash, die bräuchten aber mal wieder Pegelwandler.

  • Quote

    Die Frage war nicht, woher man jetzt eine CIA-Spec herbekommt oder sie sich zusammensucht (aber konstruktive Hinweise sind willkommen!), und auch nicht, ob das schwer ist oder nicht, sondern die Frage ist, wie die Hardware aussehen könnte.


    ich würde den zweitkleinsten fpga nehmen den es im moment zu kaufen gibt (ein devel board sollte für kleines geld zu haben sein). bis der core fertig ist und das ganze alle tests übersteht ist das auch preislich für eine produktion in eher geringer stückzahl gangbar. (und vorher wills eh keiner haben). ob man da jetzt nun noch eine pegelwandlung und evlt spannungsversorgung und taktung drumrum streuen muss ist imho nebensache und ergibt sich dann eh mehr oder weniger von selbst, genauso wie die endgültige wahl des chips.