I *think* I have a decent understanding of what an NOAC is and how it works. At least, I've witnessed how awful they can be, as I was one of the fools who bought a Generation NEX early on only to see it fizzle when I tried to use a Game Genie with it. And I know from lurking here and other NES forums that FPGAs are supposed to be superior, and that because of how expensive they are a clone that uses one has been somewhat of a pipe dream until recently, when bunnyboy unveiled his HDMI NES. But what, really, is an FPGA and what separates it from a NOAC? I've seen forum threads where people quibble over the petty semantics that supposedly divide the two, and yet there must be an obvious advantage to FPGA for bunnyboy to be going that route. I want to understand what the difference between the two are and what even defines an FPGA, but it all goes way over my head. Can someone please break it down in layman's terms? I know if there's any place you can ask dumb questions like this and not be ridiculed, it's NesDev. Thanks in advance!
An FPGA is a general-purpose programmable device, not unlike a CPU or a GPU. To have it simulate an NES, some code needs to be uploaded into it, as well as some extra hardware to interface to the older 5V parts you might want to use with it (controller, cartridge).
A NES-on-a-Chip is a single-purpose device, specifically an "Application Specific Integrated Circuit", that can only be (to varying degrees of success) compatible with an NES.
FPGAs are often used as ways of prototyping things before committing them to ASICs, because translating from the language used by an FPGA to a layout for an ASIC is a relatively straightforward process. FPGAs also have the advantage that if a bug is found, it is possible to replace the programming they use.
Getting an ASIC made costs a moderate amount in up-front costs (tens to hundreds of thousands of dollars) but then the per-unit price is much lower. (For something with the complexity of the NES, existing NOACs are somewhere around $5 or so, plus ~$3 of plastic and ~$3 for the PCB/connectors/&c. ... at least, assuming that the 12$ developing world famiclone computer would be sold at cost)
So, to ultimately answer your question: Bunnyboy is using an FPGA because he doesn't expect to sell more than a few thousand, ever.
NOAC (NES on a chip) is an ASIC that combines the function of most of the integrated circuits on the NES motherboard. FPGA (field programmable gate array) is a collection of predefined generic circuits whose connections can be reprogrammed. FPGA has
two three advantages over NOACs:
- Unlike an ASIC, an FPGA can be updated when new behaviors are discovered by installing a downloadable fusemap file. In theory, an ASIC can replicate this to an extent with updatable microcode functionality, but few NOACs do.
- As lidnariq pointed out, FPGAs are better for low volume.
- The designers of the FPGA-based famiclones have more of a mindset toward quality control in the accuracy of the famiclone's behavior. This is not an inherent advantage of FPGA over ASIC but an advantage of the engineering priorities of people like kevtris and bunnyboy over Chinese penny pinchers. Some NOAC makers appear to have a mindset: "It works with popular games? Ship it. The sound is different? A couple dozen games using MMC5, ROM nametables, or 4-screen VRAM don't work? We don't care because we don't think customers will care."
EDIT: Ninja'd
Thanks, lidnariq, tepples. My only question now is why are FPGAs inherently more expensive (at least that's what I've heard) than NOACs? I still don't understand why they are better for low volume. Whether he sells a thousand or ten thousand, wouldn't a well-designed NOAC be much less cost prohibitive?
Edit: Never mind, I think you already answered my question, sort of:
Quote:
Getting an ASIC made costs a moderate amount in up-front costs (tens to hundreds of thousands of dollars) but then the per-unit price is much lower. (For something with the complexity of the NES, existing NOACs are somewhere around $5 or so, plus ~$3 of plastic and ~$3 for the PCB/connectors/&c. ... at least, assuming that the 12$ developing world famiclone computer would be sold at cost)
So I take it that the upfront cost of getting an FPGA made is lower, the per-unit price higher, and all of this in bunnyboy's mind would be less cost prohibitive than the up-front cost of having an all new NOAC made?
NESter wrote:
So I take it that the upfront cost of getting an FPGA made is lower, the per-unit price higher, and all of this in bunnyboy's mind would be less cost prohibitive than the up-front cost of having an all new NOAC made?
An FPGA can be used off the shelf. It has to be programmed, but beyond that there is no upfront cost beyond that of the unit.
Bullseye.
It also means that a late-breaking bug is "provide new firmware" rather than "suck it up and sell a buggy product"
Gotcha. Thanks again for the answers guys!
To be fair, NOACs are not "awful". They are infact a very accurate clone of the NES/Famicom hardware. Most we find these days do have the mixed up APU duty cycle setting, and tend to have the cartridge port wired wrong leading to the incorrect sound and compatibility issues.
But other than that, they are clones. It's a shame that no one with the ASIC's layout ever bothered to correct these simple bugs and start producing better ASICs. But as it has been said, they are cheap and have no interest in anything other than trying to make money. Quality isn't in their vocabulary.
MottZilla wrote:
To be fair, NOACs are not "awful". They are infact a very accurate clone of the NES/Famicom hardware. Most we find these days do have the mixed up APU duty cycle setting, and tend to have the cartridge port wired wrong leading to the incorrect sound and compatibility issues.
But other than that, they are clones. It's a shame that no one with the ASIC's layout ever bothered to correct these simple bugs and start producing better ASICs. But as it has been said, they are cheap and have no interest in anything other than trying to make money. Quality isn't in their vocabulary.
Yea, I think this is the key point. The ASIC IP is just being reused by the foundry(s), continuing the errors. Any guess when the original engineering was done for the core? 10, 20 years ago?
There has been a wealth of experience and reverse engineering since then, which Bunny Boy can draw from. If there was enough of a market then an ASIC would be the way to go. Maybe someday; think the Atari Flashback and the C64 Plug n Play.
Yogi
I think the only way an ASIC would make sense in that way would require the end product to support scaling/digital video output for modern TVs. The average person is not likely to have a CRT going forward so if you wanted to market them some retro plug and play product with built in licensed games you'd need to have HDMI output.
Reverse engineering isn't exactly important as the pirates did it the old fashioned way and just copied. They didn't need to understand what was going on so long as they copied the dies exactly. But that's where somehow you ended up with those couple of flaws.
Though the fairly new method for getting better than composite video is useful if you were going to produce an ASIC clone as you'd definitely want something like HDMI video output.
If you're making a new ASIC, you might as well just replace the PPU's output section with whatever kind of digital output your scaler chip expects.
tepples wrote:
kind of digital output your scaler chip expects.
That would be digital RGB or digital YCrCb: a clock signal, one or two digital sync signals, and 15 to 24 digital parallel outputs for raw color.
But in practice, you're not going to buy someone else's upscalar. So long as you're building a new PPU core, you may as well do it yourself, whether via a linedoubler or a full framebuffer.