Skip to content

UpFIRDnConverter

Overview

Converts sample rate of input wire and outputs data at new sample rate.

Discussion

Sample rate converter. The output sample rate SampleRateOut = L/D*SampleRateIn , where L is the Interpolation factor and D is the Decimation factor. The input block size must be an integer multiple of D. The length of the filter must be greater than L. L, D, and the optimal value for N can be calculated using the inspector.

Module Pack

Advanced

ClassID

classID = 1427

Type Definition

typedef struct _ModuleUpFIRDnConverter
{
ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
FLOAT32 gd;                                   // Group Delay or latency, calculated result
INT32 KAISER;                                 // Filter type constant
INT32 PARKS_MCCLELLAN;                        // Filter type constant
INT32 CUSTOM;                                 // Filter type constant
FLOAT32 fin;                                  // Input Sample Rate
INT32 L;                                      // Interpolation factor
INT32 D;                                      // Decimation factor
INT32 filterType;                             // filter type of FIR
INT32 ND;                                     // Integer multiplication factor
INT32 N;                                      // length of FIR filter
INT32 NQ;                                     // Size of QBUF, >= 2*Q, where Q = N/L (integer divide)
INT32 IQ;                                     // QBUF index
INT32 JQ;                                     // QBUF index, moving address index.
INT32 NC;                                     // Size of array COFS
INT32 NCOEF;                                  // Size of COEF array
FLOAT32* QBUF;                                // Internal buffer for storage of state variables of FIR filter
INT32* ICTR;                                  // Buffer for storing control data
FLOAT32* COEF;                                // FIR symmetric filter coeffs
FLOAT32* COFS;                                // scrambled coeffs for FIR filter
} ModuleUpFIRDnConverterClass;

Variables

Properties

Name Type Usage isHidden Default Value Range Units
gd float const 0 0.1319 Unrestricted msec
KAISER int const 1 1 Unrestricted
PARKS_MCCLELLAN int const 1 2 Unrestricted
CUSTOM int const 1 3 Unrestricted
fin float parameter 1 48000 Unrestricted
L int const 1 3 Unrestricted
D int const 1 4 Unrestricted
filterType int const 1 1 Unrestricted
ND int derived 1 8 Unrestricted
N int const 1 39 Unrestricted
NQ int const 1 26 Unrestricted
IQ int const 1 13 Unrestricted
JQ int derived 1 13 Unrestricted
NC int const 1 39 Unrestricted
NCOEF int const 1 20 Unrestricted
QBUF float* derived 1 [1 x 26] Unrestricted
ICTR int* derived 1 [6 x 1] Unrestricted
COEF float* derived 0 [20 x 1] Unrestricted
COFS float* derived 1 [39 x 1] Unrestricted

Pins

Input Pins

Name in
Description Input signal
Data type float
Channel range Unrestricted
Block size range Unrestricted
Sample rate range Unrestricted
Complex support Real

Output Pins

Name out
Description Output signal
Data Type float

Matlab Usage

File Name: up_fir_dn_converter_module.m 
 M=up_fir_dn_converter_module(NAME, L, D, N, filterType) 
 Performs rational sample rate conversion 

 Arguments: 
     NAME - Name of the module 
     L - Interpolation factor 
     D - Decimation factor 
     N - length of FIR filter used in the conversion process 
     filterType - Type of filter 

 Author: Darrel Judd 

Copyright (c) 2026 DSP Concepts, Inc.