A flexible architecture for digital signal processing