mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-01-11 23:43:09 +00:00
Update Framework
This commit is contained in:
parent
45c3d234d3
commit
55af49672d
@ -1,5 +1,4 @@
|
||||
module burger_time_mist
|
||||
(
|
||||
module burger_time_mist(
|
||||
output LED,
|
||||
output [5:0] VGA_R,
|
||||
output [5:0] VGA_G,
|
||||
@ -23,24 +22,15 @@ localparam CONF_STR = {
|
||||
"BurgerTime;;",
|
||||
"O2,Rotate Controls,Off,On;",
|
||||
"O34,Scanlines,Off,25%,50%,75%;",
|
||||
"O5,Blend,Off,On;",
|
||||
"T6,Reset;",
|
||||
"V,v1.10.",`BUILD_DATE
|
||||
"O6,Blend,Off,On;",
|
||||
"T0,Reset;",
|
||||
"V,v1.15.",`BUILD_DATE
|
||||
};
|
||||
|
||||
wire [31:0] status;
|
||||
wire [1:0] buttons;
|
||||
wire [1:0] switches;
|
||||
wire [9:0] kbjoy;
|
||||
wire [7:0] joystick_0;
|
||||
wire [7:0] joystick_1;
|
||||
wire scandoublerD;
|
||||
wire ypbpr;
|
||||
wire ps2_kbd_clk, ps2_kbd_data;
|
||||
|
||||
assign LED = 1;
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
|
||||
wire clk_12, clk_24;
|
||||
wire clk_48, clk_12, clk_6, clk_24;
|
||||
wire pll_locked;
|
||||
|
||||
pll pll(
|
||||
@ -50,60 +40,54 @@ pll pll(
|
||||
.c1(clk_24)
|
||||
);
|
||||
|
||||
wire m_up = ~status[2] ? kbjoy[6] | joystick_0[1] | joystick_1[1] : kbjoy[4] | joystick_0[3] | joystick_1[3];
|
||||
wire m_down = ~status[2] ? kbjoy[7] | joystick_0[0] | joystick_1[0] : kbjoy[5] | joystick_0[2] | joystick_1[2];
|
||||
wire m_left = ~status[2] ? kbjoy[5] | joystick_0[2] | joystick_1[2] : kbjoy[6] | joystick_0[1] | joystick_1[1];
|
||||
wire m_right = ~status[2] ? kbjoy[4] | joystick_0[3] | joystick_1[3] : kbjoy[7] | joystick_0[0] | joystick_1[0];
|
||||
|
||||
wire m_fire = kbjoy[0] | joystick_0[4] | joystick_1[4];
|
||||
wire m_start1 = kbjoy[1];
|
||||
wire m_start2 = kbjoy[2];
|
||||
wire m_coin = kbjoy[3];
|
||||
wire [63:0] status;
|
||||
wire [1:0] buttons;
|
||||
wire [1:0] switches;
|
||||
wire [31:0] joystick_0,joystick_1;
|
||||
wire scandoublerD;
|
||||
wire ypbpr;
|
||||
wire key_strobe;
|
||||
wire key_pressed;
|
||||
wire [7:0] key_code;
|
||||
wire no_csync;
|
||||
wire [10:0] audio;
|
||||
wire hs, vs, cs;
|
||||
wire [2:0] r, g;
|
||||
wire [1:0] b;
|
||||
wire blankn;
|
||||
|
||||
burger_time burger_time(
|
||||
.clock_12(clk_12),
|
||||
.reset(status[0] | status[6] | buttons[1]),
|
||||
.reset(status[0] | buttons[1]),
|
||||
.video_r(r),
|
||||
.video_g(g),
|
||||
.video_b(b),
|
||||
.video_csync(),
|
||||
.video_csync(cs),
|
||||
.video_blankn(blankn),
|
||||
.video_hs(hs),
|
||||
.video_vs(vs),
|
||||
.audio_out(audio),
|
||||
.start2(m_start2),
|
||||
.start1(m_start1),
|
||||
.coin1(m_coin),
|
||||
.fire1(m_fire),
|
||||
.start2(m_two_players),
|
||||
.start1(m_one_player),
|
||||
.coin1(m_coin1),
|
||||
|
||||
.fire1(m_fireA),
|
||||
.right1(m_right),
|
||||
.left1(m_left),
|
||||
.down1(m_down),
|
||||
.up1(m_up),
|
||||
.fire2(m_fire),
|
||||
.right2(m_right),
|
||||
.left2(m_left),
|
||||
.down2(m_down),
|
||||
.up2(m_up),
|
||||
.dbg_cpu_addr()
|
||||
|
||||
.fire2(m_fire2A),
|
||||
.right2(m_right2),
|
||||
.left2(m_left2),
|
||||
.down2(m_down2),
|
||||
.up2(m_up2)
|
||||
);
|
||||
|
||||
wire [10:0] audio;
|
||||
|
||||
dac #(11) dac(
|
||||
.clk_i(clk_12),
|
||||
.res_n_i(1),
|
||||
.dac_i(audio),
|
||||
.dac_o(AUDIO_L)
|
||||
);
|
||||
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
|
||||
wire hs, vs;
|
||||
wire [2:0] r, g;
|
||||
wire [1:0] b;
|
||||
wire blankn;
|
||||
|
||||
mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(
|
||||
mist_video #(
|
||||
.COLOR_DEPTH(3),
|
||||
.SD_HCNT_WIDTH(10))
|
||||
mist_video(
|
||||
.clk_sys ( clk_24 ),
|
||||
.SPI_SCK ( SPI_SCK ),
|
||||
.SPI_SS3 ( SPI_SS3 ),
|
||||
@ -118,19 +102,19 @@ mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(
|
||||
.VGA_B ( VGA_B ),
|
||||
.VGA_VS ( VGA_VS ),
|
||||
.VGA_HS ( VGA_HS ),
|
||||
.scanlines (scandoublerD ? 2'b00 : status[4:3]),
|
||||
.rotate ( {1'b1,status[2]} ),
|
||||
.ce_divider ( 1'b1 ),
|
||||
.blend ( status[5] ),
|
||||
.scandoubler_disable( scandoublerD ),
|
||||
.no_csync ( 1'b0 ),
|
||||
.scanlines ( status[4:3] ),
|
||||
.blend ( status[6] ),
|
||||
.scandoubler_disable(scandoublerD ),
|
||||
.no_csync ( no_csync ),
|
||||
.ypbpr ( ypbpr )
|
||||
);
|
||||
|
||||
user_io #(
|
||||
.STRLEN(($size(CONF_STR)>>3)))
|
||||
user_io(
|
||||
.clk_sys (clk_12 ),
|
||||
.clk_sys (clk_24 ),
|
||||
.conf_str (CONF_STR ),
|
||||
.SPI_CLK (SPI_SCK ),
|
||||
.SPI_SS_IO (CONF_DATA0 ),
|
||||
@ -140,22 +124,40 @@ user_io(
|
||||
.switches (switches ),
|
||||
.scandoubler_disable (scandoublerD ),
|
||||
.ypbpr (ypbpr ),
|
||||
.no_csync (no_csync ),
|
||||
.key_strobe (key_strobe ),
|
||||
.key_pressed (key_pressed ),
|
||||
.key_code (key_code ),
|
||||
.ps2_kbd_clk (ps2_kbd_clk ),
|
||||
.ps2_kbd_data (ps2_kbd_data ),
|
||||
.joystick_0 (joystick_0 ),
|
||||
.joystick_1 (joystick_1 ),
|
||||
.status (status )
|
||||
);
|
||||
|
||||
keyboard keyboard(
|
||||
.clk(clk_12),
|
||||
.reset(),
|
||||
.ps2_kbd_clk(ps2_kbd_clk),
|
||||
.ps2_kbd_data(ps2_kbd_data),
|
||||
.joystick(kbjoy)
|
||||
dac #(11) dac(
|
||||
.clk_i(clk_12),
|
||||
.res_n_i(1),
|
||||
.dac_i(audio),
|
||||
.dac_o(AUDIO_L)
|
||||
);
|
||||
|
||||
wire m_up, m_down, m_left, m_right, m_fireA, m_fireB, m_fireC, m_fireD, m_fireE, m_fireF;
|
||||
wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D, m_fire2E, m_fire2F;
|
||||
wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players;
|
||||
|
||||
arcade_inputs inputs (
|
||||
.clk ( clk_24 ),
|
||||
.key_strobe ( key_strobe ),
|
||||
.key_pressed ( key_pressed ),
|
||||
.key_code ( key_code ),
|
||||
.joystick_0 ( joystick_0 ),
|
||||
.joystick_1 ( joystick_1 ),
|
||||
.rotate ( status[2] ),
|
||||
.orientation ( 2'b11 ),
|
||||
.joyswap ( 1'b0 ),
|
||||
.oneplayer ( 1'b0 ),
|
||||
.controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ),
|
||||
.player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ),
|
||||
.player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} )
|
||||
);
|
||||
|
||||
endmodule
|
||||
|
||||
@ -1,82 +0,0 @@
|
||||
|
||||
|
||||
module keyboard
|
||||
(
|
||||
input clk,
|
||||
input reset,
|
||||
input ps2_kbd_clk,
|
||||
input ps2_kbd_data,
|
||||
|
||||
output reg[7:0] joystick
|
||||
);
|
||||
|
||||
reg [11:0] shift_reg = 12'hFFF;
|
||||
wire[11:0] kdata = {ps2_kbd_data,shift_reg[11:1]};
|
||||
wire [7:0] kcode = kdata[9:2];
|
||||
reg release_btn = 0;
|
||||
|
||||
reg [7:0] code;
|
||||
reg input_strobe = 0;
|
||||
|
||||
always @(negedge clk) begin
|
||||
reg old_reset = 0;
|
||||
|
||||
old_reset <= reset;
|
||||
|
||||
if(~old_reset & reset)begin
|
||||
joystick <= 0;
|
||||
end
|
||||
|
||||
if(input_strobe) begin
|
||||
case(code)
|
||||
'h16: joystick[1] <= ~release_btn; // 1
|
||||
'h1E: joystick[2] <= ~release_btn; // 2
|
||||
|
||||
'h75: joystick[4] <= ~release_btn; // arrow up
|
||||
'h72: joystick[5] <= ~release_btn; // arrow down
|
||||
'h6B: joystick[6] <= ~release_btn; // arrow left
|
||||
'h74: joystick[7] <= ~release_btn; // arrow right
|
||||
|
||||
'h29: joystick[0] <= ~release_btn; // Space
|
||||
'h11: joystick[1] <= ~release_btn; // Left Alt
|
||||
'h0d: joystick[2] <= ~release_btn; // Tab
|
||||
'h76: joystick[3] <= ~release_btn; // Escape
|
||||
endcase
|
||||
end
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
reg [3:0] prev_clk = 0;
|
||||
reg old_reset = 0;
|
||||
reg action = 0;
|
||||
|
||||
old_reset <= reset;
|
||||
input_strobe <= 0;
|
||||
|
||||
if(~old_reset & reset)begin
|
||||
prev_clk <= 0;
|
||||
shift_reg <= 12'hFFF;
|
||||
end else begin
|
||||
prev_clk <= {ps2_kbd_clk,prev_clk[3:1]};
|
||||
if(prev_clk == 1) begin
|
||||
if (kdata[11] & ^kdata[10:2] & ~kdata[1] & kdata[0]) begin
|
||||
shift_reg <= 12'hFFF;
|
||||
if (kcode == 8'he0) ;
|
||||
// Extended key code follows
|
||||
else if (kcode == 8'hf0)
|
||||
// Release code follows
|
||||
action <= 1;
|
||||
else begin
|
||||
// Cancel extended/release flags for next time
|
||||
action <= 0;
|
||||
release_btn <= action;
|
||||
code <= kcode;
|
||||
input_strobe <= 1;
|
||||
end
|
||||
end else begin
|
||||
shift_reg <= kdata;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
endmodule
|
||||
@ -151,7 +151,6 @@ set_global_assignment -name SYSTEMVERILOG_FILE rtl/burnin_rubber_mist.sv
|
||||
set_global_assignment -name VHDL_FILE rtl/burnin_rubber.vhd
|
||||
set_global_assignment -name VHDL_FILE "rtl/burnin_rubber _sound.vhd"
|
||||
set_global_assignment -name VERILOG_FILE rtl/pll.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/keyboard.v
|
||||
set_global_assignment -name VHDL_FILE rtl/gen_ram.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/Roms/fg_sp_graphx_3.vhd
|
||||
set_global_assignment -name VHDL_FILE rtl/Roms/fg_sp_graphx_2.vhd
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
module burnin_rubber_mist
|
||||
(
|
||||
module burnin_rubber_mist(
|
||||
output LED,
|
||||
output [5:0] VGA_R,
|
||||
output [5:0] VGA_G,
|
||||
@ -20,25 +19,16 @@ module burnin_rubber_mist
|
||||
`include "rtl\build_id.v"
|
||||
|
||||
localparam CONF_STR = {
|
||||
"BurningR;;",
|
||||
"B.Rubber;;",
|
||||
"O2,Rotate Controls,Off,On;",
|
||||
"O34,Scanlines,Off,25%,50%,75%;",
|
||||
"O5,Blend,Off,On;",
|
||||
"T6,Reset;",
|
||||
"V,v1.10.",`BUILD_DATE
|
||||
"O6,Blend,Off,On;",
|
||||
"T0,Reset;",
|
||||
"V,v1.15.",`BUILD_DATE
|
||||
};
|
||||
|
||||
wire [31:0] status;
|
||||
wire [1:0] buttons;
|
||||
wire [1:0] switches;
|
||||
wire [9:0] kbjoy;
|
||||
wire [7:0] joystick_0;
|
||||
wire [7:0] joystick_1;
|
||||
wire scandoublerD;
|
||||
wire ypbpr;
|
||||
wire ps2_kbd_clk, ps2_kbd_data;
|
||||
|
||||
assign LED = 1;
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
|
||||
wire clk_48, clk_12, clk_6, clk_24;
|
||||
wire pll_locked;
|
||||
@ -47,63 +37,57 @@ pll pll(
|
||||
.inclk0(CLOCK_27),
|
||||
.areset(0),
|
||||
.c0(clk_12),
|
||||
.c1(clk_24),
|
||||
.c1(clk_24)
|
||||
);
|
||||
|
||||
wire m_up = ~status[2] ? kbjoy[6] | joystick_0[1] | joystick_1[1] : kbjoy[4] | joystick_0[3] | joystick_1[3];
|
||||
wire m_down = ~status[2] ? kbjoy[7] | joystick_0[0] | joystick_1[0] : kbjoy[5] | joystick_0[2] | joystick_1[2];
|
||||
wire m_left = ~status[2] ? kbjoy[5] | joystick_0[2] | joystick_1[2] : kbjoy[6] | joystick_0[1] | joystick_1[1];
|
||||
wire m_right = ~status[2] ? kbjoy[4] | joystick_0[3] | joystick_1[3] : kbjoy[7] | joystick_0[0] | joystick_1[0];
|
||||
|
||||
wire m_fire = kbjoy[0] | joystick_0[4] | joystick_1[4];
|
||||
wire m_start1 = kbjoy[1];
|
||||
wire m_start2 = kbjoy[2];
|
||||
wire m_coin = kbjoy[3];
|
||||
wire [63:0] status;
|
||||
wire [1:0] buttons;
|
||||
wire [1:0] switches;
|
||||
wire [31:0] joystick_0,joystick_1;
|
||||
wire scandoublerD;
|
||||
wire ypbpr;
|
||||
wire key_strobe;
|
||||
wire key_pressed;
|
||||
wire [7:0] key_code;
|
||||
wire no_csync;
|
||||
wire [10:0] audio;
|
||||
wire hs, vs, cs;
|
||||
wire [2:0] r, g;
|
||||
wire [1:0] b;
|
||||
wire blankn;
|
||||
|
||||
burnin_rubber burnin_rubber(
|
||||
.clock_12(clk_12),
|
||||
.reset(status[0] | status[6] | buttons[1]),
|
||||
.reset(status[0] | buttons[1]),
|
||||
.video_r(r),
|
||||
.video_g(g),
|
||||
.video_b(b),
|
||||
.video_csync(),
|
||||
.video_csync(cs),
|
||||
.video_blankn(blankn),
|
||||
.video_hs(hs),
|
||||
.video_vs(vs),
|
||||
.audio_out(audio),
|
||||
.start2(m_start2),
|
||||
.start1(m_start1),
|
||||
.coin1(m_coin),
|
||||
.fire1(m_fire),
|
||||
.start2(m_two_players),
|
||||
.start1(m_one_player),
|
||||
.coin1(m_coin1),
|
||||
|
||||
.fire1(m_fireA),
|
||||
.right1(m_right),
|
||||
.left1(m_left),
|
||||
.down1(m_down),
|
||||
.up1(m_up),
|
||||
.fire2(m_fire),
|
||||
.right2(m_right),
|
||||
.left2(m_left),
|
||||
.down2(m_down),
|
||||
.up2(m_up),
|
||||
.dbg_cpu_addr()
|
||||
|
||||
.fire2(m_fire2A),
|
||||
.right2(m_right2),
|
||||
.left2(m_left2),
|
||||
.down2(m_down2),
|
||||
.up2(m_up2)
|
||||
);
|
||||
|
||||
wire [10:0] audio;
|
||||
|
||||
dac #(11) dac(
|
||||
.clk_i(clk_12),
|
||||
.res_n_i(1),
|
||||
.dac_i(audio),
|
||||
.dac_o(AUDIO_L)
|
||||
);
|
||||
|
||||
assign AUDIO_R = AUDIO_L;
|
||||
|
||||
wire hs, vs;
|
||||
wire [2:0] r, g;
|
||||
wire [1:0] b;
|
||||
wire blankn;
|
||||
|
||||
mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(
|
||||
mist_video #(
|
||||
.COLOR_DEPTH(3),
|
||||
.SD_HCNT_WIDTH(10))
|
||||
mist_video(
|
||||
.clk_sys ( clk_24 ),
|
||||
.SPI_SCK ( SPI_SCK ),
|
||||
.SPI_SS3 ( SPI_SS3 ),
|
||||
@ -118,19 +102,19 @@ mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video(
|
||||
.VGA_B ( VGA_B ),
|
||||
.VGA_VS ( VGA_VS ),
|
||||
.VGA_HS ( VGA_HS ),
|
||||
.scanlines (scandoublerD ? 2'b00 : status[4:3]),
|
||||
.rotate ( {1'b1,status[2]} ),
|
||||
.ce_divider ( 1'b1 ),
|
||||
.blend ( status[5] ),
|
||||
.scandoubler_disable( scandoublerD ),
|
||||
.no_csync ( 1'b0 ),
|
||||
.scanlines ( status[4:3] ),
|
||||
.blend ( status[6] ),
|
||||
.scandoubler_disable(scandoublerD ),
|
||||
.no_csync ( no_csync ),
|
||||
.ypbpr ( ypbpr )
|
||||
);
|
||||
|
||||
user_io #(
|
||||
.STRLEN(($size(CONF_STR)>>3)))
|
||||
user_io(
|
||||
.clk_sys (clk_12 ),
|
||||
.clk_sys (clk_24 ),
|
||||
.conf_str (CONF_STR ),
|
||||
.SPI_CLK (SPI_SCK ),
|
||||
.SPI_SS_IO (CONF_DATA0 ),
|
||||
@ -140,22 +124,40 @@ user_io(
|
||||
.switches (switches ),
|
||||
.scandoubler_disable (scandoublerD ),
|
||||
.ypbpr (ypbpr ),
|
||||
.no_csync (no_csync ),
|
||||
.key_strobe (key_strobe ),
|
||||
.key_pressed (key_pressed ),
|
||||
.key_code (key_code ),
|
||||
.ps2_kbd_clk (ps2_kbd_clk ),
|
||||
.ps2_kbd_data (ps2_kbd_data ),
|
||||
.joystick_0 (joystick_0 ),
|
||||
.joystick_1 (joystick_1 ),
|
||||
.status (status )
|
||||
);
|
||||
|
||||
keyboard keyboard(
|
||||
.clk(clk_12),
|
||||
.reset(),
|
||||
.ps2_kbd_clk(ps2_kbd_clk),
|
||||
.ps2_kbd_data(ps2_kbd_data),
|
||||
.joystick(kbjoy)
|
||||
dac #(11) dac(
|
||||
.clk_i(clk_12),
|
||||
.res_n_i(1),
|
||||
.dac_i(audio),
|
||||
.dac_o(AUDIO_L)
|
||||
);
|
||||
|
||||
wire m_up, m_down, m_left, m_right, m_fireA, m_fireB, m_fireC, m_fireD, m_fireE, m_fireF;
|
||||
wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D, m_fire2E, m_fire2F;
|
||||
wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players;
|
||||
|
||||
arcade_inputs inputs (
|
||||
.clk ( clk_24 ),
|
||||
.key_strobe ( key_strobe ),
|
||||
.key_pressed ( key_pressed ),
|
||||
.key_code ( key_code ),
|
||||
.joystick_0 ( joystick_0 ),
|
||||
.joystick_1 ( joystick_1 ),
|
||||
.rotate ( status[2] ),
|
||||
.orientation ( 2'b11 ),
|
||||
.joyswap ( 1'b0 ),
|
||||
.oneplayer ( 1'b0 ),
|
||||
.controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ),
|
||||
.player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ),
|
||||
.player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} )
|
||||
);
|
||||
|
||||
endmodule
|
||||
|
||||
@ -1,82 +0,0 @@
|
||||
|
||||
|
||||
module keyboard
|
||||
(
|
||||
input clk,
|
||||
input reset,
|
||||
input ps2_kbd_clk,
|
||||
input ps2_kbd_data,
|
||||
|
||||
output reg[7:0] joystick
|
||||
);
|
||||
|
||||
reg [11:0] shift_reg = 12'hFFF;
|
||||
wire[11:0] kdata = {ps2_kbd_data,shift_reg[11:1]};
|
||||
wire [7:0] kcode = kdata[9:2];
|
||||
reg release_btn = 0;
|
||||
|
||||
reg [7:0] code;
|
||||
reg input_strobe = 0;
|
||||
|
||||
always @(negedge clk) begin
|
||||
reg old_reset = 0;
|
||||
|
||||
old_reset <= reset;
|
||||
|
||||
if(~old_reset & reset)begin
|
||||
joystick <= 0;
|
||||
end
|
||||
|
||||
if(input_strobe) begin
|
||||
case(code)
|
||||
'h16: joystick[1] <= ~release_btn; // 1
|
||||
'h1E: joystick[2] <= ~release_btn; // 2
|
||||
|
||||
'h75: joystick[4] <= ~release_btn; // arrow up
|
||||
'h72: joystick[5] <= ~release_btn; // arrow down
|
||||
'h6B: joystick[6] <= ~release_btn; // arrow left
|
||||
'h74: joystick[7] <= ~release_btn; // arrow right
|
||||
|
||||
'h29: joystick[0] <= ~release_btn; // Space
|
||||
'h11: joystick[1] <= ~release_btn; // Left Alt
|
||||
'h0d: joystick[2] <= ~release_btn; // Tab
|
||||
'h76: joystick[3] <= ~release_btn; // Escape
|
||||
endcase
|
||||
end
|
||||
end
|
||||
|
||||
always @(posedge clk) begin
|
||||
reg [3:0] prev_clk = 0;
|
||||
reg old_reset = 0;
|
||||
reg action = 0;
|
||||
|
||||
old_reset <= reset;
|
||||
input_strobe <= 0;
|
||||
|
||||
if(~old_reset & reset)begin
|
||||
prev_clk <= 0;
|
||||
shift_reg <= 12'hFFF;
|
||||
end else begin
|
||||
prev_clk <= {ps2_kbd_clk,prev_clk[3:1]};
|
||||
if(prev_clk == 1) begin
|
||||
if (kdata[11] & ^kdata[10:2] & ~kdata[1] & kdata[0]) begin
|
||||
shift_reg <= 12'hFFF;
|
||||
if (kcode == 8'he0) ;
|
||||
// Extended key code follows
|
||||
else if (kcode == 8'hf0)
|
||||
// Release code follows
|
||||
action <= 1;
|
||||
else begin
|
||||
// Cancel extended/release flags for next time
|
||||
action <= 0;
|
||||
release_btn <= action;
|
||||
code <= kcode;
|
||||
input_strobe <= 1;
|
||||
end
|
||||
end else begin
|
||||
shift_reg <= kdata;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
endmodule
|
||||
@ -46,17 +46,6 @@ set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
|
||||
set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL
|
||||
set_global_assignment -name SMART_RECOMPILE ON
|
||||
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl"
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/Supervision_MiST.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/Supervision_Top.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/audio.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/dma.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/ram88.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/video.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/sdram.sv
|
||||
set_global_assignment -name QIP_FILE "D:/GitHub/Mist_FPGA/common/mist/mist.qip"
|
||||
set_global_assignment -name VERILOG_FILE rtl/65c02/cpu_65c02.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/65c02/cpu.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/65c02/ALU.v
|
||||
|
||||
# Pin & Location Assignments
|
||||
# ==========================
|
||||
@ -235,6 +224,17 @@ set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -
|
||||
|
||||
# end ENTITY(Supervision_MiST)
|
||||
# ----------------------------
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/Supervision_MiST.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/Supervision_Top.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/audio.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/dma.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/ram88.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/video.sv
|
||||
set_global_assignment -name SYSTEMVERILOG_FILE rtl/sdram.sv
|
||||
set_global_assignment -name QIP_FILE "D:/GitHub/Mist_FPGA/common/mist/mist.qip"
|
||||
set_global_assignment -name VERILOG_FILE rtl/65c02/cpu_65c02.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/65c02/cpu.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/65c02/ALU.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/pll1.v
|
||||
set_global_assignment -name VERILOG_FILE rtl/pll2.v
|
||||
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||||
@ -19,7 +19,6 @@ module Supervision_Top(
|
||||
);
|
||||
|
||||
reg [15:0] nmi_clk;
|
||||
//wire clk_cpu;
|
||||
wire nmi = nmi_clk == 0;
|
||||
always @(posedge clk_cpu)
|
||||
nmi_clk <= nmi_clk + 16'b1;
|
||||
@ -65,7 +64,6 @@ reg [7:0] ch2_freq_hi, ch2_freq_low, ch2_length, ch2_vduty;
|
||||
reg [7:0] audio_dma_addr_low, audio_dma_addr_high;
|
||||
reg [7:0] audio_dma_ctrl, audio_dma_length, audio_dma_trigger;
|
||||
reg [7:0] noise_ctrl, noise_freq_vol, noise_length;
|
||||
//wire [3:0] audio_ch1, audio_ch2;
|
||||
|
||||
////////////////////// IRQ //////////////////////////
|
||||
reg [13:0] timer_div;
|
||||
@ -94,7 +92,7 @@ always @(posedge clk_cpu)
|
||||
else
|
||||
timer_div <= 14'hff;
|
||||
|
||||
// irq_timer
|
||||
irq_timer
|
||||
always @(posedge clk_cpu)
|
||||
if (sys_cs && cpu_we && AB[2:0] == 3'h3)
|
||||
irq_timer <= cpu_dout;
|
||||
@ -182,15 +180,19 @@ always @(posedge clk_sys)
|
||||
|
||||
|
||||
// write to dma registers
|
||||
//CAUTION: This DMA can only be used to move data from WRAM/cartridge ROM to VRAM!
|
||||
//Attempting to move data to a non-VRAM address will cause serious problems to occur.
|
||||
//See my findings at the bottom of the document in the DMA timing section.
|
||||
|
||||
always @(posedge clk_sys)
|
||||
if (dma_cs && cpu_we)
|
||||
case (AB[2:0])
|
||||
3'h0: dma_src_lo <= cpu_dout;
|
||||
3'h1: dma_src_hi <= cpu_dout;
|
||||
3'h2: dma_dst_lo <= cpu_dout;
|
||||
3'h3: dma_dst_hi <= cpu_dout;
|
||||
3'h4: dma_length <= cpu_dout;
|
||||
3'h5: dma_ctrl <= cpu_dout;
|
||||
3'h0: dma_src_lo <= cpu_dout;//DMA Source low
|
||||
3'h1: dma_src_hi <= cpu_dout;//DMA Source high
|
||||
3'h2: dma_dst_lo <= cpu_dout;//DMA Destination low
|
||||
3'h3: dma_dst_hi <= cpu_dout;//DMA Destination high
|
||||
3'h4: dma_length <= cpu_dout;//DMA Length
|
||||
3'h5: dma_ctrl <= cpu_dout;//DMA Control
|
||||
default:
|
||||
dma_ctrl <= 8'd0;
|
||||
endcase
|
||||
@ -199,7 +201,7 @@ always @(posedge clk_sys)
|
||||
always @(posedge clk_sys)
|
||||
if (sys_cs && cpu_we)
|
||||
case (AB[2:0])
|
||||
// 3'h3: irq_timer = cpu_dout;
|
||||
// 3'h3: irq_timer = cpu_dout;
|
||||
3'h6: sys_ctl <= cpu_dout;
|
||||
endcase
|
||||
|
||||
@ -237,7 +239,7 @@ always @(posedge clk_sys)
|
||||
//);
|
||||
|
||||
assign cpu_rom_addr = rom_addr;
|
||||
assign rom_dout = cpu_rom_data;
|
||||
assign rom_dout = rom_cs ? cpu_rom_data : 8'hff;
|
||||
|
||||
|
||||
ram88 wram(
|
||||
|
||||
4
Console_MiST/Supervision_MiST/rtl/pll2.qip
Normal file
4
Console_MiST/Supervision_MiST/rtl/pll2.qip
Normal file
@ -0,0 +1,4 @@
|
||||
set_global_assignment -name IP_TOOL_NAME "ALTPLL"
|
||||
set_global_assignment -name IP_TOOL_VERSION "13.1"
|
||||
set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "pll2.v"]
|
||||
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll2.ppf"]
|
||||
@ -59,13 +59,13 @@ always @(posedge clk)
|
||||
if (ce && lcdx != 0 && lcdy != 0) begin
|
||||
if (ce_pxl) begin
|
||||
case ({white,data[index+:2]})
|
||||
3'b000: { red, green, blue } <= 24'h87BA6B;
|
||||
3'b001: { red, green, blue } <= 24'h6BA378;
|
||||
3'b010: { red, green, blue } <= 24'h386B82;
|
||||
3'b011: { red, green, blue } <= 24'h384052;
|
||||
3'b000: { red, green, blue } <= 24'h87BA6B;//lightest colour
|
||||
3'b001: { red, green, blue } <= 24'h6BA378;//1/3rd darkness
|
||||
3'b010: { red, green, blue } <= 24'h386B82;//2/3rd darkness
|
||||
3'b011: { red, green, blue } <= 24'h384052;//dark as possible
|
||||
|
||||
3'b100: { red, green, blue } <= 24'hFFFFFF;//white
|
||||
3'b101: { red, green, blue } <= 24'hC0C0C0;//silver
|
||||
3'b101: { red, green, blue } <= 24'hC0C0C0;//light gray
|
||||
3'b110: { red, green, blue } <= 24'h808080;//gray
|
||||
3'b111: { red, green, blue } <= 24'h000000;//black
|
||||
endcase
|
||||
|
||||
@ -32,8 +32,7 @@ module arlet_6502(
|
||||
output reg we, // active high write enable strobe
|
||||
input irq_n, // active low interrupt request
|
||||
input nmi_n, // active low non-maskable interrupt
|
||||
input ready, // CPU updates when ready = 1
|
||||
output [15:0] pc_monitor // program counter monitor signal for debugging
|
||||
input ready // CPU updates when ready = 1
|
||||
);
|
||||
|
||||
wire [7:0] dbo_c;
|
||||
@ -49,8 +48,7 @@ module arlet_6502(
|
||||
.WE(we_c),
|
||||
.IRQ(~irq_n),
|
||||
.NMI(~nmi_n),
|
||||
.RDY(ready),
|
||||
.PC_MONITOR(pc_monitor)
|
||||
.RDY(ready)
|
||||
);
|
||||
|
||||
always @(posedge clk or posedge rst)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user