bloodline wrote:
Well... you are saying that a chip that can be programmed to imitate another chip is different to a peice of software that allows a chip to imitate another chip... while the approach is different they are conceptually the same thing.
Only one approach is cheap and easy to fix bugs... the other requires special hardware and bug fixing is a more involved process...
It's quite difficult to explain this clearly to people who don't know exactly what an FPGA is. People implementing circuits in an FPGA use some of the same tools that chip designers use to design fully custom chips (minus the IC transistor layout tools).
An FPGA has no predefined computer architecture; it is simply a huge array of logic gates with programmable interconnections. This is great, because it means that you can design and test computer circuits without having to manufacture a new chip every time you make a change.
It's the IC equivalent of having a huge prototyping board with all the discrete chips and wires required to implement any computer circuit you wish. If you wire up a circuit on a prototyping board that adds numbers together, you just built an adder; you didn't emulate it. Likewise, I could implement the same circuit on an FPGA. The only difference is that instead of manually plugging wires into a proto-board, I upload a bitfile to the FPGA that connects up the relevant wires between logic gates in the FPGA.
Let's take this one step further. Suppose now that I design a circuit that performs the same function as the Paula chip. It has the same registers, and performs the same task. I've just designed Paula compatible hardware.* I could now wire up logic gates on my proto-board (the original Amiga prototype was built out of discrete ICs), or create an FPGA bitfile and implement it on my FPGA. If I'm completely happy with it, I could call an ASIC company and pay them to transfer my Paula compatible circuit onto an ASIC, and have them manufactured in medium quantities. Equally possible would be for me to hand my design over to an IC designer and have that person design a fully-custom chip containing my Paula implementation.
Now let's look at an emulator. It's written in software for hardware with a predefined architecture. Via software instructions that are executed serially, you emulate the behaviour of all the hardware elements in a completely different machine. Unlike Dennis' Paula implementation on an FPGA, there are no actual Paula registers, and the machine has to execute several instructions to emulate what happens simultaneously in the real thing. You can't take this code and hand it to an ASIC or IC engineer and say "hey, build this circuit" because it's not a circuit at all, it's a set of instructions for a CPU that emulate the behaviour of a hardware circuit in software.
I hope that this clarifies it a bit. Just because an FPGA is reprogrammable doesn't mean that it's running software. You're implementing hardware circuits on it.
Hans
* note: it's Paula compatible, not an actual Paula chip, because it's not gate-for-gate equivalent.