疑似ノイズジェネレータ

by K.I

Index


概要

511PNの発振回路の作成を依頼されたので、ちょっと調べてみた。 PN系列と呼ばれる、疑似ランダム系列を発生する回路(Pseudo-Random Number Generator)の一種である事が分かった。
[top]

PN系列

PN系列は、シフトレジスタとフィードバックを組み合わせた回路で、生成する。 真に不規則ではなく繰返し信号であるが、繰返し周期が十分長く、ほとんど不規則とみなされるため、疑似ランダム系列と呼ばれる。

M系列(Maximal-length sequences)

M系列とは、ある長さのシフトレジスタとフィードバックで生成される符号系列の周期が最大になるものをいう。
[top]

511PN

511PNは、送受信回路の設計仕様の規格測定等に用いられるらしい。 これ以上の情報は得られなかったが、511という数値から、9ビットのPN系列符号の発振回路と考えられる。この線から調べ直すと、9ビットPN符号ジェネレータは測定用に多く用いられており、PN9とも呼ばれているようだ。

9ビットPN符号

何故、9ビットのPN符号がシリアル通信の測定に用いられるのだろうか。 M系列はタップの位置により複数の系列が存在するが、基本的に疑似乱数パターンであり、規格測定用にはどれを選んでも特に問題ないと考えられる。

タップ位置

タップ位置についての文献は見つからなかったので、任意のタップ位置により9ビットPN系列(M系列)を発生するプログラム pn9 を作成して、シュミレーションしてみた。 その結果、タップ位置の組合せ511通りの内、周期が511になるものは48通り存在することが分かった1
1実際は同一とみなせる組合せがあるため、この半分の24通りになるらしい。(未確認)しかし今回の目的には必要無いので、これ以上は追求しない。
2リンク切れでしたが、インターネットアーカイブにありました。分かり易く有用な記事だと思います。

[top]

32767PN

結局、測定のためには規格上、15bitのPN符号が必要なことが分かった。 タップの情報が無いのでPN16コマンドを作成して、タップ位置を計算してみた。 だが、これだけ繰り返し周期が長いと重複のチェックに非常に膨大な時間が掛かる。以下の50個のタップを求めるのに30分ぐらい掛かった。
        7FFE 7FF7 7FF4 7FEC 7FE3 7FD9 7FC8 7FBF 7FB9 7FB0
        7FA7 7F9B 7F94 7F91 7F89 7F7F 7F75 7F64 7F5E 7F58
        7F4C 7F43 7F3E 7F2C 7F26 7F20 7F19 7F16 7EF5 7EF0
        7EEE 7ED8 7ED7 7ED1 7ECC 7EC5 7EB8 7EA9 7EA3 7E9C
        7E96 7E95 7E8E 7E8B 7E87 7E77 7E69 7E56 7E41 7E3A
                :
                :

PN符号の実際の例

32767PNは4800bpsの場合、1周期が約6.8秒と十分過ぎる程の長さを持っている。 これぐらい長ければ、周期も持たない完全にランダムな信号と同様と考えても特に問題ないだろう。
        11111111111111100000000000000100000000000001100000000000010100000000000111100000
        00000100010000000001100110000000010101010000000111111110000001000000010000011000
        00011000010100000101000111100001111001000100010001011001100110011101010101010100
        11111111111110100000000000011100000000000100100000000001101100000000010110100000
        00011101110000000100110010000001101010110000010111111010000111000001110001001000
        01001001101100011011010110100101101111011101110110001100110011010010101010101110
        11111111111001100000000001010100000000011111100000000100000100000001100001100000
        01010001010000011110011110000100010100010001100111100110010101000101010111111001
        11111100000101000000100001111000001100010001000010100110011000111101010101001000
        11111111101100100000000110101100000001011110100000011100011100000100100100100001
これは、NRZI変換が0と1のバランスが良いということもあるが、乱数の持つ性質によるものだろう。どちらで評価しても差はないと考えられる。
[top]

PNジェネレータ

MicroChip社のPIC12F675を使用し、プログラムでPN9,PN15ジェネレータを構成した。

メモ


3タップは、0x110と0x6000とした。
4stage,tapの設定値が違うだけで、全く同じプログラムである。stage数が可変になるようにプログラムを工夫してある。


comments powered by Disqus