OpenCores
URL https://opencores.org/ocsvn/eco32/eco32/trunk

Subversion Repositories eco32

[/] [eco32/] [tags/] [eco32-0.24/] [fpga/] [src/] [kbd/] [kbd.v] - Blame information for rev 27

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 hellwig
module kbd(ps2_clk, ps2_data,
2
           clk, reset,
3
           en, wr, addr2,
4
           data_in, data_out,
5
           wt, irq);
6
    input ps2_clk;
7
    input ps2_data;
8
    input clk;
9
    input reset;
10
    input en;
11
    input wr;
12
    input addr2;
13
    input [7:0] data_in;
14
    output [7:0] data_out;
15
    output wt;
16
    output irq;
17
 
18
  wire [7:0] keyboard_data;
19
  wire keyboard_rdy;
20
  reg [7:0] data;
21
  reg rdy;
22
  reg ien;
23
 
24
  keyboard keyboard1(
25
    .ps2_clk(ps2_clk),
26
    .ps2_data(ps2_data),
27
    .clk(clk),
28
    .reset(reset),
29
    .keyboard_data(keyboard_data[7:0]),
30
    .keyboard_rdy(keyboard_rdy)
31
  );
32
 
33
  always @(posedge clk) begin
34
    if (reset == 1) begin
35
      data <= 8'h00;
36
      rdy <= 0;
37
      ien <= 0;
38
    end else begin
39
      if (keyboard_rdy == 1) begin
40
        data <= keyboard_data;
41
      end
42
      if (keyboard_rdy == 1 ||
43
          (en == 1 && wr == 0 && addr2 == 1)) begin
44
        rdy <= keyboard_rdy;
45
      end
46
      if (en == 1 && wr == 1 && addr2 == 0) begin
47
        rdy <= data_in[0];
48
        ien <= data_in[1];
49
      end
50
    end
51
  end
52
 
53
  assign data_out =
54
    (addr2 == 0) ? { 6'b000000, ien, rdy } : data;
55
  assign wt = 1'b0;
56
  assign irq = ien & rdy;
57
 
58
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.