======================
(野村さんへのメモ)
・図3-2-1〜図3-2-2と図3-2-5〜図3-2-7(Philipsのデータシートより)は再トレースして下さい
・図3-2-3と図3-2-4は私のCQ単行本の図から持ってきました
・図3-2-8(MAXIM)のデータシートより)は再トレースして下さい
・図3-2-9はオリジナルです。トレースして下さい
======================
■第4部　マイコンでトライ！ 生体情報の信号処理の基礎■

第3章　生体情報の計測/信号処理のためのアナログ回路技術

3-2　デジタル〜アナログ境界に関する周辺回路

ここでは前節3-1に加えて、デジタルの世界でプログラミングを中心に仕事する読者を想定して、NucleoF401REなどのマイコンシステム(デジタル)がアナログの世界と結びつく周辺回路技術について、簡単にまとめます。その基本要素は「アナログスイッチ」で、アナログ信号をデジタル制御することで、デジタルのマイコン技術から容易にアナログの現実世界に拡張できます。

●アナログスイッチ

筆者がいつも手元にストックしていて、マイコンを活用してデジタル〜アナログ境界のいろいろを実現している「アナログスイッチ」は、「74HC4066」・「74HC4053」・「74HC4052」・「74HC4051」の4種類です。それぞれに使い手があるのですが、ここではまず、これらの内部に共通する「アナログスイッチ」について整理します。図3-2-1は、アナログスイッチの内部構成を示したものです。

(図3-2-1 アナログスイッチの内部構成)

図3-2-1[A]は、ここで紹介する「アナログスイッチ」の概念図です。スイッチですから、入力と出力(ただし方向は無いのでどちら向きに使うのも自由)があり、それを導通するかしないか、つまりON/OFFを制御するためのコントロール、という3つの信号端子がある「素子」と考えることができます。普通のスイッチ部品では、この「control」を、手でプッシュするなどするわけです。

図3-2-1[B]はこの「in」「out」「control」を回路として構成したもので、「in」と「out」の間には双方向性(向き無し)の半導体電子スイッチ回路があって、この制御のために、「control」入力信号とその反転信号が使われます。つまり、「control」入力信号というのはデジタルで、ここでは「+5V」か「0V(GND)」か、という信号です。

図3-2-1[C]は、さらに半導体電子スイッチ回路を実際に構成しているFET回路として示した内部回路例ですが、ユーザはブラックボックス[B]ないし[A]として扱うことが出来るので、この内部の詳細は気にしなくていいのです。

図3-2-2は、筆者が愛用するアナログスイッチの一つ、「74HC4066」のデータシートに載っているもので、[A]がデジタルICと同じ書き方の端子配置図、[B]が論理的に示したブロック図で、全部で4つの同一構成のアナログスイッチがある事がわかります。例えば「1Y」と「1Z」が第1チャンネルのスイッチの両端で、「1E」がその「control」となり、これが同様に2・3・4と計4チャンネル分、内蔵されています。これらの各チャンネルは電気的に分離されていて相互には影響がありません。

ここで「74HC」というタイプを指定するのには理由があり、このタイプのアナログスイッチ(ハイスピードCMOS)を使うと、「control」入力信号として+5Vの中点電(2.5V)を境としてON/OFF動作するので、NucleoF401REのような「+3.3V電源」タイプのマイコンの出力(+3.3Vか0V)をここに入力しても、電圧レベルシフト回路が不要で、「+5V〜0V(GND)」の電圧信号のON/OFFを簡単に実現できるのです。図3-2-2[C]と[D]は等価な4つのスイッチがある、という概念図です。

なお、半導体スイッチなので、電気的には、スイッチOFFの時には「最大でも0.1μA以下しか流れない高抵抗」となり、スイッチONの時には「約40Ω程度の抵抗」となります。「control」制御入力のデジタルスイッチングに対する反応はON/OFFともに「6ナノ秒」と十分に高速です。「74HC4066」では、スイッチ「in」と「out」の間の信号として、「+5V」から「0V(GND)」までの電圧の信号が扱えます(後述のように他の3つはバイポーラ信号も可能)。

(図3-2-2 アナログスイッチ : 74HC4066)

●S/H回路とA/D変換・D/A変換

アナログスイッチがデジタル〜アナログ境界の主役となる理由は、「サンプリング」の領域で活躍するからです。図3-2-3は、アナログスイッチとA/D変換・D/A変換の関係を示したものですが、アナログスイッチをボルテージ・フォロワ(→前節3-1)の入力に置いて、そこに小容量のコンデンサ(ホールド・コンデンサ)を置いた回路を、サンプル・ホールド(S/H)回路といいます。これは本質的にA/D変換・D/A変換のシステムと深く結びついています。

(図3-2-3 アナログスイッチとA/D変換・D/A変換)

ボルテージ・フォロワの入力インピーダンスは非常に高く、また上述のようにアナログスイッチがOFFの時のインピーダンスも非常に高いために、アナログスイッチON時にこの小容量のコンデンサに与えられた電圧は、アナログスイッチOFF時には出て行くところがないために「保持」されます。このコンデンサに充電している期間が「サンプル」で、スイッチOFF期間に「ホールド」されることで、入力の時間的に変動しているアナログ電圧は、システムクロック(アナログスイッチをON/OFFする周期)によって「サンプリング」されるわけです。一定の変換処理時間がかかるので、A/D変換にはこのS/H回路が必ず必要ですが、NucleoF401REなどマイコンのA/D入力には、このS/H回路が内蔵されています。

アナログスイッチによるS/H回路は、A/D入力だけでなく、D/A出力回路においても活躍します。図3-2-3にあるように、D/A変換回路(後述)の出力にS/H回路を置くことで、D/A出力の切り替え時に発生するグリッチノイズを除去したり、また1個のD/A変換回路から複数チャンネルにアナログ電圧を分配出力する際にもS/H回路が必要になります。

図3-2-4は、もっともポピュラな「R-2Rラダー抵抗」によるD/A変換回路の例で、ここでは8ピットのデジタルデータに対応した電圧を発生するために、抵抗比を精密にしたRと2Rの「ラダー抵抗ネットワーク」と、それぞれのビットに対応したアナログスイッチにより、GNDから基準電圧までを256等分したアナログ電圧を発生します。

(図3-2-4 「R-2Rラダー抵抗」によるD/A変換回路)

上のR-2Rラダー抵抗によるD/A変換回路でのアナログスイッチは、純なON/OFFスイッチ(単投)でなく、基準接点が2極を行き来する「双投」タイプなので、74HC4066でこれを構成するには、1ビットあたり2つのアナログスイッチと、さらに「control」入力を反転するためのインバータが必要になります。そこで登場するのが、筆者が愛用するアナログスイッチの一つ、図3-2-5の「74HC4053」です。[A]がデジタルICと同じ書き方の端子配置図、[B]が論理的に示したブロック図で、全部で3つの同一構成のアナログスイッチがある事がわかります。

(図3-2-5 アナログスイッチ : 74HC4053)

スイッチの構成は、例えば「1Z」が第1チャンネルのスイッチの共通端子で、これに対して接続されるスイッチの相手は「1Y0」と「1Y1」のいずれかとONとなります。「S1」がその「control」となり、これが同様に2・3と計3チャンネル分、内蔵されています。これらの各チャンネルは電気的に分離されていて相互には影響がありません。

図3-2-5[C]は74HC4053の内部回路ですが、注目すべきは、電源端子として「VCC」と「VEE」と「GND」がある事です。つまり74HC4053では、「VEE」に「-5V」の電源を供給した場合に、「in」と「out」の間の信号としては、デジタルICのような「+5V」と「0V(GND)」という間の電圧だけでなく、「+5V」から「-5V」までのバイポーラ信号が扱えます。スイッチの制御のデジタル入力「S」信号は「+5V」と「0V(GND)」でよく、さらに「74HC」タイプの74HC4053であれば、NucleoF401REのデジタル出力(+3.3Vか0V)をここに入力しても、電圧レベルシフト回路が不要で、、「+5V」から「-5V」までのバイポーラ信号のON/OFFを簡単に実現できます。

