Thursday, 15 August 2013

Still showing signs of life

It would seem that my colleague Chris has more interesting things on his plate than designing power supplies for NGPACE, despite his previous pledges of assistance.

The good news is that another colleague has stepped up to the plate, and registered interest in lending a hand. Hopefully this means the ball will start rolling again, and we can get to the business end of the circuit design. I've suggested he look at the power supplies as well as the analogue audio and video circuitry, which just about covers the schematic capture except for the FPGA pin assignment; something best left until layout.

I'm about to take 5 weeks (well-deserved) leave so I won't be around to shake the stick or contribute anything other than answering questions about the design, but I'm hoping my colleague - who should have some spare time up his sleeve in the next few weeks - gets onto a roll with this!

Perhaps a good sign - he modified the 14" CRT chassis in the recently refurbished office arcade cabinet to better suit the 19" monitor that is installed, and we subsequently rotated the monitor back to horizontal so I could install a Neo Geo MVS board and a Metal Slug cartridge. That should get him into the mood! ;)


Tuesday, 11 June 2013

There was movement at the (Fremont) station...

Chris has finally started looking at the power supplies - yah!

He has asked me to estimate the core power consumption for the Cyclone V... and of course at this stage I have no idea. So my immediate task is to instantiate enough logic to fill the device and run a power estimator on it... exactly how I'm going to do this is undecided atm, since Quartus will happily optimise out all the unused logic.

One option is to instantiate a bunch of 68K processor cores and hook them up in such a way as to avoid them being optimised out. If nothing else it'll be a fun exercise to see how many I can fit in the device. I'm sure I'll come up with something in the next few days...

EDIT: Apparently I can fit 32x TG68 cores at 82% logic utilisation!

Thursday, 30 May 2013

More pies in the sky

Still no progress to report as work is unrelenting, but I did remind one of my colleagues and he asked about the audio codec, so at least he's still interested in doing it. We just have to get some down-time to actually be able to devote some time to it.

So in the mean-time, I've been dreaming about the add-on boards that I'd like to produce for it.

