Software emulation - using a processor to execute software code that interprets input and provide output.
* inherently sequential, performance depends on host architecture and o/s
* subject to timing delays, output can lag behind input
* cheap to install and use on existing equipment
Example: UAE on a PC running Windows.
FPGA emulation - using a multitude of look-up tables and other basic logic elements embedded in a programmable integrated circuit to implement high-level logic algorithms.
* parallel by nature, real-time processing of input & output
* compact, most bus connections are internal
* recompilation needed for use on a different host platform
* host platform can be expensive
Examples: Minimig on Replay using an Xilinx Spartan3E FPGA, Boxer.
Hardware emulation - using discrete logic or fixed function generic integrated circuits to implement high-level logic algorithms.
* closest to original hardware
* implementations tend to be large
* no platform needed, bespoke hardware implementation
* construction can be very difficult and time consuming
Examples: Amiga Lorraine, Harlequin ZX Spectrum clone.
http://www.zxdesign.info/prototypeComplete.shtmlhttp://tarjan.uw.hu/zx_pix/harlequin/original/harlequin.jpgRe-implementation - using original ASICs in a new architecture.
* requires cannibalisation of old computers for parts
* hard to assemble, needs patience and skill
* resulting implementation closely resembles original
Examples: Georg Braun's A1000, Phoenix A1000, Index Access & InsideOut.