Dear surreyian,
It would be enormously easier to answer your question, if it were more specific.
Based on the very general level you ask, I can just say equally generally:
- You have to know what you want to decode. (i.e. what is your input, and what you want the output to be)
- Your thread subject mentions also encoding, which is by definition a mirror image of decoding. In other words, you feed a decoder often with whatever an encoder has produced (when it "coded" something).
And decoder then reconstructs that "something" by interpreting the coded stuff you feed it with. An example is position encoding, sending the position of a physical system in some sort of code, and a decoder, which is then presenting that position information back in (more) usable form.
However, whatever you want to encode/decode, you have to figure out input to the encoder, required code output, and what you want out from the decoder, when fed with the code. On top comes the such practical requirements as speed, power, voltages, distances, environment etc. which can impact the selection of implementation enormously.
-Ted