Main Content

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

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) は、Value の指定値に設定された指定プロパティ Name を持つ DDC オブジェクト dwnConv を返します。(Name1,Value1,...,NameN,ValueN) のように、追加の名前と値のペアの引数を任意の順番で指定できます。

プロパティ

すべて展開する

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

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

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

このプロパティは、CenterFrequency プロパティの値の 2 倍以上の正のスカラー値に設定します。

データ型: single | double

このプロパティは、正の整数スカラーか 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

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

データ型: double

阻止帯域周波数のソースを Auto または Property のいずれかとして指定します。このプロパティを Auto に設定した場合、オブジェクトはカスケード フィルター応答のカットオフ周波数を約 Fc = SampleRate/M/2 Hz に設定します。M は DecimationFactor プロパティで指定した合計間引き係数です。オブジェクトは阻止帯域周波数を Fstop = Fc + TW/2 として計算します。TW はカスケード応答の遷移帯域で 2×(Fc–Fp) として計算されます。Fp は通過帯域周波数で Bandwidth/2 と等しくなります。

阻止帯域周波数 (Hz 単位)。正のスカラーとして指定します。

依存関係

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

データ型: double

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

依存関係

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

データ型: double

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

依存関係

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

データ型: double

発振器を Sine waveNCOInput portNone のいずれかとして指定します。このプロパティを Sine wave に設定した場合、オブジェクトは正弦波三角関数のサンプルから得られた複素指数を使用して入力信号の周波数をダウン コンバートします。このプロパティを NCO に設定した場合、オブジェクトは数値制御発振器 (NCO) を使用して得られた複素指数で周波数のダウン コンバージョンを実行します。このプロパティを Input port に設定した場合、このオブジェクトへの入力として渡された複素数の発振器信号 z を使用して周波数のダウン コンバージョンが実行されます。このプロパティを None に設定した場合、オブジェクトは混合器段なしで 3 段カスケード間引きとして動作します。

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

依存関係

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

データ型: double

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

依存関係

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

データ型: double

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

依存関係

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

データ型: double

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

依存関係

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

このプロパティは、NumAccumulatorBits プロパティで指定したアキュムレータのビット数よりも小さい整数スカラーとして指定します。

依存関係

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

データ型: 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
fvtoolデジタル ダウン コンバーターまたはデジタル アップ コンバーター フィルター カスケードの周波数応答の可視化
groupDelayGroup delay of digital down converter or digital up converter filter cascade
visualizeFilterStagesDisplay response of digital down converter or digital up converter filter cascade
generatehdlGenerate HDL code for quantized DSP filter (requires Filter Design HDL Coder)
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.

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

visualizeFilterStages(dwnConv)

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Frequency (kHz), ylabel Magnitude (dB) contains 5 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
                 SampleRate: 30000000

  Use get to 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
                 SampleRate: 30000000

  Use get to 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 で導入