I would like to export BER data from a simple system using LDPC encoder and decoder into the Communication Toolbox's BER Tool and plot a BER curve.
I have modified the example system using LDPC, commdvbs2.mdl, which is available in the Help menu at Demos > Simulink Demos > Application-Specific Examples > DVB-S.2 Link, Including LDPC Coding.
To simplify it, I removed the General Block Interleaver and General Block Deinterleaver. I also removed the BCH Encoder and BCH Decoder. To compensate for the lack of the BCH Encoder, I changed the Zero Pad within the BBFRAME buffering block to have a column size of dvb.BCHCodewordLength
instead of dvb.BCHMessageLength
.
I changed the AWGN block to have the following parameters:
Mode: Signal to noise ratio (Eb/No)
Eb/No (db): dvb.EsNodB / log2(dvb.BitsPerSymbol)
Number of bits per symbol: dvb.BitsPerSymbol
Symbol period (s): dvb.BitPeriod * dvb.BitsPerSymbol
So far, this all works. If I change the model parameters to have an Es/No of 1 dB, I still get a 0 BER and 0 PER.
But now I'm having a problem getting the BER out of the model and plotted in the BER Tool.I added a "To Workspace" block and connected the output of the BER Error Rate calculator to that. I named the variable ber_out
and set the limit data point to last 1
.
Then I change the Eb/No of the AWGN block to be: EbNo
, which is the vector that the BER Tool steps through to plot BER. (Saved these changes to the model under a new name.)
In the BER Tool, I go to the Monte Carlo tab. I set the Eb/No range to be: 0:0.2:2
. Set BER variable name to be: ber_out
.
After I run the simulation, I get a plot of nothing. The Diagnostics Tool pops up with these two messages:
Source: commdvbs2_noBCH_noInterleave_EbNo_BERTool. Error evaluating 'StopFcn' callback of block_diagram 'commdvbs2_noBCH_noInterleave_EbNo_BERTool'. Source: unknown. Vectors must be the same lengths.
What am I doing wrong?
(MATLAB version is 2012a.)