Polyphase FIR

Parameterized multirate filter engine for SDR signal-processing paths — SDR-LIB

SystemVerilog IEEE 1800-2017SDR Signal ChainFixed-Point DSP1-Cycle Latency
Module
fir_polyphase.sv
Author
Mintaka Engineering Team
Version
1.0.0
Copyright
Mintaka LLC

Architecture — Polyphase FIR Data Path

Stage 1Input & phase select
→
Stage 2Current + delayed taps
→
Stage 3Per-phase MAC
→
Stage 4Scale & output
y[n] = Σk=0T−1 hphase,k · x[n−k]

The phase input selects one coefficient bank for each accepted sample. Tap 0 uses the current input sample and the remaining taps use the registered sample history. This makes the block suitable for interpolation, decimation and filter-bank structures.

Parameters

ParameterDefaultDescription
kDataWidth16Signed input and output sample width.
kCoeffWidth16Signed coefficient width.
kNumPhases4Independently selectable coefficient phases.
kTapsPerPhase16FIR taps in each phase.
kAccWidth48Full-precision signed MAC accumulator width.
kFracBitsToDropkCoeffWidth − 1LSBs discarded after MAC to restore the target fixed-point scale.

Port Interface

PortDirectionWidthDescription
clkInput1Processing clock.
rst_nInput1Active-low asynchronous reset.
s_tvalidInput1Input sample valid.
s_treadyOutput1Module ready to accept an input sample.
s_tdataInputkDataWidthSigned input sample.
s_tphaseInput⌈log₂(kNumPhases)⌉Selected coefficient phase.
s_tlastInput1Input frame marker.
m_tvalidOutput1Filtered output valid.
m_treadyInput1Downstream ready signal.
m_tdataOutputkDataWidthSigned, scaled FIR result.
m_tphaseOutput⌈log₂(kNumPhases)⌉Phase associated with the output sample.
m_tlastOutput1Forwarded frame marker.

🗄️Source Code — SystemVerilog