Communications System Toolbox™ Release Notes

Communications System Toolbox™ Release Notes
How to Contact MathWorks
Latest news:
www.mathworks.com
Sales and services:
www.mathworks.com/sales_and_services
User community:
www.mathworks.com/matlabcentral
Technical support:
www.mathworks.com/support/contact_us
Phone:
508-647-7000
The MathWorks, Inc.
3 Apple Hill Drive
Natick, MA 01760-2098
Communications System Toolbox™ Release Notes
© COPYRIGHT 2011–2015 by The MathWorks, Inc.
The software described in this document is furnished under a license agreement. The software may be used
or copied only under the terms of the license agreement. No part of this manual may be photocopied or
reproduced in any form without prior written consent from The MathWorks, Inc.
FEDERAL ACQUISITION: This provision applies to all acquisitions of the Program and Documentation
by, for, or through the federal government of the United States. By accepting delivery of the Program
or Documentation, the government hereby agrees that this software or documentation qualifies as
commercial computer software or commercial computer software documentation as such terms are used
or defined in FAR 12.212, DFARS Part 227.72, and DFARS 252.227-7014. Accordingly, the terms and
conditions of this Agreement and only those rights specified in this Agreement, shall pertain to and
govern the use, modification, reproduction, release, performance, display, and disclosure of the Program
and Documentation by the federal government (or other entity acquiring for or through the federal
government) and shall supersede any conflicting contractual terms or conditions. If this License fails
to meet the government's needs or is inconsistent in any respect with federal procurement law, the
government agrees to return the Program and Documentation, unused, to The MathWorks, Inc.
Trademarks
MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See
www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand
names may be trademarks or registered trademarks of their respective holders.
Patents
MathWorks products are protected by one or more U.S. patents. Please see
www.mathworks.com/patents for more information.
Contents
R2015a
Symbol Timing Synchronizer: Correct for symbol timing
clock skew between a transmitter and receiver . . . . . . . .
1-2
Carrier Synchronizer: Synchronize phase and frequency on a
received waveform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-2
Baseband and Broadcast FM: Modulate and demodulate
baseband and broadcast FM signals . . . . . . . . . . . . . . . . . .
1-2
Interactive QAM Example: Simulate an end-to-end QAM link
with RF impairments and corrections . . . . . . . . . . . . . . . .
1-2
Communications System Toolbox Simulink Model Template:
Automatically configure the Simulink environment for
communications modeling . . . . . . . . . . . . . . . . . . . . . . . . . .
1-3
Library for HDL-supported Communications System Toolbox
blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-3
Frame-based processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Input processing parameter set to Inherited . . . . . . . .
Rate options parameter set to Inherit from input . . . . . . . . .
1-3
1-3
1-4
Class definitions now available for MATLAB-authored
System objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-6
Functionality being changed or removed . . . . . . . . . . . . . . . .
1-8
Support Package for USRP® Radio Bus Series and X Series
Board Support (Introduced November 2014) . . . . . . . . . . .
1-9
iii
Support Package for Xilinx Zynq-Based Radio (Introduced
November 2014) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Supported Hardware and Software . . . . . . . . . . . . . . . . . . .
1-10
1-10
R2014b
I/Q Imbalance Compensator System object and block that
remove I/Q amplitude and phase imbalance . . . . . . . . . . .
2-2
Eye Diagram block that plots eye diagrams faster than its
predecessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-2
Channel visualization for plotting impulse response,
frequency response, and Doppler spectrum added to the
Rayleigh, Rician, and MIMO Channel System objects . . . .
2-2
Sum-of-sinusoids modeling technique added to the Rayleigh,
Rician, and MIMO Channel System objects . . . . . . . . . . . .
2-2
Trajectory diagram visualization added to the Constellation
Diagram block and System object . . . . . . . . . . . . . . . . . . . .
2-3
Support Package for RTL-SDR Radio Update . . . . . . . . . . . .
Linux Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mac Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-3
2-3
2-3
R2014a
iv
Contents
OFDM modulator and demodulator System objects and
blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-2
DC blocker System object and block . . . . . . . . . . . . . . . . . . . .
3-2
Direct and nondirect modes for HDL-optimized CRC
generator and detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-2
Additional featured examples such as 802.11 OFDM
synchronization and HDL Optimized QAM Transmitter and
Receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-2
APP Decoder System object parameter change . . . . . . . . . . .
3-3
GPU System Object Support in System Block . . . . . . . . . . . .
3-3
System object templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-3
System objects infer number of inputs and outputs from
stepImpl method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-4
System objects setupImpl method enhancement . . . . . . . . . .
3-4
System objects base class renamed to matlab.System . . . . . .
3-4
System objects Propagates mixin methods . . . . . . . . . . . . . .
3-4
System objects infoImpl method allows variable inputs . . . .
3-5
Support Package for RTL-SDR Radio (v 14.1.0) . . . . . . . . . . .
Key Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Blocks and System Objects . . . . . . . . . . . . . . . . . . . . . . . . . .
RTL-SDR Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hardware and Software Requirements . . . . . . . . . . . . . . . . .
3-5
3-5
3-5
3-5
3-6
Support Package for Xilinx FPGA-Based Radio updates (v
14.1.0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Intermediate frequency tuning . . . . . . . . . . . . . . . . . . . . . . .
DC blocking filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
QPSK targeting examples . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-6
3-6
3-7
3-7
R2013b
Simulink blocks for MIMO channel, sphere decoder, and
constellation diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2
Code generation for all MIMO channel Doppler spectra . . .
4-2
v
Open-loop PSK and QAM carrier synchronizers in
MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-3
HDL-Optimized QPSK Receiver with Captured Data . . . . . .
4-3
Raised cosine transmit and receive filter System objects . .
4-3
Rayleigh and Rician fading channel System objects . . . . . . .
4-3
System objects matlab.system.System warnings . . . . . . . . . .
4-3
Restrictions on modifying properties in System object Impl
methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-4
Block parameter prompt changes for raised cosine filter
blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-5
NumTransmitAntennas and NumReceiveAntennas properties
added back to MIMOChannel System object. . . . . . . . . . . .
4-7
Functionality Being Changed or Removed . . . . . . . . . . . . . .
Migrate Code from firrcos and rcosfir to rcosdesign . . . . . . . .
4-7
4-8
Support Package for Xilinx FPGA-Based Radio . . . . . . . . .
4-11
R2013a
vi
Contents
Sphere Decoder System object for MIMO receiver
processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-2
Constellation Diagram System object with measurements . .
5-2
LTE space-frequency block coding and LTE GPU-accelerated
turbo coding examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-2
HDL code generation for CRC Generator, CRC Detector, RS
Encoder, and RS Decoder System objects . . . . . . . . . . . . .
5-2
Variable-size support for AWGN, MIMO, and LTE MIMO
Channel System objects . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-3
IEEE 802.11 WLAN - HDL optimized beacon frame receiver
example with captured data . . . . . . . . . . . . . . . . . . . . . . . .
5-3
Automatic gain controller block and System object . . . . . . .
5-3
Additional CRC algorithm implementation . . . . . . . . . . . . . .
5-3
ATSC digital television example . . . . . . . . . . . . . . . . . . . . . . .
5-4
Disable second output port on APP Decoder . . . . . . . . . . . . .
5-4
Behavior change of locked System objects for loading, saving,
and cloning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-4
Dynamic memory allocation based on size . . . . . . . . . . . . . .
5-4
Naming convention change for LTE examples . . . . . . . . . . .
5-5
APP Decoder System Object parameter change . . . . . . . . . .
5-6
Functions to remain in the product . . . . . . . . . . . . . . . . . . . .
5-6
Communications System Toolbox Functionality Being
Changed or Removed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Update Legacy Code to use System object . . . . . . . . . . . . . . .
5-7
5-7
R2012b
Support for C code generation for all System objects in
Communications Systems Toolbox . . . . . . . . . . . . . . . . . . .
6-2
Support for HDL code generation for Reed-Solomon encoder,
decoder, and CRC detector blocks . . . . . . . . . . . . . . . . . . .
6-2
Support for HDL code generation for Rectangular QAM and
PSK Demodulator System objects . . . . . . . . . . . . . . . . . . . .
6-3
vii
LTE Zadoff-Chu sequence generator function . . . . . . . . . . . .
6-3
LTE downlink shared channel example . . . . . . . . . . . . . . . . .
6-3
Phase Noise block and System object, specifying phase noise
spectrum with a vector of frequencies . . . . . . . . . . . . . . . .
6-3
IEEE 802.11 beacon with captured data example . . . . . . . . .
6-4
P25 spectrum sensing example . . . . . . . . . . . . . . . . . . . . . . . .
6-4
MATLAB-based QPSK transceiver example . . . . . . . . . . . . . .
6-4
Design Iteration Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-4
Constellation method for modulator and demodulator
System objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-5
Specify initial states of Gold Sequence Generator and PN
Sequence Generator System objects . . . . . . . . . . . . . . . . . .
6-5
System object tunable parameter support in code
generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-5
save and load for System objects . . . . . . . . . . . . . . . . . . . . . .
6-6
Save and restore SimState not supported for System
objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-6
Communications System Toolbox Functionality Being
Changed or Removed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Update Legacy Code to use System objects . . . . . . . . . . . . . .
6-6
6-7
Frame-Based Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-19
R2012a
MIMO Multipath Fading Channel System Objects . . . . . . . .
viii
Contents
7-2
Multi-H Support for CPM Modulator and Demodulator
Simulink Blocks and MATLAB System Objects . . . . . . . . .
7-2
GPU System Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-2
MATLAB Compiler Support for GPU System Objects . . . . . .
7-3
Code Generation Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-3
HDL Code Generation from MATLAB code . . . . . . . . . . . . . .
7-3
HDL Support For HDL CRC Generator Block . . . . . . . . . . . .
7-3
Enhancements for System Objects Defined by Users . . . . . .
Code Generation for System Objects . . . . . . . . . . . . . . . . . . .
New System Object Option on File Menu . . . . . . . . . . . . . . .
Variable-Size Input Support for System Objects . . . . . . . . . .
Data Type Support for System Objects . . . . . . . . . . . . . . . . .
New Property Attribute to Define States . . . . . . . . . . . . . . . .
New Methods to Validate Properties and Get States from
System Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
matlab.system.System changed to matlab.System . . . . . . . . .
7-4
7-4
7-4
7-4
7-4
7-4
New and Enhanced Demos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-5
Functionality Being Changed or Removed . . . . . . . . . . . . . .
7-5
Frame-Based Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inherited Option of the Input Processing Parameter Now
Warns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inherited Option of the Rate Options Parameter Now Warns
7-9
7-4
7-4
7-9
7-10
R2011b
New Demos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-2
Turbo Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-2
USRP2 Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-2
ix
GPU System Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-2
Custom System Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-3
Variable-Size Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-3
System Object Code Generation Support . . . . . . . . . . . . . . . .
8-4
Delayed Reset for Viterbi Decoder . . . . . . . . . . . . . . . . . . . . .
8-4
System Objects FullPrecisionOverride Property Added . . . .
8-5
APP Decoder System Object Parameter Change . . . . . . . . . .
8-6
System Object DataType and CustomDataType Properties
Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-6
Conversion of System Object Error and Warning Message
Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-7
Frame-Based Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-8
R2011a
x
Contents
Product Restructuring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-2
LDPC Encoder and Decoder System Objects . . . . . . . . . . . . .
9-2
LDPC GPU Decoder System Object . . . . . . . . . . . . . . . . . . . . .
9-2
Variable-Size Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-2
Algorithm Improvements for CRC Blocks . . . . . . . . . . . . . . .
9-3
MATLAB Compiler Support for System Objects . . . . . . . . . .
9-4
'Internal rule' System Object Property Values Changed to
'Full precision' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-4
System Object Code Generation Support . . . . . . . . . . . . . . . .
9-4
LDPC Decoder Block Warnings . . . . . . . . . . . . . . . . . . . . . . . .
9-4
Phase/Frequency Offset Block and System Object Change .
9-5
Derepeat Block Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-5
Version 2, 2.5, and 3.0 Obsolete Blocks Removed . . . . . . . . . .
9-5
System Objects Input and Property Warnings Changed to
Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-6
Frame-Based Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
General Product-Wide Changes . . . . . . . . . . . . . . . . . . . . . . .
Blocks with a New Input Processing Parameter . . . . . . . . . .
AWGN Channel Block Changes . . . . . . . . . . . . . . . . . . . . . .
Multirate Processing Parameter Changes . . . . . . . . . . . . . .
Sample-Based Row Vector Processing Changes . . . . . . . . . .
CMA Equalizer Changes . . . . . . . . . . . . . . . . . . . . . . . . . . .
Differential Encoder Changes . . . . . . . . . . . . . . . . . . . . . . .
Find Delay and Align Signal Block Changes . . . . . . . . . . . .
9-6
9-7
9-8
9-9
9-10
9-11
9-13
9-13
9-13
New Demos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-13
xi
R2015a
Version: 6.0
New Features
Bug Fixes
Compatibility Considerations
R2015a
Symbol Timing Synchronizer: Correct for symbol timing clock skew
between a transmitter and receiver
This release adds a new comm.SymbolSynchronizer System object™ and Symbol
Synchronizer block to provide symbol timing synchronization between a single-carrier
transmitter and receiver.
Carrier Synchronizer: Synchronize phase and frequency on a received
waveform
This release adds a comm.CarrierSynchronizer System object and Carrier
Synchronizer block to provide carrier phase and frequency synchronization between a
single-carrier transmitter and receiver for PSK and QAM modulation schemes.
Baseband and Broadcast FM: Modulate and demodulate baseband and
broadcast FM signals
This release adds the following System objects and blocks to provide baseband and
broadcast FM modulation and demodulation capability.
• comm.FMBroadcastModulator
• comm.FMBroadcastDemodulator
• comm.FMDemodulator
• comm.FMModulator
• FM Broadcast Demodulator
• FM Broadcast Modulator
• FM Demodulator
• FM Modulator
Interactive QAM Example: Simulate an end-to-end QAM link with RF
impairments and corrections
This release adds an interactive MATLAB® example, featuring a graphical user interface,
which shows the effects of RF impairments and corrections on an end-to-end QAM link
simulation. See “End-to-End QAM Simulation”.
1-2
Communications System Toolbox Simulink Model Template: Automatically
configure the Simulink environment for communications modeling
The Communications System Toolbox™ Simulink® model template enables reuse of
settings, including configuration parameters. Create models from the template to
encourage best practices and take advantage of previous solutions to common problems.
Instead of the default canvas of a new model, use the template model to create a skeletal
model using settings recommended for Communications System Toolbox.
You can use the built-in template or create templates from models that you already
configured for your environment or application.
For more information, see “Configure the Simulink Environment for Communications
Models”.
Library for HDL-supported Communications System Toolbox blocks
To find Communications System Toolbox blocks that support HDL code generation, from
the Simulink library browser, open the ‘Communications System Toolbox HDL Support’
library. Alternatively, at the MATLAB command prompt, enter commhdllib.
The blocks in this library have parameters set for HDL code generation. To generate
HDL code, you must have an HDL Coder™ license.
Frame-based processing
As part of general product-wide changes pertaining to Frame-Based processing, certain
block options that use the frame attribute of the input signal now cause an error.
The following sections provide more detailed information about the specific R2015a
Communications System Toolbox software changes for frame-based processing:
• “Input processing parameter set to Inherited” on page 1-3
• “Rate options parameter set to Inherit from input” on page 1-4
Input processing parameter set to Inherited
Setting the Input processing parameter to Inherited now causes an error in these
blocks:
• AWGN Channel
1-3
R2015a
• Gaussian Filter
• Windowed Integrator
• Derepeat
• Ideal Rectangular Pulse Filter
• Raised Cosine Transmit Filter
• Raised Cosine Receive Filter
• Repeat
Compatibility Considerations
To ensure consistent results for models created in previous releases, set Input
processing to:
• Columns as channels (frame based), for frame-based input signals (doubleline)
• Elements as channels (sample based), for sample-based signal input signals
(single-line)
After compiling the model, frame-based signals appear as double lines. Sample-based
signals appear as single lines.
For models created in R2015a:
• To treat each column of the input signal as an independent channel, set Input
processing to Columns as channels (frame based).
• To treat each element of the input signal as an independent channel, set Input
processing to Elements as channels (sample based).
Simulink Upgrade Advisor
If you are not sure which Input processing option applies to your model and choose
Inherited instead, use the Simulink Upgrade Advisor to update your model.
For more information, see the DSP System Toolbox™ release notes.
Rate options parameter set to Inherit from input
Setting the Rate options parameter to Inherit from input now causes an error for
these blocks:
1-4
• M-FSK Modulator Baseband
• M-FSK Demodulator Baseband
• OQPSK Modulator Baseband
• OQPSK Demodulator Baseband
• CPM Modulator Baseband
• CPM Demodulator Baseband
• GMSK Modulator Baseband
• GMSK Demodulator Baseband
• MSK Modulator Baseband
• MSK Demodulator Baseband
• CPFSK Modulator Baseband
• CPFSK Demodulator Baseband
• Repeat
• Derepeat
• Raised Cosine Receive Filter
• Raised Cosine Transmit Filter
Compatibility Considerations
To ensure consistent results for models created in older releases, set Rate options to:
• Allow multirate processing, for sample-based input signals
• Enforce single-rate processing, for frame-based input signals
For models created in R2015a:
• To run the block in single-rate mode, set Rate options to Enforce single-rate
processing.
• To run the block in multirate mode, set Rate options to Allow multirate
processing.
Simulink Upgrade Advisor
If you are not sure which option to choose, run these Simulink Upgrade Advisor checks:
1-5
R2015a
• Check model for block upgrade issues requiring compile time
information, for blocks in a model
• Check model for custom library blocks that rely on frame status of
the signal, for blocks in a custom library
Class definitions now available for MATLAB-authored System objects
You can now view the MATLAB code for the following System object class definitions in
the <matlabroot>/toolbox/comm/comm/+comm folder:
• ACPR.m
• AGC.m
• AWGNChannel.m
• BarkerCode.m
• BinarySymmetricChannel.m
• CarrierSynchronizer.m
• CCDF.m
• ConstellationDiagram.m
• DifferentialDecoder.m
• DifferentialEncoder.m
• DiscreteTimeVCO.m
• FMBroadcastDemodulator.m
• FMBroadcastModulator.m
• FMDemodulator.m
• FMModulator.m
• GeneralQAMTCMModulator.m
• GoldSequence.m
• HadamardCode.m
• HelicalDeinterleaver.m
• HelicalInterleaver.m
• IQImbalanceCompensator.m
• LTEMIMOChannel.m
• MemorylessNonlinearity.m
1-6
• MIMOChannel.m
• OFDMDemodulator.m
• OFDMModulator.m
• OVSFCode.m
• PhaseNoise.m
• PSKCoarseFrequencyEstimator.m
• PSKTCMModulator.m
• QAMCoarseFrequencyEstimator.m
• RaisedCosineReceiveFilter.m
• RaisedCosineTransmitFilter.m
• RayleighChannel.m
• RectangularQAMTCMModulator.m
• RicianChannel.m
• RSDecoder.m
• RSEncoder.m
• SphereDecoder.m
• SymbolSynchronizer.m
• ThermalNoise.m
• TurboDecoder.m
• TurboEncoder.m
• WalshCode.m
You can also view the MATLAB code for the following System object class definitions in
the <matlabroot>/toolbox/comm/comm/+comm/+internal folder:
• CDF.m
• CDFEvaluation.m
• CoarseFrequencyEstimatorBase.m
• ConstellationBase.m
• DopplerVisualization.m
• FadingChannel.m
• FMModemBase.m
1-7
R2015a
• GoldSequenceXor.m
• MeasureBase.m
• MultiBandFilter.m
• OFDMBase.m
• PathGainsVisualization.m
• Percentile.m
• PowerMeasurements.m
• Probability.m
• RaisedCosineFilterBase.m
Functionality being changed or removed
The following functions are being removed:
Function
Use This Instead
rsdecof
comm.RSDecoder
rsencof
comm.RSEncoder
The following blocks will be removed in a future release.
Block
Use This Instead
M-PSK Phase Recovery
Carrier Synchronizer
Squaring Timing Recovery
Symbol Synchronizer
Early-Late Gate Timing Recovery
Symbol Synchronizer
Gardner Timing Recovery
Symbol Synchronizer
Mueller-Muller Timing Recovery
Symbol Synchronizer
The following System objects will be removed in a future release.
System object
Use This Instead
comm.PSKCarrierPhaseSynchronizer
comm.CarrierSynchronizer
comm.EarlyLateGateTimingSynchronizer
comm.SymbolSynchronizer
comm.GardnerTimingSynchronizer
1-8
comm.SymbolSynchronizer
System object
Use This Instead
comm.MuellerMullerTimingSynchronizer
comm.SymbolSynchronizer
Support Package for USRP® Radio Bus Series and X Series Board Support
(Introduced November 2014)
The Communications System Toolbox Support Package for USRP® Radio now supports
the B200, B210, X300, and X310 boards from Ettus Research®1.
Key Features
• System object and block support for Bus Series and X Series Radio SDR development:
• SDRu Receiver
• SDRu Transmitter
• comm.SDRuReceiver
• comm.SDRuTransmitter
• Updated UHD support version 003.007.003
• Functions findsdru and probesdru updated to find and report information for Bus
Series and X Series radios.
• Function sdruload updated to provide firmware/FPGA loading support for Bus
Series and X Series radios.
These blocks and System objects provide SISO support and enable you to configure the
master clock rate.
Note: The master clock rate is different for the Bus Series and X Series radios than it is
for the N Series radios. As such, the interpolation and decimation factors specified for N
Series radios give different results for the Bus Series and X Series radios. Adjust your
interpolation and decimation factors for USRP® blocks and System objects to achieve the
same baseband rates that you used for the N Series radios.
Limitations
1.
USRP, USRP2, UHD, and Ettus Research are trademarks of National Instruments Corp.
1-9
R2015a
• Communications System Toolbox Support Package for USRP Radio is not supported
on Windows® 8 operating systems.
Support Package for Xilinx Zynq-Based Radio (Introduced November
2014)
Design and prototype SDR applications with Zynq-based radio hardware. Supports the
use of Zynq-based radio as an I/O peripheral to send and receive arbitrary waveforms
from and to MATLAB and Simulink. Includes MATLAB System objects, Simulink blocks,
and a full Zynq®-based hardware design to transmit and receive data from the hardware
using a Gigabit Ethernet connection. In addition , this support package enables you to
customize the FPGA logic for prototyping your SDR applications from Simulink using
HDL Coder (FPGA Targeting).
For more information, see “Xilinx Zynq-Based Radio Support from Communications
System Toolbox”.
Supported Hardware and Software
Hardware Support
Development Board
RF Boards
I/O
FPGA
Peripheral Targeting
Support
Support
Xilinx® Zynq-7000
All Programmable
SoC ZC706
Evaluation Kit
• Analog Devices™ FMCOMMS1 RevB/C
Yes
Yes
Avnet ZedBoard™
• Analog Devices FMCOMMS1 RevB/C
Yes
No
• Analog Devices FMCOMMS2
• Analog Devices FMCOMMS3
Avnet Zynq-7000 All Programmable SoC /
AD9361 Software-Defined Radio Systems
Development Kit (includes ZC706 and
FMCOMMS3)
• Analog Devices FMCOMMS2
• Analog Devices FMCOMMS3
Avnet Zynq-7000 All Programmable SoC /
AD9361 Software-Defined Radio Evaluation
Kit (includes ZedBoard and FMCOMMS2)
1-10
Caution ZedBoard Rev B and earlier revisions must have a heat sink attached. (Rev C
and later revisions have the heat sink attached already.) If your board has an FMC radio
attached but no heat sink, the Zynq processor overheats and stops working.
To acquire a heat sink you can attach yourself, see the Avnet Express website: CTS
BDN09-3CB/A01 Extruded Heat Sink.
For more information, see http://zedboard.org/content/updated-rev-c-schematicbom.
Note: If you find that the FMCOMMS RF card tends to fall out of the slot on the Zynq
development board, especially when using a heavy antenna, use the standoffs that come
with the SDR development kit.
Required Third-Party Software
There is no required third-party software to use any of the supported radios in I/O mode.
For FPGA Targeting (ZC706 only), the following software is required:
• Xilinx Vivado® development tools version 2013.4.
• Xilinx SDK development tools version 2013.4.
Note: You must install Xilinx SDK at the same time that you install Vivado.
Required MathWorks Products
For all Support Package for Xilinx Zynq-based Radio software functionality, the following
MathWorks® products are required:
• MATLAB
• Signal Processing Toolbox™
• DSP System Toolbox
• Communications System Toolbox
For FPGA Targeting, the following products are also required:
• Simulink
• HDL Coder
1-11
R2015a
Recommended products:
• MATLAB Coder™
1-12
R2014b
Version: 5.7
New Features
Bug Fixes
Compatibility Considerations
R2014b
I/Q Imbalance Compensator System object and block that remove I/Q
amplitude and phase imbalance
This release adds an I/Q imbalance compensator to remove the amplitude and phase
imbalance between the in-phase and quadrature components of a modulated signal. In
addition to the compensator System object and block, two blocks and two functions were
added which converts an imbalance into a compensator coefficient and vice versa.
Eye Diagram block that plots eye diagrams faster than its predecessor
This release adds a new Eye Diagram Simulink block to the Comm Sinks library.
Compatibility Considerations
The Eye Diagram block is a replacement for the Discrete-Time Eye Diagram Scope
block. When existing models are loaded for the first time, the new eye diagram will
automatically replace the old Discrete-Time Eye Diagram Scope.
Channel visualization for plotting impulse response, frequency response,
and Doppler spectrum added to the Rayleigh, Rician, and MIMO Channel
System objects
Visualization capabilities for the comm.MIMOChannel, comm.RayleighChannel, and
comm.RicianChannel System objects and for the MIMO Channel block have been added
for this release.
Sum-of-sinusoids modeling technique added to the Rayleigh, Rician, and
MIMO Channel System objects
This release adds sum-of-sinusoids modeling to the comm.MIMOChannel,
comm.RayleighChannel, and comm.RicianChannel System objects. Sum-of-sinusoids is
ideally suited to modeling bursty channels and is an addition to the filtered Gaussian
noise technique.
2-2
Trajectory diagram visualization added to the Constellation Diagram
block and System object
This release adds a signal trajectory diagram capability to the Constellation Diagram
block and the comm.ConstellationDiagram System object.
Compatibility Considerations
The enhanced Constellation Diagram block replaces the Discrete-Time Signal Trajectory
Scope block. When existing models are loaded for the first time, the Constellation
Diagram block with the Show Signal Trajectory option enabled will automatically
replace the old Discrete-Time Signal Trajectory Scope block.
Support Package for RTL-SDR Radio Update
Linux Support
With release R2014b, support has been added for using the Support Package for RTLSDR Radio on Linux® operating systems.
Versions of Linux supported by MATLAB can be found in System Requirements.
Mac Support
With release R2014b, support has been added for using the Support Package for RTLSDR Radio on Mac operating systems.
Versions of Mac supported by MATLAB can be found in System Requirements.
2-3
R2014a
Version: 5.6
New Features
Bug Fixes
Compatibility Considerations
R2014a
OFDM modulator and demodulator System objects and blocks
This release adds OFDM modulation and demodulation capability by the addition of
System objects and blocks. For more information, see the comm.OFDMModulator and
comm.OFDMDemodulator System object Help pages.
DC blocker System object and block
The release adds a new DC blocker System object and block. For more information, see
the dsp.DCBlocker Help page.
Direct and nondirect modes for HDL-optimized CRC generator and
detector
This release allows the selection of either the direct or non-direct algorithm for CRC
checksum calculations for the HDL-optimized CRC generator and detector System
objects and blocks. For more information, see the comm.HDLCRCDetector and the
comm.HDLCRCGenerator System object Help pages.
Additional featured examples such as 802.11 OFDM synchronization and
HDL Optimized QAM Transmitter and Receiver
Additional featured examples:
• 802.11 sychronization
• HDL Optimized QAM Transmitter and Receiver
Generate HDL code from hardware-optimized 64-QAM transmitter and receiver. This
example addresses real-world communications issues and generates HDL code for
FPGA implementation (HDL Coder license required).
• HDL Optimized QPSK Transmitter
This example shows how Simulink blocks that support HDL code generation can be
used to implement the baseband processing of a digital communications transmitter
(HDL Coder license required).
3-2
APP Decoder System object parameter change
Beginning in release R2012a, the Algorithm property replaced the MetricMethod
property for the APP Decoder System object. At this time, an error will occur in legacy
code that uses the MetricMethod property.
Compatibility Considerations
If you have any existing System object code that uses the MetricMethod property, you
must change the property to Algorithm.
GPU System Object Support in System Block
GPU System objects are now supported in the System Block. The following System
objects are supported in the current release:
• comm.gpu.AWGNChannel
• comm.gpu.BlockDeinterleaver
• comm.gpu.BlockInterleaver
• comm.gpu.ConvolutionalDeinterleaver
• comm.gpu.ConvolutionalEncoder
• comm.gpu.ConvolutionalInterleaver
• comm.gpu.PSKDemodulator
• comm.gpu.PSKModulator
• comm.gpu.TurboDecoder
• comm.gpu.ViterbiDecoder
See System Block Support for GPU System Objects.
System object templates
The MATLAB New > System object menu now has three new class-definition file
templates. The Basic template sets up a simple System object. The Advanced template
includes additional features of System objects. The Simulink Extension template
provides additional customization of the System object for use in the MATLAB System
block.
3-3
R2014a
System objects infer number of inputs and outputs from stepImpl
method
When you create a new kind of System object that has a fixed number of inputs
or outputs specified in the stepImpl method, you no longer need to include
getNumInputsImpl or getNumOutputsImpl in your class definition file. The correct
number of inputs and outputs are inferred from the stepImpl inputs and outputs,
respectively.
System objects setupImpl method enhancement
When you create a new kind of System object and include the setupImpl method, you
do not have to match the setupImpl method inputs to the stepImpl method inputs.
If your setupImpl method does not use any input characteristics, such as, data type or
size), you can include only the System object as the input argument.
System objects base class renamed to matlab.System
The System object base class, matlab.system.System has been rename to
matlab.System. If you use matlab.system.System when defining a new System
object, a error message results.
Compatibility Considerations
Change all instances of matlab.system.System in your System objects code to
matlab.System.
System objects Propagates mixin methods
Four new methods have been added to the Propagates mixin class. You use this mixin
when creating a new kind of System object for use in the MATLAB System block in
Simulink. You use these methods to query the input and specify the output of a System
object.
• propagatedInputComplexity
• propagatedInputDataType
• propagatedInputFixedSize
• propagatedInputSize
3-4
System objects infoImpl method allows variable inputs
When you create a new kind of System object, you can use the info method to provide
information specific to that object. The infoImpl method, which you include in your
class-definition file, now allows varargin as an input argument.
Support Package for RTL-SDR Radio (v 14.1.0)
Design and prototype software-defined radio (SDR) systems using MATLAB and
Simulink with the Communications System Toolbox Support Package for RTL-SDR
Radio.
For full access to features and documentation, download the support package from the
Hardware Support page. To get help for the RTL-SDR Radio support package after you
install it, enter help sdrr at the MATLAB command line.
• “Key Features” on page 3-5
• “Blocks and System Objects” on page 3-5
• “RTL-SDR Examples” on page 3-5
• “Hardware and Software Requirements” on page 3-6
Key Features
• RTL-SDR radio as an I/O peripheral to receive streaming RF signals
• Configurable center frequency and sample rate
• NooElec™ NESDR Mini USB Stick (R820T) and NooElec NESDR Nano USB Stick
(R820T) SDR devices with frequency range 30MHz – 1.8GHz
• Compatible with other RTL-SDR USB radios (for example, Terratec T-Stick E4000).
• Several application examples for getting started
Blocks and System Objects
• Simulink radio receiver block: RTL-SDR Receiver
• MATLAB radio System object: comm.SDRRTLReceiver
RTL-SDR Examples
• Spectrum Analysis with RTL-SDR Radio for MATLAB and Simulink
3-5
R2014a
• Frequency Offset Calibration with RTL-SDR Radio for MATLAB and Simulink
• FM Monophonic Receiver with RTL-SDR Radio for MATLAB and Simulink
• FM Stereo Receiver with RTL-SDR Radio for MATLAB and Simulink
• FRS/GMRS Walkie-Talkie Receiver with RTL-SDR Radio for MATLAB and Simulink
Enter sdrexamples at the MATLAB command prompt for a full index of SDR support
package examples.
Hardware and Software Requirements
For both MathWorks and third-party software and hardware requirements, see RTLSDR Support from Communications System Toolbox.
Support Package for Xilinx FPGA-Based Radio updates (v 14.1.0)
• “Intermediate frequency tuning” on page 3-6
• “DC blocking filter” on page 3-7
• “QPSK targeting examples” on page 3-7
Intermediate frequency tuning
This features supports a second stage tuning for both transmit and receive data paths.
Then tuner is configurable at run-time (tunable). It has a finer resolution compared to
the primary tuner on RF card, and the ability to remove unwanted interference from the
pass band of interest.
• Transmitter and Receiver blocks: Set the Intermediate Frequency parameter in
the block mask.
The intermediate frequency (IF) tuner allows you to account for the error in tuning
between target frequency and actual frequency.
• Transmitter and Receiver System objects: Set the IntermediateFrequency
property for the System object. For example:
so = comm.SDRADIFMCOMMSTransmitter;
so.IntermediateFrequency = txIFValue
See the reference pages for comm.SDRADIFMCOMMSReceiver,
comm.SDRADIFMCOMMSTransmitter, or comm.SDREpiqBitsharkReceiver.
3-6
• With the HDL Coder workflow advisor (for Simulink only): Choose to include or not
include the Intermediate Frequency tuner in the FPGA when using the targeting
workflow.
At step 4.1, Set SDR Options:
• For transmit, select Include transmitter intermediate frequency tuner.
• For receiver, select Include receiver intermediate frequency tuner.
DC blocking filter
Choose to bypass the DC bias removal filter. Use this feature when the filter is also
blocking some signal and you need to use a different DC bias compensation scheme. By
default, this option is not selected, which means to include the automatic DC blocking
filter.
• Blocks: Select parameter Bypass DC blocking filter.
See the reference pages for the Analog Devices FMCOMMS Receiver block, the
Analog Devices FMCOMMS Transmitter block, or the Epiq Bitshark Receiver block.
• System objects: Set property BypassDCBlockingFilter to true.
See the reference pages for comm.SDRADIFMCOMMSReceiver,
comm.SDRADIFMCOMMSTransmitter, or comm.SDREpiqBitsharkReceiver.
QPSK targeting examples
• Targeting HDL Optimized QPSK Receiver with SDR Platform: Learn how to
model an HDL-optimized QPSK receiver and prototype it on the SDR hardware using
the HDL Coder workflow advisor.
• Targeting HDL Optimized QPSK Transmitter with SDR Platform: Learn how
to model an HDL-optimized QPSK transmitter and prototype it on the SDR hardware
using the HDL Coder workflow advisor.
3-7
R2013b
Version: 5.5
New Features
Bug Fixes
Compatibility Considerations
R2013b
Simulink blocks for MIMO channel, sphere decoder, and constellation
diagram
This release includes a new MIMO Channel, sphere decoder, and constellation diagram
blocks.
The MIMO Channel block filters an input signal using a multiple-input multiple-output
(MIMO) multipath fading channel. For more information, see MIMO Channel.
The Sphere Decoder block offers MIMO receiver processing for communications systems
using spatial multiplexing with high data rates, such as 802.11n, LTE, and WiMAX. This
implementation offers maximum likelihood performance with reduced complexity. For
more information, see Sphere Decoder.
The Constellation Diagram block plots constellation diagrams and provides the ability
to perform EVM and MER measurements. The Constellation Diagram block replaces the
Discrete-Time Scatter Plot block. For more information, see Constellation Diagram.
Compatibility Considerations
The Constellation Diagram block display enforces a 1:1 aspect ratio. The Discrete-Time
Scatter Plot block, which the Constellation Diagram block replaces, does not enforce a 1:1
aspect ratio. For a non-unity display aspect ratio, you can use the Simulink XY Graph
block.
Code generation for all MIMO channel Doppler spectra
The comm.MIMOChannel System object now generates C code for the following Doppler
spectra:
• Rounded
• Bell
• Asymmetric Jakes
• Restricted Jakes
• Gaussian
• BiGaussian
• Flat
• Jakes
4-2
Open-loop PSK and QAM carrier synchronizers in MATLAB
This release provides new open-loop carrier synchronizer System objects, which allow you
to estimate and compensate for carrier offset due to transceiver impairments. For more
information, see:
• comm.PSKCoarseFrequencyEstimator
• comm.QAMCoarseFrequencyEstimator
HDL-Optimized QPSK Receiver with Captured Data
The example HDL Optimized QPSK Receiver with Captured Data shows how to optimize
an QPSK receiver for HDL code generation and hardware implementation. The HDLoptimized model shows a QPSK receiver that addresses real-world communications
issues like carrier frequency, phase offset, and timing recovery for the hardware
implementation.
Raised cosine transmit and receive filter System objects
This release provides new raised cosine transmit and receive filter System objects. For
more information, see:
• comm.RaisedCosineTransmitFilter
• comm.RaisedCosineReceiveFilter
Rayleigh and Rician fading channel System objects
This release provides new fading channel System objects. For more information, see:
• comm.RayleighChannel
• comm.RicianChannel
System objects matlab.system.System warnings
The System object base class, matlab.system.System, has been replaced by
matlab.System. If you use matlab.system.System when defining a new System
object, a warning message results.
4-3
R2013b
Compatibility Considerations
Change all instances of matlab.system.System in your System objects code to
matlab.System.
Restrictions on modifying properties in System object Impl methods
When defining a new System object, certain restrictions affect your ability to modify a
property.
You cannot use any of the following methods to modify the properties of an object:
• cloneImpl
• getDiscreteStateImpl
• getDiscreteStateSpecificationImpl
• getNumInputsImpl
• getNumOutputsImpl
• getOutputDataTypeImpl
• getOutputSizeImpl
• isInputDirectFeedthroughImpl
• isOutputComplexImpl
• isOutputFixedSizeImpl
• validateInputsImpl
• validatePropertiesImpl
This restriction is required by code generation, which assumes that these methods do not
change any property values. These methods are validation and querying methods that
are expected to be constant and should not impact the algorithm behavior.
Also, if either of the following conditions exist:
• You plan to generate code for the object
• The object will be used in the MATLAB System block
you cannot modify tunable properties for any of the following runtime methods:
• outputImpl
4-4
• processTunedPropertiesImpl
• resetImpl
• setupImpl
• stepImpl
• updateImpl
This restriction prevents tunable parameter updates within the object from interfering
with updates from outside the generated code. Tunable parameters can only be changed
from outside the generated code.
Compatibility Considerations
If any of your class definition files contain code that changes a property in one of the
above Impl methods, move that property code into an allowable Impl method. Refer to
the System object Impl method reference pages for more information.
Block parameter prompt changes for raised cosine filter blocks
In this release, several block parameter prompts on the Raised Cosine Transmit Filter
block and the Raised Cosine Receive Filter block have changed.
How to map old block property names to new block property names
To map the old Raised Cosine Transmit Filter block parameter prompts to the new block
parameter prompts, refer to the following table.
Old Parameter Name
New Parameter Name
Notes
Filter type
Filter shape
N/A
Group delay (number of
symbols)
Filter span in symbols
Set the Filter span in
symbols as twice the
value of the Group delay
(number of symbols)
parameter.
Upsampling factor (N)
Samples per symbol
N/A
Filter gain
N/A
The block only allows a userspecified gain.
4-5
R2013b
To map the old Raised Cosine Receive Filter block parameter prompts to the new block
parameter prompts, refer to the following table.
Old Parameter Name
New Parameter Name
Notes
Filter type
Filter shape
N/A
Group delay (number of
symbols)
Filter span in symbols
Set the Filter span in
symbols as twice the
value of the Group delay
(number of symbols)
parameter.
Output mode
N/A
By default, the new
block acts as if you select
Downsampling. If you have
saved an old model with
None selected, the new block
sets the Decimation factor
parameter to 1, implying no
decimation.
Downsampling factor
Decimation factor
N/A
Sample offset
Decimation offset
N/A
Filter gain
N/A
The block only allows a userspecified gain.
Compatibility Considerations
The updated Raised Cosine Transmit Filter and Raised Cosine Receive Filter blocks
design a unit energy filter and then apply the linear amplitude filter gain to the filter
coefficients. If you open a model that was saved in a prior version of the software, the
software updates the block parameters. The blocks set the Filter span in symbols as
twice the value of the Group delay (number of symbols) parameter. Similarly, the
blocks set the linear amplitude filter gain to use the same filter coefficients as the old
model. If you define a parameter value using a variable, you should confirm that the
variable propagates correctly after you open the model.
Each time you open a model that was created using a prior release, Simulink
automatically sets the block parameter values to obtain the same filter coefficients. If you
save the model, the updates become permanent. As a best practice, you should confirm
that the parameter values of the filter blocks are valid before saving the updated models.
4-6
NumTransmitAntennas and NumReceiveAntennas properties added back
to MIMOChannel System object.
In the previous release, the NumTransmitAntennas and NumReceiveAntennas
properties were removed from the MIMO Channel System object. This release, the
properties were added back to the object. For more information, see comm.MIMOChannel
Functionality Being Changed or Removed
Effective this release, you should not use the following block or functions when
simulating digital communications systems.
Functionality
What Happens
When You Use This
Functionality?
Use This Instead
Compatibility
Considerations
Discrete-Time
Scatter Plot block
Still runs
Constellation
Diagram
Replace all instances
of Discrete-Time
Scatter Plot block
with Constellation
Diagram
Gaussian Filter
block
Still runs
gaussdesign
function and
Discrete FIR Filter,
FIR Interpolation,
or FIR Decimation
block
Replace all instances
of Gaussian Filter
block withDiscrete
FIR Filter, FIR
Interpolation, or FIR
Decimation blocks.
Use gaussdesign
to generate filter
coefficients for these
blocks.
rcosfir
Still runs
rcosdesign
Replace all instances
of rcosfir with
rcosdesign.
rcosflt
Still runs
rcosdesign
function and either
filter or upfirdn
functions
Replace all instances
of rcosflt with
rcosdesign and
either filter or
upfirdn.
4-7
R2013b
Functionality
What Happens
When You Use This
Functionality?
Use This Instead
Compatibility
Considerations
rcosiir
Still runs
rcosdesign
function for FIR
raised cosine filters
Replace all instances
of rcosiir with
rcosdesign.
rcosine
Still runs
rcosdesign
Replace all instances
of rcosine with
rcosdesign.
Migrate Code from firrcos and rcosfir to rcosdesign
This section helps you update your legacy code using firrcos and rcosfir to use the
recommended rcosdesign.
firrcos to rcosdesign
Design an order 16 FIR raised cosine filter with a carrier frequency of 1 kHz, a roll-off
factor of 0.25, and a sampling frequency of 8 kHz.
N = 16;
Fc = 1000;
R = 0.25;
Fs = 8000;
b1 = firrcos(N,Fc,R,Fs,'rolloff','normal');
To obtain the identical filter using the recommended rcosdesign, use
b1n = rcosdesign(R, N/(Fs/Fc/2), Fs/Fc/2,'normal');
b1n = b1n / max(b1n) / (Fs/Fc/2);
The following code constructs the same raised cosine filter as the previous example. This
example demonstrates the equivalence between the input arguments for firrcos and
rcosdesign. The plot and comparison of the filter coefficient values show that the two
filters are identical.
beta = R;
sps = Fs/(2*Fc);
span = N / sps;
b1n = rcosdesign(beta, span, sps,'normal');
b1n = b1n / max(b1n) / sps;figure
plot(b1)
4-8
hold on
plot(b1n, 'r-.')
grid on
legend('firrcos', 'rcosdesign');
max(abs(b1n-b1))
Design a square-root raised cosine filter using firrcos and obtain the identical filter
using rcosdesign.
b2 = firrcos(N,Fc,R,Fs,'rolloff','sqrt');
b2n = rcosdesign(R, N/(Fs/Fc/2), Fs/Fc/2, 'sqrt');
b2n = b2n / max(b2n) * ((-1 ./ (pi.*(Fs/Fc/2)) .* (pi.*(R-1) - 4.*R)));
The following code constructs the same square-root raised cosine filter as the previous
example. This example demonstrates the equivalence between the input arguments for
firrcos and rcosdesign. The plot and comparison of the filter coefficient values show
that the two filters are identical.
beta = R;
sps = Fs/(2*Fc);
span = N / sps;
b2n = rcosdesign(R, span, sps, 'sqrt');
b2n = b2n / max(b2n) * ((-1 ./ (pi.*sps) .* (pi.*(R-1) - 4.*R)));
figure
plot(b2)
hold on
plot(b2n, 'r-.')
grid on
legend('firrcos', 'rcosdesign')
max(abs(b2-b2n))
rcosfir to rcosdesign
Design a raised cosine filter using rcosfir with sampling period of 1 second, an
oversampling rate of 6 (6 output samples for every input sample), and a roll-off factor of
0.3.
R = 0.3;
N_T = 4;
RATE = 6;
T = 1;
% filter length is 2*N_T*RATE+1
b3 = rcosfir(R, N_T, RATE, T, 'normal');
Design the same filter using the recommended rcosdesign.
4-9
R2013b
b3n = rcosdesign(R, 2*N_T, RATE,'normal');
b3n = b3n / max(b3n);
The following code constructs the same raised cosine filter as the previous example. This
example demonstrates the equivalence between the input arguments for rcosfir and
rcosdesign. The plot and comparison of the filter coefficient values show that the two
filters are identical.
beta = R;
sps = RATE;
span = 2*N_T;
b3n = rcosdesign(beta, span, sps,'normal');
b3n = b3n / max(b3n)figure
plot(b3)
hold on
plot(b3n, 'r-.')
grid on
legend('rcosfir', 'rcosdesign')
max(abs(b3-b3n))
Design a square-root raised cosine filter using rcosfir and obtain the identical filter
using rcosdesign.
b4 = rcosfir(R, N_T, RATE, 1, 'sqrt')
b4n = rcosdesign(R, 2*N_T, RATE, 'sqrt');
b4n = b4n / max(b4n) * ((-1 ./ (pi.*RATE) .* (pi.*(R-1) - 4.*R ))) * sqrt(RATE);
The following code constructs the same square-root raised cosine filter as the previous
example. This example demonstrates the equivalence between the input arguments for
rcosfir and rcosdesign. The plot and comparison of the filter coefficient values show
that the two filters are identical.
beta = R;
sps = RATE;
span = 2*N_T;
b4n = rcosdesign(R, span, sps, 'sqrt');
b4n = b4n / max(b4n) * ((-1 ./ (pi.*sps) .* (pi.*(R-1) - 4.*R))) * sqrt(RATE)
figure
plot(b4)
hold on
plot(b4n, 'r-.')
grid on
legend('rcosfir', 'rcosdesign')
max(abs(b4-b4n))
4-10
Support Package for Xilinx FPGA-Based Radio
Design SDR applications for use with FPGA-based radio. Supports both fixed bitstream
(Support Package for Xilinx FPGA-Based Radio software provides all logic) and custom
bitstream (user-provided logic) workflows (SDR Targeting). This support package
includes Simulink receiver and transmitter blocks for use with Simulink and receiver
and transmitter System objects for use with MATLAB. These blocks and System objects
enable communication with an FPGA-based radio, allowing for development work in
software-defined radio applications.
Main Features
• Simulink blocks
• Analog Devices FMCOMMS Receiver
• Analog Devices FMCOMMS Transmitter
• Epiq Bitshark Receiver
• System objects
• comm.SDRADIFMCOMMSReceiver
• comm.SDRADIFMCOMMSTransmitter
• comm.SDREpiqBitsharkReceiver
• SDR Targeting
SDR Targeting allows you to implement your baseband processing algorithm on the
FPGA of the Xilinx development board. By moving part of all of your algorithm to the
hardware , you will speed up the host processing. See Implement SDR Targeting.
• Examples
• HDL Optimized QPSK Receiver with Captured Data demonstrates a hardwarefriendly solution that performs baseband processing to handle a time-varying
frequency offset and a time-varying symbol delay.
• QPSK Transmitter and Receiver shows a digital communications system using
QPSK modulation.
• IEEE 802.11 WLAN - HDL Optimized Beacon Frame Receiver with Captured Data
shows the reception of beacon frames in an 802.11 based wireless local area %
network (WLAN).
Supported Hardware and Software
4-11
R2013b
• Hardware support
FPGA RF Board
Development
Board
Fixed Bitstream Support
SDR Targeting Support
Virtex-6Epiq Bitshark™ RevB
ML605
Yes
Yes
Virtex-6Epiq Bitshark RevC
ML605
Yes
Yes
Xilinx ADI FMCOMMS1 RevB Yes
ML605
Yes
• Software requirements
• SDR fixed bitstream and SDR targeting are tested with Xilinx ISE 13.4.
• For fixed bitstream, Xilinx iMPACT is required.
4-12
R2013a
Version: 5.4
New Features
Bug Fixes
Compatibility Considerations
R2013a
Sphere Decoder System object for MIMO receiver processing
The Sphere Decoder System object offers MIMO receiver processing for communications
systems using spatial multiplexing with high data rates, such as 802.11n, LTE, and
WiMAX. This implementation offers maximum likelihood performance with reduced
complexity.
For more information, see the comm.SphereDecoder Help page.
Constellation Diagram System object with measurements
The constellation diagram System object plots constellation diagrams and provides
the ability to perform EVM and MER measurements. For more information, see the
comm.ConstellationDiagram System object Help page.
LTE space-frequency block coding and LTE GPU-accelerated turbo coding
examples
This release includes new LTE examples illustrating space-frequency block coding and
GPU-accelerated turbo coding.
The LTE Downlink PDSCH with Transmit Diversity example highlights LTE Downlink
PDSCH processing with transmit diversity, including two transmit antenna and four
transmit antenna configurations.
The LTE Downlink Shared Channel Processing with GPU Acceleration example shows
how you can use GPUs to accelerate bit error rate simulations.
In addition, the existing LTE PHY Downlink with Spatial Multiplexing example
includes two new MATLAB-based implementations.
HDL code generation for CRC Generator, CRC Detector, RS Encoder, and
RS Decoder System objects
Effective this release, the following System objects provide HDL code generation:
• comm.HDLCRCDetector
• comm.HDLCRCGenerator
• comm.HDLRSDecoder
• comm.HDLRSEncoder
5-2
To generate HDL code, you must have an HDL Coder license.
Variable-size support for AWGN, MIMO, and LTE MIMO Channel System
objects
This release includes variable-size support for the AWGN, MIMO Channel, and LTE
MIMO Channel System objects. This support enables you to:
• Vary the number of transmit and receive antennas, which is necessary for LTE
modeling
• Vary the number of samples per channel, which is helpful for LTE and WiMAX
modeling
For more information see:
• comm.AWGNChannel
• comm.MIMOChannel
• comm.LTEMIMOChannel
IEEE 802.11 WLAN - HDL optimized beacon frame receiver example with
captured data
This example shows a hardware friendly model that receives beacon frames in an 802.11
wireless local area network (WLAN).
Automatic gain controller block and System object
This release includes a new automatic gain controller (AGC) block and System object.
The AGC adaptively adjusts its gain to achieve a constant signal level at the output.
For more information see the AGC block and comm.AGC System object Help pages.
Additional CRC algorithm implementation
Effective this release, the CRC blocks and System objects support the direct algorithm,
input byte reflection, checksum reflection, and final XOR operation. These features
enable more straightforward Ethernet CRC generation and detection. For more
information see:
5-3
R2013a
• General CRC Generator
• comm.CRCGenerator
• General CRC Syndrome Detector
• comm.CRCDetector
ATSC digital television example
The ATSC Digital Television example shows the vestigial sideband modulation with 8
discrete amplitude levels (8-VSB) transmission subsystem of the Advanced Television
Systems Committee (ATSC) digital television standard.
Disable second output port on APP Decoder
Beginning in this release, you can disable the second output port, containing coded bit
log-likelihood ratios, on the APP Decoder System object and block.
For the System object, disable the CodedBitLLROutputPort property.
For the block, select the Disable L(c) output port check box.
Behavior change of locked System objects for loading, saving, and
cloning
In the previous release, saving, loading, and cloning a locked System object would result
in an unlocked System object. This System object had the same property values as the
one from which it was cloned, but not the same internal state.
In this release, it does not matter whether you save a locked System object into a MAT
file and load it later or clone a locked System object using the clone method. In either
case, the result is a locked System object with the same property values and the same
internal states.
Dynamic memory allocation based on size
By default, dynamic memory allocation is now enabled for variable-size arrays whose
size exceeds a configurable threshold. This behavior allows for finer control over stack
memory usage. Also, you can generate code automatically for more MATLAB algorithms
without modifying the original MATLAB code. The following System objects support
dynamic memory allocation for C code generation:
5-4
• comm.BPSKDemodulator
• comm.BPSKModulator
• comm.PSKDemodulator
• comm.PSKModulator
• comm.QPSKDemodulator
• comm.QPSKModulator
• comm.GeneralQAMDemodulator
• comm.GeneralQAMModulator
• comm.PAMDemodulator
• comm.PAMModulator
• comm.RectangularQAMDemodulator
• comm.RectangularQAMModulator
• comm.BitToInteger
• comm.IntegerToBit
• comm.OSTBCCombiner
• comm.OSTBCEncoder
• comm.CRCDetector
• comm.CRCGenerator
• comm.ConvolutionalEncoder (Dynamic memory allocation not supported for
punctured applications.)
• comm.ViterbiDecoder (Dynamic memory allocation not supported for punctured
applications.)
• comm.TurboEncoder
Compatibility Considerations
If you use scripts to generate code and you do not want to use dynamic memory
allocation, you must disable it. For more information, see Controlling Dynamic Memory
Allocation.
Naming convention change for LTE examples
Effective this release, there is a new naming convention for LTE examples. See the
following table for more information.
5-5
R2013a
Example Title
Old New File Name
New File Name
Downlink Transport
Channel (DL-SCH)
Processing
commlteDLSCH
LTEDLSCHExample
LTE PHY Downlink with
Spatial Multiplexing
commlteDownlink
LTEDownlinkExample
Compatibility Considerations
Typing the old file names at the MATLAB command line no longer opens example
models. To open the example models, you must type the new file names.
APP Decoder System Object parameter change
Beginning in release R2012a, the Algorithm property replaced the MetricMethod
property for the APP Decoder System object. At this time, any legacy code that uses the
MetricMethod property generates a warning.
Compatibility Considerations
If you have any existing System object code that uses the MetricMethod property, you
must use the sysobjupdate function to update your code. For more information, type
help sysobjupdate at the MATLAB command line.
Functions to remain in the product
The following functions, which were previously announced for removal, will remain in the
product.
• bchdec
• bchenc
• dpskdemod
• dpskmod
• eyediagram
• oqpskdemod
• oqpskmod
• pamdemod
5-6
• pammod
• pskdemod
• pskmod
• qamdemod
• qammod
• rsdec
• rsenc
Communications System Toolbox Functionality Being Changed or
Removed
The following function will be removed in a future release.
Functionality
What Happens
When You Use This
Functionality?
Use This Instead
Compatibility
Considerations
mimochan
Warns
comm.MIMOChannel
Replace all instances
of mimochan with
comm.MIMOChannel.
Update Legacy Code to use System object
For help updating your legacy code so that it uses the comm.MIMOChannel System
object, see the following table.
Map mimochan Properties and Methods to comm.MIMOChannel
mimochan Property
comm.MIMOChannel Property Note
NumTxAntennas
N/A
This information
is derived from the
TransmitCorrelationMatrix
property.
NumRxAntennas
N/A
This information
is derived from the
ReceiveCorrelationMatrix
property.
InputSamplePeriod
SampleRate
Sample rate is the reciprocal
of the input sample period.
5-7
R2013a
mimochan Property
comm.MIMOChannel Property Note
DopplerSpectrum
DopplerSpectrum
MaxDopplerShift
MaximumDopplerShift
PathDelays
PathDelays
AvgPathGaindB
AveragePathGains
TxCorrelationMatrix
TransmitCorrelationMatrix
RxCorrelationMatrix
ReceiveCorrelationMatrix
KFactor
KFactor
DirectPathDopplerShift DirectPathDopplerShift DirectPathInitPhase
DirectPathInitialPhase NormalizePathGains
NormalizePathGains
ResetBeforeFiltering
N/A
Use the reset method for
the System object before
calling the step method
h = comm.MIMOChannel;
step(h, ones(10,2));
reset(h);
step(h, ones(20,2));
5-8
StorePathGains
N/A
Set the
PathGainsOutputPort to
true so the step method for
the object outputs the path
gains.
PathGains
N/A
Set the
PathGainsOutputPort to
true so the step method for
the object outputs the path
gains.
ChannelFilterDelay
N/A
Use the info method to
display this information.
NumSamplesProcessed
N/A
Use the info method to
display this information.
mimochan Property
comm.MIMOChannel Property Note
ChannelType
N/A
This read-only property was
removed.
mimochan Method
comm.MIMOChannel Method
filter
step
reset
reset
Note: mimochan and comm.MIMOChannel have different APIs. Refer to the following
syntax examples when updating your legacy code:
mimochan
comm.MIMOChannel
chan = mimochan(2, 2, 1e-4, 60, [0 2.5e-4
h = 3e-4],
comm.MIMOChannel(...
[0 -2 -3]);
chan.StorePathGains = 1;
'SampleRate', 1e4, ...
'PathDelays', [0 2.5e-4 3e-4], ...
'AveragePathGains',[0 -2 -3], ...
'MaximumDopplerShift', 60, ...
'TransmitCorrelationMatrix', eye(2), ...
'ReceiveCorrelationMatrix', eye(2), ...
'PathGainsOutputPort', true);
y = filter(chan, ones(20, 2));
pathGains = chan.PathGains;
[y, pathGains] = step(h, ones(20, 2));
5-9
R2012b
Version: 5.3
New Features
Compatibility Considerations
R2012b
Support for C code generation for all System objects in Communications
Systems Toolbox
Effective this release, the following System objects provide C code generation:
• comm.ACPR
• comm.BCHDecoder
• comm.CCDF
• comm.CPMCarrierPhaseSynchronizer
• comm.GoldSequence
• comm.LDPCDecoder
• comm.LDPCEncoder
• comm.LTEMIMOChannel
• comm.MemorylessNonlinearity
• comm.MIMOChannel
• comm.PhaseNoise
• comm.PSKCarrierPhaseSynchronizer
• comm.RSDecoder
• comm.ThermalNoise
All CPU-based System objects in the Communications System Toolbox product generate
C code. The GPU-based System objects do not generate C code.
Support for HDL code generation for Reed-Solomon encoder, decoder,
and CRC detector blocks
Effective this release, the following blocks provide HDL code generation:
• General CRC Syndrome Detector HDL Optimized
• Integer-Input RS Encoder HDL Optimized
• Integer-Output RS Decoder HDL Optimized
To generate HDL code, you must have an HDL Coder license.
6-2
Support for HDL code generation for Rectangular QAM and PSK
Demodulator System objects
Effective this release, the following System objects provide HDL code generation:
• comm.BPSKDemodulator
• comm.QPSKDemodulator
• comm.PSKDemodulator
• comm.RectangularQAMDemodulator
To generate HDL code, you must have an HDL Coder license.
LTE Zadoff-Chu sequence generator function
Communications System Toolbox includes a Zadoff-Chu sequence generator function.
This function is useful when modeling 3GPP LTE physical layer characteristics,
downlink primary synchronization signals, or the uplink reference signals and random
access preamble sequences. For more information, see the lteZadoffChuSeq Help page.
LTE downlink shared channel example
This example shows the Downlink Shared Channel (eNodeB to UE) processing of
the Long Term Evolution (LTE) physical layer (PHY) specifications developed by the
Third Generation Partnership Project (3GPP). LTE-Advanced is one of the candidates
for fourth generation (4G) communications systems, approved by the International
Telecommunication Union (ITU), with expected downlink peak data rates in excess of
1Gbps (for Release 10 and beyond). Using the Release 10 specifications, this example
highlights the multi-antenna transmission scheme that enables such high data rates.
Phase Noise block and System object, specifying phase noise spectrum
with a vector of frequencies
The Phase Noise block and System object now have more flexibility for specifying
spectral noise characteristics. You can specify a vector of phase noise levels, at more than
one frequency value. Previously, the software allowed the specification of a single-phase
noise level point. The new implementation enables more realistic noise modeling in your
6-3
R2012b
communications models, and allows you to visualize the phase noise spectrum that the
block or System object generates.
IEEE 802.11 beacon with captured data example
This example shows reception of beacon frames in an 802.11 wireless local area network
(WLAN). You can select one of several captured signals and view the data the beacon
frame carries.
P25 spectrum sensing example
This example shows how to use cyclostationary feature detection to distinguish signals
with different modulation schemes, including P25 signals. It defines four cases of signals:
noise only, C4FM, CQPSK, and one arbitrary type. The example applies the detection
algorithm to signals with different SNR values and determines when the signals can be
classified as one of the four types.
MATLAB-based QPSK transceiver example
The QPSK Transmitter and Receiver example now includes a MATLAB implementation
that uses System objects. This example models a digital communications system to
simulate the QPSK transmitter - receiver chain. In particular, this example illustrates a
method for tackling real-world wireless communication issues, such as: carrier frequency/
phase offset, timing recovery, and frame synchronization.
Design Iteration Workflow
This example illustrates a design workflow and the typical iterations involved in
designing a wireless communications system with the Communications System Toolbox.
Because Communications System Toolbox supports both MATLAB and Simulink, this
examples showcases separate design iterations using MATLAB functions or Simulink
models.
The workflow starts with a simple QPSK modulator system that transmits a signal
through an AWGN channel and calculates the bit error rate. To make the system more
realistic and improve system performance, the example gradually introduces Viterbi
decoding, turbo coding, multipath fading channels, OFDM-based transmission and
equalization, and multiple-antenna techniques.
6-4
Constellation method for modulator and demodulator System
objects
Effective this release, modulator and demodulator System object have a constellation
method. This method calculates or plots the ideal signal constellation, depending on
object settings. The following System objects have the constellation method:
• comm.PSKModulator
• comm.PSKDemodulator
• comm.RectangularQAMModulator
• comm.RectangularQAMDemodulator
• comm.PAMModulator
• comm.PAMDemodulator
• comm.QPSKModulator
• comm.QPSKDemodulator
• comm.BPSKModulator
• comm.BPSKDemodulator
• comm.OQPSKModulator
• comm.OQPSKDemodulator
• comm.gpu.PSKModulator
• comm.gpu.PSKDemodulator
Specify initial states of Gold Sequence Generator and PN Sequence
Generator System objects
You can specify the initial states for the PN Sequence Generator and Gold Sequence
Generator System objects as inputs to the step method. You can use these System
objects as scrambling sequence generators. For packet-based systems, including WiMAX
and LTE, the initial conditions are a function of time. Therefore, for simulation purposes,
you must specify the initial states as an input.
System object tunable parameter support in code generation
You can change tunable properties in user-defined System objects at any time, regardless
of whether the object is locked. For System objects predefined in the software, the object
6-5
R2012b
must be locked. In previous releases, you could tune System object properties only for a
limited number of predefined System objects in generated code.
save and load for System objects
You can use the save method to save System objects to a MAT file. If the object is locked,
its state information is saved, also. You can recall and use those saved objects with the
load method.
You can also create your own save and load methods for a System object you create.
To do so, use the saveObjectImpl and loadObjectImpl, respectively, in your class
definition file.
Save and restore SimState not supported for System objects
The Save and Restore Simulation State as SimState option is no longer supported
for any System object in a MATLAB Function block. This option was removed because
it prevented parameter tunability for System objects, which is important in code
generation.
Compatibility Considerations
If you need to save and restore simulation states, you may be able to use a corresponding
Simulink block, instead of a System object.
Communications System Toolbox Functionality Being Changed or
Removed
The following function, which was previously announced for removal and warned at run
time, has been removed from the product.
• seqgen.pn
The following functions will be removed in a future release.
6-6
Functionality
What Happens
When You Use This
Functionality?
Use This Instead
Compatibility
Considerations
commmeasure.ACPR
Warns
comm.ACPR
Replace all instances
of commmeasure.ACPR
with comm.ACPR.
commmeasure.EVM
Warns
comm.EVM
Replace all instances
of commmeasure.EVM
with comm.EVM.
commmeasure.MER
Warns
comm.MER
Replace all instances
of commmeasure.MER
with comm.MER.
fec.bchdec
Warns
comm.BCHDecoder
Replace all instances
of fec.bchdec with
comm.BCHDecoder.
fec.bchenc
Warns
comm.BCHEncoder
Replace all instances
of fec.bchenc with
comm.BCHEncoder.
fec.ldpcdec
Warns
comm.LDPCDecoder
Replace all instances
of fec.ldpcdec with
comm.LDPCDecoder.
fec.ldpcenc
Warns
comm.LDPCEncoder
Replace all instances
of fec.ldpcenc with
comm.LDPCEncoder.
fec.rsdec
Warns
comm.RSDecoder
Replace all instances
of fec.rsdec with
comm.RSDecoder.
fec.rsenc
Warns
comm.RSEncoder
Replace all instances
of fec.rsenc with
comm.RSEncoder.
Update Legacy Code to use System objects
For help updating your legacy code so that it uses the new System objects, refer to the
following sections.
6-7
R2012b
Map commmeasure.ACPR Properties and Methods to comm.ACPR
commmseaure.ACPR property comm.ACPR property
Note
Fs
SampleRate
MainChannelMeasBW
MainMeasurementBandwidth
AdjacentChannelMeasBW
AdjacentMeasurementBandwidth
MeasurementFilter
MeasurementFilterSource SpectralEstimatorOptionSpectralEstimation
WindowOption
Window
SidelobeAtten
SidelobeAttenuation
FrequencyResolutionOption
FrequencyResolution
FFTLength
CustomFFTLength
MainChannelPowerOutputPort(new
When you set
MainChannelPowerOutputPort
property)
to true, the main channel
power measurement becomes
an output.
Note: Previously, for the
commmeasure.ACPR object,
this was the second output
argument.
AdjacentChannelPowerOutputPort
When you set
AdjacentChannelPowerOutputPort
(new property)
to true, the adjacent
channel power measurement
becomes an output.
Note: Previously, for the
commmeasure.ACPR object,
this was the third output
argument.
6-8
commmseaure.ACPR property comm.ACPR property
Note
Type
N/A
This read-only property was
removed.
FrameCount
N/A
This read-only property was
removed.
commmseaure.ACPR method
comm.ACPR method
run
step
reset
reset
copy
clone
disp
N/A
Note: commmeasure.ACPR and comm.ACPR have a different API. Refer to the following
syntax examples when updating your legacy code:
commmeasure.ACPR
comm.ACPR
Note
commmeasure.ACPR
comm.ACPR
The default settings of the
following are different:
‘NormalizedFrequency’
‘MainMeasurementBandwidth’
‘AdjacentChannelOffset’
‘AdjacentMeasurementBandwidth’
‘MeasurementFilterSource’
h = commmeasure.ACPR(…
h = comm.ACPR(…
MeasurementFilter
'PowerUnits','linear',… 'PowerUnits','Watts',…
changes from a structure to a
'SpectralEstimatorOption','SpectralEstimation',
'User defined,…
'Specify
window parameters',…
variable.
'SegmentLength',100);
'SegmentLength',100,…
[act_ACPR, actMainPow, actAdjPow]
'MainChannelPowerOutputPort',
= run(h,yPulse);
true,…
fd = h.MeasurementFilter; 'AdjacentChannelPowerOutputPort', true,...
'MeasurementFilterSource', 'property');
[act_ACPR, actMainPow, actAdjPow] = step(h,yPulse);
fdnumerator = h.MeasurementFilter;
6-9
R2012b
Map commmeasure.EVM Properties and Methods to comm.EVM
commmseaure.EVM properties comm.EVM properties
Note
NormalizationOption
Normalization
AveragePower
AverageConstellationPower
PeakPower
PeakConstellationPower RSMEVM
N/A
RSMEVM is an output.
MaximumEVM
MaximumEVMOutputPort
When you set
MaximumEVMOutputPort to
true, MaximumEVM becomes
an output.
Percentile
XPercentileValue
XPercentileValue
appears when you set the
XPercentileEVMOutputPort
to true.
PercentileEVM
XPercentileEVMOutputPort
When you set
XPercentileEVMOutputPort
to true, PercentileEVM
becomes an output.
NumberOfSymbols
SymbolCountOutputPort
When you set
SymbolCountOutputPort
to true, NumberOfSymbols
becomes an output.
Type
N/A
This read-only property was
removed.
commmseaure.EVM methods
comm.EVM methods
update (no outputs)
step (multiple outputs)
reset
reset
copy
clone
Note: commmeasure.evm and comm.evm have a different API. Refer to the following
syntax examples when updating your legacy code:
6-10
commmeasure.EVM
comm.EVM
hEVM = commmeasure.EVM('Percentile',
hEVM
90);
= comm.EVM('XPercentileEVMOutputPort', true, '
update(hEVM, rcv, xmv)
rmsevm = hEVM.RMSEVM
rmsevm = step(hEVM, rcv, xmv)
update(hEVM, rcv, xmv)
rmsevm = hEVM.RMSEVM
maxevm = hEVM.MaximumEVM
pevm =hEVM.PercentileEVM
numsym = hEVM. NumberOfSymbols
[rmsevm,maxevm,pevm,numsym] = step(hEVM, rcv, xmv)
Map commmeasure.MER Properties and Methods to comm.MER
commmseaure.MER properties comm.MER properties
Note
MERdb
N/A
MERdb is an output.
MinimumMER
MinimumMEROutputPort
When you set
MinimumMEROutputPort to
true, MimimumMER becomes
an output.
Percentile
XPercentileValue
XPercentileValue
appears when you set the
XPercentileMEROutputPort
to true.
PercentileMER
XPercentileMEROutputPort
When you set
XPercentileMEROutputPort
to true, PercentileMER
becomes an output.
NumberOfSymbols
SymbolCountOutputPort
When you set
SymbolCountOutputPort
to true, NumberOfSymbols
becomes an output.
Type
N/A
This read-only property was
removed.
commmseaure.MER methods
comm.MER methods
update (no outputs)
step (multiple outputs)
6-11
R2012b
commmseaure.MER methods
comm.MER methods
reset
reset
copy
clone
Note: commmeasure.MER and comm.MER have a different API. Refer to the following
syntax examples when updating your legacy code:
commmseaure.MER
comm.MER
hMER = commmeasure.MER('Percentile',
hMER
90);
= comm.MER('XPercentileMEROutputPort', true, 'X
update(hMER, rcv, xmv)merdb = hMER.MERdB
merdb = step(hMER, rcv, xmv)
update(hMER, rcv, xmv)
merdb = hEVM.MERdB
minimummer = hEVM.MinimumMER
pmer = hEVM.PercentileMER
numsym = hEVM. NumberOfSymbols
[merdb,minimummer,pmer,numsym] = step(hmer, rcv, xmv
Map fec.bchenc Properties to comm.BCHEncoder
6-12
fec.bchenc property
comm.BCHEncoder property
Note
N
CodewordLength
K
MessageLength
T
The
ErrorCorrectionCapability
element of the Info method
ShortenedLength
N/A
This information is included
in the CodewordLength and
MessageLength properties.
ParityPosition
N/A
Always 'end'.
PuncturePattern
PuncturePattern
This property
appears when you set
PuncturePatternSource
to Property.
GenPoly
GeneratorPolynomial
This property
appears when you set
fec.bchenc property
comm.BCHEncoder property
Note
GeneratorPolynomialSource
to Property.
Type
N/A
This read-only property was
removed.
Note: fec.bchenc and comm.BCHEncoder have a different API. Refer to the following
syntax examples when updating your legacy code:
fec.bchenc
comm.BCHEncoder
Note
h=fec.bchenc
h = comm.BCHEncoder('CodewordLength',7,'MessageLength',4,
'Pu
Use this syntax to create
enc = fec.bchenc(7,4);
msg = [0 1 1 0]';
code = encode(enc,msg);
h = comm.BCHEncoder('CodewordLength',7,'MessageLength',4,
'Pu
• GeneratorPolynomial
msg = [0 1 1 0]';
must be a column vector
code = step(h,msg)
and PuncturePattern
the default configuration of
fec.bchenc.
must be a row vector.
• The step method
replaces use of the
encode function.
encShort = fec.bchenc(7,4);
h=comm.BCHEncoder(6,3);
encShort.ShortenedLength =msg
1; = [0 1 1]';
msgShort = [0 1 1]';
code = step(h,msg)
codeShort = encode(encShort,msgShort);
The shortened length
information is included in
the CodewordLength and
MessageLength properties.
Map fec.bcdec Properties to comm.BCHDecoder
fec.bchdeproperty
comm.BCHDecoder property
Note
N
CodewordLength
K
MessageLength
T
The
This information is included
ErrorCorrectionCapability
in the CodewordLength and
element of the Info method MessageLength properties.
ShortenedLength
N/A
6-13
R2012b
fec.bchdeproperty
comm.BCHDecoder property
Note
ParityPosition
N/A
PuncturePattern
PuncturePattern
This property
appears when you set
PuncturePatternSource
to Property.
GenPoly
GeneratorPolynomial
This property
appears when you set
GeneratorPolynomialSource
to Property.
Type
N/A
This read-only property was
removed.
Note: fec.bchdec and comm.BCHDecoder have a different API. Refer to the following
syntax examples when updating your legacy code:
fec.bchdec
fec.BCHDecoder
Note
h=fec.bchdec
h = comm.BCHDecoder('CodewordLength',7,'MessageLength',4,
'Pu
Use this syntax to create
the default configuration of
fec.bchdec.
dec = fec.bchdec(7,4);
h = comm.BCHDecoder('CodewordLength',7,'MessageLength',4,
'Pu
• GeneratorPolynomial
code = [0 1 1 0 0 0 1].'; code = [0 1 1 0 0 0 1].';
must be a column vector
msg = decode(dec,code); msg = step(h,code)
and PuncturePattern
must be a row vector.
• The step method
replaces use of the
decode function.
decShort = fec.bchdec(7,4)h = comm.BCHDecoder('CodewordLength',6,'MessageLength',3,
'Pu
The shortened length
decShort.ShortenedLength =code
1; = [0 1 1 1 0 1]';
information is included in
code = [0 1 1 1 0 1].'; msg = step(h,code)
the CodewordLength and
msg = decode(decShort,code);
MessageLength properties.
6-14
Map fec.ldpcenc Properties to comm.LDPCEncoder
fec.ldpcenc property
comm.LDPCEncoder property
Note
ParityCheckMatrix
ParityCheckMatrix
BlockLength
N/A
This read-only property was
removed.
NumInfoBits
N/A
This read-only property was
removed.
NumParityBits
N/A
This read-only property was
removed.
EncodingAlgorithm
N/A
This read-only property was
removed.
Note: The comm.LDPCEncoder System object does contain all the read-only
properties of the old object. However, you can obtain the information from the
ParityCheckMatrix.
fec.ldpcenc and comm.LDPCEncoder have a different API. Refer to the following
syntax example when updating your legacy code:
fec.ldpcenc
comm.LDPCEEncoder
h1 = fec.ldpcenc;
h = comm.LDPCEncoder;
xin = ones(32400,1);
xin = ones(32400,1);
yout1 = encode(h1,xin.') yout = step(h, xin)
Note
• The fec.ldpcenc
object accepted a row
vector input. The
comm.LDPCEncoder
System object accepts a
column vector input.
• The step method
replaces use of the
encode function
Map fec.ldpcdec Properties to comm.LDPCDecoder
fec.ldpcdec property
comm.LDPCDecoder property
Note
ParityCheckMatrix
ParityCheckMatrix
6-15
R2012b
fec.ldpcdec property
comm.LDPCDecoder property
Note
DecisionType
DecisionMethod
OutputFormat
OutputValue
DoParityChecks
IterationTerminationCondition
Select Parity check
satisfied.
NumIterations
MaximumIterationCount
ActualNumIterations
NumIterationsOutputPort FinalParityChecks
FinalParityChecksOutputPort
BlockLength
N/A
This read-only property was
removed.
NumInfoBits
N/A
This read-only property was
removed.
NumParityBits
N/A
This read-only property was
removed.
Note: The comm.LDPCDecoder System object does not contain all the read-only
properties of the old object. The ActualNumIterations and FinalParityChecks
properties become outputs.
fec.ldpcdec and comm.LDPCDecoder have a different API. Refer to the following
syntax example when updating your legacy code.
fec.ldpcdec
comm.LDPCDecoder
h1 = fec.ldpcdec;
h = comm.LDPCDecoder
yin = ones(64800,1);
yin = ones(64800,1);
yout1 = decode(h1,yin.') yout = step(h,yin)
Note
• The fec.ldpcdec
object accepted a row
vector input. The
comm.LDPCDecoder
System object accepts a
column vector input.
• The step method
replaces use of the
decode function
6-16
Map fec.rsenc Properties to comm.RSEncoder
fec.rsenc
comm.RSEncoder
Note
N
CodewordLength
K
MessageLength
T
The
ErrorCorrectionCapability
element of the Info method
ShortenedLength
N/A
This information is included
in the CodewordLength and
MessageLength properties.
ParityPosition
N/A
Always 'end'.
GenPoly
GeneratorPolynomial
This property
appears when you set
GeneratorPolynomialSource
to Property.
Type
N/A
This read-only property was
removed.
Note: fec.rsenc and comm.RSEncoder have a different API. Refer to the following
syntax examples when updating your legacy code:
fec.rsenc
comm.RSEncoder
Note
h=fec.rsenc
h = comm.RSEncoder('CodewordLength',7,'MessageLength',3,
'Pun
Use this syntax to create
the default configuration of
fec.rsenc.
h = comm.BCHEncoder('CodewordLength',7,'MessageLength',4, 'Pu
enc = fec.rsenc(7,3);
msg = [0 1 0]';
code = encode(enc,msg);
h = comm.RSEncoder('CodewordLength',7,'MessageLength',3,
'Pun
• GeneratorPolynomial
msg = [0 1 0]';
must be a column
code = step(h,msg)
vector and
PuncturePatternmust
be a row vector.
• The step method
replaces use of the
encode function.
6-17
R2012b
fec.rsenc
comm.RSEncoder
Note
encShort = fec.rsenc(7,3) h = comm.RSEncoder('CodewordLength',6,'MessageLength',2,
'Pun
• The shortened length
encShort.ShortenedLength =msg
1; = [0 1]';
information is included
msgShort = [0 1]';
code = step(h,msg)
in the CodewordLength
codeShort = encode(encShort,msgShort);
and MessageLength
properties.
• The step method
replaces use of the
encode function.
Map fec.rsdec Properties to comm.RSDecoder
fec.rsdec
comm.RSDecoder
Note
N
CodewordLength
K
MessageLength
T
The
ErrorCorrectionCapability
element of the Info method
ShortenedLength
N/A
This information is included
in the CodewordLength and
MessageLength properties.
ParityPosition
N/A
Always 'end'.
PuncturePattern
PuncturePattern
This property
appears when you set
PuncturePatternSource
to Property.
GenPoly
GeneratorPolynomial
This property
appears when you set
GeneratorPolynomialSource
to Property.
Type
N/A
This read-only property was
removed.
Note: fec.rsdec and comm.RSDecoder have a different API. Refer to the following
syntax examples when updating your legacy code:
6-18
fec.rsdec
comm.RSDecoder
Note
h=fec.rsdec
h = comm.RSDecoder('CodewordLength',7,'MessageLength',3,
'Pun
Use this syntax to create
the default configuration of
fec.rsdec.
dec = fec.rsdec(7,3);
h = comm.RSDecoder('CodewordLength',7,'MessageLength',3,
'Pun
• GeneratorPolynomial
code = [0 1 1 0 0 0 1].'; code = [0 1 1 0 0 0 1].';
must be a column
msg = decode(dec,code); msg = step(h,code)
vector and
PuncturePatternmust
be a row vector.
• The step method
replaces use of the
encode function.
decShort = fec.rsdec(7,3) h = comm.RSDecoder('CodewordLength',6,'MessageLength',2,
'Pun
• The shortened length
decShort.ShortenedLength =code
1; = [0 1 1 1 0 1]';
information is included
code = [0 1 1 1 0 1].'; msg = step(h,code)
in the CodewordLength
msg = decode(decShort,code);
and MessageLength
properties.
• The step method
replaces use of the
encode function.
Frame-Based Processing
Beginning in R2010b, MathWorks started to significantly change the handling of framebased processing. In the future, frame status will no longer be a signal attribute. Instead,
individual blocks will control whether they treat inputs as frames of data or as samples
of data. For more information, see “Frame-Based Processing” on page 9-6.
6-19
R2012a
Version: 5.2
New Features
Compatibility Considerations
R2012a
MIMO Multipath Fading Channel System Objects
The Communications System Toolbox product now includes a Multiple Input Multiple
Output (MIMO) Multipath Fading Channel System object, comm.MIMOChannel.
Multipath MIMO fading channels allow for design of communication systems with
multiple antenna elements at the transmitter and receiver. For more information, see the
comm.MIMOChannel Help page.
The product also includes an LTE MIMO Multipath Fading Channel System object,
comm.LTEMIMOChannel. This object allows for design of communication systems with
multiple antenna elements at the transmitter and receiver using the 3GPP Long Term
Evolution (LTE) standard. For more information, see the comm.LTEMIMOChannel Help
page.
Multi-H Support for CPM Modulator and Demodulator Simulink Blocks
and MATLAB System Objects
The CPM Modulator Baseband and CPM Demodulator Baseband blocks and System
objects now support Multi-H CPM modulation. These enhancements allow you to perform
research and development work for communication systems designed with the ARTM,
JTRS, or MIL-STD-188–181C communications standards. For more information, see:
• comm.CPMModulator
• comm.CPMDemodulator
• CPM Modulator Baseband
• CPM Demodulator Baseband
GPU System Objects
This release adds new GPU System objects, which use a graphics processing unit (GPU)
to procure simulation results more quickly than a CPU. These new objects include:
• comm.gpu.ConvolutionalInterleaver
• comm.gpu.ConvolutionalDeinterleaver
• comm.gpu.ConvolutionalEncoder
• comm.gpu.PSKDemodulator
7-2
• comm.gpu.TurboDecoder
MATLAB Compiler Support for GPU System Objects
In Release 2012a, you can use the MATLAB Compiler™ product with GPU System
objects. With this capability, MATLAB Compiler software can generate standalone
applications from MATLAB files, including files that contain GPU System objects.
Code Generation Support
The following System objects now support C code generation:
• comm.BCHEncoder
• comm.RSEncoder
The following function now supports C code generation:
• bchgenpoly
HDL Code Generation from MATLAB code
The following System objects now support HDL code generation:
• comm.ViterbiDecoder
• comm.PSKModulator
• comm.BPSKModulator
• comm.QPSKModulator
• comm.rectangularQAMmodulator
• comm.ConvolutionalInterleaver
• comm.ConvolutionalDeinterleaver
See also HDL Code Generation from MATLAB.
HDL Support For HDL CRC Generator Block
Release R2012a provides HDL code generation support for the new HDL CRC Generator
block.
7-3
R2012a
Enhancements for System Objects Defined by Users
This release contains enhancements for System objects defined by users.
Code Generation for System Objects
System objects defined by users now support C code generation. To generate code, you
must have the MATLAB Coder product.
New System Object Option on File Menu
The File menu on the MATLAB desktop now includes a New > System object menu
item. This option opens a System object class template, which you can use to define a
System object class.
Variable-Size Input Support for System Objects
System objects that you define now support inputs that change size at runtime.
Data Type Support for System Objects
System objects that you define now support all MATLAB data types as inputs and
outputs.
New Property Attribute to Define States
R2012a adds the new DiscreteState attribute for properties in your System object
class definition file. Discrete states are values calculated during one step of an object’s
algorithm that are needed during future steps.
New Methods to Validate Properties and Get States from System Objects
The following methods have been added:
• validateProperties – Checks that the System object is in a valid configuration.
This applies only to objects that have a defined validatePropertiesImpl method
• getDiscreteState – Returns a struct containing a System object’s properties that
have the DiscreteState attribute
matlab.system.System changed to matlab.System
The base System object class name has changed from matlab.system.System to
matlab.System.
7-4
Compatibility Considerations
Compatibility Considerations
The previous matlab.system.System class will remain valid for existing System
objects. When you define new System objects, your class file should inherit from the
matlab.System class.
New and Enhanced Demos
The following demos are new or enhanced for this release:
• IEEE® 802.11 WLAN - Beacon Frame simulates packetized, non-streaming
transmission and reception of beacon frames in an 802.11-based wireless local area
network (WLAN).
• IEEE® 802.16-2009 WirelessMAN-OFDMA PHY Downlink PUSC simulates a
downlink partial usage of subchannels (PUSC) Physical Layer communication from
base station (BS) to two mobile stations. This demo uses variable-size signals to model
dynamic channel allocation between the two users.
• QPSK Transmitter and Receiver implements a QPSK transmitter and receiver,
including carrier and timing recovery.
• Digital Video Broadcasting - Cable (DVB-C) models part of the ETSI (European
Telecommunications Standards Institute) EN 300 429 standard for cable system
transmission of digital television signals.
• Downlink Transport Channel (DL-SCH) Processing models part of the transport
channel processing for the Downlink Shared Channel (eNodeB to UE) of the Long
Term Evolution (LTE) specifications developed by the Third Generation Partnership
Project (3GPP) .
• Using GPUs To Accelerate Turbo Coding Bit Error Rate Simulations shows how you
can use GPUs to dramatically accelerate bit error rate simulations.
• End to End System Simulation Acceleration Using GPUs compares four techniques
that can be used to accelerate bit error rate (BER) simulations.
Functionality Being Changed or Removed
The following functions will be removed in a future release.
7-5
R2012a
Functionality
What Happens
When You Use This
Functionality?
Use This Instead
Compatibility
Considerations
rsdecof
Warns
comm.RSDecoder
Replace all instances
of rsdecof with
comm.RSDecoder.
rsencof
Warns
comm.RSEncoder
Replace all instances
of rsencof with
comm.RSEncoder.
The following functions, which were previously announced for removal in a future
release, now warn at run time. You should not use these functions.
Functionality
What Happens
When You Use This
Functionality?
Use This Instead
Compatibility
Considerations
rcosflt
Warns
fdesign.pulseshaping
• Use
fdesign.interpolator
and
fdesign.decimator
to design multirate
filters.
• Use
fdesign.pulseshaping
to design a singlerate raised cosine
filter. Does not
support IIR.
rcosiir
Warns
N/A
Do not use.
rcosine
Warns
fdesignpulseshaping
• Use
fdesign.interpolator
and
fdesign.decimator
to design multirate
filters.
• Use
fdesign.pulseshaping
7-6
Functionality
What Happens
When You Use This
Functionality?
Use This Instead
Compatibility
Considerations
bchdec
Warns
comm.BCHDecoder
bchenc
Warns
comm.BCHEncoder
rsdec
Warns
comm.RSDecoder
rsenc
Warns
comm.RSEncoder
randint
Warns
randi
Use randi to generate
matrix of uniformly
distributed random
integers
to design a singlerate raised cosine
filter. Does not
support IIR.
Several functions, which were previously announced for removal in a future release
and warned at run time, have been removed from the Communications System Toolbox
product. To see the full list of these removed functions, expand the following section.
Removed Functions
• ademod
• ademodce
• amod
• amodce
• apkconst
• bchdeco
• bchenco
• bchpoly
• constlay
• convdeco
• convenco
• ddemod
• ddemodce
7-7
R2012a
• demodmap
• dmod
• dmodce
• eyescat
• flxor
• gen2abcd
• gfplus
• htruthtb
• imp2sys
• lineprob
• modmap
• oct2gen
• qaskdeco
• qaskenco
• randbit
• rscore
• rsdeco
• rsdecode
• rsenco
• rsencode
• rspoly
• sim2gen
• sim2gen2
• sim2logi
• sim2tran
• simpassbandex
• simsum
• simsum2
• viterbi
• vitshort
7-8
The following function, which was previously announced for removal in a future release,
will remain in the Communications System Toolbox product.
• rcosfir
Frame-Based Processing
Beginning in R2010b, MathWorks started to significantly change the handling of framebased processing. In the future, frame sta tus will no longer be a signal attribute.
Instead, individual blocks will control whether they treat inputs as frames of data or as
samples of data. For more information, see “Frame-Based Processing” on page 9-6.
Inherited Option of the Input Processing Parameter Now Warns
Some Communications System Toolbox blocks are able to process both sample- and
frame-based signals. After the transition to the new way of handling frame-based
processing, signals will no longer carry information about their frame status. Blocks that
can perform both sample- and frame-based processing have a new parameter that allows
you to specify the appropriate processing behavior.
To prepare for this change, many blocks received a new Input processing parameter
in previous releases. You can set this parameter to Columns as channels (frame
based) or Elements as channels (sample based), depending upon the type of
processing you want. The third choice, Inherited (this choice will be removed
- see release notes), is a temporary selection that is available to help you migrate
your existing models from the old paradigm of frame-based processing to the new
paradigm.
In this release your model will warn when the following conditions are all met for any
block in your model:
• The Input processing parameter is set to Inherited (this choice will be
removed - see release notes)
• The input signal is sample-based
• The input signal is a vector, matrix, or N-dimensional array
To see a list of Communications System Toolbox blocks that contain the Input
processing parameter, expand the following section.
Blocks with Input Processing Parameter
• AWGN Channel (with only two options)
7-9
R2012a
• Derepeat
• Gaussian Filter
• Ideal Rectangular Pulse Filter
• Raised Cosine Receive Filter
• Raised Cosine Transmit Filter
• Windowed Integrator
Compatibility Considerations
Compatibility Considerations
To eliminate this warning, you must upgrade your existing models using the slupdate
function. The function detects all blocks that have Inherited (this choice will
be removed - see release notes) selected for the Input processing parameter.
It then asks you whether you would like to upgrade each block. If you select yes, the
function detects the status of the frame bit on the input port of the block. If the frame
bit is 1 (frames), the function sets the Input processing parameter to Columns as
channels (frame based). If the bit is 0 (samples), the function sets the parameter to
Elements as channels (sample based).
In a future release, the frame bit and the Inherited (this choice will be
removed - see release notes) option will be removed. At that time, the Input
processing parameter in models that have not been upgraded will automatically be
set to either Columns as channels (frame based) or Elements as channels
(sample based). The option set will depend on the library default setting for each
block. If the library default setting does not match the parameter setting in your
model, your model will produce unexpected results. Additionally, after the frame bit
is removed, you will no longer be able to upgrade your models using the slupdate
function. Therefore, you should upgrade your existing modes using slupdate as soon as
possible.
Inherited Option of the Rate Options Parameter Now Warns
Some Communications System Toolbox blocks support single-rate or multirate
processing. After the transition to the new paradigm for handling frame-based
processing, signals will no longer carry information about their frame status. Blocks
that can perform both single-rate and multirate processing have a new parameter that
allows you to specify the appropriate processing behavior. To prepare for this change,
7-10
many blocks received a new Rate options parameter in previous releases. You can
set this parameter to Enforce single-rate processing or Allow multirate
processing. The third choice, Inherit from input (this choice will be
removed - see release notes), is a temporary selection that is available to help
you migrate your existing models from the old paradigm of frame-based processing to the
new paradigm.
In this release your model will warn when the following conditions are met for any block
in your model:
• The Rate options parameter set to Inherit from input (this choice will
be removed - see release notes)
• The input signal is sample-based
• The input signal is a scalar
To see a full list of Communications System Toolbox blocks that have a new Rate
options parameter, expand the following section.
Blocks with Rate Options Parameter
• OQPSK Modulator Baseband
• OQPSK Demodulator Baseband
• CPM Modulator Baseband
• CPM Demodulator Baseband
• MSK Modulator Baseband
• MSK Demodulator Baseband
• GMSK Modulator Baseband
• GMSK Demodulator Baseband
• CPFSK Modulator Baseband
• CPFSK Demodulator Baseband
• M-FSK Demodulator Baseband
• M-FSK Modulator Baseband
Compatibility Considerations
Compatibility Considerations
7-11
R2012a
To eliminate this warning, you must upgrade your existing models using the slupdate
function. The function detects all blocks that have Inherit from input (this
choice will be removed - see release notes) selected for the Rate options
parameter. It then asks you whether you would like to upgrade each block. If you select
yes, the function detects the status of the frame bit on the input port of the block. If
the frame bit is 1 (frames), the function sets the Rate options parameter to Enforce
single-rate processing. If the bit is 0 (samples), the function sets the parameter to
Allow multirate processing.
In a future release, the frame bit and the Inherit from input (this choice will
be removed - see release notes) option will be removed. At that time, the Rate
options parameter in models that have not been upgraded will automatically be set
to either Enforce single-rate processing or Allow multirate processing.
The option set will depend on the library default setting for each block. If the library
default setting does not match the parameter setting in your model, your model will
produce unexpected results. Additionally, after the frame bit is removed, you will no
longer be able to upgrade your models using the slupdate function. Therefore, you
should upgrade your existing modes using slupdate as soon as possible.
7-12
R2011b
Version: 5.1
New Features
Bug Fixes
Compatibility Considerations
R2011b
New Demos
• The Transceiver Simulation Acceleration demo illustrates simulation acceleration
improvements by comparing simulation times using System objects with simulation
times using MATLAB functions.
• The Parallel Concatenated Convolutional Coding: Turbo Codes demo now uses the
Turbo Encoder and Turbo Decoder blocks and the accompanying MATLAB script uses
the comm.TurboEncoder and comm.TurboDecoder System objects.
Turbo Codes
Communications System Toolbox now supports turbo codes. These error correction codes
approach the Shannon limit, resulting in low error rates for transmission schemes with
low signal-to-noise ratios. You can implement turbo codes using either MATLAB System
objects or Simulink blocks:
• comm.TurboDecoder
• comm.TurboEncoder
• Turbo Decoder
• Turbo Encoder
USRP2 Migration
Support for the UDP-based USRP2 Transmitter and USRP2 Receiver blocks is being
removed in release R2011b. New USRPTM blocks and System objects that work with
USRPTM radios using the Universal Hardware DriverTM from Ettus ResearchTM are now
available. These new blocks and objects support buffers with arbitrary frame size. If you
have Communications System Toolbox, you can download and use these new blocks and
System objects.
GPU System Objects
This release adds new GPU System objects, which use a graphics processing unit (GPU)
to procure simulation results more quickly than a CPU. These new objects include:
• comm.gpu.AWGNChannel
• comm.gpu.BlockDeinterleaver
8-2
• comm.gpu.BlockInterleaver
• comm.gpu.PSKModulator
• comm.gpu.ViterbiDecoder
Custom System Objects
You can now create custom System objects in MATLAB. This capability allows you to
define your own System objects for time-based and data-driven algorithms, I/O, and
visualizations. The System object API provides a set of implementation and service
methods that you incorporate into your code to implement your algorithm. See Define
New System Objects in the DSP System Toolbox documentation for more information.
Variable-Size Support
The following blocks now support variable-size input and/or output signals:
• APP Decoder
• AWGN Channel (Enter commvarsize at the MATLAB command line to access the
library containing this implementation of the block)
• CRC-N Generator
• CRC-N Syndrome Detector
• Error Rate Calculation
• General CRC Generator
• General CRC Syndrome Detector
• OSTBC Combiner
• OSTBC Encoder
• Turbo Decoder (Enter commvarsize at the MATLAB command line to access the
library containing this implementation of the block)
• Turbo Encoder (Enter commvarsize at the MATLAB command line to access the
library containing this implementation of the block)
The following blocks now support puncturing with variable-size signals:
• Convolutional Encoder
• Viterbi Decoder
8-3
R2011b
The following System objects now support variable-size input and/or output signals:
• comm.APPDecoder
• comm.ConvolutionalEncoder
• comm.CRCDetector
• comm.CRCGenerator
• comm.ErrorRate
• comm.OSTBCCombiner
• comm.OSTBCEncoder
• comm.TurboDecoder
• comm.TurboEncoder
• comm.ViterbiDecoder
System Object Code Generation Support
The following System objects support code generation:
• comm.BarkerCode
• comm.DifferentialDecoder
• comm.DifferentialEncoder
• comm.DiscreteTimeVCO
• comm.HadamardCode
• comm.OVSFCode
• comm.TurboEncoder
• comm.TurboDecoder
• comm.WalshCode
Delayed Reset for Viterbi Decoder
The Viterbi Decoder block and Viterbi Decoder System object now have a delayed reset
option. The delay in the reset action allows the block to support HDL code generation. To
generate HDL code, you must have an HDL Coder license.
For the Viterbi Decoder block:
8-4
• Select Enable reset input port
• Select Delay reset action to next time step. This parameter only appears when
you set the Operation mode parameter to Continuous.
The Viterbi Decoder block resets its internal state after decoding the incoming data.
For the comm.ViterbiDecoder System object
• Set ResetInputPort to true
• Set DelayedResetAction to true. This property only appears when you set the
ResetInputPort property to true.
• Set TerminationMethod to Continuous
The Viterbi Decoder System object resets its internal state after decoding the incoming
data.
System Objects FullPrecisionOverride Property Added
A FullPrecisionOverride property has been added to the System objects listed below.
This property is a convenient way to control whether the object uses full precision to
process fixed-point inputs.
When you set this property to true, which is the default, it eliminates the need to set
many fixed-point properties individually. It also hides the display of these properties
(such as RoundingMode, OverflowAction, etc.) because they are no longer applicable
individually.
To set individual fixed-point properties, you must first set FullPrecisionOverride to
false.
Note: The CoefficientDataType property is not controlled by
FullPrecisionOverride
This change affects the following System objects:
• comm.IntegrateAndDumpFilter
• comm.PAMDemodulator
8-5
R2011b
• comm.RectangularQAMDemodulator
• comm.GeneralQAMDemodulator
Compatibility Considerations
Compatibility Consideration
All these System objects have their new FullPrecisionOverride property set to the
default, true. If you had set any fixed-point properties to nondefault values for these
objects, those values are ignored. As a result, you may see different numerical answers
from those answers in a previous release. To use your nondefault fixed-point settings, you
must first change FullPrecisionOverride to false.
APP Decoder System Object Parameter Change
For the APP Decoder System object, the Algorithm property replaces the
MetricMethod property. At this time, existing customer code continues to work;
however, a warning prompts you to update the code.
Compatibility Considerations
Compatibility Consideration
If you have any existing System object code that uses the MetricMethod property, you
should use the sysobjupdate function to update your code. For more information, type
help sysobjupdate at the MATLAB command line.
System Object DataType and CustomDataType Properties Changes
When you set a System object, fixed-point <xxx>DataType property to ‘Custom’, it
activates a dependent Custom<xxx>DataType property. If you set that dependent
Custom<xxx>DataType property before setting its <xxx>DataType property, a warning
message displays. <xxx> differs for each object.
Compatibility Considerations
Compatibility Considerations
8-6
Previously, setting the dependent Custom<xxx>DataType property would automatically
change its <xxx>DataType property to ‘Custom’. If you have code that sets the
dependent property first, avoid warnings by updating your code. Set the <xxx>DataType
property to ‘Custom’ before setting its Custom<xxx>DataType property.
Note: If you have a Custom<xxx>DataType in your code, but do not explicitly update
your code to change <xxx>DataType to ‘Custom’, you may see different numerical
output.
Conversion of System Object Error and Warning Message Identifiers
For R2011b, error and warning message identifiers for System objects have changed in
Communications System Toolbox software.
Compatibility Considerations
Compatibility Considerations
If you have scripts or functions that use message identifiers that changed, you must
update the code to use the new identifiers. Typically, message identifiers are used to turn
off specific warning messages. You can also use them in code that uses a try/catch
statement and performs an action based on a specific error identifier.
For example, the MATLAB:system:System:inputSpecsChangedWarning identifier
has changed to MATLAB:system:inputSpecsChangedWarning . If your code checks for
MATLAB:system:System:inputSpecsChangedWarning, you must update it to check
for MATLAB:system:inputSpecsChangedWarning instead.
To determine the identifier for a warning, run the following command just after you see
the warning:
[MSG,MSGID] = lastwarn;
This command saves the message identifier to the variable MSGID.
To determine the identifier for an error, run the following command just after you see the
error:
exception = MException.last;
MSGID = exception.identifier;
8-7
R2011b
Warning messages indicate a potential issue with your code. While you can turn off a
warning, a suggested alternative is to change your code so it runs without warnings.
Frame-Based Processing
Beginning in R2010b, MathWorks started to significantly change the handling of framebased processing. In the future, frame status will no longer be a signal attribute. Instead,
individual blocks will control whether they treat inputs as frames of data or as samples
of data. For more information, see “Frame-Based Processing” on page 9-6.
8-8
R2011a
Version: 5.0
New Features
Bug Fixes
Compatibility Considerations
R2011a
Product Restructuring
The Communications System Toolbox product replaces two pre-existing products:
Communications Blockset and Communications Toolbox. You can access archived
documentation for both products on the MathWorks Web site.
LDPC Encoder and Decoder System Objects
This release adds new comm.LDPCEncoder and comm.LDPCDecoder System objects.
These new System objects provide simulation of low-density, parity-check codes.
LDPC GPU Decoder System Object
This release adds a new comm.gpu.LDPCDecoder System object, which uses a graphics
processing unit (GPU) to decode low-density, parity-check codes. This new System object
procures simulation results more quickly than a CPU.
Variable-Size Support
The following blocks now support variable-size input signals:
• M-PSK Modulator Baseband
• QPSK Modulator Baseband
• BPSK Modulator Baseband
• M-PAM Modulator Baseband
• Rectangular QAM Modulator Baseband
• General QAM Modulator Baseband
• M-PSK Demodulator Baseband
• QPSK Demodulator Baseband
• BPSK Demodulator Baseband
• M-PAM Demodulator Baseband
• Rectangular QAM Demodulator Baseband
• General QAM Demodulator Baseband
• Bit to Integer Converter
• Integer to Bit Converter
• Convolutional Encoder
9-2
• Viterbi Decoder
The following source blocks can now output variable-size signals:
• Gold Sequence Generator
• Kasami Sequence Generator
• PN Sequence Generator
The following System objects now support variable-size input signals:
• comm.PSKModulator
• comm.QPSKModulator
• comm.BPSKModulator
• comm.PAMModulator
• comm.RectangularQAMModulator
• comm.GeneralQAMModulator
• comm.PSKDemodulator
• comm.QPSKDemodulator
• comm.BPSKDemodulator
• comm.PAMDemodulator
• comm.RectangularQAMDemodulator
• comm.GeneralQAMDemodulator
• comm.IntegerToBit
• comm.BitToInteger
The following System objects now output variable-size signals:
• comm.GoldSequence
• comm.KasamiSequence
• comm.PNSequence
Algorithm Improvements for CRC Blocks
This release introduces a new encoding algorithm for all blocks in the CRC sublibrary
residing in the Error Detection and Correction library. In this new implementation, the
block processes multiple input bits in one step, resulting in faster processing times. The
previous implementation always processed one input bit at each step.
9-3
R2011a
MATLAB Compiler Support for System Objects
The Communications System Toolbox supports the MATLAB Compiler for most System
objects. With this capability, you can use the MATLAB Compiler to take MATLAB files,
which can include System objects, as input and generate standalone applications.
The following System objects are not supported by the MATLAB Compiler software:
'Internal rule' System Object Property Values Changed to 'Full precision'
To clarify the value of many DataType properties, the 'Internal rule' option has
been changed to 'Full precision'.
Compatibility Considerations
Compatibility Consideration
The objects allow you to enter either 'Internal rule' or 'Full precision'. If you
enter 'Internal rule', that option is stored as 'Full precision'.
System Object Code Generation Support
The following System objects support code generation:
• comm.PSKTCMMoldulator
• comm.RectangularQAMTCMModulator
• comm.GeneralQAMTCMModulator
• comm.EarlyLateGateTimingSynchronizer
• comm.GardnerTimingSynchronizer
• comm.GMSKTimingSynchronize
• comm.MSKTimingSynchronizer
• comm.MuellerMullerTimingSynchronizer
• comm.KasamiSequence
LDPC Decoder Block Warnings
Communications System Toolbox software uses a new implementation of the LDPC
Decoder block. If you open a previously existing model that contains the LDPC block, the
9-4
model generates a warning at the MATLAB command line. Simply resave the model to
prevent any subsequent warnings.
Phase/Frequency Offset Block and System Object Change
In previous releases, when the frequency offset input signal to the Phase/Frequency
Offset block or comm.PhaseFrequencyOffset System object was constant, or timeinvariant, the block and System object generated the correct output. However, the
block and System object produced incorrect results for a time-varying frequency offset
input signal. The new implementation generates the correct output for a time-varying
frequency offset input signal.
Derepeat Block Changes
The Derepeat block now contains the Input processing and Rate options parameters.
See “Sample- and Frame-Based Concepts” for more information.
Version 2, 2.5, and 3.0 Obsolete Blocks Removed
All the obsolete block libraries associated with Communications Blockset version 2
Release 12, version 2.5 Release 13, and version 3.0 Release 14 have been removed from
this product. The removal includes the following libraries:
• commanabbnd2
• commcontsrc2
• commdigpbndam2
• commdigpbndcpm2
• commdigpbndfm2
• commdigpbndpm2
• comminteg2
• commanapbnd2
• commchan2
• commdigbbndam2
• commdigbbndpm2
9-5
R2011a
Compatibility Considerations
Compatibility Considerations
Communications System Toolbox software does not support any of the blocks from
Release 12 and Release 13. The Communications System Toolbox block libraries provide
some of the same functionality in the form of upgraded blocks.
System Objects Input and Property Warnings Changed to Errors
When a System object is locked (for example, after the step method has been called),
the following situations now produce an error. This change prevents the loss of state
information.
• Changing the input data type
• Changing the number of input dimensions
• Changing the input complexity from real to complex
• Changing the data type, dimension, or complexity of tunable property
• Changing the value of a nontunable property
Compatibility Considerations
Compatibility Consideration
Previously, the object issued a warning for these situations. The object then unlocked,
reset its state information, relocked, and continued processing. To update existing code
so that it does not produce an error, use the release method before changing any of the
items listed above.
Frame-Based Processing
In signal processing applications, you often need to process sequential samples of data
at once as a group, rather than one sample at a time. Communications System Toolbox
documentation refers to the former as frame-based processing and the latter as samplebased processing (see “Sample- and Frame-Based Concepts”). A frame is a collection of
samples of data, sequential in time.
Historically, Simulink-family products that can perform frame-based processing
propagate frame-based signals throughout a model. The frame status is an attribute
9-6
of the signals in a model, just as data type and dimensions are attributes of a signal.
The Simulink engine propagates the frame attribute of a signal by means of a frame bit,
which can either be on or off. When the frame bit is on, Simulink interprets the signal
as frame based and displays it as a double line, rather than the single line sample-based
signal.
General Product-Wide Changes
Beginning in R2010b, MathWorks started to significantly change the handling of framebased processing. In the future, frame status will no longer be a signal attribute. Instead,
individual blocks will control whether they treat inputs as frames of data or as samples
of data. To learn how a particular block handles its input, you can refer to the block
reference page.
To transition to the new paradigm of frame-based processing, many blocks have received
new parameters. The following sections provide more detailed information about the
specific Communications System Toolbox software changes that are helping to enable the
transition to the new way of frame-based processing:
• “Blocks with a New Input Processing Parameter” on page 9-8
• “Multirate Processing Parameter Changes” on page 9-10
• “Sample-Based Row Vector Processing Changes” on page 9-11
Compatibility Considerations
Compatibility Considerations
During this transition to the new way of handling frame-based processing, both the
old way (frame status as an attribute of a signal) and the new way (each block controls
whether to treat inputs as samples or as frames) will coexist for a few releases. For now,
the frame bit will still flow throughout a model, and you will still see double signal lines
in your existing models that perform frame-based processing.
• Backward Compatibility — By default, when you load an existing model in R2010b
any new parameters related to the frame-based processing change will be set to
their backward-compatible option. For example, if any blocks in your existing models
received the Input processing parameter, the parameter will be set to Inherited
(this choice will be removed - see release notes) when you load your
model. This setting enables your existing models to continue working as expected
until you upgrade them. Because the inherited option will be removed in a future
release, you should upgrade your existing models as soon as possible.
9-7
R2011a
• slupdate Function — To upgrade your existing models to the new way of handling
frame-based processing, you can use the slupdate function. Your model must be
compilable in order to run the slupdate function. The function detects all blocks
in your model that are in need of updating, and asks you whether you would like to
upgrade each block. If you select yes, the slupdate function updates your blocks
accordingly.
• Timely Update to Avoid Unexpected Results — It is important to update your
existing models as soon as possible because the frame bit will be removed in a future
release. At that time, any blocks that have not yet been upgraded to work with the
new paradigm of frame-based processing will automatically transition to perform
their library default behavior. The library default behavior of the block might not
produce the results you expected, thus causing undesired results in your models. Once
the frame bit is removed, you will no longer be able to upgrade your models using
the slupdate function. Therefore, you should upgrade your existing modes using
slupdate as soon as possible.
For more detailed information about the specific compatibility considerations related
to the R2010b frame-based processing changes, see the following Compatibility
Considerations sections.
Blocks with a New Input Processing Parameter
Some Communications System Toolbox blocks are able to process both sample- and
frame-based signals. After the transition to the new way of handling frame-based
processing, signals will no longer carry information about their frame status. Blocks that
can perform both sample- and frame-based processing will require a new parameter that
allows you to specify the appropriate processing behavior. To prepare for this change,
many blocks received a new Input processing parameter. You can select Columns as
channels (frame based) or Elements as channels (sample based), depending
upon the type of processing you want. The third choice, Inherited (this choice
will be removed - see release notes), is a temporary selection. This additional
option will help you to migrate your existing models from the old paradigm of framebased processing to the new paradigm.
For a list of blocks that received a new Input processing parameter, expand the
following list.
Blocks with New Input Processing Parameter
• Derepeat
• Gaussian Filter
9-8
• Windowed Integrator
• AWGN Channel (with only two options)
Compatibility Considerations
Compatibility Considerations
When you load an existing model R2010b, any block with the new Input processing
parameter will show a setting of Inherited (this choice will be removed see release notes). This setting enables your existing models to continue to work as
expected until you upgrade them. Although your old models will still work when you open
and run them in R2010b, you should upgrade them as soon as possible.
You can upgrade your existing models, using the slupdate function. The function detects
all blocks that have Inherited (this choice will be removed - see release
notes) selected for the Input processing parameter, and asks you whether you
would like to upgrade each block. If you select yes for the Gaussian Filter or Windowed
Integrator, the function detects the status of the frame bit on the input port of the block.
If the frame bit is 1 (frames), the function sets the Input processing parameter to
Columns as channels (frame based). If the bit is 0 (samples), the function sets the
parameter to Elements as channels (sample based).
In a future release, the frame bit and the Inherited (this choice will be
removed - see release notes) option will be removed. At that time, the Input
processing parameter in models that have not been upgraded will automatically be
set to either Columns as channels (frame based) or Elements as channels
(sample based), depending on the library default setting for each block. If the library
default setting does not match the parameter setting in your model, your model will
produce unexpected results. Additionally, after the frame bit is removed, you will no
longer be able to upgrade your models using the slupdate function. Therefore, you
should upgrade your existing modes using slupdate as soon as possible.
AWGN Channel Block Changes
The AWGN Channel block uses the new method of “Frame-Based Processing” on page
9-6. In previous releases, the frame status of the input signal determined how
the AWGN Channel block processed the signal. In R2010b, the default behavior of the
AWGN Channel block is to always perform frame-based processing.
Unless you specify otherwise, the block now treats each column of the input signal as
an individual channel, regardless of its frame status. To enable the behavior change
9-9
R2011a
in the AWGN Channel block while still allowing for backward compatibility, an Input
processing parameter has been added. This parameter will be removed in a future
release, at which point the block will always perform frame-based processing.
Compatibility Considerations
Compatibility Considerations
The Input processing parameter will be removed in a future release. At that point in
time, the AWGN Channel block will always perform frame-based processing.
You can use the slupdate function to upgrade your existing models that contain an
AWGN Channel block. The function detects all AWGN Channel blocks in your model
and, if you allow it to, performs the following actions:
• If the input to the block is an M-by-1 or unoriented sample-based signal, the
slupdate function performs three actions. First, a Transpose block is placed in
front of the AWGN Channel block in your model. This block transposes the M-by-1 or
unoriented sample-based input into a 1-by-M row vector. By converting the input to
a row vector, the block continues to produce the same results as in previous releases.
The slupdate function also sets the Input processing parameter to Columns as
channels (frame based). This setting ensures that your model will continue to
produce the same results when the Input processing parameter is removed in a
future release. The slupdate function also adds a Transpose block after the AWGN
channel block in your model for an M-by-1 sample-based input and a Reshape block
for unoriented inputs. By converting the row vector output of the AWGN channel to
the input dimension, the model continues to behave as in prior releases.
• If the input to the block is not an M-by-1 or unoriented sample-based signal, the
slupdate function sets the Input processing parameter to Columns as channels
(frame based). This setting does not affect the behavior of your current model.
However, the change does ensure that your model will continue to produce the same
results when the Input processing parameter is removed in a future release.
Multirate Processing Parameter Changes
In R2010a and earlier releases, many Communications System Toolbox blocks that
supported multirate processing had a Framing parameter. This parameter allowed
you to specify whether the block should Maintain input frame size or Maintain
input frame rate when processing the input signal. Beginning in R2010b, a new
Rate options parameter replaced the Framing parameter. The Rate options
9-10
parameter allows you to specify whether the block should Enforce single-rate
processing or Allow multirate processing.
Some blocks that supported multirate processing in R2010a and earlier releases did
not have a Framing parameter. These blocks used the frame status of the input signal
to determine whether they performed single-rate or multirate processing. Because of
the upcoming frame-based processing changes, signals will no longer carry their frame
status. Thus, multirate blocks can no longer rely on the frame status of the input signal
to determine whether they perform single-rate or multirate processing. You must now
specify a value for the Rate options parameter on the block dialog box.
To see a full list of blocks that have a new Rate options parameter, expand the
following section.
Multirate Blocks with a New Rate Options Parameter
• Raised Cosine Receive Filter
• Raised Cosine Transmit Filter
• Ideal Rectangular Pulse Filter
• OQPSK Modulator Baseband
• OQPSK Demodulator Baseband
• CPM Modulator Baseband
• CPM Demodulator Baseband
• MSK Modulator Baseband
• MSK Demodulator Baseband
• GMSK Modulator Baseband
• GMSK Demodulator Baseband
• CPFSK Modulator Baseband
• CPFSK Demodulator Baseband
• M-FSK Demodulator Baseband
• M-FSK Modulator Baseband
• Derepeat
Sample-Based Row Vector Processing Changes
The following blocks do not process sample-based row vectors:
9-11
R2011a
• APP Decoder
• Convolutional Encoder
• Viterbi Decoder
• Algebraic Deinterleaver
• Algebraic Interleaver
• General Block Deinterleaver
• General Block Interleaver
• Matrix Deinterleaver
• Matrix Helical Scan Deinterleaver
• Matrix Helical Scan Interleaver
• Matrix Interleaver
• Random Deinterleaver
• Random Interleaver
• M-PAM Modulator Baseband
• Rectangular QAM Modulator Baseband
• DQPSK Modulator Baseband
• M-DPSK Modulator Baseband
• M-PSK Modulator Baseband
• OQPSK Modulator Baseband
• QPSK Modulator Baseband
• M-FSK Modulator Baseband
• CPFSK Modulator Baseband
• CPM Modulator Baseband
• Insert Zero
• Puncture
• Bit to Integer Converter
• Integer to Bit Converter
Compatibility Considerations
Compatibility Considerations
9-12
Using existing models that contain these blocks to process sample-based row vectors
generates an error message.
CMA Equalizer Changes
The CMA Equalizer block now handles input signals like the other equalizer blocks in
the Communications Blockset library. Therefore, the block no longer accepts scalar input
signals in symbol-spaced mode.
Differential Encoder Changes
The Differential Encoder block supports scalar-valued and column vector input signals. It
does not support frame-based or sample-based row vectors.
Find Delay and Align Signal Block Changes
The Correlation window length parameter specifies the number of samples the block
uses to calculate the cross-correlation of two signals. You must specify a window lengths
of at least 2 for the cross-correlation calculations. If you set the Correlation window
length parameter to 1, the block generates an error message. The following blocks
contain the Correlation window length parameter:
• Find Delay
• Align Signals
New Demos
This release contains the following new demos:
• Parallel Concatenated Convolutional Coding: Turbo Codes
• Go-Back-N ARQ with PHY Layer
• Adaptive MIMO System with OSTBC
• CORDIC-Based QPSK Carrier Synchronization
• DVB-S.2 Link, Including LDPC Coding
• DVB-S.2 System Simulation Using a GPU-Based LDPC Decoder System Object
9-13