A processor that is permanently connected to a single ROM which contains all of the software that the processor will ever execute is called an embedded processor. Here we consider when to use an embedded processor, and then, when using one, the designer has to chose whether to design a new one or use an existing one.
The main difference between a hardware solution and a software solution is the degree of parallelism. Processors typically execute one instruction at a time, re-using the same hardware components again and again. Hardware solutions tend to have dedicated circuits for each function. If most of the hardware is likely to be idle for most of the time, a processor is preferred, but if a processor cannot achieve the throughput required, increased parallelism using hardware is preferred.
Complex functions normally require a processor, but CAD tools are evolving, allowing complex functions to be expressed algorithmically and then automatically converted to a logic gate implementation.
High-speed processing normally requires dedicated hardware. For instance, consider the error correction performed by a CD player to overcome dirt and scratches. When CD players first came out, this error correction was done with dedicated hardware, but today, microprocessors have increased in speed, and so the function can be done using the processor that is already there to provide other complex functions (e.g. track skip). However, on the latest, x52 speed CD/DVD drives the error correction must be performed that much faster, and so dedicated hardware is re-introduced.