Download Minesweeper

Transcript
module blinkoff_fsm(clk, reset, loc, blinkstatus, L);
//blinkoff_fsm(blinkstatus,loc,reset,clk,bclk,L);
input clk;
input reset;
input [4:0] loc;
input [1:0] blinkstatus;
output [59:0] L;
reg [59:0] L;
always @(posedge clk or posedge reset)
if (reset)
L <= 60'b0;
else if (blinkstatus == 2'b00)
begin
L[2*(loc-1)] <= 1; // turn off LED
L[2*(loc-1)+1] <= 0;
end
else if (blinkstatus == 2'b01)
begin
L[2*(loc-1)] <= 0;
L[2*(loc-1)+1] <= 0;
end
else if (blinkstatus == 2'b10)
begin
L[2*(loc-1)+1] <= 1; //blink
L[2*(loc-1)] <= 0;
end
endmodule
module gridpoller(sclk,bclk,reset,L,gridcol,poller);
input sclk;
input bclk;
input reset;
input [59:0] L;
output [4:0] gridcol;
output [5:0] poller;
reg [5:0] state;
reg [5:0] nextstate;
reg [4:0] gridcol;
parameter S0 = 6'b011111;
parameter S1 = 6'b101111;
parameter S2 = 6'b110111;
parameter S3 = 6'b111011;
parameter S4 = 6'b111101;
parameter S5 = 6'b111110;
assign poller[5:0] = state[5:0];
assign poller[4] = state[4];
assign poller[3] = state[3];
assign poller[2] = state[2];
assign poller[1] = state[1];
assign poller[0] = state[0];
// State Register
always @(posedge sclk or posedge reset)
if (reset) state <= S0;
else
state <= nextstate;
// Next State Logic
32