UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 32344

LogiCORE FIR Compiler v4.0 - How do I access the reload order information when using the FIR Compiler v4.0 in System Generator for DSP?

Description

Keywords : FIR, v4.0, crash, coregen,

How do I access the reload order information when using the FIR Compiler v4.0 in System Generator for DSP?

Solution

The order in which the FIR filter is loaded is determined by the configuration of the FIR Compiler. A utility function called xlGetReloadOrder is also provided to determine this order.

xlGetReloadOrder
xlGetReloadOrder is a MATLAB utility function that returns the mapping between the time order of the reloaded coefficient and their tap position in the FIR filter. The function xlGetReloadOrder accepts the following arguments:
- n_taps: number of filter taps in the FIR Compiler
- coef_struct: Specifies the coefficient structure. It can take one of the following String values:
--- 'Symmetric'
--- 'Negative-Symmetric'
--- 'Halfband'
--- 'Non-Symmetric'
- filter_type: Specifies the type of filter being used. It can take one of the following numeric values:
--- 'SingleRate'
--- 'Decimation'
--- 'Interpolation'
- rate_change: Interpolation or decimation rate change (1-16)
- overclock: overclocking factor (1 ? n_taps)
- multiple_column_support: Disable or custom specify multiple column support:
--- 'Disabled'
--- 'Custom'
- first_column_length: Integer specifying the first column length when multiple column support is enabled
- column_wrap_length: Integer specifying the column wrap length when multiple
column support is specified

For example, the coefficient reload order of a FIR Compiler block configured as a 16-tap symmetric coefficients decimate by 2 filter, which is overclocked by 2, can be obtained as shown below:
>> xlGetReloadOrder( 16, 'Symmetric', 'Decimation', 2, 2, 'Disabled', 4, 32)
ans =
5
7
4
6
1
3
0
2

The utility returns a vector that captures the reload order. The first element of the vector here is 5. This implies that the first coefficient passed to the Fir Compiler forms the 5th tap of the FIR filter (and hence also the 10th because the filter has a symmetric coefficient structure). Similarly, the second element value is 7 which denotes that the 2nd coefficient passed to the FIR Compiler forms the 7th (and also 8th) tap of the FIR filter.

Symmetric Interpolation

Symmetric interpolation cases have a reload scheme that is different from all the others in that the coefficients are loaded in a combined manner. Under this configuration the xlGetReloadOrder returns a string describing the combination:
>> xlGetReloadOrder(16, 'Symmetric', 'Interpolation', 2, 2, 'Disabled', 4, 32)
ans = {4 - 5} {6 - 7} {4 + 5} {6 + 7} {0 - 1} {2 - 3} {0 + 1} {2 + 3}

The above string implies that the first sample clocked into the coef_din port is interpreted as the difference between coefficient 4 and coefficient 5. The second sample is interpreted as the difference between coefficient 6 and coefficient 7.


Please see (Xilinx Answer 29138) for a detailed list of LogiCORE FIR Compiler Release Notes and Known Issues.

AR# 32344
Date Created 03/30/2009
Last Updated 03/31/2009
Status Active
Type General Article