3G携帯電話で使われていたCDMAのサービスは、日米ともに今年終了を迎える。W-CDMAと呼ばれていた方式も2026年(ドコモ)、2024年(ソフトバンク)に終了する。2Gで最初に導入されたCDMA方式(IS-95という)は、米国を中心に利用された。CDMA技術は、1950年台に研究が行われていたが、軍事技術として使われたため1980年台までは、民間で利用されることがほとんどなかった。デジタル技術や半導体の進化という側面もあるが、CDMA技術はGPSにも利用されており、GPSの民間利用が可能になったことが、CDMA技術が民間で利用されるきっかけともなった。
一定の帯域を複数の通信で共有する方法を「Multiple Access」(多元接続)という。無線通信での多元接続には、「時間」(Time Division Multiple Access。TDMA)、「周波数」(同Frequency~。FDMA)、「符号」(同Code~。CDMA)、「空間」(同Space~。SDMA)などがある。TDMAやFDMAは、時間や周波数で分割して使うために比較的、理解しやすい。これに対してCDMAは、そもそもイメージが掴みにくい。
簡単にいうと、CDMAでは、送信するデータの1 bitを複数ビットからなるビットパターンとして送信する。このとき、帯域全体に広がる電波信号を使うため、「拡散変調」や「スペクトル拡散」などともいう。このビットパターンは、特殊な条件を満たすもので、ビット長が同じ他のパターンと混在してもあとから計算で分離することができるようになっている。CDMA通信方式とはこの原理を使い、一定の周波数帯域で複数の通信を行うことを可能にするものだ。このとき、受信する側は、送信側と同じビットパターンを使う。しかし、ビットパターンがわからないと受信することができない。こうしたある種の秘匿性があることが軍事技術に使われた理由だ。
CDMAは、難解そうだが、実際に計算してみると意外に単純だ。筆者は、Excelでこれを理解しようと試みたことがある。使った計算式は、かけ算や足し算だけだった。今回の図は、すべてExcelで作成した(神Excel?)。
まず、ビットパターンだが、いくつかの特殊な性質を満たす必要がある。このビットパターンをCDMAでは「拡散コード」や「疑似ランダム雑音」と呼ぶが、数学的には「直交符号」などと呼ばれるものを使う(複数の手法がある)。この直交符号は、単純な計算で長いビットパターンを作り出すことができる(図01)。8ビットの場合、256個の組み合わせのうち8個(全て1になるパターンは利用できないので正確には7つ)だけだ。W-CDMAではこれをOSVFコードと呼び、同じパターンを繰り返す、逆転したパターンを繰り返すというやり方で、ビット長を倍にしたパターンを作ることができる。このため、どんなに長いパターンでも、表などに記録する必要がなく、計算で簡単に求めることが可能だ。ハードウェアの場合、比較的簡単な電子回路で作り出すことができる。
CDMA方式では、デジタル信号の1と0を1と-1(あるいはその逆でも同じ)で表す。これは、デジタル信号を「波」に見立てるためだ。こうして作られた拡散コードには不思議な性質がある。自分自身との積和計算(かけ算して和を取る)では、位相が同じ、あるいは完全に逆になったときのみ最大値、最小値になる(図02)。同じビット長の別パターンとはどのような場合でも積和は、最大値、最小値にならない(図03)。拡散コードではない他のビットパターンでも最小値、最大値になることはない。これは、パターン中で1と-1の数が同じという特徴に関係している。
この性質を使うと、異なる拡散コードの通信が混在してもあとから分離が可能となるほか、ノイズなどが入っても復元することができる。
ここでは、8 bitの拡散コードを使い、3ビットのデータを送信してみることにする。ここでは2つの端末があり、それぞれをチャンネル1、チャンネル2とする。送信側ではチャンネル1とチャンネル2で異なる拡散コード(パターン3とパターン6)を使う。
送信するビットと拡散コードをかけ算し、1ビットの元データから24 bitの拡散結果を得る(図04)。これを送信するわけだが、同じ周波数帯を使うため、2つの信号は混ざってしまう。また、ここでノイズが混入する。
受信側では、予めチャンネルと拡散コードのパターンを知っている。混在した電波信号に対して、適切な拡散コードパターンを使って積和計算を行い、その符号を調べることで元の送信データを得ることができる。
実際のCDMAでは、受信信号と拡散コードパターンの開始位置を合わせる必要がある。これを同期という。同期には、携帯電話端末と基地局が最初に接続するときに行うものと、携帯電話端末側が移動して基地局が切り替わる時(ハンドオーバー)のものがある。ここでは、話を簡単にするため、同期が取れているものとした。
この図では、かけ算と足し算および、数値の符号を調べるSIGN関数しか利用していない。複雑そうだが、動作は意外に簡単である。たとえば、「送信側」の「拡散結果」というのは上の2つのセルの乗算結果である。「電波信号」の「合成信号」は、チャンネル1と2の拡散結果を足したものだ。「受信側」の「拡散コードとの照合処理」は、拡散コードのパターン(図の一番上の表)と「電波信号」の「ノイズの入った信号」の同じビットを乗算したもので、右端のセルは横方向の和(SUM関数)でしかない。「積分処理」も名前はすごいが、上のセルの値を合計しただけだ。
仕組みは簡単だが、この原理で、多数の端末を同時に1つの基地局と接続させることができる。拡散コードとかけ算して足すだけで、複数の通信が分離可能になるというのは何か手品を見ているかのようである。
今回のタイトルのネタは、J・P・ホーガンの「造物主の掟」の原題“Code of the Lifemaker”である。この作品では、文明を持つまで「進化」した「生命体」が登場する。CDMAは、GPS、2G、3Gで普及したものの、4GではOFDMなど他の技術に代替された。TDMAやFDMAがデジタル通信でありながら、アナログ的な技術であったのに対して、デジタルデータのまま変調処理まで行うというコンセプトは、OFDMなど後継技術に「進化」したとも言える。