アナログ回路

「アナログ回路」の編集履歴(バックアップ)一覧に戻る

アナログ回路 - (2011/06/10 (金) 21:31:22) のソース

*アナログ回路
&bold(){注意}
この項目は少し難しい内容になっています。
**この項目で使ってる用語
少し専門的な用語が多いので、補足しておきます
回路素子・・・サーキットボード上に置けるチップのうち、入力された信号に対して、別の信号を出力するものの総称です。
立ち上がり・・・信号がオフからオンに切り替わる瞬間の事です。
立ち下り・・・信号がオンからオフに切り替わる瞬間の事です。
微分回路・・・立ち上がりや立下りなど、信号の強さが変わったことを検出する回路です。
パルス・・・一定時間だけオンになる信号のことです。LBP的には単発信号と言うと分かりやすいと思います。
RAM、保持回路・・・メモリ、記憶素子の事です。オンやオフなどの状態を記録しておく為の回路です。
遅延・・・信号の変化を、一定時間遅らせて次に伝える事を言います。
絶対値・・・マイナスの値の場合、その符号を取るということです。
100進数・・・ひとつの桁に0~99の数値を持つ数字の表記方法です。足し算の繰り上がりの際は、100以上になるとその100をひとつ上の桁に1としてプラスします。
**アナログ回路とは?
アナログ回路とは、マイクロチップ内の回路のうち、アナログ信号を専門に処理する回路のことです。

マイクロチップ上の回路を流れる信号には、大きく分けて2種類の情報が含まれています。
ひとつはオン・オフ情報で、配線や素子が光っていればオン、消えていればオフの信号が流れていることを表しています。これを便宜上デジタル信号と呼びます。
もう一つは目に見えない情報で、-100%から100%までの数値が含まれています(実際は小数点以下の数値も存在する)。これを便宜上アナログ信号と呼びます。 
このアナログ信号は曲者で、素子によっては入力情報がリセットされてしまったり、マイナスが取れてしまったりします。
さらに配線上では見えないデータなので、光っていない配線にも情報が流れている場合があります。回路設計のときはモーターをスピードレベルに設定して、逐一信号の強さを確認するようにしましょう。
これらの扱いにくい点の反面、アナログ回路には大きなメリットも沢山あります。この回路をマスターすれば、LBPの回路を意のままに操れるようになるでしょう。
**回路素子
***ANDゲート
ANDゲートの出力はややこしく、出力の絶対値はインプット側の信号の中で一番小さい値となります。問題は符号で、すべての入力のうち負の数の入力が奇数箇所だった場合負の値を、0または偶数箇所だった場合は正の値を出力します。これはANDの原義が論理積であるからだと考えられます。つまり、符号部分だけは入力の積の結果となっているのです。なおこの際、出力のデジタル信号は関係ありません。
***ORゲート
ORゲートの出力は、入力信号のうち一番大きい信号を符号を保存して返します。論理積とは違い、符号に関係するのは絶対値の一番大きい数のみなので、混同しないように注意しましょう。
***XORゲート
基本的にはORゲートと同じですが、全入力中二箇所以上のデジタル信号がオンになっているときは、アナログ信号も0になります(全てOFFの場合はORと同じ振る舞い)。
***NOTゲート
入力信号の絶対値を、100から引いた値を返します。丁度50を中心として反対側の数値を返している感じです。AND,OR,XORの出力を反転設定にした場合は、それぞれの回路の出力の次にNOTをつないだ場合と同じ出力結果になります。
***バッテリー
 -100から100までの1刻みの定格の出力を行います。ただしゼロの場合はデジタル信号もオフになります。
