メインコンテンツ

dsp.DigitalDownConverter

デジタル信号を中間周波数 (IF) 帯域からベースバンドに変換して間引きする

説明

dsp.DigitalDownConverter オブジェクトは、デジタル信号を中間周波数 (IF) 帯域からベースバンドに変換して間引きします。

入力信号のデジタル ダウンコンバージョンの方法は次のとおりです。

  1. dsp.DigitalDownConverter オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

このオブジェクトは、特定の条件下で C/C++ コード生成と SIMD コード生成をサポートします。詳細については、コード生成を参照してください。

作成

説明

dwnConv = dsp.DigitalDownConverter は、デジタル ダウン コンバーター (DDC) System object™ の dwnConv を返します。

dwnConv = dsp.DigitalDownConverter(Name=Value) は、1 つ以上の名前と値の引数を使用して、プロパティを設定します。たとえば、間引き係数を 50 に指定するには、DecimationFactor を 50 に設定します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

このプロパティは、正の整数スカラーか 1 行 2 列または 1 行 3 列の正の整数のベクトルに設定します。

このプロパティをスカラーに設定した場合、オブジェクトは 3 つの各フィルター段の間引き係数を自動的に選択します。

このプロパティを 1 行 2 列のベクトルに設定した場合、オブジェクトは第 3 フィルター段をバイパスし、第 1 と第 2 のフィルター段の間引き係数をベクトルの 1 番目と 2 番目の要素の値にそれぞれ設定します。DecimationFactor ベクトルの要素はどちらも 1 より大きくなければなりません。

このプロパティを 1 行 3 列のベクトルに設定する場合は、ベクトルの i 番目の要素で第 i フィルター段の間引き係数を指定します。DecimationFactor ベクトルの 1 番目と 2 番目の要素は 1 より大きくなければならず、3 番目の要素は 1 または 2 でなければなりません。

データ型: double

このパラメーターを true に設定した場合、オブジェクトは PassbandRippleStopbandAttenuationBandwidthStopbandFrequencySourceStopbandFrequency の各プロパティを使用して設定した通過帯域リップル、阻止帯域の減衰量、通過帯域周波数、阻止帯域周波数の仕様を満たす最小次数でフィルターを設計します。

このプロパティを false に設定した場合、オブジェクトは NumCICSectionsSecondFilterOrderThirdFilterOrder の各プロパティで指定した次数でフィルターを設計します。フィルター設計は、BandwidthStopbandFrequencySourceStopbandFrequency の各プロパティを使用して設定した通過帯域と阻止帯域の周波数の仕様を満たします。

データ型: logical

CIC 間引きのセクション数。正の整数のスカラーとして指定します。

依存関係

このプロパティは、MinimumOrderDesign プロパティを false に設定した場合に適用されます。

データ型: double

CIC 補正フィルター段の次数。正の整数スカラーとして指定します。

依存関係

このプロパティは、MinimumOrderDesign プロパティを false に設定した場合に適用されます。

データ型: double

第 3 フィルター段の次数。偶数の正の整数スカラーとして指定します。DecimationFactor プロパティを 1 行 2 列のベクトルに設定した場合、第 3 フィルター段はバイパスされるため、オブジェクトは ThirdFilterOrder プロパティを無視します。

依存関係

このプロパティは、MinimumOrderDesign プロパティを false に設定した場合に適用されます。

データ型: double

入力信号の両側帯域幅 BW。Hz 単位の正の整数または正規化周波数単位 (R2024b 以降)として指定します。オブジェクトは、フィルターのカスケードの通過帯域周波数を Bandwidth プロパティで指定した値の半分に設定します。このプロパティの値は、SampleRate/DecimationFactor 未満に設定します。NormalizedFrequencytrue に設定する場合は、このプロパティの値を 2/DecimationFactor 未満に設定します。 (R2024b 以降)

データ型: double

阻止帯域周波数のソースを Auto または Property として指定します。