74HC4053には上にバーの付いた「E」信号入力端子もあります。これは「負論理のENABLE」という意味で、ここを0V(GND)にするとアナログスイッチとして普通に動作するのですが、ここを「H」入力(+2.5Vより大きな電圧)とすると、アナログスイッチとしてDISABLEされて、3チャンネル全てのアナログスイッチがOFFになります。つまり、単純な「双投」スイッチだと必ずどちらかがONになるのに対して、第三の状態として、トライステート状態、つまりアナログスイッチの3端子が全て高インピーダンスとして電気的に分離される、という状態も設定できます。この機能により、多数のアナログスイッチを「芋づる」式に連結する事が可能になります。

●多重化回路 - アナログマルチプレクサ

上の74HC4053は、「2入力から1出力を選択する」あるいは「1入力を2出力に分配する」アナログスイッチが1パッケージに3チャンネル分、内蔵されている便利なICです。しかし、マイコン・システムでデジタル〜アナログ境界をあれこれ実現していくためには、もっと「多くの情報」を扱いたくなります。例えば、74HC4053のような「1対2」という関係でなく、「1対4」、というような要請はとても多くあります。74HC4053で「4入力1出力」の「データセレクタ」を構成するには、アナログスイッチを2段構成にすればいいのですが、そうするとON抵抗は2段分の合計、と大きくなるのがちょっと不満です。

そこで登場するのが、筆者がさらに愛用するアナログスイッチの一つ、図3-2-6の「74HC4052」です。[A]がデジタルICと同じ書き方の端子配置図、[B]が論理的に示したブロック図で、「1対4」構成のアナログスイッチが2系統あり、2ビット2進数で「1対4」を選択する信号が両方の系統で共通となっています。図3-2-6[C]は74HC4052の内部回路で、こちらも電源端子として「VCC」と「VEE」と「GND」があり、「VEE」に「-5V」の電源を供給した場合には「+5V」から「-5V」までのバイポーラ信号が扱えます。また「負論理のENABLE」入力端子もあり、2系統4チャンネル全てのアナログスイッチがをOFF(高インピーダンス状態)にできます。

(図3-2-6 アナログスイッチ : 74HC4052)

このような多チャンネル・アナログスイッチは、「多数の入力信号から1つを選択する」という場合には「アナログデータセレクタ」などと呼ばれ、逆に「1本の入力信号を多数のチャンネルに分配する」という場合には「アナログマルチプレクサ」と呼ばれ、デジタルシステムが多数のアナログ信号を多重化する場合には定番のテクニックです。NucleoF401REのA/Dコンバータは「入力10チャンネル」となっていて、A/D入力端子がたくさんありますが、実は内部のA/Dコンバータはたった1個であり、内部のアナログデータセレクタ回路によって多数の入力から1つを選んでA/Dコンバータに入力しているだけです。

そして、4052とともに筆者が愛用しているアナログスイッチが、図3-2-7の「74HC4051」です。[A]がデジタルICと同じ書き方の端子配置図、[B]が論理的に示したブロック図で、「1対8」構成のアナログスイッチが、3ビット2進数により選択されます。図3-2-7[C]は74HC4051の内部回路で、こちらも「VEE」電源端子に「-5V」の電源を供給した場合には「+5V」から「-5V」までのバイポーラ信号が扱えます。また「負論理のENABLE」入力端子もあり、8チャンネル全てのアナログスイッチがをOFF(高インピーダンス状態)にできます。

(図3-2-7 アナログスイッチ : 74HC4051)