***マイクロチップ
デジタル回路の場合と変わりはありませんが、動作側の入力はデジタル信号にのみ反応し、回路内のアナログ信号には干渉しないので、デジタル信号による制御に利用できます。
***スイッチ
デジタル信号にのみ反応し、出力値も0か100のみです。
***カウンター
入力側のアナログ信号に関わらず、(現在のカウント数/最大数)×100の値を返します。
***タイマー
スピードレベル設定のときのみ、アナログ信号の値によってスピードが変化します。正の値の場合はカウントアップ、負の値の場合はカウントダウンします。
出力はカウンターと同じく(現在の時間/最大時間)×100の値を返します。
***ランダムチック
0か100しか出力しません。
***方向分割ツール
アナログ信号が正の場合、プラス側には入力値をそのまま、マイナス側には信号値0を返します。
負の場合は、プラス側には信号値0を、マイナス側には入力値のの絶対値を返します。
出力のデジタル信号は、一度入力デジタル信号がオフに変化しないと切り替わらないので注意が必要です。
***方向結合ツール
万能ツールその1
アナログ電子回路の万能ツールであるオペアンプによく似た性質を持ったツールです。
プラス側のアナログ信号の絶対値から、マイナス側のアナログ信号の絶対値を引いた値を出力します。
これを応用することによってアナログ演算が可能になります。アナログ演算ではひとつの配線上で大きなデータをやり取りできるので、回路の大幅な節約が可能になります。
***セレクター
こちらも入力値の信号に関係なくアナログ値100でオンの信号かアナログ値0でオフの信号しか出力しません。
アナログ回路上で利用したい場合は、後述のアナログスイッチと組み合わせて利用しましょう。
逆にサイクル側の入力にアナログ信号をクロックすると、符号に合わせてサイクル方向が変わります。ゼロはプラスと同じ扱いです。
***シーケンサー
万能ツールその2
アナログ信号に対しては多彩な反応を見せるツールで、スピードレベル設定のときはタイマーのようにシーケンスのスピードが変化します。
特筆すべきは位置設定(ループ×)にしたときで、信号の絶対値によってシーケンスの位置が0~100で固定されます。
これと強度100のバッテリーを組み合わせれば、アナログ信号が好きな値のときだけオンのデジタル信号を出力させることが出来ます。
さらに0か100の状態の限定した検出も可能であり、応用すればアナログ信号の正負を確認する回路も作ることが出来ます。
***コントロールギア
コントロールギア内のアナログ信号はそれぞれ
○△□×R1L1L3ボタン・・・0か100
R2L2トリガー・・・0~100までの値
左右スティック、六軸・・・-100~100までの値
十字キー・・・方向に応じて-100,0,100のいずれか
なお、各値の0のときはデジタル信号もオフになります。
**基本複合回路
***アナログスイッチ
回路上を流れる信号のアナログ値を通したり遮断したりするスイッチです。
マイクロチップ上に反転したNOTゲートなどを置き、インプットとアウトプットを設定します。
スイッチしたい信号をこの間に通し、チップの作動端子に制御信号を送ります。
こうする事で信号に干渉せずスイッチを行うことが出来ます。
***ON&0出力回路
デジタル信号はオンなのにアナログ信号は0という特殊な信号を出す回路です。
アナログ回路は主要な装置である方向分割・結合ツールの性質上計算出力のデジタル信号が不安定になりやすくなっています。
そこで出力をこの回路と共にOR回路に繋いでやると、安定してオン状態の信号が得られます。
そのほかにも応用が利く回路なので、マイプランに入れていつでも呼び出せるようにしておくことをお勧めします。
#image(ON&0.jpg)
作成は、クリエイトモードでプレイ状態にして以下の動作を行ってください。
まずバッテリーを二つ用意して、一方を100、もう一方を絶対値が99以下の負の数にしておいて、最初にマイナスのほうだけをOR回路に繋ぎます。
その出力を方向分割ツールに繋ぐと、当然マイナス側がオンになるのですが、ここでさらにOR回路に100のバッテリーを繋ぐと、相変わらずマイナスがオンのままですが、信号がゼロになっています。
***コンパレータ(比較器)
コンパレータとは比較回路の事で、入力AがBより大きいときにオンのデジタル信号を出力します。
以下に実装例を示します。
なお、入力は上がB、下がAとなっています。
#image(オペクター.jpg,width=720)
最初に結合ツールを使って入力値の絶対値にそれぞれ逆の符号をつけます。ORゲートは大きい方の値を出力するので、Aのほうが大きければマイナス、BがA以上ならプラスの値を返します。分離ツールは信号の符号ではない方に0を出力するので、求めたい条件のときにシーケンサに0の信号が流れます。このシーケンサは後述のゼロ値検出回路になっているので、それをNOTで返して条件を満たしています。

