Explorer(IE)のバージョンをサポートしておりません。最適なウェブサイトパフォーマンスを実現するため、最新バージョンのブラウザへアップデートしていただくことをお勧めします。Processing)技術について耳にする機会が増えてきました。Processor)を使用して、必要な処理を実現しています。した状況を受けて、「DSPを使うと何ができるのか」、「演算処理を行いたい場合、なぜアナログ回路ではなくDSPが使われるのか」、「独自のDSPシステムを設計できるようになるには、どのように学習を進めればよいのか」といった疑問を持っている方も少なくないでしょう。このシリーズでは、アナログ信号の処理に向けた新たなツールを求めているアナログ・システム設計者を対象としてDSPに関する解説を行います。1)は、その第一歩として、上記の疑問に対する答えを提示します。本シリーズを読破すれば、DSPを使うとアナログ信号をどのように処理できるようになるのか、どうすれば詳しい情報やサポートが得られるのかといった知識を身につけることができます。DSPとは、簡単に言えばデジタル信号処理専用のプロセッサ/マイクロコンピュータのことです。数値の処理を高速に行う必要があるアプリケーション向けに最適化されたハードウェア、ソフトウェア、命令セットを備えるICとして提供されています。多くのアプリケーションでは、アナログ信号をデジタル・データに変換するということが行われます。DSPは、そのようにして得られたデジタル・データをリアルタイムで処理するために不可欠なものだと言えます。DSPによる処理の内容は意外にシンプルです。デジタル・フィルタとして動作させる場合、DSPはまずアナログ信号のサンプリングによって得られたデジタル・データを受け取ります。それらのデータに対してフィルタの関数を適用します。デジタル・データの値に対して計算を行い、その結果となるデジタル・データをフィルタの出力として供給するということです。DSPを使えば、それらの値から見てとれる特性に基づき、システムの制御信号を出力するといったことも行えます。各種の処理を実行するにあたり、DSPが備える高速演算(論理演算を含む)用のハードウェアは、フィルタによる処理をモデル化したアルゴリズムを高速に実行するようにプログラムされます。DSPは、上記のような機能を実現するための算術演算子、メモリ処理、命令セット、並列処理、データ・アドレスの指定などに対応する回路ブロックを組み合わせることによって実現されています。その点が、DSPと他のプロセッサの主な違いだと言えます。した組み合わせ方がいかに特別なものであるかということについては、リアルタイムの信号とDSPの演算速度の関係を把握することによって理解できます。リアルタイムの信号は、DSPに対して、A/Dコンバータ(ADC)からの一連のサンプル(A/D変換の結果となるデータ)として引き渡されます。リアルタイムでフィルタ処理を行いたい場合、DSPは、各サンプルに対する処理に必要なすべての計算/演算を次のサンプルが到着するまでに完了しなければなりません。各サンプルに対する処理は、通常、現在のサンプルの前に入力されたいくつかのサンプルも使って行われます。現実世界の信号には、非常に周波数が高い成分が含まれます。した信号に高次のフィルタ処理を適用するには、非常に高速なプロセッサが必要です。DSPが使われるのか?DSPによって行われる計算の種類や、アナログ回路とDSPシステムの適切な比較方法について理解するには、どうすればよいのでしょうか。そのためには、フィルタ機能の観点から両者を比較してみるとよいでしょう。代表的なアナログ回路であるアナログ・フィルタは、抵抗、コンデンサ、インダクタ、アンプなどを組み合わせて構成されます。安価で組み立てが容易なものだと言えますが、キャリブレーションや修正、メンテナンスを行うのは簡単ではありません。その難易度は、フィルタの次数が高くなるにつれて指数関数的に高まります。DSPのフィルタ機能はソフトウェアをベースとして実現されます。必要に応じて、様々な機能をプログラムすることになるので、柔軟性と再現性に優れています。DSPをベースとするフィルタの設計、修正、利用は容易だということです。高次の応答を備え、柔軟に調整できるフィルタを構築したい場合でも、ソフトウェアの記述/修正だけで対応できます。純粋なアナログ回路を構築/改変する場合とは異なり、ハードウェアの追加や変更は必要ありません。図1に示したのは、バンドパス・フィルタの周波数応答です。理想的なバンドパス・フィルタは、次のような特性を備えます。位相シフトがゼロで、通過帯域の応答が完全に平坦になる阻止帯域では無限大の減衰量が得られるまた、以下に示すような機能を追加できれば、非常に便利です。図1には、2次のアナログ・フィルタを使用する場合の応答も示してあります。アナログ方式によって理想的な応答を得るには、Qの高いかなりの数のセクションをスタガ同調させなければなりません。そのチューニングや調整の難しさは容易に想像できるでしょう。理想的なバンドパス・フィルタの周波数応答。2次のアナログ・フィルタを使って近似する方法も示しています。ソフトウェアをベースとするDSPを使用する場合、2種類の基本的なフィルタ方式に対応することができます。Response)フィルタの2つです(図2)。FIRフィルタの場合、インパルスに対する時間軸の応答は、現在の入力サンプルとそれ以前の有限個の入力サンプルの単純な加重和によって生成されます。フィードバック系の処理を伴わないので、特定のサンプルに対する応答は、最後のサンプルの処理が完了するとゼロになります。FIRフィルタの周波数特性には極はなく、ゼロのみが存在します。それに対し、IIRフィルタは再帰関数によって実現されます。その出力は入力と出力の加重和となります。再帰的な処理が行われることから、IIRフィルタの応答は、入力データがなくなっても無限に継続することになります。IIRフィルタの周波数特性には、極とゼロの両方が存在します。FIRフィルタとIIRフィルタxsは入力サンプル、ysは出力サンプル、asは入力サンプルに対する重み付け、bsは出力サンプルに対する重み付けを表します。nは現在のサンプルに対応する時間、MとNはプログラムされたサンプル数(フィルタの次数)です。FIRフィルタ、IIRフィルタで使われる算術演算は単純な和と積です。非常に数多くの演算が行われる可能性があります。実際、乗算と加算は、複雑な数学的演算を使用する極めて高度な多くのDSPアルゴリズムで使われます。理想的なフィルタに近似したい場合、適切な係数と十分に高い次数(つまりタップ数)を備えた伝達関数を適用します。フィルタは、一連の入力サンプルに対して遅延を適用する複数のタップから構成されていると見なすことができます。図3に示したのは、90タップのFIRフィルタの応答です。この図では、その応答をシャープなカットオフ特性を備えるチェビシェフ・フィルタの応答と比較しています。チェビシェフ・フィルタの応答としては、いくつか次数の異なるものを示してあります。この図を見ると、90タップのFIRフィルタを使えば、理想的なフィルタに非常に近い応答が得られることがわかります。DSPシステムにおいて、図3のような90タップのFIRフィルタをプログラムするのはさほど難しい作業ではありません。それに対し、純粋なアナログ回路によってこのレベルの近似を実現しようとすると、様々な意味でコストが全く見合わなくなるでしょう。DSPを使用して理想的なフィルタを近似した場合、もう1つの重要なメリットが得られます。それは、長期安定性を実現できるというものです。DSPを使用する場合、プログラムするだけで、同じ特性のFIRフィルタ(または、打ち切り誤の蓄積を回避できるだけの十分な分解能を備えたIIRフィルタ)を何度でも実現することができます。それに対し、高次のアナログ・フィルタの特性は、時間の経過に伴って安定性が低下していきます。90タップのFIRフィルタの周波数応答。シャープなカットオフ特性を備えるチェビシェフ・フィルタの周波数応答と比較しています。DSPアプリケーションを開発し、その限界について理解するには、数学的な理論と実践が不可欠です。本シリーズでは、DSPの概念を理解していただくために、信号の解析/処理の例をいくつか取り上げ、順を追って説明していきます。本シリーズでは、更なる検討を行うために有用な参考資料も提示します。信号処理用のプログラムの開発を容易化するソフトウェア・ツールも紹介します。エネルギーのレベルが連続的に変化する物理プロセスが各種の現象として現れます。したエネルギーのレベルを、扱いやすい電圧や電流の信号に変換するためにはトランスデューサが使われます。ADCは、必要な処理を行いやすくするために、電圧/電流で表現されたアナログ信号をサンプリングしてデジタル・データに変換する役割を果たします。ADCのサンプリング・レート(サンプリング周波数)は、現実世界の信号をデジタルで処理する上で極めて重要な意味を持ちます。ADCのサンプリング・レートは、特定のアプリケーションで適切な処理を行うために必要な信号の情報量に応じて決定されます。ADCにより、アプリケーションに対して現実世界の信号を正確に表現するに十分な数のサンプルを提供することになります。そのためには、対象とするアナログ信号の最高周波数の少なくとも2倍のサンプリング・レートを使用しなければなりません。オーディオ信号には、最高20kHzの周波数成分が含まれています。した信号を正確に表現するためには、ADCにおいて最低でも40kHzの周波数でサンプリングを実施する必要があります。ADCに入力される信号には、20kHzを大幅に超える周波数成分(ノイズなど)が含まれている可能性があります。そこで、ADCの前段にはローパス・フィルタを配置します。それにより、サンプリングを実施する前に、信号に含まれる高周波成分を除去します。このフィルタは、アンチエイリアシング(折返し誤差防止)フィルタと呼ばれています。オーディオの例で言えば、同フィルタによって、A/D変換の実施結果の質を低下させるおそれのある20kHz以上の周波数成分を除去します。アンチエイリアシング・フィルタのロールオフ特性には限界があります(図4)。そのため、サンプリング・レートは、フィルタの遷移帯域も考慮して決定しなければなりません。対象とする入力信号の最高周波数が20kHzである場合、帯域幅としては2~4kHzの余裕を持たせます。それも踏まえて、サンプリング・レートとしては44kHz~48kHzといった具合に40kHzよりも高い値を選択する必要があります。アンチエイリアシング・フィルタのロールオフ特性サンプリング・レートが48kHzである場合、その1/2を超える24kHz以上の周波数成分をアンチエイリアシング・フィルタによって除去することになります。ここでいう除去とは、ADCの分解能の1/2LSB未満のレベルまで信号成分を減衰させるということです。そのためには、非常に高度なアナログ・フィルタを用意しなければなりません。したフィルタを使用することなく、必要な条件を満足する方法の1つは、シグマ・デルタ(ΣΔ)ADCに代表されるオーバーサンプリング方式のADCを使用することです。ADCでは、対象とする最高周波数の2倍よりもはるかに高いサンプリング・レートが使用されます。分解能については1ビットといった低い値が使われます。ADC製品で保証するサンプル・レート、分解能とは異なる高速、低分解能の条件で、いったんサンプリング処理を実施するということです。その場合、サンプリング・レートが非常に高いことから、アンチエイリアシング・フィルタの要件を大幅に緩和することができます。ADCの内部にはデジタル・フィルタ(DSPの機能)が用意されます。高速、低分解能の条件で取得したサンプルにデジタル・フィルタを適用することによって、ADC製品が保証する分解能と周波数特性(サンプリング・レート)に対応するデジタル・データを生成します。デジタル信号処理によって、その生成作業を実現するということです。多くのアプリケーションでは、オーバーサンプリング方式のADCを採用することにより、システム設計の労力とコストを削減することが可能になります。上述したように、ADCのサンプリング・レートは、サンプリングの対象となるアナログ信号の帯域幅を基準にして決定されます。このサンプリング・レートに基づいて、デジタル信号処理を担う回路(DSP)にサンプルが引き渡されるペースが決まります。システムの帯域幅に基づいてADCのサンプリング・レートを決定したら、DSPによる処理の速度に関する要件の検討を開始することができます。処理の速度はサンプル・レートに基づくものになりますが、アルゴリズムの複雑さによって左右されます。原則として、DSPは、次のサンプルを受け取るまでに、現在のサンプルに関するすべての演算を完了させる必要があります。DSPがすべての処理タスクを実行するために使える時間は、現在のサンプルが到達してから次のサンプルが到達するまでの時間的な間隔(サンプリング間隔)によって決まります。オーディオ・システムを例にとると、48kHzのサンプリング・レートは20.833マイクロ秒のサンプリング間隔に相当します。図5に、アナログ信号とサンプリング間隔の関係を示しました。次に、DSPの速度とアルゴリズム(変換をはじめとする数値演算一式を含むプログラム)の複雑さの関係について考えます。複雑なアルゴリズムでは、必要な処理タスクの数が非常に多くなります。サンプリング間隔は固定なので、アルゴリズムが複雑になるほど高速な処理が必要になります。例として、サンプリング間隔の間に50の演算処理を実行しなければならないアルゴリズムを考えます。Second)単位で表すと、次式のようになります。アルゴリズムで実行する演算にサンプリング間隔に相当するすべての時間を使用できる場合でも、2.4MOPSの性能を実現するDSPが必要だということです。Second)の関係には注意しなければなりません。1命令あたり8回の演算を実行できる定格10MIPSのDSPがあったとします。その性能は、1命令あたり2回の演算しか実行できない定格40MIPSのDSPの性能と基本的に同等だということになります。現実世界の様々な信号のサンプリングデータを取得する方法は、大きく2つに分けることができます。1サンプルずつ取得する方法と1フレームずつ取得する方法です。それぞれ、連続処理とバッチ処理と呼ぶことができます。デジタル・フィルタはサンプリングをベースとするシステムです。この種のシステムでは、1サンプルずつデータを取得します。図6に示すように、クロックが1つ入力されるたびに1つのデータがシステムに入力され、処理済みのデータが出力されます。出力されたデータをプロットすれば、連続的な波形が見てとれます。フレームをベースとするシステムは、スペクトル・アナライザと同じように振る舞います。スペクトル・アナライザでは、時間的に変化する波形の周波数成分について分析を行います。その際、データは1フレーム(つまり、複数のサンプルのブロック)ずつ取得されます。データ・フレーム全体に対して処理が適用され、処理済みのデータのフレームが生成されます(図7)。データ・フレームに対するバッチ処理サンプリング・レートが48kHzのオーディオ・システムについて考えます。ここでは、DSPによって1024サンプルから成るフレームを処理するとしましょう。21.33ミリ秒)となります。この場合、DSPは21.33ミリ秒の間に、そのフレーム・データの処理に必要なすべてのタスクを完了すればよいということになります。システムがリアルタイムで信号を処理する場合、データを欠落させてはなりません。そのため、DSPが現在のフレームを処理している間に、次のフレームを取得する必要があります。データの取得は、DSPの特別なアーキテクチャが活かされる領域の1つです。Access)チャンネルを併用することで、データをシームレスに取得するのが容易になります。現実世界の信号に対する応答サンプリング間隔に相当する時間のすべてを処理用の命令の実行に使用できるとは限りません。実際には、DSPが外部のデバイスに応答し、入出力するデータの流れを制御するための時間も割り当てる必要があります。通常、外部のデバイス(ADCなど)は割り込みを使用してDSPに信号を送信します。DSPがその割り込みに応答する時間、つまり割り込みに対する待ち時間は、実際の信号処理に使用できる時間に直接影響を及ぼします。割り込みに対する待ち時間(応答遅延)は、様々な要因に左右されます。支配的なのは、DSPのアーキテクチャにおける命令パイプラインの処理です。命令パイプラインは、割り込みが生じてからプログラムの実行を再開するまでの時間に発生するいくつかの命令サイクルによって構成されます。DSPのパイプラインのレベルが高いほど、応答遅延は長くなります。DSPのサイクル時間が20ナノ秒で、割り込みに応答するのに10サイクルが必要であるとします。その場合、信号処理の命令を実行するまでに200ナノ秒が経過することになります。データが1サンプルずつ取得される場合、次のサンプルが到達する前にDSPによる各サンプルの処理が終了するのであれば、この200ナノ秒のオーバーヘッドは悪影響を及ぼしません。1フレームずつ処理を行いながらデータをサンプルごとに取得する場合、割り込みを受けたシステムは、DSPの命令サイクルを浪費することになります。応答遅延が200ナノ秒のシステムがFFTのようなフレーム・ベースのアルゴリズムを実行していたとします。フレーム・サイズが1024サンプルである仮定すると、オーバーヘッドとして204.8マイクロ秒が必要になります。その場合、1万サイクルを超える命令サイクルが浪費されて遅延が生じることになります。DSPが信号処理を実行できているのであれば生産的であったはずの時間が無駄になるということです。このような無駄は、DMAやデュアル・メモリ・アクセスといったアーキテクチャ機能を備えるDSPであれば簡単に回避することができます。それらの機能を使えば、DSPは処理を中断することなくデータの取得/格納を実行することができます。DSPシステムの開発ここまでで、DSP、ADC、アンチエイリアシング・フィルタの役割と、タイミングの面から見た各コンポーネントの関係についてご理解いただけたはずです。続いては、DSPシステム全体について検討することにします。図8は、一般的なDSPシステムのビルディング・ブロックを示したものです。これらは、いずれもデータの取得と制御に使用されます。DSPシステムを構成する主な要素ご覧のように、DSPシステムを構成するコンポーネントの数はごくわずかです。その背景には、システムの機能の多くはDSPのプログラミングによって実現できるという事実があります。ADCはDSPにデータを送信し、D/Aコンバータ(DAC)はDSPの出力を受け取ります。ADCのタイミングは、正確なサンプリング・クロックによって制御されます。システム設計を簡素化するために、現在利用可能な多くのデバイスは、次に挙げる一部の要素、あるいはすべての要素を組み合わせて実現されています。ADC、DAC、サンプリング・クロック、アンチエイリアシング・フィルタ、アンチイメージング・フィルタといった要素です。した種類のI/Oコンポーネントでは、クロック発振回路は外付けの水晶振動子を使って個別に制御されます。以下、この種のDSPシステムのデータ・フローにおける重要なポイントについてまとめます。アナログ信号は、アンチエイリアシング・フィルタによって適切に帯域制限された上でADCに入力されます。ADCは、選択したサンプリング時間にDSPに割り込みをかけて、サンプル(デジタル・データ)を使用できるようにします。ADCとDSPの間は、シリアル・インターフェースまたはパラレル・インターフェースで接続されます。どちらを選択するかは、データの量、設計の複雑さに関するトレードオフ、実装スペース、消費電力、コストなどに応じて決定されます。DSPに入力されたデータは、アルゴリズムを実現するプログラムによって処理されます。DSPは必要な計算が完了したら、その結果をDACに送信します。信号処理の内容は、プログラムによって定義できます。そのため、かなりの柔軟性を持ってデータの処理やプログラミングの漸進的な調整を行い、システムの性能の向上を図ることができます。DACは、次のサンプル・クロックによってDSPから引き渡されたデータをアナログ出力に変換します。DACの出力は、アンチイメージング・フィルタ(再構成フィルタ)と呼ばれるローパス・フィルタによって平滑化されます。そのようにして、アナログ信号が再構成されます。DSPは、オプションのホスト・インターフェースを使って外部のシステムとの通信を実現します。それにより、データや制御情報を送受信することができます。本稿の目的は、DSPに関連する設計上の主要な概念について解説することです。アプリケーションによっては、アナログ回路よりもDSPの方が適しているケースがあることをご理解いただけたでしょう。本稿で取り上げたトピックには、以下のようなものがあります。本稿では、これらのトピックについて概観しました。DSPシステムの設計に挑むには、それだけで十分だとは言えません。VLSI(VLSIにおけるデジタル信号処理)」を参照していただくことをお勧めします。この書籍は、DSPに関する理論の全体像、実装上の問題点、具現化(同書の発行時点で入手可能だったデバイスを使用)、演習や例題などを提供しています。それ以外の参考資料も、本稿で網羅しきれなかった内容について詳しく説明しています。SHARCのユーザ・マニュアル)」を入手しておくとよいでしょう(いずれも無料)。これらによって、本シリーズの主要なトピックに関する情報を得ることができます。そのトピックとは、アナログ・デバイセズが提供するDSPの固定小数点/浮動小数点アーキテクチャのことです。2以降では以下のような話題を取り上げる予定です。本シリーズで取り上げる変換関数(周波数領域)と畳み込み関数(時間領域)を理解するための数学的な知識について説明します。これについては、完全な解説を行うわけではありません。いえ、演算処理のプログラミング方法について検討する上で十分に役に立つはずです。Unit)、積和演算器(MAC:Multiply-accumulator)、バレル・シフタ、メモリ・バスの性質と機能について説明します。機能を支える数値演算について解説を加えます。理論と実践(数学とアーキテクチャ)を結び付けながら、プログラミングについて説明します。設計のプロジェクトで扱うことになる主要なパラメータについて解説します。Hall、1990年。DSPの基礎について解説しており、数多くの参考文献が取り上げられています。アナログ・デバイセズから購入することができます。Hall、1992年。アナログ・デバイセズから購入することができます。Hall、1994年。アナログ・デバイセズから購入することができます。Devices、1994年。アナログ・デバイセズから購入することができます。本記事は過去に作成されたものであり、本文内で取り上げられている製品やソフトウェアの一部につきましては、場合により新規設計には非推奨、製造中止となっている場合がございます。ご了承のほど、お願い申し上げます。