このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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);
参考文献
C.S0002-F v2.0: Physical Layer Standard for cdma2000 Spread Spectrum Systems.