maximum length LFSR ( M 系列 ) を使って

M 系列で、長いタイマーを作れそうなので、実験。先ずはランダム点滅イルミネーション、次は遅いクロックから


maximum length LFSR ( M 系列 ) とは

D フリップフロップを n 個使って、2^n-1 個のパターンを発生できるので、良く使うリピーター 23 段の遅延の代わりに、リピーター 5 個でできるのではないかと思い開始。先ずは簡単な、リピーター 3 個 ( n = 3 ) で動作を確認。

n = 3 の回路図 回路図です。D-FF 3個と、エクスクルーシブ オア 1個です。Q1 の信号 ( "1" / "0" ) が、順番にD-FF3 → D-FF2と接がっていますので、Q3 にも、Q2 にも、Q1 と同じパターンが遅れて出てきます。n = 3 なので、パターンは 8 - 1 = 7 で 7 種類で、3 bit が全部 0 の、 0 0 0 パターン以外です。0 0 0 は特殊で、それ以上変化しないので使えません。n = 4 以上の回路は後で載せますが、リピータの数が増えるだけで似たような回路です。

パターンの表 どのように変化するかの表です。表のように7種類のパターンを繰り返し、変化し続けます。8 個目が 1 個目と同じなので、7 パターンの繰り返し。

具体的なブロックの回路 イルミネーション
D-FF の代わりに、リピーターを使った、ブロックの回路です。理解しやすいように平面に配置しています。中央がエクスクルーシブオア、リピーターは配線の長さを短くする為に配置を変えてあります。初期状態は 0 0 0 であることが多いと思いますので、作ったままでは動かないことが多いと思います。左上のボタンを押して D-FF3 の入力を "1" にすると、動き出します。リピーターの赤ランプの点滅が、上の表のとおりで、擬似乱数のイルミネーションそのものです。n を増やせば、擬似乱数の周期が長くなるので、クリスマスツリーのピカピカなどに利用できるかなと思います。

具体的なブロックの回路(クロック) 低速クロック発生
ボタンを押さなくてもスタートするように、 0 0 0 だったら自動的に D-FF3 の入力を "1" にする回路を設けます。0 0 0 なので、D3 = ( Q3~ and Q2~ and Q1~ ) or Q1 です、簡単にすると、図のように ( Q3 or Q2 )~ です。リピータの配置は配線の都合で先ほどと少し変えてあります。これで n を増やせば、低速クロックの発生器として使えます。クロック出力は、動作中に 0 0 1 の時だけ出力が "1" になるこのトーチで、図の左のパウダーのところに動力が伝わります。

作ってみた 作ってみました
ブロックは土なのでちょっと見にくいですが。なんか点滅しているのですが、エクスクルーシブオアの中央のところがぜんぜん光っていません。トーチで反転するところで 100mS 信号が遅れるので、反転しない信号と時間的にずれて、リピーターに入る信号が短くなったり長くなったりして、心配していたように、Q1 のオフ信号がなくなったり、オン信号が2個になったりしているのだろうと思います。改良法を考えなくては。

具体的なブロックの回路 イルミネーション(改良版)
反転しない信号を、リピーターでトーチと同じだけ遅延するようにして or するタイミングを合わせてみました。そしてエクスクルーシブオアで遅れる分を最後のリピータの遅延を減らして合わせて4遅れるようにしました。リピータの赤の数字は遅延数です。実験してみたら残念ながら正常に動作しないです。調べたら、4遅延のリピータに1チックの繰り返し信号を入れると、出力が時々 "0" になるという仕様になっているようで、これに関連した原因のようです。

具体的なブロックの回路 イルミネーション(改良版)
4遅延のリピータの入力は、単発パルス、または4チック巾の信号だけにした方が期待通りになるようです。スタートボタンの信号を1チックのパルスにするようにしたところ期待通りに動いているようです。初期値が "000" でないと誤動作するようなので、設置する時に、エクスクルーシブオアでリピータに "1" が入らないように右側の Q1 のリピーター ( 遅延 2 ) を最後に設置すると良いです。もしも、動作中に誤動作しているようなら、この Q1 の出力のレッドストーンダスト ( 図で右上角 ) を、一旦壊して、リピータが "0" になってから再度置いて戻すと、初期値を "000"にできます。

作ってみた 作ってみました
エクスクルーシブオアの真ん中のトーチが 7 ステートに一回だけ点いているようなので、期待通りのようです。やっと動いた。

具体的なブロックの回路 低速クロック発生(改良版)
ボタンを押さなくてもスタートするようにするには、回路が増えてしまいそうなので先送りすることにして、先ずは設置後にスタートボタンを押す仕様です。イルミネーションと同じように設置時は "0 0 0" にして、スタートパルスを入れてスタート。設置時に一回だけ押せば、誤動作しない限り、そのままでクロックが出続けるはずです。動作中は "0 0 0" にはならないので、"0 0" をデコードすれば、"0 0 1" の時だけ出力が "1" になります。これで 7 x 4 = 28 チックに一回 4 チック巾のクロックが出ます。

具体的なブロックの回路 タイマー
n = 3 のタイマーです。ボタンを押すとスタートしフリップフロップをセット、終了ステータスをデコードしてリセット。リセット中はリピーターをクリアする。ここでは一番長いステート 7 でリセットするように、"011" でデコードしています。実際には反転して入力して NOR しているので、NOR のブロックには "100" で入力しています。フリップフロップの Q が出力で、7 x 4 = 28 チック、プラス内部遅延数チックで 約 30 チック間のパルスが出ます。

作ってみた 作ってみました
こっちの世界で、3 秒くらいなので良いと思います。

n = 4 の回路図 次に n = 4 の回路図です。D-FF 4個と、エクスクルーシブ オア 1個で、 n = 3 と殆ど同じです。n = 4 なので、パターンは 16 - 1 = 15 で 15 種類で、4 bit が全部 0 の、 0 0 0 0 パターン以外です。

パターンの表 どのように変化するかの表です。表のように 15 種類のパターンを繰り返し、変化し続けます。16 個目が 1 個目と同じなので、15 パターンの繰り返し。

具体的なブロックの回路 タイマー
n = 4 のタイマーです。ボタンを押すとスタートしフリップフロップをセット、終了ステータスをデコードしてリセット。リセット中はリピーターをクリアする。ここでは一番長いステート 15 でリセットするように、"0011" でデコードしています。実際には反転して入力して NOR しているので、NOR のブロックには "1100" で入力しています。フリップフロップの Q が出力で、15 x 4 = 60 チック、プラス内部遅延数チックで 約 62 チック間のパルスが出ます。



| TOP | マインクラフトのトップページ |