Delayed LinesとOdd Ticks【Turing Complete編】
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
Delayed Linesステージ
信号を2tick遅延の回路を組む問題です。
Delayed Linesステージを解く
使えるコンポーネントはDelayed Lineのみです。これを通過する度に1tickの遅延が発生します。
1:Delayed Lineを使って回路を組む
今回は2tickの遅延を発生させればよいので、InputとOutputの間に2つのDelayed Lineを挟むだけです。
2:テストする
[Run]ボタンからテストすると早すぎて挙動がわからないので、[Next]ボタンをクリックしてください。
Inputが「赤⇒緑」になると瞬時に1つ目のDelayed Lineに到達します。そのため、Delayed Lineも緑になります。しかし、ここで出力するのに遅延が発生するので、2つ目のDelayed Lineはまだ赤のままです。
[Next]ボタンを押すと、Inputが「緑⇒赤」になるので1つ目のDelayed Lineは赤です。しかし、Delayed Lineは1tick分の遅延なので、この時点で出力が緑になります。瞬時に2つ目のDelayed Lineに到達し、緑になります。
この時点でDelayed Lineによって遅延が発生することを確認できました。
後は[Next]ボタンを叩きながら挙動を追いかけてください。
クリアすると、Delayed Lineコンポーネントがアンロックされます。
Odd Ticksステージ
偶数tickの際にON、偶数tickの際にOFFになる信号、すなわち1tickごとにONとOFFを繰り返す信号を出力する回路を組む問題です。
Odd Ticksステージを解く
1:リングオシレーターとDelayed Linesコンポーネントを組み合わせる
始めにリングオシレーター(1つのNOTゲートのみのループ回路)の回路を組みます。
※NOTコンポーネントはひっくり返してあります。[Space]キーでコンポーネントを回転できます。
リングオシレーターは禁止されていることは、Circular Dependencyの問題で解説しました。
2:Delayed Linesコンポーネントを挟む
リングオシレーターにDelayed Linesコンポーネントを挟みます。この回路は状態はシミュレーターで許可されています。
※Delayed Lineコンポーネントには入出力の向き(左から右に流れる)があるので注意してください。今回の回路では、回転せずに配置することになります。
3:出力ピンとつなげる
回路はONとOFFを繰り返す状態を維持しています。
つまり、この回路から出力ピンにワイヤーを伸ばせば、ONとOFFを1tickごとに繰り返す信号を取り出せます。
つなげるパターンとしては2つあります。
・パターン1・・・偶数tickの際にON、偶数tickの際にOFFになる信号を出力する。問題は正解。
・パターン2・・・偶数tickの際にOFF、偶数tickの際にONになる信号を出力する。問題は不正解。
この違いはテストすると明確になります。
4:クリアするとOdd Ticksコンポーネントがアンロックされます。
このコンポーネントは、ONとOFFを繰り返す信号を生成するので、クロックジェネレーターとして使えることが期待できます。