/* Map Tracer Ver0.90c for Nissan silvia(S14 J's,Q's and K's)...designed by seychelle59 2006.2.10 Fri. * If your car is Q's(J's), address higher bit(A[15]) input terminal must be external pull-down. * -------------------------------------------------------------------------------------------------- */ module maptracer9(a, b, c, ce, di, do, sel, outb, reset_N, ind, QK); input [15:8] b; //address(upper 8bits) input [3:0] a; //address(lower 4bits) input ce; //chipenable input sel; //indicate select input [7:6]di; //D[7:6]=feedback signal input reset_N; //system reset input QK; //J's,Q's(Low) or K's(High) output [3:0] outb; //X driver output output ind; //regular or highoctane output c; //Y driver latch signal output [1:0] do; //feedback signal reg [3:0] outb; reg [1:0] do; reg c, ind; always @(negedge reset_N or negedge ce) begin if (!reset_N) begin outb <= 4'b0000; ind <= 1; c <= 0; do <= 2'b00; end else begin if (sel == 0) begin if (QK == 1) begin case(b) 8'b11101101: //ignition for highoctane(K's) begin outb <= a[3:0]; ind <= 1; c <= 0; do <= (di[7] == 1) ? 2'b01 : 2'b10; end 8'b11101000: //ignition for regular fuel(K's) begin outb <= a[3:0]; ind <= 0; c <= 0; do <= (di[7] == 1) ? 2'b01 : 2'b10; end default: begin outb <= outb; ind <= ind; c <= 1; do <= do; end endcase end else begin case(b) 8'b00001000: //iginition for highoctane(J's,Q's) begin outb <= a[3:0]; ind <= 1; c <= 0; do <= (di[7] == 1) ? 2'b01 : 2'b10; end 8'b00001101: //ignition for regular fuel(J's,Q's) begin outb <= a[3:0]; ind <= 0; c <= 0; do <= (di[7] == 1) ? 2'b01 : 2'b10; end default: begin outb <= outb; ind <= ind; c <= 1; do <= do; end endcase end end else begin if (QK == 1) begin case(b) 8'b11100001: //highoctane(K's) begin outb <= a[3:0]; ind <= 1; c <= 0; do <= (di[6] == 1) ? 2'b01 : 2'b11; end 8'b11101110: //regular fuel(K's) begin outb <= a[3:0]; ind <= 0; c <= 0; do <= (di[6] == 1) ? 2'b01 : 2'b11; end default: begin outb <= outb; ind <= ind; c <= 1; do <= do; end endcase end else begin case(b) 8'b00000001: //highoctane(J's,Q's) begin outb <= a[3:0]; ind <= 1; c <= 0; do <= (di[6] == 1) ? 2'b01 : 2'b11; end 8'b00001110: //regular fuel(J's,Q's) begin outb <= a[3:0]; ind <= 0; c <= 0; do <= (di[6] == 1) ? 2'b01 : 2'b11; end default: begin outb <= outb; ind <= ind; c <= 1; do <= do; end endcase end end end end endmodule