First up, the so-called CPU-socket boards. Considering whether I should put 5V level conversion on the main board, but in the end decided against it just in case I want to stick some 3V3 logic on a small daughter-board. That aside, I'll be looking to make Z80, 6502, 6309 & 68K (DIP & PLCC) adapters in the short term. Wishing I had enough I/O for an ARM250 but it's out of the question (and not sure where I'd get one of those anyway!?!).

Secondly, similar past projects like the One Chip MSX (OCM) & Minimig and more recently proposed and/or WIP project like the ill-fated Coco-X and another TRS-80 Model I expansion design have me thinking about prototyping other system board replacement projects on this hardware. The 200-pin MVS connectors with 5V level conversion should come in very handy for adding all types of peripherals such as cartridge interfaces, keyboards, floppy & hard disk drives...

...with that in mind I'd ultimately like to produce boards for TRS-80 Model I/III/4, TRS-80 Coco 1/2/3, Apple II & BBC microcomputers - roughly in that order of preference. So whilst I'll prototype them as add-on boards to NGPACE, the end result would be single boards that would be mounted inside the original casing of the target platform.

Picture a TRS-80 Model I keyboard unit, running from a modern 12/24V supply, housing a fully pimped-out 128KB (or more) Model 4 core, with a selection of legacy graphics enhancements (e.g. Grafyx Solution and/or Mikrokolor) driving DVI-I video out, internal floppy and hard disk emulation via SD card, modern joysticks and a connector for a real floppy drive accessible via the expansion interface door.


Of course you could also run it as an Apple II or Coco 3... you want one, right?

Tuesday, 21 May 2013

Gathering momentum again?

After a few weeks of inactivity due to very busy workload, I'm trying to get the ball rolling again while some of us (potentially) have a lighter load for the next few weeks.

I gave a quick design briefing on the whiteboard at lunch today to my colleague who volunteered to look at the analogue audio and video circuits. This afternoon I populated the project repository on our SVN server with the project schematics & PCB and all the data I have collected thus far.

Hopefully he'll be enthused enough to start looking at it. And hopefully his enthusiasm will prompt my other colleague to get started on the power supply design!

And to help get myself motivated, tonight I hooked up the AES console to my TV for the first time, and played a few games of Blues Journey and the newly-arrived Fatal Fury 2...

Monday, 20 May 2013

Flash Carts

One of the Holy Grails of Neo Geo enthusiasts' wish lists is a flash cartridge for the system. There is photographic evidence around that suggests a certain development group has developed one, but I would assume its primary purpose is to assist in development of their Neo Geo games. I'd imagine it could be programmed with a reasonable selection of legacy Neo Geo titles, but it would perhaps be safe to assume that it would not be capable of supporting every single game for the system. Regardless, they're not for sale.

I'm not making any such claims either at this stage, but the intention is there to produce some sort of programmable (flash?) cartridge to assist in the development - or more specifically, testing - of the Neo Geo IP. Unfortunately, whilst the cartridge will be programmable in-system via the FPGA on the system board, this will of course not be an option on an actual SNK system board.

Anyway, it's a long way off yet; pointless even designing it without a significant portion of the Neo Geo IP developed and running, and without some in-depth research into the protection mechanisms employed on the various cartridges. But I guess it's possible that eventually I'll have learnt enough to develop a flash cartridge that is programmable externally, and maybe even capable of running most Neo Geo titles.

Sunday, 19 May 2013

The State of Play

I actually started work on this project about 6 weeks ago. But it does have to compete for time with Real Life, so it's going to be somewhat of a drawn-out process.

The easiest way to explain where it's at is just to say that I've completed the "interesting" parts of the schematics. In other words the FPGA, all the memory devices, the ARM, the video IC's and the bulk of the connectors have been done. What's missing on the schematics include the power supplies, analogue video amplifiers (for JAMMA), the analogue audio circuit, and all the really boring bits like de-coupling capacitors and sundry miscellaneous protection components on some of the I/O.

As a result, all the major IC's and the AES/MVS connectors have been selected, based primarily on their availability from Digikey. The flash devices are dirt cheap, and for simplicity I've gone with the same device for all ROM's. The SRAM can be used as either 8-bit or 16-bit mode, which is a bonus. The HDMI chip incorporates audio, is readily available and looks relatively simple to use. The video DAC I've used on another design. I've also used the STM32F2xx family before.

I should mention here that I've managed to coerce a few colleagues into assisting with the design; my business partner is handling the power supplies and related boring bits, and another colleague is designing the analogue audio & video circuits.

As for layout, I've just started to collect footprints for the various components. Fortunately a good selection of the larger IC's have footprint libraries already available. I've done the AES/MVS connectors myself. I'm envisaging the board to look similar to a 1-slot MVS board; JAMMA connector on the front, cartridge connectors at the back, additional audio/video connectors on one side, and controller connectors on the other. At least that's the plan...

I suspect there's a few more weeks, if not months, of schematic capture and review remaining before we can start layout proper. To some degree I'm at the mercy of my colleagues as well, but we're also pretty busy at work atm, let-alone the other aspects of our respective lives. Layout is going to be a massive job, and I'm inclined to sub it out else I'm afraid it'll languish for many months in the too-hard basket. Of course, that's added expense...

In the mean-time, I might re-visit the HDL I wrote a few years ago and see if that has suffered any bit-rot. And of course, I'll need to spend a bit of time on my AES console once the first of my carts turns up - you know, for science!

Saturday, 18 May 2013

What else?

I'll start off my 3rd and final 'introductory' post with a brief run-down on the FPGA.

Since I'm only making a handful of the development boards, I thought I'd use the largest device that I could afford. To give you an idea of size, let me first note that the EP2C20 (20K LE's) is adequate to emulate the Amiga 500, including the 68K core and a 2nd soft-core processor for floppy emulation etc. And I figure that's about the same complexity as the Neo Geo...

I've gone with the 5CEA7, with roughly 150K LE's or, alternatively, enough logic to emulate seven (7!) complete Amiga 500's, or Neo Geo's. I figure there's enough headroom in there for SignalTap and any other debugging aids I may wish to add!?! In any case, with the cartridge connectors and digital video, the Neo Geo has some serious I/O requirements, and my wish list of features pretty much dictated a 480 user I/O device.

As I mentioned, the board is also being designed to be my PACE development platform for the foreseeable future, so there are a few more components not strictly required for the Neo Geo (but may come in handy for it anyway).

I've added an STM32F205 (ARM) micro-controller, primarily for JAMMA & AES controller I/O, but it's also a USB (OTG) host for HID gamepads, standard arcade trackball input, battery-backed RTC for the Neo Geo, and a high speed SD card slot. It's also responsible for configuring the FPGA from SD card. It connects to the FPGA via three (3) high speed SPI ports. For other PACE projects it'll be very useful for emulation of floppy and hard disk devices via FAT-formatted SD cards.

Aside from the FLASH and SRAM required for the Neo Geo, there's also an 8Mx16 SDRAM device which will be most useful for emulation of retro microcomputers like the Amiga. I've also connected a 2nd SD card directly to the FPGA to prototype designs that won't use an external micro-controller.

I've added a so-called 'CPU socket' which is actually a pair of high density dual inline sockets to accommodate various daughter-boards with a CPU. There's just enough I/O for a 68K CPU - for obvious reasons - and of course 6502, Z80 & 68(3)09 would also be possible. Aside from running designs with physical CPU's, the idea is to also accommodate development of a 6309 core - another project that I have undertaken recently.

Finally, some sundry I/O; as mentioned PS/2 x2 to the FPGA, one or two Dreamcast (Maple Bus) ports, one or two Nintendo Gamecube ports, some extra 3.3V & 5V I/O on the ARM (which can be configured as analogue or digital) and a few LED's for good measure.

So there you have it - a handy little board that can be plugged into a JAMMA cabinet, or powered from a 12-24V supply and connected to your 55" LCD via HDMI and played with a variety of controllers. And with plenty of expansion (via the MVS connector) for legacy keyboards, cartridges and 5-1/4" floppy drives, I'll be able to load Sockmaster's Donkey Kong port for the Coco 3 off floppy disk and play it with my wireless NGC Wavebird Controller!

In a perfect world there'd also be a bank of high-speed DDR3; it was originally part of the design but when I ran out of I/O I had to settle for vanilla SDRAM. I cannot think of anything I'd like to add to this board to be honest! I refrained from adding all manner of legacy 8-bit console controllers, and even removed a light gun connector, most of which I can add via the miscellaneous I/O connectors.

Next post I'll give a brief run-down on where the project is at, and speculate wildly as to how I think it's going to pan out. Because engineering projects never blow out...