5 桁のバイナリ簡易パスワード ロック Verilog コード ego1 開発ボード vivado ソフトウェア

名前: 5 桁のバイナリのシンプルなパスワード ロック Verilog コード ego1 開発ボード vivado ソフトウェア

ソフトウェア: VIVADO

言語: Verilog

コード関数:

1. 5 桁の 2 進数の単純なパスワード ロックを設計し、パスワードは 5 つの 2 進数で構成されます。

2. ボタンを使用してパスワードを事前に設定し、パスワードを変更します。

3. 入力されたパスワードが設定されたパスワードと一致する場合は、LED ライトが入力が正しいことを示し、一致しない場合は LED ライトが入力エラーを示します。

FPGA コード Verilog/VHDL コード リソースのダウンロード: www.hdlcode.com

このコードは ego1 開発ボードで検証されています。開発ボードは次のとおりです。他の開発ボードはピン アダプテーションを変更できます:

ego1 開発ボード.png

コードのダウンロード:5 桁のバイナリ簡易パスワード ロック verilog コード ego1 開発ボード vivado ソフトウェア名前: 5 桁のバイナリ簡易パスワード ロック verilogコード ego1 開発ボード vivado ソフトウェア (コードのダウンロードは記事の最後にあります) ソフトウェア: VIVADO 言語: Verilog コード機能: 1. 5 桁の 2 進数の単純なパスワード ロックを設計し、パスワードは 5 桁の 2 進数で構成されます。ボタンを使用してパスワードを事前に設定し、パスワードを変更します; 3. 入力されたパスワードが設定されたパスワードと一致する場合は、LED ライトが入力が正しいことを示し、そうでない場合は LED ライトが使用されていることを示します。入力ミス。 FPGA コード Verilog/VHDL コード リソースのダウンロード: www.hdlcode.comicon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid =308

1. プロジェクト文書

2. プログラムファイル

3. プログラムのコンパイル

4. RTL図

5. ピン割り当て

6. テストベンチ

7. シミュレーション図

シミュレーション全体図

図は元のパスワードが 11111 の場合をシミュレーションしています 10111 を入力するとパスワードが違いますので、再度 11111 を入力します 確認ボタンを押すとパスワードロックが開きます(LED1 点灯) パスワード変更ボタンを数回押し、 10111 を入力し、パスワードを 10111 に変更し、ロックをオフにして、もう一度 10111 を入力すると、パスワード ロックが開きます。

ボタンデバウンスモジュール(立ち上がりエッジ検出)

パスワード入力モジュール

この図では、10111 を入力し、パスワードが間違っています。その後、再度 11111 を入力し、10111 を入力し、パスワードを 10111 に変更し、ロックをオフにして、再度 10111 を入力することをシミュレートしています。

パスワードロック制御モジュール

この図は、元のパスワードが 11111 で、パスワードが間違っているので 10111 を入力し、再度 11111 を入力し、確認ボタンを押した後、パスワードロックが解除され (LED1 が点灯)、パスワード変更ボタンを数回押した場合をシミュレートしています。 、 10111 と入力し、パスワードを 10111 に変更してから、ロックをオフにし、再度 10111 を入力すると、パスワード ロックが開きます。

デジタル管表示モジュール

パスワードリセットモジュール

この図は、元のパスワードが 11111 である場合に、パスワードを 10111 に変更するプロセスをシミュレートしています。

コード表示の一部:

//パスワードロック制御モジュール
module mimasuo_ctrl(
入力クロック、
input [19:0] password,//パスワードを入力
input [19:0]Correct_password,//正しいパスワード
入力確認、//確認
入力リセット、// アラームをクリア
input edit,//パスワードを変更
input lock_up,//ロック
出力 led_open,// ロック解除インジケーター ライト
出力 [2:0] current_state// 現在の状態
);
// 6 つの状態を定義する
パラメータ s_lock=3'd0;
パラメータ s_compare=3'd1;
パラメータ s_pass=3'd2;
パラメータ s_error=3'd3;
パラメータ s_modify=3'd4;
パラメータ s_alarm=3'd5;
reg [2:0] state=3'd0;
assign current_state=state;
reg [2:0] error_cnt=3'd0;
// ステート マシン制御
always@(posedge clk)
ケース(状態)
s_lock://ロックステータス
if(confirm==1)
状態<=s_compare;
それ以外
状態<=s_lock;
s_compare://パスワードのステータスを比較
if(正しい_パスワード==パスワード)
状態<=s_pass;
それ以外
状態<=s_error;
s_pass://パスワードは正しいです
if(modify==1)
state<=s_modify;// パスワードを変更
else if(lock_up==1)
   state<=s_lock;// ロック
それ以外
状態<=s_pass;
s_error://パスワードエラー
state<=s_lock;// ロックを継続する
s_modify://パスワードを変更
if(confirm==1)
state<=s_pass;// ロック解除状態に戻る
それ以外
状態<=s_modify;
デフォルト:状態<=s_lock;
エンドケース
reg led_open_buf=0;
always@(posedge clk)
if(state==s_modify || state==s_pass)//パス状態と変更状態は両方ともロック解除された状態です
led_open_buf<=1;// ロックを解除
それ以外
led_open_buf<=0;// ロックを閉じる
assign led_open=led_open_buf;
エンドモジュール

おすすめ

転載: blog.csdn.net/diaojiangxue/article/details/134607539