Main Content

Support NE10 Library C Code Generation of dsp.FIRFilter in MATLAB Function Block

This example shows how to use the Code Replacement Library (CRL) for Raspberry Pi® hardware with DSP System object™. The model uses a MATLAB Function that contains a dsp.FIRFilter System object to filter two sine waves of different frequencies.

Task 1: Simulate and Setup the Model for Code Replacement

1. Open the ex_fir_ne10_tut_mlfun Simulink model.

This Simulink model contains a function block and the dsp.FIRFilter System object. Inside the MATLAB Function firfun, the dsp.FIRFilter System object is created just once and is declared to be persistent. This eliminates the overhead in creating new instances of a System object each time the function is called. It also allows users to execute the step function of the dsp.FIRFilter object multiple times with a persistent state by simply running the model with the MATLAB Function block in multiple time steps.

2. Change your current folder in MATLAB® to a writable folder.

3. Go to Modeling > Model Settings to open the Configuration Parameters dialog box.

4. Click Hardware Implementation pane, and select Raspberry Pi from the list of Hardware board parameter.

5. Click Apply and OK.

6. Simulate and setup the model for ARM® Cortex®-A code replacement by following Tasks 1 and 2 of Verify FIR Filter on ARM Cortex-A Processor (Embedded Coder) example.

Task 2: Configure the dsp.FIRFilter System Object for Code Replacement

1. Open the MATLAB Function block within the FIR subsystem.

2. Verify that the dsp.FIRFilter System object has the following settings for its properties:

  • Structure: Direct form (default)

  • NumeratorSource: Property (default)

  • InitialConditions: 0 (default)

Task 3: Generate Code

1. Generate code for the FIR subsystem by following Task 3 of the Verify FIR Filter on ARM Cortex-A Processor (Embedded Coder) example.

2. In the code generation report, click on the FIR.c file. Notice the NE10 functions, ne10_fir_init_float and ne10_fir_float_neon in the model's step function, FIR_step.

Task 4: Use Processor in the Loop (PIL)

The following example shows you how to use PIL with Raspberry Pi hardware:

Code Verification and Validation with PIL and Communicate with Raspberry Pi Hardware example.