Hallo Besucher, der Thread wurde 4,1k mal aufgerufen und enthält 10 Antworten

letzter Beitrag von xeniter am

VC20 in VHDL/FPGA

  • Hi,


    bin neu hier. Seit einiger Zeit beschäftige ich mich hobbymässig wieder mit
    FPGAs/VHDL.
    Eigentlich wollte ich zuerst einen C64 auf meinem Board zum laufen kriegen,
    bin aber bis jetzt gescheitert (hab mich an den C-One bzw. an einer älteren
    Version gewagt).


    Beim VC20 dagegen sieht's wesentlich besser aus: http://www.fpgaarcade.com/
    hat ein funktionierenden VC20. Einzig die IOs und die VGA-Ansteuerung mussten
    angepasst werden. Basic,Frogger&Co liefen ohne Probleme.


    Gibt's hier noch weitere User mit Erfahrung in VC20/FPGA?


    Gruss


    Jotta

  • Viel gemach habe ich damit auch noch nicht.
    Welches Board/FPGA hast du, welchen Aufwand hattest du, wie du das Design zum laufen
    gebracht hast?


    Ich selbst habe einen kleine Xilinx-Virtex4 (eher Virtexchen), von der Architektur (Logikzellen
    und Speicherelemente) vergleichbar mit einem Spartan3/3E.
    Mein Problem war in erster Linie die VGA-Ansteuerung: da das Orginaldesign kein Bild lieferte
    (nur 50Hz, mein VGA braucht >=60Hz) habe ich einfach den VC20-VGA-Ausgang per Logik
    in einen Extra-Speicher abgelegt und von da mittels eigener Logik auf meinen VGA ausgegeben.
    Meine Implementierung läuft so bis ca. 50MHz (statt der 1MHz des Orginal-VC20).


    Gruss

  • Wow ein 50Mhz Vc20 klingt interessant.
    Ich hab einfach ne alte Rohre angeschlossen, die auch 50Hz mochte.
    Die Aufwand war dann eigentlich nur die Zuweisung der richtigen Pins und ein eine kleine Änderung an der Takt-Erzeugung glaube ich.
    Hab mich danach aber gleich an den fpga64 und Apple II gemacht. Der Apple II war für mich der interessanteste da ich zu dem Zeitpunkt noch keinen Apple II hatte/kannte.
    Ich hab übrigens ein Nexys2 von Digilent mit einem 1200 Spartan 3E.

  • Ja, 50MHz klingt toll, aber von mir steckt da kaum geistige Leistung drin,
    habe lediglich die Frequenz (per DCM) hochgesetzt und geschaut, ob's
    noch läuft. Bei glaube ich 4MHz funktionierte meine PS2-Tastatur aber
    nicht mehr, nur der Cursor blinkte (immer schneller). Von daher kann
    ich natürlich nicht sagen, ob's wirklich rund läuft.


    Ausserdem muss bedacht werden, dass nunmal ein V4 wesentlich
    schneller ist als ein Spartan3. Ohne viel Mühe kriege ich meine
    (kleinen!) Designs bis 200-300MHz zum laufen, optimierte Pipelines
    sogar bis 600MHz. Hatte vorher ein Xilinx Spartan3E mit SP3500E, da
    kam ich so auf 50-150MHz, mit viel Mühe auf etwas mehr als 200MHz...


    Naja, mehr möchte ich mit dem VC20 eigentlich auch nicht machen,
    als eben erste Gehversuche mit einem Komplettrechner-Nachbau.


    Mein Ziel ist jetzt der C64: Welchen FPGA64 (Version?) hast du zum
    laufen bekommen, hat bei dir die VGA-Ausgabe funktioniert?
    Ich nehme mal, du hast das Spartan3-Design übernommen und
    ein wenig IO-Anpassung gemacht!?


    In meiner Simulation (FPGA64 Version 027,ISim Webpack) läuft
    eigentlich alles rund: Reset funktioniert, ROM/BASIC-BIOS werden
    durchgeackert, aber irgendwie läuft glaube ich der VIC-II nicht
    an. Es dauert aber urewig, bis die entsprechenden Routinen
    im ROM angesteuert werden bzw. bis mehere Bilder vom VIC
    aufgebaut werden. Werde mich am Wochenende nochmal
    dranwagen.


    Gruss

  • Ja, der VIC II Core hat mich einige male auch zum Aufgeben gebracht. Ich hab auch Probleme das ganze Timing zu verstehen. Das ganze ist bei mir ein Jahr her aber ich weiß, das ich damals etwas Funktionierendes aus mehreren Versionen vom fpga64 gebastelt hab. Falls du nicht mehr weiter kommst kann ich meinen Murx mal zipen und dir irgendwie zukommen lassen.
    Wie hast du eigentlich Frogger auf dem VC20 gestartet, hast du ein Floppy/Datasetten Interface gebaut oder vom ROM?

  • Hi,


    bin gerade dabei, mir die Docs zum VIC-II durchzulesen (http://www.htu.tugraz.at/~herwig/c64/).
    Bei der FPGA64-Implementierung ist aber der Nachteil, dass alle Register nicht initialisiert sind.
    Und dann dauerst es idR einen kompletten Bildaufbau, bis die 6569-Register gesetzt sind. Blöd
    auch, dass der VIC von Kernel erst spät nach vielen vielen Schleifen gesetzt wird. Die Docs
    dazu habe ich von http://www.bombjack.org/commodore/. Gute Quelle für Listings/Mappings etc.


    Ich werd's aber wie bei meinen 6510-Versuchen mal ein kleines System mit 6510,6569 und einfachem
    BIOS (nur 6569-Init und Textausgabe => 50-100 Zeilen ASM) zusammenbasteln und in der Simulation
    ausprobieren. Vieleicht klappt's ja, wenn ich aus unterschiedlichen FPGA64-Versionen die VICs
    austeste. Am 6510 aus der 027er Version liegt's aber glaube ich nicht. Denn habe ich ausführlicher
    durchgetestet.


    Was mir beim FPGA64 noch aufgefallen ist: Kein SID (oder gut versteckt) und im CIA (6526) fehlt
    auch einiges (glaube der Dezimal-Timer?). Hab mich bis jetzt aber auch nur wenige Stunden mit
    beschäftigt.



    Gruss


    Jotta




    P.S. zu meiner Angabe 50MHz: Ich hatte noch mal nachgeschaut, intern werden im Design zwei
    Clock-Teiler verwendet (ein 4er und ein 8er). Bei der Berechnung der Frequenz habe ich den
    falschen genommen, so dass ich jetzt auf 25MHz komme. Da ich aber ein kleines 6510er System
    selbst zusammengebaut habe, dass mit bis 160MHz läuft, schienen mir die 50MHz nicht so hoch.
    Das Problem ist wie beim 64er der VIC, der für 64er und 20er je CPU-Takt 8 Pixel erzeugt.
    Und dass währen dann 400MHz VIC-Takt, für mein FPGA bei dem Design unmöglich zu erreichen ist.

  • .. was ich noch vergessen habe: Programme in Cardridge-Form lassen sich
    relativ einfach einbinden. Der VC20 (die FPGA-Version) hat einen einfachen
    Speichercontroller inkl. Expansions-Handling. Ich habe dazu einfach zwei
    extra Blockrams (=4KByte) gefüllt und eingebunden. Nach einem Reset
    wird nach einer Kennungen an entsprechenden Blockaddressen gesucht.
    Ist die Kennung vorhanden, dann wird zu einer Startaddresse im Block
    gesprungen (Vorsicht: Es gibt mehrere Blöcke: 4000,6000,8000,B000???).
    Den genauen Mechanismus kenne ich aber nicht. Im Gegensatz zum C64
    gibt's ja leider kein komplett disassambliertes ROM-Listing. Schade.

  • Hallo,


    natürlich gibt es ein dokumentiertes ROM-Listing zum VC-20: VC-20 Intern von Data Becker.


    Findet sich oft genug für kleines Geld auf ebay.


    Gut dokumentiert ist ein anderes Thema, es wurde halt 1982 nur als ROM-Listing von Data Becker veröffentlicht, in den beiden Folgeauflagen (jeweils von 1983), die dann als das heute bekannte VC-20 intern verkauft wurden, wurde es nie gepflegt oder überarbeitet. Und bei der Dokumentation der damaligen Zeit war viele Lücken ... wenn sich jemand das Buch nur wg. des ROM-Listing kaufen will, wäre die Auflage theoretisch dann egal.

  • Ja, stimmt. Ich kann mich noch ganz dunkel an das Buch erinnern. Meine Aussage
    bezog sich auf mein SEEHR BEGRENZTEN Einblick in den VC20.


    Aber hier im VC20 Unterforum habe ich eben auch noch ein paar Links gefunden,
    z.B.:


    http://www.ffd2.com/fridge/chacking/ ist eine Artikelsammlung rund um den C64
    und den VC20, ab Ausgabe 17 ist ein ROM-Listing zum VC20 enthalten.
    Alle Teilartikel habe ich einfach mal zusammenkopiert. Werde mir noch ein bischen
    Zeit nehmen und durch die Startroutinen steppen.


    Gruss

  • Falls noch von Interesse ist, hatte als Masterarbeit C64 auf FPGA zu portieren ->http:// http://sandbox64.at</a>


    Als CPU hab ich die T65 von Opencore verwendet hat aber noch nen bug, bzw. die direkte Version von Opencores erkennt kein irqs


    Sprites, Scrolling & Sound geht noch ab bzw. werde ich mir anschauen je nachdem wieviel Zeit und Motivation grad vorhanden ist


    Verdopple derweil wie beim fpga64 projekt die vert. pal freq um standard vga zu erreichen. hab zuwenig speicher auf fpga muss erst sdram einbinden für nen framebuffer. Modernen Monitore nehmen ja nichts mehr unter 800x600.


    Leider ist die Seite http://www.htu.tugraz.at/~herwig/c64/</a> down wie es aussieht. Hatte leider nur von ein paar und nicht alle Unterseiten Backup erstellt, wer noch welche hat bitte melden. Hab sie derweil mal unter http://sandbox64.at/herwig/c64/ zur Verfügung gestellt.


    Grüße,
    xeniter