DUC Overview

The DUC is a halfband polyphase filter that both interpolates and filters the output of the channel filter.  This filter is the first in a series of filters that converts the baseband signal into a passband signal.  The filter has the property that the out of band attenuation is at least -60dB.


MATLAB Design Files

As with the channel filter, we were given MATLAB files as a starting point for the design.  The files were then modified to suit our specific needs.

Halfband_Filter.m

MATLAB Quantization Function (Download)


MATLAB Design Plots

Halfband Floating Point Filter

Halfband Floating Point Filter

Halfband Quantized Filter

Halfband Quantized Filter

 
Floating Point and Quantized Filters Overlaid

Floating Point and Quantized Filters Overlaid

 
Channel Filter and Halfband Filter Composite

Channel Filter and Halfband Filter Composite


FPGA Implementation

Xilinx FIR Compiler Guide, Page 37

Xilinx FIR Compiler Guide, Page 37


Vivado HLS Design Files

After the filter was designed in MATLAB, it was then designed in Vivado HLS.  The links for the HLS source code are below:

DUC.h

DUC.cpp

tb_DUC.cpp


Vivado Design Results

The following is the calculated RMS error from the HLS test bench:

number of input test vectors = 20000
number of output test vectors = 40000
Real rms error = 0.000191029
% Real rms error = 0.0191029%
Imaginary rms error = 0.000186151
% Imaginary rms error = 0.0186151%

Next are the resource utilization and timing results for the solution:

Halfband Filter Directives

Halfband Filter Directives

 
Halfband Filter Metrics

Halfband Filter Metrics


MATLAB Error Calculations

Finally, the MATLAB error calculations were performed against the HLS filter output and the golden reference data.

Halfband_Filter_Error_Calc.m

The MATLAB RMS error calculations are below and match the HLS calculations:

Number of output samples = 40000
RMS error, real = 0.000191
%RMS error, real = 0.019103%
RMS error, imaginary = 0.000186
%RMS error, imaginary = 0.018615%


MATLAB Output Plots

Halfband Filter PSD

Halfband Filter PSD


Second Stage DUC

The second halfband filter was created in MATLAB only.

Second_Halfband_Filter.m

The composite frequency response of the channel filter and two halfband filters is below:

 
Composite Response of the Channel Filter and Two Halfband Filters

Composite Response of the Channel Filter and Two Halfband Filters