From: Christopher Zihao Lu Date: Fri, 9 May 2008 09:53:20 +0000 (-0400) Subject: added butans X-Git-Url: http://git.joshuawise.com/fpgaboy.git/commitdiff_plain/47a8eefe3693f2cfc96488d8b557f72612d685e0?hp=-c added butans --- 47a8eefe3693f2cfc96488d8b557f72612d685e0 diff --git a/Buttons.v b/Buttons.v new file mode 100644 index 0000000..6caecd6 --- /dev/null +++ b/Buttons.v @@ -0,0 +1,32 @@ +`define ADDR_P1 16'hFF10 + +/* note: buttons are 'pressed' when the input is high */ + +module Buttons( + input core_clk, + input wr, + input rd, + input [15:0] addr, + inout [7:0] data, + input [7:0] buttons + output reg int + ); + + reg [7:0] p1; + reg [3:0] oldp1013; + + assign data = (rd && (addr == `ADDR_P1)) ? p1 : 8'bzzzzzzzz; + + wire p1013 = (p1[4] ? 4'b1111 : ~buttons[3:0]) | (p1[5] ? 4'b1111 : ~buttons[7:4]); + + always @ (negedge core_clk) begin + if(wr) begin + case(addr) + `ADDR_P1: p1[5:4] <= data[5:4]; + endcase + end + p1[3:0] <= p1013; + oldp1013 <= p1013; + int <= | (oldp1013 & (oldp1013 ^ p1013)); + end +endmodule