[問題] PS/2 Keyboard
大家好 小弟想請問
我看網路上PS/2鍵盤默認是Set2
而鍵盤按鍵0(右邊的數字鍵)的MakeCode是8'h70 BreakCode是16'hF070
如果我按下按鍵 那我收到的資料是8'h70還是16'h0070 16'h7000呢?
那我的程式碼是這樣寫的
reg[15:0] Load_Data,Store_Data;
case(PC)
4'b0000:begin PC<=(!S_in)?4'b0001:4'b0000;end
//判斷是否為起始位元0,是的話再到下個State
4'b0001:begin Load_Data[0]<=S_in;PC<=4'b0010;end
4'b0010:begin Load_Data[1]<=S_in;PC<=4'b0011;end
4'b0011:begin Load_Data[2]<=S_in;PC<=4'b0100;end
4'b0100:begin Load_Data[3]<=S_in;PC<=4'b0101;end
4'b0101:begin Load_Data[4]<=S_in;PC<=4'b0110;end
4'b0110:begin Load_Data[5]<=S_in;PC<=4'b0111;end
4'b0111:begin Load_Data[6]<=S_in;PC<=4'b1000;end
4'b1000:begin Load_Data[7]<=S_in;PC<=4'b1001;end
//逐步接收資料
4'b1001:
begin
if (Load_Data[0+:8]==8'hF0) begin
Load_Data[8+:8]<=Load_Data[0+:8];PC<=4'b0000;end
//如果接收到的是BreakCode的起始F0,將存取資料的reg左移8bits,
並到起始State等候下筆資料
else begin PC<=4'b1010;Store_Data<=Load_Data;end
//不是的話才把資料丟進輸出,再到下個State把存資料的reg reset
end
4'b1010:begin PC<=(S_in)?4'b0000:4'b1010;Load_Data<=16'h0000;end
//判斷是否為終止位元1,並將reg reset
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.252.2.6