サイモンはマイクロコントローラーなしで言う


8

Arduinoのようなマイクロコントローラーではなく、論理回路、LED、ICだけを利用するSimon Saysの古典的なゲームを作成したいと思います。

この回路に4つのLEDと4つの触覚スイッチを使用したいと思います。

私はこれを自分のための教育課題としてやっています。私は電子工学を勉強していませんが、コンピュータサイエンスを勉強しています。

10進カウンターや555タイマーなど、いくつかのコンポーネントが必要になることを理解しています。

しかし、私の質問は、どのLEDをランダムな順序で表示するかをどのように決定できるのですか?シーケンスをメモリに保存するために、カウンター/フリップフロップを10年間できることを理解しています。

回答:


5

一般に、ハードウェアで「ランダムな」数値を生成するために(アミューズメントグレードの目的で)、ある程度予測できないメカニズムを採用し、それを予測可能なメカニズムと組み合わせることができますが、明白ではありません。

たとえば、カウンターをすばやく実行していて、ユーザーがボタンを押すたびに(前のシーケンスを再生しているときなど)出力をサンプリングすると、時間がランダムになるため多少ランダムになります。しかし、ボタンをすばやく押してシステムをゲームする人は、同じ数個の値を何度も何度も取得する傾向があります(ただし、クロックがMHz範囲にある場合は、現実的な問題ではない可能性があります)。

逆に、現在の状態のシフトレジスタの入力にフィードバックレジスタをフィードバックする線形フィードバックシフトレジスタ(Wikipedia)を使用して、同じ入力の出力であっても、人間にはすぐには分からないシーケンスを生成できます。実際には完全に予測可能です。単独で使用すると、ゲームのすべてのプレイで同じシーケンスが提供され、リピートユーザーがすぐに覚えられるため、これも良い考えではありません。

ただし、タイマーを使用して予測できない開始値を取得し、線形フィードバックシフトレジスタを使用してそれを混合するなどの2つの方法を組み合わせる場合(または、高速クロックに対してLFSRを自由に実行させ、それに基づいてサンプリングする場合)ユーザーインタラクション)あなたはアミューズメントゲームのために十分ランダムな何かを得ることができるはずです。

もう1つのソースとして考えられるのは、A / Dコンバーターの下位ビットです。

何をするにせよ、回路を構築する前に、それを(そしてシステム全体の設計も)シミュレートしたいと思うでしょう。プロジェクトは非常に複雑なので、小さなFPGAまたは大きなCPLDを使用する価値があります。

そして最後に、歴史的に、オリジナルのSimonゲームは明らかに初期のマイクロプロセッサであるTMS1000を使用していたことを覚えておいてください。一般的に、複雑な順次処理はそのようにしてより効率的に実装できます。状態マシンは、単純な問題、非常に高速に実行する必要がある問題、またはそのような問題に対する最終的な作業の代わりを学習する問題に対してのみ選択されます。

編集:

http://www.waitingforfriday.com/index.php/Reverse_engineering_an_MB_Electronic_Simon_game

TMS1000からカスタムラベルバージョンのTMS1000への最終的な変更を含む、いくつかの興味深い観察が含まれています。よりあなたの質問に関連して、それはユーザーがボタンを押したときにフリーランニングカウンターをサンプリングすることによってオリジナルがその乱数を生成したことを示唆しています;-)


ROMに格納された「プログラム」を使用してSimonブランドユニットと同様のゲームを処理できる「プロセッサ」を構築するには、いくつのチップ、またはCPLDがどれだけ複雑になる必要があるのでしょうか。私の推測では、これは12未満の既成のディスクリートチップと32Kx8以下のROMで実行できると思います。チップが多いほど、必要なROMは小さくなります。「ゲーム2」が不要な場合、ソフトウェアベースのフィードバックシフトレジスタは、40ビット程度のストレージで任意の長さの「シーケンス」を処理できます(カラーシーケンスを選択するときは、ボタンが押されるまで20ビットLFSRを実行します) 、それをコピーします...
スーパーキャット2013年

...バックアップレジスタに。次に、そのLFSRによって生成されたシーケンスを再生し、バックアップレジスタをLFSRにコピーして戻し、ユーザーがそのシーケンスのボタンを押すのを待ちます。
スーパーキャット2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.