作者forpass (Pongo)
看板Electronics
标题[问题] PS/2 Keyboard
时间Wed Apr 27 11:22:38 2011
大家好 小弟想请问
我看网路上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