Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

cdma2000 の波形生成

この例では、Communications Toolbox™ を使用して、規格に準拠した、フォワード (ダウンリンク) およびリバース (アップリンク) の cdma2000® 波形を生成する方法を説明します。

はじめに

Communications Toolbox を使用して、事前に設定またはカスタマイズを行い、規格に準拠したフォワードおよびリバースの cdma2000 波形を生成できます。具体的には、以下のチャネルがサポートされています。

フォワード cdma2000:

  • フォワード パイロット チャネル (F-PICH)

  • フォワード補助パイロット チャネル (F-APICH)

  • フォワード送信ダイバーシティ パイロット チャネル (F-TDPICH)

  • フォワード補助送信ダイバーシティ パイロット チャネル (F-ATDPICH)

  • フォワード同期チャネル (F-SYNC)

  • フォワード ページング チャネル (F-PCH)

  • フォワード クイック ページング チャネル (F-QPCH)

  • フォワード ブロードキャスト制御チャネル (F-BCCH)

  • フォワード共通制御チャネル (F-CCCH)

  • フォワード専用制御チャネル (F-DCCH)

  • フォワード共通電力制御チャネル (F-CPCCH)

  • 電力制御サブチャネルを含むフォワード基本トラフィック チャネル (F-FCH)

  • フォワード補足コード チャネル (F-SCCH)

  • フォワード補足チャネル (F-SCH)

  • フォワード パケット データ共通制御チャネル (F-PDCCH)

  • フォワード直交チャネル ノイズ (F-OCNS)

リバース cdma2000:

  • 電力制御サブチャネルを含むリバース パイロット チャネル (R-PICH)

  • リバース アクセス チャネル (R-ACH)

  • リバース エンハンスド アクセス チャネル (R-EACH)

  • リバース共通制御チャネル (R-CCCH)

  • リバース専用制御チャネル (R-DCCH)

  • リバース基本トラフィック チャネル (R-FCH)

  • リバース補足コード チャネル (R-SCCH)

  • リバース補足チャネル (R-SCH)

生成された波形は、以下の用途に使用できます。

  • 送信機実装のゴールデン リファレンス

  • 受信機のテストおよびアルゴリズム開発

  • RF ハードウェアおよびソフトウェアのテスト

  • 干渉テスト

波形生成の手法

  • 波形は、関数cdma2000ForwardWaveformGeneratorおよび関数cdma2000ReverseWaveformGeneratorを使用して生成できます。これらの関数の入力は、最上位の波形パラメーターを含む構造体と、チャネル固有のパラメーターを含むサブ構造体です。この例では、これらの構造体がどのように構成されるかを最初から説明します。

  • 事前に設定された構造体の構成は、関数cdma2000ForwardReferenceChannelsおよび関数cdma2000ReverseReferenceChannelsを使用して作成できます。このように事前に設定された構成は、一般的なテストや測定のシナリオを表したり、波形構成のカスタマイズに便利な開始点 (ウィザード) を提供することができます。

事前設定駆動型のフォワードおよびリバース cdma2000 波形の生成

事前に設定された構造体構成は、波形生成関数に渡すことができます。たとえば、次のコマンドによって、無線構成 4 で使用可能なフォワードおよびリバース チャネルがすべて生成されます。

forwardPresetConfig     = cdma2000ForwardReferenceChannels('ALL-RC4');
forwardPresetWaveform   = cdma2000ForwardWaveformGenerator(forwardPresetConfig);

reversePresetConfig     = cdma2000ReverseReferenceChannels('ALL-RC4');
reversePresetWaveform   = cdma2000ReverseWaveformGenerator(reversePresetConfig);

完全なパラメーター リストを使用したフォワード cdma2000 波形の生成

次に、等価な構成の構造体の作成について最初から説明します (フォワード cdma2000)。これは、事前に設定された構成をカスタマイズする場合にも便利です。

