1
0
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:
Marcel 2021-05-29 12:48:50 +02:00
parent 45c3d234d3
commit 55af49672d
10 changed files with 174 additions and 331 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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(

View 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"]

View File

@ -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

View File

@ -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)