News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_Gryzor

FPGA CPC thread

Started by Gryzor, 07:51, 04 March 13

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Gryzor

Hello guys,


A fellow member deleted the thread -yes, deleted it- by mistake it would seem...  >:( Since I hadn't quite been following it, let me know if there was anything of great value in it and I'll try to restore it from a backup.


Cheers
T

ralferoo

If it's the relatively recent thread, I think it was just a link to FPGAmstrad - CPCWiki without any followups.

It might also be a good time to plug my board... ;) I'm hoping to have finished laying out the new revision of my board this week so with any luck it might be ready for testing at the end of the month! There's a few notes on my blog: CPC FPGA - Recreation of an Amstrad CPC on an FPGA

TFM

Any news about this project?

How much faster is it than a real CPC?
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Gryzor

Quote from: TFM/FS on 21:11, 04 March 13
Any news about this project?

How much faster is it than a real CPC? Does it have 4MB?



There, I fixed it for you.

ralferoo

Maybe I should start a wiki page about this, but I keep thinking I'll put some useful information on my webpage about it... and I still haven't!

So, at the moment it just runs at the normal CPC speed because at the moment I'm mostly concerned about accuracy. Really though, there's no reason why I couldn't make a turbo mode at some point in the future. Internally, the Z80 runs at 16MHz but only gets a clock for 4 of the 16 cycles and can read/write SRAM at 16MHz reliably (the chip I'm using is 55ns RAM, so should manage 18MHz at a push). The slowest part is the flash ROM as it's a serial flash - doing random-access reads I can only fetch 1 byte every 1us. This is perfect for emulating the ROM on a real CPC, but turbo mode would need to slow down to normal CPC speed during ROM accesses. I can actually get 6MB/s from the serial flash but only when doing sequential reads so it wouldn't actually be too bad to read an entire ROM into RAM on a bank switch.

For memory, I've got 512KB of SRAM (currently 64KB and 448KB expansion pack, but I might claw some of that back for a screen capture functionality) and 512KB of ROM on my current prototype (so enough for 28 ROMs after my boot ROM, firmware, BASIC and DOS) and for revision 2 I'm testing out a 1MB ROM which would give 60 free ROM slots.

TFM

So the critical factor is ROM access speed. Well, imho 28/32 ROMs are fine. 60 maybe used one day - if you use them as a ROM disc or so, but then you need the software for it too.

Could you use a more quick ROM instead? One which would run with 16 MHz (Z80) speed? Or would this mean a mayor redesign?
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

ralferoo

Quote from: TFM/FS on 16:35, 05 March 13
So the critical factor is ROM access speed. Well, imho 28/32 ROMs are fine. 60 maybe used one day - if you use them as a ROM disc or so, but then you need the software for it too.

Could you use a more quick ROM instead? One which would run with 16 MHz (Z80) speed? Or would this mean a mayor redesign?
I'm deliberately using a serial flash ROM because they're cheaper, take up less PCB space and most importantly only need 4 IO lines. I'm actually clocking it at 48MHz to get random access at 1MHz - the real limiting factor is having to send the command and address for every byte fetched. The chip can actually run at 100MHz, but I've not tested it (and I'd be worried about signal integrity and EMI leakage given that it'd be near broadcast FM frequencies).

If I'm doing a sequential clock copy, I can read 1 or 2 bits per cycle so a burst transfer from ROM to RAM is relatively quick (around 6ms). As there's quite a lot of SRAM, it probably isn't a problem to reduce the RAM expansion and use some for ROM emulation in turbo mode anyway. That's what I used to do until I implemented the execute-in-place feature.

Powered by SMFPacks Menu Editor Mod