古くても役に立つ:マンチェスター符号化方式
マンチェスター符号化方式は、1940年代後半に英国マンチェスターのビクトリア大学で開発され、同大学のコンピュータ「マーク1」で初めて実用化されました。この符号化方式は、コンピュータの磁気ドラムにデータを記憶させるために使われました。以来、この符号化方式は、デジタルデータの低コスト無線通信用の変調方式として、非常によく知られるようになりました。この方式はたとえば、1977年に打ち上げられたNASAの宇宙探査機「ボイジャー1号」と「ボイジャー2号」に採用されています。ボイジャーでは、この方式は、16ビット/秒のマンチェスター符号化コマンドで構成される制御信号に使用されています。この信号は、周波数512Hzの方形波サブキャリヤに2相変調されています。両探査機は44年間活動しており、現在星間物質中を飛行しています。
技術的には、マンチェスター符号は自己クロッキング方式のバイナリ符号であり、同期ビットストリームのデータとクロック信号を1つの信号として符号化します。マンチェスター符号化方式では、他の技術とは違って電圧レベル自体を使用する代わりに、低電圧レベルから高電圧レベル、または高電圧レベルから低電圧レベルへの遷移を使用することで、ビット値を表現します。つまり、ビットの状態は、電圧レベルではなく、電圧レベルの遷移の方向によって決定されます。
図1 マンチェスター符号の波形
これは、すべてのシンボル(ビット)に対して、少なくとも1つの遷移が存在することを意味します。注目すべき遷移はすべてビットの先頭ではなく途中で発生するため、各シンボルは、ビットのうち半分が正で、半分が負となっている期間で表現されます。各ビットの長さはデフォルトでこのように設定されているため、マンチェスター符号の自己クロッキングによりエラーレートが最小化され、最高の信頼性が得られます。レシーバは符号化された信号のエッジで同期を取ります。この場合のデメリットは、2つの論理状態を伝送するため、1ビットあたり2クロックサイクルが必要となるので、クロックはそのままなのに、帯域幅が半分になってしまうことです。
クロックとデータの排他的論理和から生成
マンチェスター符号は、NRZ(非ゼロ復帰)データストリームと、このビットストリームの2倍の周波数を持つクロック信号とのバイナリXOR演算(Exclusive OR)により生成されます。データビットが‘0’(Low)レベルとXOR演算されると、LowからHighへの遷移が発生し、論理‘0’が表現されます。データビットが'1'(High)レベルとXOR演算されると、反転が起こり,信号はHighからLowに変化し,論理'1'が表現されます。
クロックの位相が2種類あるように、マンチェスター符号化方式にも2つの一般的な標準があります。G.E. Thomasの名を冠したオリジナルの実装では、立ち下がりエッジは論理「1」(High)、立ち上がりエッジは論理「0」(Low)を表します。これに対し、IEEE 802.3 Ethernet標準およびIEEE 802.4トークンバス標準の低速バージョン(10MBit/s)で使用されているマンチェスター符号化方式の定義では、論理「1」(High)を表すために立ち上がりエッジを使用し、論理「0」(Low)を表すために立ち下がりエッジを使用しています。表1に両バージョンの概要を示します。
マンチェスター符号化方式には様々な名称があります。符号の生成に用いるクロック信号が2相であることから、2相符号(G.E. Thomasによるバージョンは「biphase-L」と呼ばれます)あるいは位相符号化と呼ばれることもあります。マンチェスターIIという名称は、一般にG.E. Thomasより後の符号化方式を指します。
表1:マンチェスター符号の真理値表 - IEEE 802.3によるバージョン(上)とG.E. Thomasによるバージョン(下)
転送されるビットストリームには、符号化されたデータの他に、たとえば同期パルスとしてのプリアンブル、あるいは使用する符号化方式を通知するためのプリアンブルを含めることができます。最後に、マンチェスター符号とNRZI(非ゼロ復帰反転)符号を組み合わせたDMC(差動マンチェスター符号化方式)と呼ばれるものもあります。この符号化方式はマンチェスター符号化方式と同様にビットの途中で遷移を行いますが、データストリーム内の'1'に遭遇するたびに遷移の方向が変化する点が異なります。DMCは、NRZI方式で符号化されたビットストリームとクロック信号にXOR関数を施すことで作成することができます。
マンチェスター符号化方式が持つ様々なメリット
マンチェスター符号化方式が持つ大きなメリットの1つは、NRZ(非ゼロ復帰)符号化方式にある問題のいくつかを回避できることです。このとき、各ビット期間において、論理「1」は「High」レベル、論理「0」は「Low」レベルで表現されます。たとえば、"Low"または"High"レベルが数回連続すると、ビットクリアクロックが存在しなくなり、トランスミッタとレシーバの同期が失われる可能性があります。一般的な回避策としては、別のクロック信号を送信するか、レシーバ側で独立したクロックを動作させます。
NRZ符号化方式におけるもう一つの問題は、マニュアルで「DCワンダー」と呼ばれているものです。伝送線路は一般にAC結合されているため、論理「1」が長く続くと、信号がDC的な振る舞いになって、AC結合では適切に再現できなくなるため、振幅が劣化し、最終的にはレシーバ側でビットエラーになります。この問題はマンチェスター符号化方式では回避されます。ビットごとに少なくとも1回のレベル遷移を行い、その都度ラインを「再充電」するからです。
図2:マンチェスター符号生成スクリプトのフローチャート
メリットは他にもあります。クロックはデータストリーム内に符号化されるため、クロック信号を別途作成する必要はありません。このため、マンチェスター符号化方式は、通信には1チャンネルがあれば十分のため、トランスミッタとレシーバの間にガルバニック絶縁が必要なアプリケーションに適しています。このように、マンチェスター符号化方式は、RF(無線周波数)、RFID、NFC(近距離無線通信)を使った無線送信に最適です。また、マンチェスター符号化方式の帯域幅は、1ビットの送信に2クロックサイクルを必要としますが、RZ(ゼロ復帰)符号化方式やNRZ符号化方式よりも比較的広くなっています。これは、2つのハーフビットサイクルの途中でレベルが変化するため、タイミングの制約が少ないためです。そして、必要な電力も、エラー確率も、かなり低くなっています。
様々な製造業のアプリケーション
マンチェスター符号化方式の欠点は、可能な帯域幅が組み込みシステムのクロック周波数などによって制限されるとすぐに、データレートが、符号化されていない信号のデータレートの半分にしかならなくなることです。そのため、マンチェスター符号化方式は、帯域幅が問題にならないLAN(ローカルエリアネットワーク)やOFC(光ファイバ通信)ネットワークなどシステムでのみ使用することができます。また、データレートが高くなると、周波数に関連した複雑な問題が発生し、高速通信に適さない符号が生成されるという問題があります。
マンチェスター符号化方式は多くのメリットがあるため、ビデオ、パルス符号変調、多くの通信規格など、いくつかのアプリケーションで使用されています。マンチェスター符号化方式は、前述のボイジャー宇宙探査機への指令インターフェースに採用されているだけでなく、他の分野にも応用されています。たとえば、Philipsが開発したRC-5プロトコルでは、民生用の赤外線リモコン信号送信に、DALI(調整可能デジタル照明インターフェース)規格では照明制御製品間の双方向通信に利用されています。自動車の世界では、マンチェスター符号化方式は、エアバッグセンサなどの規格であるインターフェース5(PSI 5)で使用されています。また、製造業では、プロセスオートメーションシステムにおける計測器を監視するために、Profibus PA規格の中で使用されています。
マンチェスター符号化信号の生成方法
しかし、そのようなビットストリームはどのように生成するのでしょうか?手軽にテストを行うには、Digilentの無償のWaveFormsマルチ計測ソフトウェアが適しています。このソフトウェアは、Digilentのオシロスコープ「Analog Discovery 2」と「Analog Discovery Pro」にシームレスに接続できます。これらのオシロスコープはロジックアナライザ、パターン発生器、電源としても使用可能です。
このソフトウェアは、Windows、macOS、Linuxに対応します。また、ユーザーが選択できる計測器(または計測対象)としては、オシロスコープ、波形発生器、電源、電圧計、データロガー、ロジックアナライザ、パターン発生器、静的I/O、スペクトル、ネットワーク、インピーダンス、プロトコルアナライザなど、通常使用される12種類があります。これにより、ユーザーは混合信号や複数領域の信号を捕捉、記録、分析、文書化、生成することが可能です。さらに、WaveFormsアプリケーションに含まれているスクリプトエディタツールを使用して、JavaScriptで計測器をカスタムプログラミングできます。また、このプログラムでは、カスタマイズしたパターン用にカンマ区切り値(.csv)ファイルを使用することもできます。
具体例としては、このようなファイルを作成するため、Pythonスクリプト内で、マンチェスター方式で符号化したビットストリームを使用します。このスクリプトでは、WaveFormsのPattern Generator instruments(パターン発生器)が、Analog Discovery ProのDIO0デジタルI/Oピンにビットストリームを出力し、読み取ってWaveFormsに返し、Logic Analyzer(ロジックアナライザ)計器を使って復号化します。
まず、スクリプトを書きます。次のステップでは、入力ストリングを読み取ってバイナリに変換し、必要に応じてオクテットの順序を反転させ、すべてのビットを2倍にします。次に、クロック信号の配列を生成し、2つの配列をXOR演算することでビットストリームからマンチェスター符号を生成します。次いで、生成された符号を.csvファイルに書き込みます。図2は、このスクリプトのフローチャートです。
パターン発生器を実行する前に、WaveFormsでいくつかの設定を行っておく必要があります。Analog Discovery Proを接続するには、DIO0を選択し、出力をPushPullに、タイプをCustomに設定します。そして、.csvファイルをインポートした後、パターン発生器をAutoモードで実行します。
図3:DigilentのAnalog Discovery Proは、いろいろな場合に役立ちます。
マンチェスター符号化信号の復号化方法
符号が動作することを検証するため、WaveFormsのLogic Analyzer計器にマンチェスターチャンネルを追加します。符号化方式のパラメータは、Pythonスクリプトで設定した同じビットストリーム周波数に設定する必要があります。最初のビットをトリガとして使用すると、ロジックアナライザがその信号を波形としてASCII形式で出力します(図4)。復号化した信号をASCII形式で表示することで、人間が読めるようになります。
図4:WaveFormsソフトウェアで復号化されたビットストリーム
マンチェスター符号化方式は、登場以来、既にかなりの年月が経過していますが、今でも産業界で広く使われています。符号化ビットストリームを生成するのに、従来のようにクロック信号とデータのXOR演算を行うディスクリート論理部品が必要でなくなり、ソフトウェアで簡単にできるようになったためです。このようなシステムの検証は、DigilentのWaveFormsソフトウェアやAnalog Discovery Proオシロスコープ/ロジックアナライザなどのツールを使えば、簡単に行うことができます。
Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.
Visit TechForum