Automatic Gain Control: Techniques and Architectures