fManualConfig.SpreadingRate          = 'SR1';           % Spreading Rate 1 or 3
fManualConfig.Diversity              = 'NTD';           % No Transmit Diversity (other options are 'OTD', 'STS')
fManualConfig.QOF                    = 'QOF1';          % Quasi-orthogonal function 1, 2 or 3
fManualConfig.PNOffset               = 0;               % PN offset of Base station
fManualConfig.LongCodeState          = 0;               % Initial long code state
fManualConfig.PowerNormalization     = 'Off';           % Power normalization: 'Off', 'NormalizeTo0dB' or 'NoiseFillTo0dB'
fManualConfig.OversamplingRatio      = 4;               % Upsampling factor
fManualConfig.FilterType             = 'cdma2000Long';  % Filter coefficients: 'cdma2000Long', 'cdma2000Short', 'Custom' or 'Off'
fManualConfig.InvertQ                = 'Off';           % Negate the imaginary part of the waveform
fManualConfig.EnableModulation       = 'Off';           % Enable carrier modulation
fManualConfig.ModulationFrequency    = 0;               % Modulation frequency (Hz)
fManualConfig.NumChips               = 1000;            % Number of chips in the waveform

fpich.Enable                = 'On';                     % Enable the F-PICH channel
fpich.Power                 = 0;                        % Relative channel power (dBW)
fManualConfig.FPICH         = fpich;                    % Add the channel to the waveform configuration

fapich.Enable               = 'On';                     % Enable the F-APICH channel
fapich.Power                = 0;                        % Relative channel power (dBW)
fapich.WalshCode            = 10;                       % Unique Walsh code number
fapich.WalshLength          = 64;                       % Walsh code length
fManualConfig.FAPICH        = fapich;                   % Add the channel to the waveform configuration

ftdpich.Enable              = 'On';                     % Enable the F-TDPICH channel
ftdpich.Power               = 0;                        % Relative channel power (dBW)
fManualConfig.FTDPICH       = ftdpich;                  % Add the channel to the waveform configuration

fatdpich.Enable             = 'On';                     % Enable the F-ATDPICH channel
fatdpich.Power              = 0;                        % Relative channel power (dBW)
fatdpich.WalshCode          = 11;                       % Unique Walsh code number
fatdpich.WalshLength        = 64;                       % Walsh code length
fManualConfig.FATDPICH      = fatdpich;                 % Add the channel to the waveform configuration

fpch.Enable                 = 'On';                     % Enable the F-PCH channel
fpch.Power                  = 0;                        % Relative channel power (dBW)
fpch.LongCodeMask           = 0;                        % Long code mask
fpch.DataRate               = 4800;                     % Data rate (bps)
fpch.EnableCoding           = 'On';                     % Enable channel coding
fpch.DataSource             = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
fpch.WalshCode              = 1;                        % Unique Walsh code number
fManualConfig.FPCH          = fpch;                     % Add the channel to the waveform configuration

fsync.Enable                = 'On';                     % Enable the F-SYNC channel
fsync.Power                 = 0;                        % Relative channel power (dBW)
fsync.EnableCoding          = 'On';                     % Enable channel coding
fsync.DataSource            = {'PN9', 1};               % Input message: {'PNX', Seed}, numerical vector or 'SyncMessage'
fManualConfig.FSYNC         = fsync;                    % Add the channel to the waveform configuration

fbcch.Enable                = 'On';                     % Enable the F-BCCH channel
fbcch.Power                 = 0;                        % Relative channel power (dBW)
fbcch.LongCodeMask          = 0;                        % Long code mask
fbcch.DataRate              = 4800;                     % Data rate (bps)
fbcch.FrameLength           = 160;                      % Frame length (ms)
fbcch.EnableCoding          = 'On';                     % Enable channel coding
fbcch.DataSource            = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
fbcch.WalshCode             = 2;                        % Unique Walsh code number
fbcch.CodingType            = 'conv';                   % Coding type: 'conv' or 'turbo'
fManualConfig.FBCCH         = fbcch;                    % Add the channel to the waveform configuration