このプロパティを Auto に設定した場合、各設定に応じて以下のようになります。

  • NormalizedFrequencyfalse にした場合 –– オブジェクトはカスケード フィルター応答のカットオフ周波数を約 Fc = Fs/(2M) Hz に設定します。ここで、MDecimationFactor プロパティで指定した合計間引き係数です。オブジェクトは、阻止帯域周波数を Fstop = Fc + (TW/2) として計算します。TW は、2×(FcFp) として計算されるカスケード応答の遷移帯域幅であり、通過帯域周波数 FpBW/2 に等しくなります。ここで、BW は入力信号の両側帯域幅です。

  • NormalizedFrequencytrue にした場合 –– オブジェクトはカスケード フィルター応答のカットオフ周波数を約 Fc = 1/M に設定します。ここで、MDecimationFactor プロパティで指定した合計間引き係数です。オブジェクトは、阻止帯域周波数を Fstop = Fc + (TW/2) として計算します。TW は、2×(FcFp) として計算されるカスケード応答の遷移帯域幅であり、通過帯域周波数 FpBW/2 に等しくなります。ここで、BW は入力信号の両側帯域幅です。

このプロパティを Property に設定した場合、StopbandFrequency プロパティを使用して阻止帯域周波数の値を指定できます。

阻止帯域周波数 Fstop。Hz 単位または正規化周波数単位で (R2024b 以降)正のスカラーとして指定します。

依存関係

このプロパティを有効にするには、StopbandFrequencySource プロパティを Property に設定します。

データ型: double

カスケード応答の通過帯域リップル (dB 単位)。正のスカラーとして指定します。MinimumOrderDesign プロパティを true に設定した場合、オブジェクトはカスケード応答が PassbandRipple プロパティで指定した通過帯域リップルを満たすようにフィルターを設計します。

依存関係

このプロパティを有効にするには、MinimumOrderDesign プロパティを true に設定します。

データ型: double

カスケード応答の阻止帯域の減衰量 (dB 単位)。正のスカラーとして指定します。MinimumOrderDesign プロパティを true に設定した場合、オブジェクトはカスケード応答が StopbandAttenuation プロパティで指定した阻止帯域の減衰量を満たすようにフィルターを設計します。

依存関係

このプロパティを有効にするには、MinimumOrderDesign プロパティを true に設定します。

データ型: double

発振器のタイプ。次のいずれかのオプションとして指定します。

  • Sine wave –– オブジェクトは正弦波三角関数のサンプルから得られた複素指数を使用して入力信号の周波数をダウン コンバートします。

  • NCO –– オブジェクトは数値制御発振器 (NCO) を使用して得られた複素指数で周波数のダウン コンバージョンを実行します。

  • Input port –– オブジェクトは、オブジェクトへの入力として渡された複素数の発振器信号 z を使用して周波数のダウン コンバージョンを実行します。

  • None –– オブジェクトに混合器段は存在せず、オブジェクトは 3 段カスケード間引きとして動作します。

入力信号 Fc の中心周波数。Hz 単位の正のスカラーまたは正規化周波数単位 (R2024b 以降)として指定します。中心周波数の値は、SampleRate プロパティの値の半分以下でなければなりません。オブジェクトは、入力信号を CenterFrequency プロパティで指定した通過帯域中心周波数から 0 にダウンコンバートします。

依存関係

このプロパティを有効にするには、Oscillator プロパティを Sine wave または NCO に設定します。

データ型: double

NCO のアキュムレータのビット数。範囲 [1 128] の正の整数として指定します。

依存関係

このプロパティを有効にするには、Oscillator プロパティを NCO に設定します。

データ型: double

NCO の量子化アキュムレータのビット数。範囲 [1 128] の整数として指定します。このプロパティで指定する値は、NumAccumulatorBits プロパティで指定した値よりも小さくなくてはなりません。

依存関係

このプロパティを有効にするには、Oscillator プロパティを NCO に設定します。

データ型: double

このプロパティを true に設定した場合、NumDitherBits プロパティで指定したディザーのビット数を使用して NCO 信号にディザーが適用されます。

依存関係

このプロパティを有効にするには、Oscillator プロパティを NCO に設定します。

NCO のディザーのビット数。NumAccumulatorBits プロパティで指定したアキュムレータのビット数よりも小さい正の整数として指定します。

依存関係

このプロパティを有効にするには、Oscillator プロパティを NCO に設定し、Dither プロパティを true に設定します。

データ型: double

R2024b 以降

