]> Joshua Wise's Git repositories - fpgaboy.git/blob - Buttons.v
6caecd64e164cb987ef340a34618518ec5899eb1
[fpgaboy.git] / Buttons.v
1 `define ADDR_P1 16'hFF10
2
3 /* note: buttons are 'pressed' when the input is high */
4
5 module Buttons(
6         input core_clk,
7         input wr,
8         input rd,
9         input [15:0] addr,
10         inout [7:0] data,
11         input [7:0] buttons
12         output reg int
13         );
14
15         reg [7:0] p1;
16         reg [3:0] oldp1013;
17
18         assign data = (rd && (addr == `ADDR_P1)) ? p1 : 8'bzzzzzzzz;
19
20         wire p1013 = (p1[4] ? 4'b1111 : ~buttons[3:0]) | (p1[5] ? 4'b1111 : ~buttons[7:4]);
21
22         always @ (negedge core_clk) begin
23                 if(wr) begin
24                         case(addr)
25                         `ADDR_P1: p1[5:4] <= data[5:4];
26                         endcase
27                 end
28                 p1[3:0] <= p1013;
29                 oldp1013 <= p1013;
30                 int <= | (oldp1013 & (oldp1013 ^ p1013));
31         end
32 endmodule
This page took 0.021293 seconds and 2 git commands to generate.