fcach.Enable                = 'On';                     % Enable the F-CACH channel
fcach.Power                 = 0;                        % Relative channel power (dBW)
fcach.LongCodeMask          = 0;                        % Long code mask
fcach.EnableCoding          = 'On';                     % Enable channel coding
fcach.DataSource            = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
fcach.WalshCode             = 3;                        % Unique Walsh code number
fcach.CodingType            = 'conv';                   % Coding type: 'conv' or 'turbo'
fManualConfig.FCACH         = fcach;                    % Add the channel to the waveform configuration

fccch.Enable                = 'On';                     % Enable the F-CCCH channel
fccch.Power                 = 0;                        % Relative channel power (dBW)
fccch.LongCodeMask          = 0;                        % Long code mask
fccch.DataRate              = 9600;                     % Data rate (bps)
fccch.FrameLength           = 20;                       % Frame length (ms)
fccch.EnableCoding          = 'On';                     % Enable channel coding
fccch.DataSource            = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
fccch.WalshCode             = 4;                        % Unique Walsh code number
fccch.CodingType            = 'conv';                   % Coding type: 'conv' or 'turbo'
fManualConfig.FCCCH         = fccch;                    % Add the channel to the waveform configuration

fcpcch.Enable               = 'On';                     % Enable the F-CPCCH channel
fcpcch.Power                = 0;                        % Relative channel power (dBW)
fcpcch.LongCodeMask         = 0;                        % Long code mask
fcpcch.EnableCoding         = 'On';                     % Enable channel coding
fcpcch.DataSource           = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
fcpcch.WalshCode            = 5;                        % Unique Walsh code number
fManualConfig.FCPCCH        = fcpcch;                   % Add the channel to the waveform configuration

fqpch.Enable                = 'On';                     % Enable the F-QPCH channel
fqpch.Power                 = 0;                        % Relative channel power (dBW)
fqpch.LongCodeMask          = 0;                        % Long code mask
fqpch.DataRate              = 2400;                     % Data rate (bps)
fqpch.EnableCoding          = 'On';                     % Enable channel coding
fqpch.DataSource            = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
fqpch.WalshCode             = 6;                        % Unique Walsh code number
fManualConfig.FQPCH         = fqpch;                    % Add the channel to the waveform configuration

ffch.Enable                 = 'On';                     % Enable the F-FCH channel
ffch.Power                  = 0;                        % Relative channel power (dBW)
ffch.RadioConfiguration     = 'RC4';                    % Radio Configuration: 1-9
ffch.DataRate               = 9600;                     % Data rate (bps)
ffch.FrameLength            = 20;                       % Frame length (ms)
ffch.LongCodeMask           = 0;                        % Long code mask
ffch.EnableCoding           = 'On';                     % Enable channel coding
ffch.DataSource             = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
ffch.WalshCode              = 7;                        % Unique Walsh code number
ffch.EnableQOF              = 'Off';                    % Enable QOF spreading
ffch.PowerControlEnable     = 'Off';                    % Enable the Power Control Subchannel
fManualConfig.FFCH          = ffch;                     % Add the channel to the waveform configuration

focns.Enable                = 'On';                     % Enable the F-OCNS channel
focns.Power                 = -30;                      % Relative channel power (dBW)
focns.WalshCode              = 12;                      % Unique Walsh code number
focns.WalshLength           = 128;                      % Walsh code length
fManualConfig.FOCNS         = focns;                    % Add the channel to the waveform configuration