正規化単位で周波数を設定するオプション。次の値のいずれかとして指定します。

  • true –– 中心周波数、阻止帯域周波数、および帯域幅は、正規化周波数単位 (0 ~ 1) でなければなりません。

    オブジェクトの作成時に NormalizedFrequency プロパティが true に設定され、周波数仕様が設定されなかった場合、オブジェクトは既定のサンプル レート 30 MHz を使用して、正規化周波数単位に既定値を自動的に設定します。

    ddc = dsp.DigitalDownConverter(NormalizedFrequency=true)
    
    ddc = 
      dsp.DigitalDownConverter with properties:
    
               DecimationFactor: 100
             MinimumOrderDesign: true
                      Bandwidth: 0.0133
        StopbandFrequencySource: "Auto"
                 PassbandRipple: 0.1000
            StopbandAttenuation: 60
                     Oscillator: "Sine wave"
                CenterFrequency: 0.9333
            NormalizedFrequency: true
    

    オブジェクトの作成後に NormalizedFrequency プロパティを true に設定する場合は、オブジェクト アルゴリズムを実行する前に、中心周波数、阻止帯域周波数、および帯域幅を正規化された単位で指定しなければなりません。

    ddc = dsp.DigitalDownConverter
    ddc = 
      dsp.DigitalDownConverter with properties:
    
               DecimationFactor: 100
             MinimumOrderDesign: true
                      Bandwidth: 200000
        StopbandFrequencySource: "Auto"
                 PassbandRipple: 0.1000
            StopbandAttenuation: 60
                     Oscillator: "Sine wave"
                CenterFrequency: 14000000
            NormalizedFrequency: false
                     SampleRate: 30000000
    

    正規化周波数値を指定するには、NormalizedFrequencytrue に設定し、Hz 単位の入力サンプル レートを使用して、Hz 単位の周波数値を正規化された値に手動で変換します。たとえば、入力サンプル レート Fs が 30 MHz の場合、正規化単位での対応する帯域幅値は BWHz/(Fs/2)、正規化単位での対応する中心周波数は FcHz/(Fs/2)、正規化単位での対応する阻止帯域周波数は FstopHz/(Fs/2) となります。

    ddc = dsp.DigitalDownConverter;
    ddc.NormalizedFrequency = true;
    ddc.Bandwidth = 200000/(30e6/2);
    ddc.CenterFrequency = 14e6/(30e6/2)
    
    ddc = 
      dsp.DigitalDownConverter with properties:
    
               DecimationFactor: 100
             MinimumOrderDesign: true
                      Bandwidth: 0.0133
        StopbandFrequencySource: "Auto"
                 PassbandRipple: 0.1000
            StopbandAttenuation: 60
                     Oscillator: "Sine wave"
                CenterFrequency: 0.9333
            NormalizedFrequency: true
    

  • false –– 帯域幅、阻止帯域周波数、および中心周波数の値は Hz 単位です。SampleRate プロパティで入力サンプル レートを指定できます。

データ型: logical

入力信号 Fs のサンプル レート。CenterFrequency プロパティの値の 2 倍以上の正のスカラー値として指定します。

依存関係

このプロパティを有効にするには、NormalizedFrequencyfalse に設定します。 (R2024b 以降)

データ型: single | double

固定小数点プロパティ

第 1、第 2、第 3 (バイパスされていない場合) の各フィルター段の入力のデータ型を Same as input または Custom のいずれかとして指定します。オブジェクトは、このプロパティで設定した値に従って各フィルター段の入力でデータをキャストします。

フィルターの入力の固定小数点データ型を Auto の符号属性のスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティは、FiltersInputDataType プロパティを Custom に設定した場合に適用されます。

出力のデータ型を Same as input または Custom として指定します。

出力の固定小数点型を、Signedness が Auto に設定された、スケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティは、OutputDataType プロパティを Custom に設定した場合に適用されます。

使用法

説明

y = dwnConv(x) は入力 x を受け入れて、周波数ダウンコンバートおよびダウンサンプリングされた信号 y を出力します。

Oscillator プロパティを Input port に設定すると、y = dwnConv(x,z) は複素数入力 z を、入力 x を周波数ダウン コンバートするために使用される発振器信号として使用します。

入力引数

すべて展開する

データ入力。列ベクトルまたは行列として指定します。入力 x の長さは間引き係数の倍数でなければなりません。x のデータ型が double または single 精度である場合、y のデータ型は x のデータ型と同じになります。x のデータ型が固定小数点型の場合、y のデータ型は OutputDataType プロパティによって定義されます。

