の問題psの/ 2キーボードインタフェース

X

xorgate

Guest
こんにちは友人、
私はFPGAのiには、psインターフェイスにしようとして午前の新しい午前/私のキーボードで2インターフェイスは、私は理解することができますこれは、psで発生する操作/ 2インターフェイス、しかし
、 私自身が同じのためのコードを書くことができない、iは使用していますスパルタ式3Eのボード、いずれか1つこれは私が、任意の良い材料またはVerilogのコードを必要としないし、支援することができます方法は、psのための状態遷移図を配置する/ 2インターフェイスです。

- Xorgate

 
こんにちは
、 この読書のためのコードのPS / Xessボード上の2ポート:
コード:

-

- このデザインは、PS / 2キーボードからのキーストロークを受け取り、上の数字が表¥示されます

- 7 - XSAボードの場合のいずれかのキーを0-9のセグメントディスプレイが押された。

- そうでなければ、É.が表¥示されます

- ライブラリがIEEE unisim;

IEEE.std_logic_1164.allを使用します。

IEEE.NUMERIC_STD.allを使用します。

使用unisim.vcomponents.all;

使用work.ps2_kbd_pckg.all;エンティティtest_kbdです

一般的な(

周波数:自然:= 100_000 - メインクロック(KHz)です周波数

);

ポート(

clk:std_logicで; - メインクロック

ps2_clk:std_logicで; - キーボードクロック

ps2_data:std_logicで; - キーボードデータ

掲載:std_logic_vector(6 '1 0アウト) - LEDディスプレイ

);

エンドエンティティ;test_kbdアーキテクチャアーチ定数はい:std_logic:= '1';

なし定数:std_logic:= '0';信号のスキャンコード:std_logic_vector(7 '1、0); - キーボードからスキャンコード

信号rdy:std_logic; - ときにスキャンコード利用可能¥であることを示します

信号s_x:std_logic_vector(6 '1、0); - LEDセグメントの次の状態

信号kbd_error:std_logic; - エラーのキーボードからスキャンコードを受け取る様々な数字と文字の - LEDセグメントの活性化のパターン

定数DIG_1:std_logic_vector(6 '1 0):="0010010";

定数DIG_2:std_logic_vector(6 '1 0):="1011101";

定数DIG_3:std_logic_vector(6 '1 0):="1011011";

定数DIG_4:std_logic_vector(6 '1 0):="0111010";

定数DIG_5:std_logic_vector(6 '1 0):="1101011";

定数DIG_6:std_logic_vector(6 '1 0):="1101111";

定数DIG_7:std_logic_vector(6 '1 0):="1010010";

定数DIG_8:std_logic_vector(6 '1 0):="1111111";

定数DIG_9:std_logic_vector(6 '1 0):="1111011";

定数DIG_0:std_logic_vector(6 '1 0):="1110111";

定数LETTER_E:std_logic_vector(6 '1 0):="1101101";開始するu0:ps2_kbd

一般的なマップ(

周波数="周波数



ポートマップ(

clk ="clk、 - キーボードインターフェイス用のクロック

リゾート="kbd_error、 - があるときは、エラースキャンコードを受信して、キーボードintfcリセット

ps2_clk ="ps2_clk、 - は、キーボードからのクロック

ps2_data ="キーボードからps2_data、 - シリアルデータ(ps2_clkの立ち下がりエッジで有効)

スキャンコード="、スキャンコード - スキャンコードは、キーボードから受け取った

rdy ="rdy、 - ときに、キーボードからスキャンコード利用可能¥であることを示します

エラー="kbd_error - キーボードからスキャンコードを受信するエラーを示す

);- このマップは、スキャンコードは、キーボードからは、7セグメントディスプレイ上のパターンに受信

s_x"= DIG_1ときにスキャンコード="00010110"他の

DIG_2ときにスキャンコード="00011110"他の

DIG_3ときにスキャンコード="00100110"他の

DIG_4ときにスキャンコード="00100101"他の

DIG_5ときにスキャンコード="00101110"他の

DIG_6ときにスキャンコード="00110110"他の

DIG_7ときにスキャンコード="00111101"他の

DIG_8ときにスキャンコード="00111110"他の

DIG_9ときにスキャンコード="01000110"他の

DIG_0ときにスキャンコード="01000101"他の

LETTER_E;- LEDの表¥示を更新する

プロセス(CLK)の

開始する

場合rising_edge(CLK)のその後

場合rdy = YESをクリック

掲載"= s_x; - スキャンコードを受信するたびに、表¥示を更新する

終了の場合;

終了の場合;

工程;エンドのアーキテクチャ;

 

Welcome to EDABoard.com

Sponsor

Back
Top