Signal Processing for Communications