meideru blog

meideruが書いているブログです。主に電子工作・プログラミング・ガジェット類などを中心に記事を書いています。

【FPGA】Verilog HDLで電子サイコロを作ってみた

      2016/09/25

久しぶりにFPGAのネタです。

ちょっと前にFPGAのボードを購入したという話をしましたが、あれから全く触っていませんでした(;^ω^)

【関連記事】
FPGAの勉強のために揃えた物

なので、電子サイコロなるものを作ってみたので、今日はその件について記事を書こうと思います。

使用しているボード

使用しているのは、DE0というボードです。

@DE0 その1
DE0の箱

 

@DE0 その2
DE0

 

詳しくは関連記事をご覧ください。

電子サイコロについて

ボタンを押すと、ランダムで0~6の数字が出るようにします。

参考にした本

「入門Verilog HDL記述」という本を参考にしました。

この本の中に「電子サイコロ」という項目があったので、それをベースにプログラムを書いてみました。

と言っても、ほとんど私が自作して書いたので、本の内容とは違うプログラムになっています。

ソースコード

主に3つのソースコードから構成されています。

Main.v

 

Main.vは全体部です。これがメインのソースコードとなります。

RemChat.v

 

RemChat.vは、ボタンを押したときのチャタリングを除去するプログラムです。

ボタンが押されてから20ms遅延させることによってチャタリングを除去するという仕組みです。

Seg7Decoder.v

 

Seg7Decoder.vは、7セグのデコーダです。

仕組み

50MHzのクロック信号に合わせて、さいころの目をカウントしていき、ボタンを押した瞬間のカウントを7セグに表示します。

実際の動作

YouTubeに動画を貼ったので、そちらをご覧ください。

まとめ

俺氏「またしょうもない物を作ってしまった・・・(石川五右衛門風に)」

多分、乱数ってこんな風に作られてるんでしょうね。クロック数に合わせて高速でカウントしていって、止まったときの数がランダムに見えるという仕組みなんでしょうね。

パチンコの「体感器」という装置は、こういった乱数の盲点を突いているんだと思います。

 

以上です!

ノシ

 - 電子工作, プログラミング, FPGA