A≧BならA-B≧0であることを利用したタイプ
上のものと同様シーケンサはゼロ値検出回路です。
#image(コンパレータ.jpg,width=500)
***定格入力検出回路
入力の絶対値が特定の値の時だけオンのデジタル信号を出力する回路です。
シーケンサとバッテリーだけで非常にシンプルに作れます。
まずシーケンサを位置設定(ループ×)にして、シーケンサ板の横の長さを100まで伸ばします。検出したい値の座標を跨ぐようにバッテリーを配置すれば完成です。シーケンスの位置が座標に対応しているので、求めたい値の時だけバッテリーがオンになってくれます。
また、左はじにはみ出るようにバッテリーを配置すれば、ゼロ値検出回路になります。演算などの時非常に便利な回路なので、回路設計時は常に用意しておきましょう。
***アナログ減算機
アナログ値の減算機です。単純な減算ならば合体ツールひとつで出来てしまうのですが、ここで紹介する回路は繰り下げ要求(上の桁から100を借りてくる要求)とその受領処理(減算結果から更に1を引く処理)が出来る実用回路になっています。
以下が実装例です。
#image(減算機.jpg)
中央に配置してあるマイクロチップはコンパレータで、そのほかは定格出力電源(マイクロチップの中にバッテリーを配置したもの)とアナログスイッチです。
使い方は、桁の小さいほうの繰り下げ出力を上の桁の繰り下げ入力に繋ぐ形に直列していきます。一番上の桁の繰り下げ出力に関しては、出力があった場合は計算結果が負数になるので、入力を反転させる機構を用意してそれをオンにしてください。
***アナログ加算機
アナログ値の加算機です。LBPのアナログ値の性質上、100進加算機となっています。0~99の入力に対して加算結果と繰り上げの有無を返します。
以下が実装例です。
#image(加算機2.jpg)
シーケンサは全てゼロ値検出回路です。
両側に入力と出力のあるマイクロチップは、中にノードで中継した配線が一本引かれているだけのもので、スイッチになってます。
出力だけしかないマイクロチップは、入力側にあるものが中に強度1のバッテリーを置いただけのもの、出力側のORに繋がっているのは、ON&0回路です。
回路のほとんどは繰り上がりの処理ですが、基礎理論は以下のとおりです。
アナログ演算ではオペアンプを主体として利用するので、基本的に減算しか出来ません。また、NOTゲートで補数を取得できるので、入力をA,Bとすると
(100-A)-B=100-(A+B)
であるので、これをNOTで戻せばA+Bを得られます。
***フラッシュRAM
クロックされたアナログ値を、次のクロックがあるまで保持します。基本となる回路はNOTを使った保持回路で、ここにORで割り込みをかけるとオン情報だけでなくアナログ値も同時に保持してくれます。
#image(フラッシュRAM.jpg)
カウンターはDIFU回路の代わりで、0.1秒で出力を反転させています。これはアナログスイッチが、デジタル回路の項に乗っているDIFU回路のパルスではオンにならないための代替措置です。
***アナログ微分回路(信号変化検出器)
アナログ信号の変化を検出する回路です。デジタル側には変化があればパルス波を、アナログ側には信号の変化率をそれぞれ出力します。微分時間は数フレームなので、出力値はかなり小さくなっています。
#image(微分機1.jpg)
真ん中の二つのマイクロチップの中身が
#image(微分機2.jpg)
こうなっており、微分機の核となっています。作成の際注意する点は、この同じ回路でプラスの出力とマイナスの出力いずれかしか取れないという点です。恐らく仕様上の問題だと考えられますが、作成する場合は2種類の状態の回路を用意してください。

**応用複合回路
***十進コンバータ
アナログ信号は100進数でもあるので、10進数とは非常に相性がよくなっています。ヒューマンインターフェイスを考える上では10進数は欠かせない要素なので、アナログ回路を扱う上で大きなメリットです。
ここではアナログ信号を10進数に変換する回路を紹介します。以下が実装例です。
#image(十進数変換.jpg,width=720)
複雑な回路ですが、やっていることは単純です。求める信号を10n+mとすると、まず下のシーケンサでnの値別に振り分けて、それを0~9までの数値で出力。そのnの値を使って10nの信号を呼び出し、入力信号からオペアンプで引いてmを求め、そのまま出力。これで入力信号がnとm二つの十進数に変換されます。
***ADコンバータ
***DAコンバータ