⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ps2.v

📁 在vhdl开发环境下
💻 V
字号:

module PS2
( 
  clk,     // system clk recommend 33MHz or higher;
  clkin,   // PS2 clk, come from mouse or keyboard;
  data,    // PS2 data;
  req,     // set 1 when there is data recieved;
  creq,    // set 1 to reset req to 0;
  rbufer   // data buffer, data recieved are kept in it; 
);

input clkin;
inout data;
input creq;
outout req;
output[7:0] rbuffer;

reg req;
reg[7:0] rbuffer;

reg[7:0] recv;
reg[3:0] m;

reg clkin_last;
reg req_p;

always@(posedge(clk))
begin
  clkin_last=clkin;
end

always@(posedge(clk))
begin
  case(m)
  0: begin
       if((clkin_last==1)&&(clkin==0)) begin
         if(data==0) m=1;
       end
     end
  1,2,3,4,5,6,7,8:
     begin
       if((clkin_last==1)&&(clkin==0)) begin
         recv=recv>>1;
         recv[7]=data;
         m=m+1;
       end
     end
  9: begin
       if((clkin_last==1)&&(clkin==0)) begin
         m=m+1;
       end
     end
  10:
     begin
       if((clkin_last==1)&&(clkin==0)) begin
         if(data==1) begin
           rbuffer=recv;
           req_p=1;
           m=m+1;
         end
       end
     end 
  11:
    begin
      req_p=0;
      m=0;
    end   
  default:
     begin
       m=0;
     end
  endcase   
end

always@(posedge(clk))
begin
  if(req_p==1) req=1;
  else if(creq==1) req=0;  
end

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -