« STM32L151続き | トップページ | 秋月H8 LANボード »

2012年5月30日 (水)

プリアンブル、あるいはAGC

葉山先生が、微弱無線モジュールの評価をされているようで、blogにレポートがあがっている。
ちょっとコメントした。

私が書き込んだ意義はともかく、言葉が少なすぎというか不親切かな...と反省したので、訊かれもしないのだけれど、話をひとつ。
その道の人にはいまさら当然なのだろうけど、プリアンブルの意義というか目的。

0と1を並べることで、続くデータの読み取りクロックを同期させるという意味もあるけれど、同期させるだけなら、データ本体にもエッジがあるので、もっと短くても十分だと思っていたのだが...



昔々、DP83902なんてチップをいじっていた頃。(カニチップ8019ASの中身だ)

Ethernetのパケットにも長いプリアンブルが付いている。
このデータシートにEthentの波形とチップの動作について解説が出ていて、色々勉強になった。
(主に)それによると。

------

デジタル通信といえども、送受信の回路はアナログ的に動作している。

受信側では、何かを基準に、信号が0か1かを決めなければならないのだけれど、この基準(閾値)をどうやって設定するか。

一般的な3.3Vロジックとかなら、1/2Vccとかにすればよいけれど、送信側からの距離や絶対的な信号レベルで、何倍も変動するような信号相手に、決め打ちの値は適用しにくい。



プリアンブルは、0と1を交互にずらっと並べている。
0と1は同数だから、これを時間的に平均(積分?)すると、0.5になる。
このアナログ値をコンパレーターの閾値に使って、0/1を判定すると、処理も簡単で、うまく動きそうだ。

これを想定して、データの本体を送る直前にプリアンブルを渡し、そのときの受信側の閾値を整える。
プリアンブルの頭のところは、いくらか壊れるのだけれど想定内。

よって、プリアンブルだけでなく、以降のデータ本体も、0と1の数をなるべく揃えてやると閾値が安定し、出力されるデータも安定しそうだ。

時間的にアナログ信号レベルやオフセットが何倍も変わっても、短時間内でだいたい同じになることが期待できればよさそう。
このあたりの時定数(AGCか)は、通信内容次第の匙加減か。

------

また、無信号時、受信側のロジックレベルでは、0と1が不規則に出力されることになるので、うまく処理してやらないといけない。

このあたりは、直接信号が出てくるような無線モジュールでは、どれも同じ事情になるみたいだ。

------

で、Ethernetでは、この閾値の変動自体を監視しているとか。
信号の振幅は、10BASE-2では-1Vなのだけれど、複数のノードが同時に送信すると、時間平均値が-0.5Vからさらに下がる(確率的にロジック1の時間が、50%以上になる。)
これをコリジョンとして検出し、相当の処理を行うようだ。


まったく、うまく出来てると感心しきり。

10BASE-2は、同軸ケーブルにバス接続されたノード間で通信しているのだけれど、無線になってもほぼ同じ方法で通信を行っているらしい。

いまどきの通信は、普通に位相振幅変調とか、M系列変調を使うので、プリアンブルでゲインをコントロールなんてしないだろうけど。

シンプルな通信の需要はなくなることは無いだろう。

------

こういった手法をうまく使うと、マウスの壁判定なども、まだまだ安定すると思うのだが....

最近のマウスは、迷路解析の手法や、走行軌跡の作成に話題が集まっているけれど、こういったセンシングの方向にも、まだまだテーマがある。
個人的には、こっちのほうに興味があるのだが。

|

« STM32L151続き | トップページ | 秋月H8 LANボード »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: プリアンブル、あるいはAGC:

« STM32L151続き | トップページ | 秋月H8 LANボード »