Multichannel filtering is used in applications such as wireless communication, image processing, and multimedia applications. The main advantage of using a multichannel filter is leveraging very fast math elements across multiple input streams (that is, channels) with much lower sample rates. This technique increases silicon efficiency by a factor almost equal to the number of channels. In a typical multichannel filtering scenario, multiple input channels are filtered using a separate digital filter for each channel. Due to the high performance of DSP58, time division multiplexing can be used to filter up to N separate channels using one DSP58. The number of channels N is calculated using the following equation.
Each DSP58 is clocked using an NX clock (DSP clock that is N times faster than the one driving the samples of each channel). The N input streams are converted to one serial, interleaved stream using the N to one multiplexer. To ensure functionality, the multiplexer and demultiplexer selectors must run at the same clock speed of DSP58. The N parallel interleaved streams are stored in an N + 1 FIFO (implemented as SRLs). This implementation uses 1/Nth of the total Versal® ACAP resource as compared to implementing each channel separately. The following figure shows a two-tap, N-channel filter implementation.
The reference design files associated with this use case are available in the multichannel_FIR directory in the design archive file, am004-versal-dsp-engine.zip.