fdcch.Enable                = 'On';                     % Enable the F-DCCH channel
fdcch.Power                 = 0;                        % Relative channel power (dBW)
fdcch.RadioConfiguration    = 'RC4';                    % Radio Configuration: 1-9
fdcch.LongCodeMask          = 0;                        % Long code mask
fdcch.DataRate              = 9600;                     % Data rate (bps)
fdcch.FrameLength           = 5;                        % Frame length (ms)
fdcch.EnableCoding          = 'On';                     % Enable channel coding
fdcch.DataSource            = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
fdcch.WalshCode             = 8;                        % Unique Walsh code number
fdcch.EnableQOF             = 'off';                    % Enable QOF spreading
fManualConfig.FDCCH         = fdcch;                    % Add the channel to the waveform configuration

fsch.Enable                 = 'On';                     % Enable the F-SCH channel
fsch.Power                  = 0;                        % Relative channel power (dBW)
fsch.RadioConfiguration     = 'RC4';                    % Radio Configuration: 1-9
fsch.DataRate               = 9600;                     % Data rate (bps)
fsch.FrameLength            = 20;                       % Frame length (ms)
fsch.LongCodeMask           = 0;                        % Long code mask
fsch.EnableCoding           = 'On';                     % Enable channel coding
fsch.DataSource             = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
fsch.WalshCode              = 9;                        % Unique Walsh code number
fsch.EnableQOF              = 'Off';                    % Enable QOF spreading
fsch.CodingType             = 'conv';                   % Coding type: 'conv' or 'turbo'
fManualConfig.FSCH          = fsch;                     % Add the channel to the waveform configuration

forwardManualWaveform   = cdma2000ForwardWaveformGenerator(fManualConfig);

% Demonstrate that the above two parameterization approaches are equivalent:
if(isequal(forwardPresetConfig, fManualConfig))
    disp([  'Configuration structures generated with and without the ' ...
            'cdma2000ForwardReferenceChannels function are the same.']);
end
Configuration structures generated with and without the cdma2000ForwardReferenceChannels function are the same.

完全なパラメーター リストを使用したリバース cdma2000 波形の生成

rManualConfig.RadioConfiguration    = 'RC4';            % Radio Configuration: 1-6
rManualConfig.PowerNormalization    = 'Off';            % Power normalization: 'Off', 'NormalizeTo0dB' or 'NoiseFillTo0dB'
rManualConfig.OversamplingRatio     = 4;                % Upsampling factor
rManualConfig.FilterType            = 'cdma2000Long';   % Filter coefficients: 'cdma2000Long', 'cdma2000Short', 'Custom' or 'Off'
rManualConfig.InvertQ               = 'Off';            % Negate the imaginary part of the waveform
rManualConfig.EnableModulation      = 'Off';            % Enable carrier modulation
rManualConfig.ModulationFrequency   = 0;                % Modulation frequency (Hz)
rManualConfig.NumChips              = 1000;             % Number of chips in the waveform

rfch.Enable                 = 'On';                     % Enable the R-FCH channel
rfch.Power                  = 0;                        % Relative channel power (dBW)
rfch.LongCodeMask           = 0;                        % Long code mask
rfch.EnableCoding           = 'On';                     % Enable channel coding
rfch.DataSource             = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
rfch.DataRate               = 14400;                    % Data rate (bps)
rfch.FrameLength            = 20;                       % Frame length (ms)
rfch.WalshCode              = 1;                        % Unique Walsh code number
rManualConfig.RFCH          = rfch;                     % Add the channel to the waveform configuration

rpich.Enable                = 'On';                     % Enable the R-PICH channel
rpich.Power                 = 0;                        % Relative channel power (dBW)
rpich.LongCodeMask          = 0;                        % Long code mask
rpich.PowerControlEnable    = 'Off';                    % Enable the Power Control Subchannel
rManualConfig.RPICH         = rpich;                    % Add the channel to the waveform configuration

reach.Enable                = 'On';                     % Enable the R-EACH channel
reach.Power                 = 0;                        % Relative channel power (dBW)
reach.LongCodeMask          = 0;                        % Long code mask
reach.EnableCoding          = 'On';                     % Enable channel coding
reach.DataSource            = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
reach.DataRate              = 9600;                     % Data rate (bps)
reach.FrameLength           = 20;                       % Frame length (ms)
reach.WalshCode             = 2;                        % Unique Walsh code number
rManualConfig.REACH         = reach;                    % Add the channel to the waveform configuration

