PRBS (Pseudorandom Binary Sequence)を出力するC++のソースコードです。光通信の分野では疑似乱数を使ってBERを計測するらしいです。超高速だと乱数を出力するのも大変なんでしょうね。

アンリツのパルスパターン発生器「MP1761C」の取扱説明書の59ページ辺りを参考に作りました。

サンプルプログラムの使い方

fileソースコードをここからダウンロードします。解凍してコンパイルして実行すると1と0の疑似乱数の文字列を出力します。

prbs1.jpg

prbs2.jpg

ソースコード解説

15ビットのレジスタを用意して後は疑似乱数の回路でぐるぐるまわしながら出力しています。32767個(2^15 - 1個)で1周するらしいので1周分printfしたら終了します。

#include "sdlab.h"

int main()
{
  int reg[15] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                 0, 0, 0, 0, 1};
  int out;
  uint64_t size = 32767; //32767 = 2^15 - 1

  for(int i = 0; i < size; i++){
    out = reg[14];
    for(int j = 0; j < 14; j++){
      reg[14 - j] = reg[14 - j - 1];
    }
    reg[0] = out ^ reg[14];
    printf("%d", out);
  }
}

添付ファイル: fileprbs.zip 6674件 [詳細] fileprbs2.jpg 6717件 [詳細] fileprbs1.jpg 6658件 [詳細]

  添付編集
Last-modified: 2014-12-11 (木) 18:46:33 (3385d)