An emulator is a piece of hardware that is placed into
application circuit to run and observe that operation of the system without
developing stimulus files.
Types of emulators
Software emulators:
A software emulator allows computer programs to run on a
platform (computer architecture and/ or operating system) other than the one
for which they were originally written. Unlike simulation, which only attempts
to reproduce a program’s behavior, emulation attempts to model to various
degrees the state of the device being emulated. High- level emulation uses a
combination of the two approaches in an attempt to retain as much accuracy as
possible while having the advantages of simplicity and speed provided by
simulation.
Hardware emulator:
A hardware emulator is an emulator which takes the form of a
hardware device. Examples include printer emulators inside the ROM of the
printer, and FPGA based emulators.
A popular use of emulators is to mimic the experience of
running arcade games or console games on personal computers. Emulating these on
modern desktop computers is usually less cumbersome and more reliable than
relaying on the original machines, which are often old and hard to find. Emulation
of arcade and console systems on home PCs usually includes the practice of
illegally downloading software from various electronic distribution sources.
In a theoretical sense, any operating environment can be
emulated within any other. In practice, it can be quite difficult, particularly
when the exact behavior of the system to be emulated is not documented and has
to be deduced through reverse engineering. It also says nothing about timing constraints;
if the emulator does not perform as quickly as the original hardware, the
emulated software may run much more slowly than it would have on the original hardware,
or it may run too fast to be usable.