rcch.Enable                 = 'On';                     % Enable the R-CCH channel
rcch.Power                  = 0;                        % Relative channel power (dBW)
rcch.LongCodeMask           = 0;                        % Long code mask
rcch.EnableCoding           = 'On';                     % Enable channel coding
rcch.DataSource             = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
rcch.DataRate               = 9600;                     % Data rate (bps)
rcch.FrameLength            = 20;                       % Frame length (ms)
rcch.WalshCode              = 3;                        % Unique Walsh code number
rManualConfig.RCCCH         = rcch;                     % Add the channel to the waveform configuration

rdcch.Enable                = 'On';                     % Enable the R-DCCH channel
rdcch.Power                 = 0;                        % Relative channel power (dBW)
rdcch.LongCodeMask          = 0;                        % Long code mask
rdcch.EnableCoding          = 'On';                     % Enable channel coding
rdcch.DataSource            = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
rdcch.DataRate              = 14400;                    % Data rate (bps)
rdcch.FrameLength           = 20;                       % Frame length (ms)
rdcch.WalshCode             = 4;                        % Unique Walsh code number
rManualConfig.RDCCH         = rdcch;                    % Add the channel to the waveform configuration

rsch1.Enable                = 'On';                     % Enable the R-SCH1 channel
rsch1.Power                 = 0;                        % Relative channel power (dBW)
rsch1.LongCodeMask          = 0;                        % Long code mask
rsch1.EnableCoding          = 'On';                     % Enable channel coding
rsch1.DataSource            = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
rsch1.DataRate              = 14400;                    % Data rate (bps)
rsch1.FrameLength           = 20;                       % Frame length (ms)
rsch1.WalshLength           = 8;                        % Walsh code length
rsch1.WalshCode             = 5;                        % Unique Walsh code number
rManualConfig.RSCH1         = rsch1;                    % Add the channel to the waveform configuration

rsch2                       = rsch1;                    % Apply the same settings with R-SCH1
rsch2.WalshCode             = 6;                        % Except for the unique Walsh code number
rManualConfig.RSCH2         = rsch2;                    % Add the channel to the waveform configuration

reverseManualWaveform   = cdma2000ReverseWaveformGenerator(rManualConfig);

% Demonstrate that the above two parameterization approaches are equivalent:
if(isequal(reversePresetConfig, rManualConfig))
    disp([  'Configuration structures generated with and without the ' ...
            'cdma2000ForwardReferenceChannels function are the same.']);
end
Configuration structures generated with and without the cdma2000ForwardReferenceChannels function are the same.

波形の比較

上記の両方の方法を使用して生成された波形を比較し、波形が同一であることを確認します

if(isequal(forwardPresetWaveform, forwardManualWaveform))
    disp([  'Forward waveforms generated with and without the ' ...
            'cdma2000ForwardReferenceChannels function are the same.']);
end
Forward waveforms generated with and without the cdma2000ForwardReferenceChannels function are the same.
if(isequal(reversePresetWaveform, reverseManualWaveform))
    disp([  'Reverse waveforms generated with and without the ' ...
            'cdma2000ReverseReferenceChannels function are the same.']);
end
Reverse waveforms generated with and without the cdma2000ReverseReferenceChannels function are the same.

構成のカスタマイズ

目的に適した波形を作成するために構成のための構造体をカスタマイズできます。追加の機能を活用するため、次のように事前に設定された波形をカスタマイズすることもできます。

