troed wrote: Tue Oct 15, 2024 8:58 am
How is the clock synchronization with GLUE for the wakestate selection performed?
Well, it is far much easier to implement this inside the FPGA, than with external logic. I can detect the GLUE wakestate alignment by monitoring the DE signal, and then I can adapt my own phase accordingly to the wanted wakestate.
alexh wrote: Tue Oct 15, 2024 9:45 am
Interesting work. Is this a new design? Or based on your work for FX Cast? I understand that making an FPGA of individual chips includes an additional challenge to a core (e.g. collection of chips) with real bidirectional I/O.
It is based on my old core. But yes, as you are saying, there are additional requirements when you need to interface with multiple "real" chips. I also had to implement the old school Async DRAM interface from scratch, as my cores were designed for the "MiST/MiSTer" hardware that use synchronous DRAM.
Particularly challenging is to adjust the timing to interface with chips that have no published timing specifications, like GLUE and SHIFTER in this case. Without datasheets you have to make some assumptions based on measurements and some common sense. But even with datasheets it can be challenging. I.e, it is quite difficult to meet timing for the worst case 68000 specifications. According to the 68K datasheet the clock to output delay can be up to 70ns. That's more than half cycle at ~8MHz! I'm sure the original chips didn't met worst case timing. They assumed, and probably correctly, that you never actually run the chips at the worst case conditions.
Plus the 68K bus is designed to be asynchronous. The original chips use either async latches or flip flops clocked by the chip select signals (not by the actual clock). As I"m sure you know, it is important to avoid these old school async techniques on modern FPGAs. But then it is not so easy to maintain cycle accuracy when you use a fully synchronous design. But what can I say, it was a lot of fun!
