Some of the operations described above may be implemented in software and other operations may be implemented in hardware.For the sake of convenience, the operations are described as various interconnected functional blocks or distinct software modules.