Polyphase Real FIR Filter
==========================
| **Block:** Polyphase Real FIR Filter (``pfb_fir_real``)
| **Block Author**: Henry Chen
| **Document Author**: Ben Blackman
+--------------------------------------------------------------------------+
| .. raw:: html |
| |
|
|
| |
| .. rubric:: Contents |
| :name: contents |
| |
| .. raw:: html |
| |
|
|
| |
| - `Summary <#summary>`__ |
| - `Mask Parameters <#mask-parameters>`__ |
| - `Ports <#ports>`__ |
| - `Description <#description>`__ |
| |
| - `Usage <#usage>`__ |
+--------------------------------------------------------------------------+
Summary
--------
This block, combined with an FFT, implements a real Polyphase Filter
Bank which uses longer windows of data to improve the shape of channels
within a spectrum.
Mask Parameters
-----------------
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Variable | Description |
+===============================================+=================+===============================================================================================================================================================================+
| Size of PFB (2\ :sup:`?` pnts) | PFBSize | The number of channels in the PFB (this should also be the size of the FFT which follows). |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Total Number of Taps | TotalTaps | The number of taps in the PFB FIR filter. Each tap uses 2 real multiplier cores and requires buffering the real and imaginary streams for 2\ :sup:`*PFBSize*` samples. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Windowing Function | WindowType | Which windowing function to use (this allows trading passband ripple for steepness of rolloff, etc). |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Number of Simultaneous Inputs (2\ :sup:`?`) | n\_inputs | The number of parallel time samples which are presented to the FFT core each clock. The number of output ports are set to this same value. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Make Biplex | MakeBiplex | Double up the inputs to match with a biplex FFT. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Input Bitwidth | BitWidthIn | The number of bits in each real and imaginary sample input to the PFB. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Output Bitwidth | BitWidthOut | The number of bits in each real and imaginary sample output from the PFB. This should match the bit width in the FFT that follows. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Coefficient Bitwidth | CoeffBitWidth | The number of bits in each coefficient. This is usually chosen to match the input bit width. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Use Distributed Memory for Coeffs | CoeffDistMem | Store the FIR coefficients in distributed memory (if = 1). Otherwise, BRAMs are used to hold the coefficients. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Add Latency | add\_latency | Latency through adders in the FFT. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Mult Latency | mult\_latency | Latency through multipliers in the FFT. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| BRAM Latency | bram\_latency | Latency through BRAM in the FFT. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Quantization Behavior | quantization | Specifies the rounding behavior used at the end of each butterfly computation to return to the number of bits specified above. |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Bin Width Scaling (normal=1) | fwidth | PFBs give enhanced control over the width of frequency channels. By adjusting this parameter, you can scale bins to be wider (for values > 1) or narrower (for values < 1). |
+-----------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Ports
-------
+-------------+-------+-------------+-------------------------------------------------------------------+
| Port | Dir | Data Type | Description |
+=============+=======+=============+===================================================================+
| sync | IN | Boolean | Indicates the next clock cycle contains valid data |
+-------------+-------+-------------+-------------------------------------------------------------------+
| pol\_in | IN | Inherited | The (real) time-domain stream(s). |
+-------------+-------+-------------+-------------------------------------------------------------------+
| sync\_out | OUT | Boolean | Indicates that data out will be valid next clock cycle. |
+-------------+-------+-------------+-------------------------------------------------------------------+
| pol\_out | OUT | Inherited | The (real) PFB FIR output, which is still a time-domain signal. |
+-------------+-------+-------------+-------------------------------------------------------------------+
Description
------------
Usage
^^^^^^
This block, combined with an FFT, implements a real Polyphase Filter
Bank which uses longer windows of data to improve the shape of channels
within a spectrum.