筆者はまだマイコンとして秋月電子の「AKI-80」ぐらいしか無い時代、1995年頃にフランスの国立研究所IRCAMから依頼されて、+5Vレベルのアナログ信号として32チャンネルの汎用入力/出力システム(MIDI制御)を製作して納品したことがありますが、ここでも基板上に74HC4051が計8個並んで、8チャンネル×4系統のA/D入力の選択と、8チャンネル×4系統のD/A出力の分配に活躍しました。このような多チャンネルの汎用入力/出力システム(MIDI制御)はその後、カナダのINFUSION SYSTEMS社(http://infusionsystems.com/)の「I-CUBE」システムなどとして登場することになりました。

アナログスイッチの最後の事例として紹介するICは、図3-2-8のMAXIM社の「MAX456」というICです。これは中身としては「8×8ビデオマトリクス・スイッチ」ということで、8つの入力ラインと8つの出力ラインの8×8=64個のアナログスイッチ・マトリクスがあるような構造です。ある出力ラインに注目すると、8つのうちどの入力から分配されるか、を自由に選択できるようになっています。[A]がそのピン配置図、[B]がその内部回路で、入力と出力、それぞれ3ビット2進数でアドレスを指定して「決定」と書き込むことで、その対応関係を制御します。

(図3-2-8 8×8ビデオマトリクス : MAX456)

ディスクリートでMAX456と同等の回路を作るには、まず図3-2-9のように、8チャンネルのアナログ入力信号をボルテージフォロワで8分配のために増強して、出力系統に対応して8ブロックに並んだ74HC4051の8チャンネル入力にそれぞれ分配供給します。システム全体に共通の「入力セレクト指定[A/B/C]」の3ビット2進数は、各ブロックごとにラッチ(74HC174等)のD入力として受けて、Q出力を74HC4051のアドレス[A/B/C]に与えます。このラッチの「CK」入力は、与えられた入力セレクト指定をそのブロックにだけ設定するためのラッチパルスで、立ち上がりエッジのあるブロックだけ入力Dが出力Qに確定し保持されます。

与えられた「入力セレクト指定[A/B/C]」情報をどの出力系統に設定するか、という「出力チャンネル指定[A/B/C]」情報は、「3→8デコーダ」ICの74HC138のアドレス入力として与えます。74HC138は負論理出力なので、[A/B/C]3ビット2進数でアドレス指定された出力Yだけ「L」になりますが、さらに負論理「G」入力で全出力を「H」に出来ます。負論理「WR」(書き込み)信号として74HC138の負論理「G」入力に与えることで、結果として74HC138の出力のうち、指定されたブロックのラッチだけ、ラッチパルス「CK」が「G」入力に対応して通常の「H」から一旦「L」に下がり、「WR」の復帰とともに「H」に上がり、その立ち上がりエッジで、アドレス[A/B/C]」に対応した入力セレクト指定が設定されます。各ブロックの74HC4051の「8→1」選択出力はビデオ信号のドライブのためにボルテージフォロワを経て出力されます。

(図3-2-9 4051でMAX456を実現する)

MAX456の強力なところは、たとえば同一の入力を8系統の全てに同時供給することも出来るところです。例えば8台のプロジェクタを使ったマルチスクリーンに、8系統のビデオ信号を別々にでも、全て同じにでも、モザイク状にいくつかを共通にでも、自在に構成して投射できます。筆者は実際にこのICを使って、「8入力8出力・MIDI制御ビデオマトリクス・スイッチャ」装置を製作して、1995年頃から数年間、多くのマルチメディア公演で活用してきましたが、厳密にはビデオ信号をそのまま乱暴に切り替えているので画面にスイッチングノイズが乗るものの、ライブ映像や動画をライブ・パフォーマンスに同期させて切り替える範囲では、あまり気にならないもので、むしろ高速スイッチングによるライブ演出に大きく役立ちました。

●MIDIアナログ信号収集分配システムの製作例

本稿で初めてNucleoF401REを使って筋電センサ・システムを製作しつつ原稿執筆してきましたが、その合間に4日間で筆者が製作したシステムがありますので、本節の最後のトピックとして簡単に紹介しましょう。まず、「LittleBitsSynth」(http://littlebits.cc/kits/synth-kit)という、「アナログシンセサイザーの電子ブロック」というようなものがあります。筆者はこれらの電子ブロック・モジュールに対してホストPCからMIDI経由で任意の制御電圧を与えたり、逆にセンサ型の電子ブロック・モジュールからの電圧を取り込んでMIDI経由でホストPCに取り込むためのマシンを、NucleoF401REで作ってみました。

回路図は図3-2-10のようになっていて、NucleoF401REのプログラムはmbedのサイトで公開(http://developer.mbed.org/users/nagasm/code/NucleoF401RE_LittleBitsSynth_controller/)しており、解説ページへのリンクもこのmbedのサイトに記載しましたので、興味のある方はご覧下さい。筋電情報とは離れますが、NucleoF401REのような高性能マイコンを使うと、かつてかなりの手間で製作したこのようなシステムが、たった4日間で完成した、というのは驚きでした。

(図3-2-10 MIDIアナログ信号収集分配システム)
