GPS用のコードは10ビットのシフトレジスタを用いたM系列の擬似雑音符号の発生回路を2組(それぞれG1 shift register、G2 shift registerと称している)使用し、両者の出力の排他的論理和をとったものを使用している。
図2.7に従来よく採用されてきた回路構成を示す。コードの先頭のタイミングでINITIALIZEの信号を発生させ、G1、G2同時に全ビット"1"に初期化する。この状態で最初のC/Aコードのデータが得られ、その後CODE CLOCKが入る都度、順次C/Aコードを発生させる。
衛星毎のコードの切替は、G2の出力をどのビットからとるかの選択によって行なう。(複数のタップの出力をSW for Code Selectのスイッチで選択し、それらのデータの排他的論理和を取ってG2iとする)
WAAS用に新たに19種類のコードが定義(MOPS Appendix A.3.3)されたが、これらのコードは、図2.7の回路構成では発生させることが出来ない。
機上受信機では、MOPS Figure A-3に記載されている方法を採用した。この方法はINITIALIZEでG1は全ビット“1”に初期化するが、G2には衛星毎に異なった初期値を与えるものである。
コード先頭のタイミングでG1レジスタは全ビット"1"に初期化され、G2レジスタはINITIAL G2 STATEの内容に初期化される。あらかじめCPUによって発生させたいコードに応じて決定される初期値を書込んでおくことにより、必要なコードを発生させることが出来る。
コードの先頭のタイミングCode EpochはG1 shift registerの全ビットが“1”であることを検出することによって得ることが出来る。
機上受信機では全てのチャンネルにおいて、コード発生回路として図2.8の方式を採用した。