デジタル回路の簡単なノイズジェネレータとして、シフトレジスタを使ったいわゆる Shift Register Generator Counter が使われます。シフトレジスタの出力を XOR を通して入力にフィードバックすることで、長い周期のカウンタが得られます。カウンタ周期 N が大きいとき、シフトレジスタの出力は (入力周波数 / N) より高い周波数成分をもつホワイトノイズに近づくので、サウンドジェネレータのノイズ音発生器によく使われます。
2入力の XORを使ったフィードバック回路では、SREG 出力が 0x00 のとき入力も 0 になってしまうため、この状態を避ける必要があります。一般的にはリセット後の初期値を適当な値に設定します。
74164 などの SIPO シフトレジスタは、出力 0x00 にするリセット入力しかありません。出力が 0x00 を有効なステートとするためには、上図のように XNOR を使えば OK です。これは、出力 0xFF から XOR によるフィードバックで動作させたときと等価になります。
2入力 XNOR の入力元 bit の接続先を M,N として、得られるカウンタの周期を下表に示します。N bit のシフトレジスタのとりうる状態は 2^N で、全 bit が 1 のときは無効な状態なので、周期 2^N-1 が N bit SREG の最大周期となります。この最大周期となるカウンタを Maximum Length Counter と呼びます。Maximum Length Counter となるフィードバック接続は、表中で太字で示しています。
M | ||||||||||||||||
N/M | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
N | 0 | |||||||||||||||
1 | 3 | |||||||||||||||
2 | 7 | 7 | ||||||||||||||
3 | 15 | 6 | 15 | |||||||||||||
4 | 21 | 31 | 31 | 21 | ||||||||||||
5 | 63 | 14 | 9 | 14 | 63 | |||||||||||
6 | 127 | 93 | 127 | 127 | 93 | 127 | ||||||||||
7 | 63 | 30 | 217 | 12 | 217 | 30 | 63 | |||||||||
8 | 73 | 465 | 21 | 511 | 511 | 21 | 465 | 73 | ||||||||
9 | 889 | 42 | 1023 | 62 | 15 | 62 | 1023 | 42 | 889 | |||||||
10 | 1533 | 2047 | 1953 | 1533 | 595 | 595 | 1533 | 1953 | 2047 | 1533 | ||||||
11 | 3255 | 126 | 45 | 28 | 819 | 18 | 819 | 28 | 45 | 126 | 3255 | |||||
12 | 7905 | 1785 | 8001 | 7161 | 6141 | 7665 | 7665 | 6141 | 7161 | 8001 | 1785 | 7905 | ||||
13 | 11811 | 254 | 5115 | 186 | 5461 | 254 | 21 | 254 | 5461 | 186 | 5115 | 254 | 11811 | |||
14 | 32767 | 4599 | 63 | 32767 | 35 | 93 | 32767 | 32767 | 93 | 35 | 32767 | 63 | 4599 | 32767 | ||
15 | 255 | 126 | 57337 | 60 | 16383 | 434 | 63457 | 24 | 63457 | 434 | 16383 | 60 | 57337 | 126 | 255 |