データ型が double または single の場合にのみ、入力は複数のチャネルを持つことができます。入力のデータ型は、doublesingle、符号付き整数、または符号付き固定小数点 (fi オブジェクト) にできます。

データ型: single | double | int8 | int16 | int32 | int64 | fi
複素数のサポート: あり

入力信号を周波数ダウン コンバートするために使用される発振器信号。列ベクトルまたは行列として指定します。この入力は複素数でなければなりません。z の長さは x の長さと等しくなければなりません。z は、doublesingle、符号付き整数、または符号付き固定小数点 (fi オブジェクト) にできます。

依存関係

この入力は、Oscillator プロパティを Input port に設定した場合に適用されます。

データ型: single | double | int8 | int16 | int32 | int64 | fi
複素数のサポート: あり

出力引数

すべて展開する

ダウン コンバートおよびダウン サンプリングされた信号。列ベクトルまたは行列として返されます。y の長さは、x の長さを DecimationFactor で除算したものと等しくなります。x のデータ型が double または single 精度である場合、y のデータ型は x のデータ型と同じになります。x のデータ型が固定小数点型の場合、y のデータ型は OutputDataType プロパティによって定義されます。

データ型: single | double | int8 | int16 | int32 | int64 | fi
複素数のサポート: あり

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

getDecimationFactorsデジタル ダウン コンバーターの各フィルター段の間引き係数の取得
getFilterOrdersGet orders of digital down converter or digital up converter filter cascade
getFiltersGet handles to digital down converter or digital up converter filter cascade objects
groupDelayGroup delay of digital down converter or digital up converter filter cascade
visualizeDisplay response of digital down converter or digital up converter filter cascade
filterAnalyzerAnalyze filters with Filter Analyzer app
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

1 KHz の正弦波信号を係数 20 でアップ サンプリングして 50 KHz までアップ コンバートするデジタル アップ コンバーター オブジェクトを作成します。その信号を 0 Hz までダウン コンバートして係数 20 でダウン サンプリングするデジタル ダウン コンバーター オブジェクトを作成します。

1 KHz の正弦波信号をサンプル レート 6 Hz で取得する正弦波ジェネレーターを作成します。

Fs = 6e3; % Sample rate
sine = dsp.SineWave(Frequency=1000,...
    SampleRate=Fs,...
    SamplesPerFrame=1024);
x = sine(); % generate signal

DigitalUpConverter オブジェクトを作成します。最小次数フィルター設計を使用し、通過帯域リップルを 0.2 dB、阻止帯域の減衰量を 55 dB に設定します。信号の両側波帯域は 2 KHz に設定します。

upConv = dsp.DigitalUpConverter(... 
 InterpolationFactor=20,...
 SampleRate=Fs,...
 Bandwidth=2e3,...
 StopbandAttenuation=55,...
 PassbandRipple=0.2,...
 CenterFrequency=50e3);

DigitalDownConverter オブジェクトを作成します。最小次数フィルター設計を使用し、通過帯域リップルを 0.2 dB、阻止帯域の減衰量を 55 dB に設定します。

dwnConv = dsp.DigitalDownConverter(...
  DecimationFactor=20,...
  SampleRate=Fs*20,...
  Bandwidth=3e3,...
  StopbandAttenuation=55,...
  PassbandRipple=0.2,...
  CenterFrequency=50e3);

アップ コンバート前、アップ コンバート後、ダウン コンバート後の信号スペクトルを可視化するスペクトル推定器を作成します。

window = hamming(floor(length(x)/10));
figure; pwelch(x,window,[],[],Fs,"centered")
title("Spectrum of baseband signal x")

Figure contains an axes object. The axes object with title Spectrum of baseband signal x, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains an object of type line.

信号をアップ コンバートしてスペクトルを可視化します。

xUp = upConv(x); % up convert
window = hamming(floor(length(xUp)/10));
figure; pwelch(xUp,window,[],[],20*Fs,"centered");
title("Spectrum of up converted signal xUp")

Figure contains an axes object. The axes object with title Spectrum of up converted signal xUp, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains an object of type line.

信号をダウン コンバートしてスペクトルを可視化します。

