MATLAB Coder for FSK Demodulation

30 views (last 30 days)
mounika on 23 Sep 2019
Commented: mounika on 25 Sep 2019
I am trying to generate c code for FSK Modulation and Demodulation. Following is my function for code generation:
function [modSignal,receivedData,errorStats] = test_my_FSK(data)
M = 4;
freqSep = 100;
fskMod_M = comm.FSKModulator(M,freqSep,'BitInput',true);
fskDemod_M = comm.FSKDemodulator(M,freqSep,'BitOutput',true);
err = comm.ErrorRate;
modSignal = zeros((fskMod_M.SamplesPerSymbol*(length(data)/2)),1)+0i;
receivedData = zeros(length(data),1);
errorStats = zeros(3,1);
for counter = 1:10
modSignal = step(fskMod_M,data);
receivedData = step(fskDemod_M,modSignal);
errorStats = step(err,data,receivedData);
In the above function, you can observe that I have both FSK modulation and Demodulation. I have no issues converting the modulation part into mex, but when it comes to demodulation it throws the following error:
Matlab Coder Error.JPG
I was successful in generating mex for just the modulation part, only when I include the demodulation part it fails. Kindly advise.
Also, I observed that,
class for FSK Modulation :
Whereas that of the demodulator is,
I have checked MATLAB documentation for comm.FSKDemodulator, it says it is supported for C code generation.
Your help will be greatly appreciated. Kindly advise
mounika on 24 Sep 2019
Hi Denis,
Couldn't attach the .prj file (It says unsupported format).
Attached the .m file and the test file
MATLAB 18b, Win64
Kindly suggest any other alternate way to do this code generation.
Also, does M-FSK modulator & demodulator block support code generation for C in Simulink

Sign in to comment.

Accepted Answer

Vivek Selvam
Vivek Selvam on 24 Sep 2019
Hi Mounika,
Code generation is successful when using Name-Value pairs for comm.FSKDemodulator as follows:
fskDemod_M = comm.FSKDemodulator('ModulationOrder',M,'FrequencySeparation',freqSep,'BitOutput',true);
The equivalent Simulink blocks (M-FSK Modulator Baseband and M-FSK Demodulator Baseband) support C code generation:
>> web(fullfile(docroot, 'comm/ref/mfskmodulatorbaseband.html'))
>> web(fullfile(docroot, 'comm/ref/mfskdemodulatorbaseband.html'))
Thanks for reporting this bug.
  1 Comment
mounika on 25 Sep 2019
Thanks a lot Vivek. That solved my issue.
Best Regards,

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!