Difference between revisions of "FPGAmstrad"
Line 37: | Line 37: | ||
'''You have to :''' | '''You have to :''' | ||
+ | |||
- program FPGA with the binary of this project, for it I use Digilent Adept software and my USB JTAG cable | - program FPGA with the binary of this project, for it I use Digilent Adept software and my USB JTAG cable | ||
Line 48: | Line 49: | ||
'''You can :''' | '''You can :''' | ||
+ | |||
- plug a PS/2 keyboard, and type "cat" | - plug a PS/2 keyboard, and type "cat" | ||
Line 57: | Line 59: | ||
- plug a jack on slot JD1, one at upper GND plug, and second wire at next plug, just at left of it (if it was 3.3v Vcc, is that in fact you had to take the right one) | - plug a jack on slot JD1, one at upper GND plug, and second wire at next plug, just at left of it (if it was 3.3v Vcc, is that in fact you had to take the right one) | ||
+ | ---- | ||
+ | == Tests done == | ||
+ | '''Several bug could disappear in TV mode... but TV mode is not implemented yet.''' | ||
+ | |||
+ | prince.dsk gryzor.dsk donkey.dsk : critical bug : always writing on memory, certainly performance, have to test it on TV mode to know if it came from my asynchronous RAM. | ||
+ | |||
+ | buggyboy.dsk barbarian.dsk : raster bug can be fight with anti-raster switch (last switch is anti-raster, stopping ink rotate...) | ||
+ | |||
+ | longshot : VSYNC alternate cut bug, it's so warrior dam | ||
+ | |||
+ | crazycar2.dsk : simple overscan, my vga buffer is full lol | ||
+ | |||
+ | a lot of demos don't pass, in fact I didn't find one that pass dam. | ||
+ | |||
+ | '''Other bug is about dsk format :''' | ||
+ | |||
+ | ---- | ||
+ | == Effort done == | ||
+ | Instruction timing : I tested instruction timing of T80 compare to instruction timing of JavaCPC emulator, I deduce also the memory access that had to be slow down | ||
+ | |||
+ | Test of a real Zilog, in fact T80 of opencore run on rising_edge, and zilog run during low state, so for testing I had to indirectly do a downclock, it run, perhaps if I put buffer on zilog access I could clock it at normal speed, but as it run... | ||
+ | |||
+ | Alignment of HSYNC : a button of starter kit display HSYNC loopback lines, it's usefull to compare to a Maxam test that alternate color on them | ||
+ | |||
+ | Sniffing of real Amstrad, I listen on some wires of my Amstrad CPC 6128 plus, but I can't access to VSYNC/HSYNC output of CRTC, so I have to buy another model to do this test. |
Revision as of 13:54, 19 July 2011
This is a VHDL version of Amstrad CPC 6128 running on FPGA starter-kit NEXYS2 500k-gates from Digilent. A starter-kit is a standard board made for learning FPGA, so it is standard.
This project result of a experiment of applying Agile method with constraint that : we don't know if next month I have to stop it... Finally this project has during 5 month. The result is a standalone platform that can run several games of Amstrad. Normaly, I had to dedicate 2 month on this project, but as the result was so great, I continue to a standalone and better version.
This project is for my father birthday, so sorry that I can't deliver it yet ^^'
How to assemble it
You need :
- a "NEXYS2 500kgates" starter kit
- a "PMODSD" module for reading sdcard
- a alimentation (cause they don't give it with starter kit)
- optionally a DIGILENT USB JTAG (normally starter kit can be programmed directly by usb, but I didn't have test this way)
- a 4Go SDCARD (no more)
- The binary of this project, available by there : [[1]]
- Several ROM files :
-- OS6128.ROM BASIC1-1.ROM AMSDOS.ROM (from JavaCPC)
-- MAXAM.ROM (from CPCWiki)
- Several DSK files (one or more) :
-- TEMPEST.DSK ARKANOID.DSK FRUITY.DSK BRUCELEE.DSK CHASEHQ.DSK WIZLAIR.DSK XEVIOUS.DSK BOULDER.DSK CLASSIC_AXIENS.DSK CLASSIC_INVADERS.DSK
You have to :
- program FPGA with the binary of this project, for it I use Digilent Adept software and my USB JTAG cable
- format your 4Go SDCARD in FAT32 4096 byte allocation size
- copy ROM and DSK on SDCARD
- plug PMODSD on slot JC1 of starter kit, and set all switches to 0
- plug VGA, and turn on starter kit
You can :
- plug a PS/2 keyboard, and type "cat"
- increment switch to select another disk at boot, if screen became RED, it's that binary value done by switches is too big, leds are doing a small animation when a disk is correctly loaded
- plug joystick on slot JA1 (Vcc 3.3v is common)
- plug another joystick on slot JB1 (Vcc 3.3v is common)
- plug a jack on slot JD1, one at upper GND plug, and second wire at next plug, just at left of it (if it was 3.3v Vcc, is that in fact you had to take the right one)
Tests done
Several bug could disappear in TV mode... but TV mode is not implemented yet.
prince.dsk gryzor.dsk donkey.dsk : critical bug : always writing on memory, certainly performance, have to test it on TV mode to know if it came from my asynchronous RAM.
buggyboy.dsk barbarian.dsk : raster bug can be fight with anti-raster switch (last switch is anti-raster, stopping ink rotate...)
longshot : VSYNC alternate cut bug, it's so warrior dam
crazycar2.dsk : simple overscan, my vga buffer is full lol
a lot of demos don't pass, in fact I didn't find one that pass dam.
Other bug is about dsk format :
Effort done
Instruction timing : I tested instruction timing of T80 compare to instruction timing of JavaCPC emulator, I deduce also the memory access that had to be slow down
Test of a real Zilog, in fact T80 of opencore run on rising_edge, and zilog run during low state, so for testing I had to indirectly do a downclock, it run, perhaps if I put buffer on zilog access I could clock it at normal speed, but as it run...
Alignment of HSYNC : a button of starter kit display HSYNC loopback lines, it's usefull to compare to a Maxam test that alternate color on them
Sniffing of real Amstrad, I listen on some wires of my Amstrad CPC 6128 plus, but I can't access to VSYNC/HSYNC output of CRTC, so I have to buy another model to do this test.