xDown = dwnConv(xUp); % down convert
window = hamming(floor(length(xDown)/10));
figure; pwelch(xDown,window,[],[],Fs,"centered")
title("Spectrum of down converted signal xDown")

Figure contains an axes object. The axes object with title Spectrum of down converted signal xDown, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains an object of type line.

間引きフィルターの応答を可視化します。

visualize(dwnConv)

Figure contains an axes object. The axes object with title Magnitude Response (dB), xlabel Frequency (Hz), ylabel Magnitude (dB) contains 4 objects of type line. These objects represent CIC decimator, Decimation factor = 5, CIC compensator, Decimation factor = 2, Halfband decimator, Decimation factor = 2, Cascade response.

dsp.DigitalDownConverter System object™ の各フィルター段の間引き係数を取得します。

既定の設定を使用して dsp.DigitalDownConverter System object を作成します。関数 getDecimationFactors を使用して、オブジェクトの各段の間引き係数を取得します。

dwnConv = dsp.DigitalDownConverter
dwnConv = 
  dsp.DigitalDownConverter with properties:

           DecimationFactor: 100
         MinimumOrderDesign: true
                  Bandwidth: 200000
    StopbandFrequencySource: 'Auto'
             PassbandRipple: 0.1000
        StopbandAttenuation: 60
                 Oscillator: 'Sine wave'
            CenterFrequency: 14000000
        NormalizedFrequency: false
                 SampleRate: 30000000

  Show all properties

M = getDecimationFactors(dwnConv) %#ok
M = 1×3

    25     2     2

オブジェクトの DecimationFactor プロパティは 100 に設定されています。出力 M は既定では 1 行 3 列のベクトルです。ここで、ベクトル内の各要素は間引き係数全体の係数です。

DecimationFactor を 1 行 2 列のベクトルに設定した場合、オブジェクトは第 3 フィルター段をバイパスし、第 1 と第 2 のフィルター段の間引き係数をベクトルの 1 番目と 2 番目の要素の値にそれぞれ設定します。

dwnConv.DecimationFactor = [10 10]
dwnConv = 
  dsp.DigitalDownConverter with properties:

           DecimationFactor: [10 10]
         MinimumOrderDesign: true
                  Bandwidth: 200000
    StopbandFrequencySource: 'Auto'
             PassbandRipple: 0.1000
        StopbandAttenuation: 60
                 Oscillator: 'Sine wave'
            CenterFrequency: 14000000
        NormalizedFrequency: false
                 SampleRate: 30000000

  Show all properties

M = getDecimationFactors(dwnConv)
M = 1×2

    10    10

関数 getDecimationFactors の出力は、1 行 2 列のベクトルになっています。

詳細

すべて展開する

アルゴリズム

デジタル ダウン コンバーターは、指定された中心周波数をもつ複素指数で入力信号を乗算することにより、入力信号をダウンコンバートします。アルゴリズムは、3 つの間引きフィルターのカスケードを使用して、周波数ダウンコンバートされた信号をダウンサンプリングします。この場合、フィルター カスケードは CIC 間引き、CIC 補正、第 3 の FIR 間引き段で構成されます。次のブロック線図は、デジタル ダウン コンバーターのアーキテクチャを示しています。

スケーリング セクションは CIC のゲインと発振器の出力を正規化します。目的とするリップルの仕様を実現するための補正係数が含まれる場合もあります。入力端子で発振器信号を指定する場合、正規化係数には発振器の力率は含まれません。間引き係数の設定に応じて、ブロックは第 3 フィルター段をバイパスします。入力データ型が倍精度または単精度である場合、アルゴリズムは応答が N 個のボックスカー フィルターのカスケードに対応する N セクションの CIC 間引きフィルターを FIR フィルターとして実装します。アルゴリズムは、浮動小数点データでシミュレーションを実行できるように、CIC フィルターを FIR フィルターでエミュレートします。入力データ型が固定小数点の場合、アルゴリズムは実際の櫛形セクションと積分器セクションで構成される真の CIC フィルターを実装します。

次のブロック線図は、単精度または倍精度の浮動小数点入力の DDC 演算を表しています。

固定小数点演算の詳細については、固定小数点を参照してください。

拡張機能

すべて展開する

バージョン履歴

R2012a で導入

すべて展開する