% 1. Specifying the message of the Sync channel:
fManualConfig2              = fManualConfig;
fsync.Enable                = 'On';                     % Enable the F-SYNC channel
fsync.Power                 = 0;                        % Relative channel power (dBW)
fsync.EnableCoding          = 'On';                     % Enable channel coding
fsync.DataSource            = 'SyncMessage';            % Input message: {'PNX', Seed}, numerical vector or 'SyncMessage'
sm.P_REV                    = 6;                        % Protocol Revision field
sm.MIN_P_REV                = 6;                        % Minimum Protocol Revision field
sm.SID                      = hex2dec('14B');           % System Identifier field 
sm.NID                      = 1;                        % Network Identification field
sm.PILOT_PN                 = 0;                        % Pilot PN Offset field
sm.LC_STATE                 = hex2dec('20000000000');   % Long Code State field
sm.SYS_TIME                 = hex2dec('36AE0924C');     % System Time field
sm.LP_SEC                   = 0;                        % Leap Second field
sm.LTM_OFF                  = 0;                        % Local Time Offset field
sm.DAYLT                    = 0;                        % Daylight Savings Time Indicator field
sm.PRAT                     = 0;                        % Paging Channel Data Rate field
sm.CDMA_FREQ                = hex2dec('2F6');           % CDMA Frequency field
sm.EXT_CDMA_FREQ            = hex2dec('2F6');           % Extended CDMA Frequency field
fsync.SyncMessage           = sm;                       % Sync channel message substructure, used if 'SyncMessage' is the data source
fManualConfig2.FSYNC         = fsync;                    % Add the channel to the waveform configuration

% 2. Enabling the Power Control Subchannel of the Forward Fundamental Channel:
ffch.Enable                 = 'On';                     % Enable the F-FCH channel
ffch.Power                  = 0;                        % Relative channel power (dBW)
ffch.RadioConfiguration     = 'RC4';                    % Radio Configuration: 1-9
ffch.DataRate               = 9600;                     % Data rate (bps)
ffch.FrameLength            = 20;                       % Frame length (ms)
ffch.LongCodeMask           = 0;                        % Long code mask
ffch.EnableCoding           = 'On';                     % Enable channel coding
ffch.DataSource             = {'PN9', 1};               % Input message: {'PNX', Seed} or numerical vector
ffch.WalshCode              = 7;                        % Unique Walsh code number
ffch.EnableQOF              = 'Off';                    % Enable QOF spreading
ffch.PowerControlEnable     = 'On';                     % Enable the Power Control Subchannel
ffch.PowerControlPower      = 0;                        % Power control subchannel power (relative to F-FCH)
ffch.PowerControlDataSource = {'PN9',1};                % Power control subchannel data source
fManualConfig2.FFCH          = ffch;                     % Add the channel to the waveform configuration

forwardManualWaveform2   = cdma2000ForwardWaveformGenerator(fManualConfig2);

フォワード cdma2000 波形のスペクトルのプロット

時間領域の信号 forwardManualWaveform のスペクトルをプロットします。

chiprate                 = 1.2288e6;   % Chip rate of the baseband waveform (SR1)
fSpectrumPlot            = spectrumAnalyzer('SampleRate', chiprate*fManualConfig.OversamplingRatio);
fSpectrumPlot.Title      = 'Spectrum of Forward cdma2000 Waveform';
fSpectrumPlot.YLimits    = [-160,40];
fSpectrumPlot(forwardManualWaveform);

リバース cdma2000 波形のスペクトルのプロット

時間領域の信号 reverseManualWaveform のスペクトルをプロットします。

chiprate                 = 1.2288e6;   % Chip rate of the baseband waveform (SR1)
rSpectrumPlot            = spectrumAnalyzer('SampleRate', chiprate*rManualConfig.OversamplingRatio);
rSpectrumPlot.Title      = 'Spectrum of Reverse cdma2000 Waveform';
rSpectrumPlot.YLimits    = [-160,40];
rSpectrumPlot(reverseManualWaveform);

参考文献

  1. C.S0002-F v2.0: Physical Layer Standard for cdma2000 Spread Spectrum Systems.