Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
18 changed files
with
6,412 additions
and
40 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
{ "" "" "" "Inferred RAM node \"emu:emu\|mister_io:mister_io\|ps2_kbd_fifo_rtl_0\" from synchronous design logic. Pass-through logic has been added to match the read-during-write behavior of the original design." { } { } 0 276020 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Inferred RAM node \"emu:emu\|mister_io:mister_io\|ps2_mouse_fifo_rtl_0\" from synchronous design logic. Pass-through logic has been added to match the read-during-write behavior of the original design." { } { } 0 276020 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Synthesized away node \"emu:emu\|pll:pll\|pll_0002:pll_inst\|altera_pll:altera_pll_i\|outclk_wire\[2\]\"" { } { } 0 14320 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "RST port on the PLL is not properly connected on instance emu:emu\|pll:pll\|pll_0002:pll_inst\|altera_pll:altera_pll_i\|general\[1\].gpll. The reset port on the PLL should be connected. If the PLL loses lock for any reason, you might need to manually reset the PLL in order to re-establish lock to the reference clock." { } { } 0 0 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "RST port on the PLL is not properly connected on instance emu:emu\|pll:pll\|pll_0002:pll_inst\|altera_pll:altera_pll_i\|general\[0\].gpll. The reset port on the PLL should be connected. If the PLL loses lock for any reason, you might need to manually reset the PLL in order to re-establish lock to the reference clock." { } { } 0 0 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Ignored locations or region assignments to the following nodes" { } { } 0 15705 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "RST port on the PLL is not properly connected on instance emu:emu\|pll:pll\|pll_0002:pll_inst\|altera_pll:altera_pll_i\|general\[2\].gpll. The reset port on the PLL should be connected. If the PLL loses lock for any reason, you might need to manually reset the PLL in order to re-establish lock to the reference clock." { } { } 0 0 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Verilog HDL or VHDL warning at de10_top.v(129): object \"io_win\" assigned a value but never read" { } { } 0 10036 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Verilog HDL or VHDL warning at de10_top.v(134): object \"io_sdd\" assigned a value but never read" { } { } 0 10036 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Verilog HDL or VHDL warning at de10_top.v(97): object \"io_win\" assigned a value but never read" { } { } 0 10036 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Verilog HDL or VHDL warning at de10_top.v(102): object \"io_sdd\" assigned a value but never read" { } { } 0 10036 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings report for details" { } { } 0 15714 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "LOCKED port on the PLL is not properly connected on instance \"pll_hdmi:pll_hdmi\|pll_hdmi_0002:pll_hdmi_inst\|altera_pll:altera_pll_i\|general\[0\].gpll\". The LOCKED port on the PLL should be connected when the FBOUTCLK port is connected. Although it is unnecessary to connect the LOCKED signal, any logic driven off of an output clock of the PLL will not know when the PLL is locked and ready." { } { } 0 21300 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "*" { } { } 0 21074 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "RST" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "sysmem_HPS_fpga_interfaces.sdc" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# | ||
# please keep this file read-only! | ||
# Quartus changes this file everytime revision is switched, | ||
# and it will be marked as changed with every commit. | ||
# | ||
|
||
QUARTUS_VERSION = "16.1" | ||
DATE = "23:13:02 April 27, 2017" | ||
|
||
# Revisions | ||
|
||
PROJECT_REVISION = "Atari5200" | ||
PROJECT_REVISION = "Atari5200-lite" |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
{ "" "" "" "Variable or input pin \"data_b\" is defined but never used." { } { } 0 287013 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Found combinational loop of 47 nodes" { } { } 0 332125 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "LOCKED port on the PLL is not properly connected on instance \"pll_hdmi:pll_hdmi\|pll_hdmi_0002:pll_hdmi_inst\|altera_pll:altera_pll_i\|general\[0\].gpll\". The LOCKED port on the PLL should be connected when the FBOUTCLK port is connected. Although it is unnecessary to connect the LOCKED signal, any logic driven off of an output clock of the PLL will not know when the PLL is locked and ready." { } { } 0 21300 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Net \"soc_system:soc_system\|soc_system_Video_Output:video_output\|alt_vip_cvo_core:cvo_core\|genlock_enable_sync1\[1\]\" is missing source, defaulting to GND" { } { } 0 12110 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Inferred RAM node \"zxspectrum:emu\|mist_io:mist_io\|ps2_kbd_fifo_rtl_0\" from synchronous design logic. Pass-through logic has been added to match the read-during-write behavior of the original design." { } { } 0 276020 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Inferred RAM node \"zxspectrum:emu\|mist_io:mist_io\|ps2_mouse_fifo_rtl_0\" from synchronous design logic. Pass-through logic has been added to match the read-during-write behavior of the original design." { } { } 0 276020 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "No destination clock period was found satisfying the set_net_delay assignment from \"\[get_keepers \{soc_system\|video_output\|cvo_core\|mode_banks\|h_sync_polarity_reg\}\]\" to \"\[get_keepers \{soc_system\|video_output\|cvo_core\|mode_banks\|vid_h_sync_polarity\}\]\". This assignment will be ignored." { } { } 0 17897 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "No destination clock period was found satisfying the set_net_delay assignment from \"\[get_keepers \{soc_system\|video_output\|cvo_core\|mode_banks\|v_sync_polarity_reg\}\]\" to \"\[get_keepers \{soc_system\|video_output\|cvo_core\|mode_banks\|vid_v_sync_polarity\}\]\". This assignment will be ignored." { } { } 0 17897 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "No destination clock period was found satisfying the set_net_delay assignment from \"\[get_keepers \{soc_system\|video_output\|cvo_core\|mode_banks\|interlaced_field_reg\[*\]\}\]\" to \"\[get_keepers \{soc_system\|video_output\|cvo_core\|mode_banks\|vid_interlaced_field\[*\]\}\]\". This assignment will be ignored." { } { } 0 17897 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings report for details" { } { } 0 15714 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "55 hierarchies have connectivity warnings - see the Connectivity Checks report folder" { } { } 0 12241 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Inferred RAM node \"emu:emu\|mister_io:mister_io\|ps2_kbd_fifo_rtl_0\" from synchronous design logic. Pass-through logic has been added to match the read-during-write behavior of the original design." { } { } 0 276020 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Inferred RAM node \"emu:emu\|mister_io:mister_io\|ps2_mouse_fifo_rtl_0\" from synchronous design logic. Pass-through logic has been added to match the read-during-write behavior of the original design." { } { } 0 276020 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Verilog HDL or VHDL warning at de10_top.v(97): object \"io_win\" assigned a value but never read" { } { } 0 10036 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Verilog HDL or VHDL warning at de10_top.v(102): object \"io_sdd\" assigned a value but never read" { } { } 0 10036 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Overwriting existing clock: vip\|hps\|fpga_interfaces\|clocks_resets\|h2f_user0_clk" { } { } 0 332043 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "Variable or input pin \"data_a\" is defined but never used." { } { } 0 287013 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "*" { } { } 0 169085 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "*" { } { } 0 174073 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "*" { } { } 0 332174 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "*" { } { } 0 13009 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "*" { } { } 0 21300 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "alt_vip_cvo_mode_banks" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "hps_sdram_pll.sv" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "alt_vip_common_frame_counter.v" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "hps_sdram_p0_acv_hard_memphy.v" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "hps_sdram_p0_acv_ldc.v" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "hps_sdram_p0_acv_hard_io_pads.v" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "altera_mem_if_hard_memory_controller_top_cyclonev.sv" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "genlock_enable_sync" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "u_calculate_mode" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "genlock_enable" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "reset_value" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "soc_system:soc_system\|soc_system_pll_video:pll_video\|altera_pll:altera_pll_i\|general\[0\].gpll" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "alt_vip_cvo_core.sdc" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "alt_vip_packet_transfer.sdc" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "hps_sdram_p0.sdc" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "alt_vip_common_dc_mixed_widths_fifo.sdc" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "altera_mem_if_hhp_qseq_synth_top" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "soc_system:soc_system\|soc_system_vip_vout:vip_vout\|alt_vip_cvo_core:cvo_core\|genlock_enable_sync1" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "soc_system:soc_system\|soc_system_vip_fb:vip_fb\|alt_vip_packet_transfer:pkt_trans_rd\|alt_vip_packet_transfer_read_proc:READ_BLOCK.read_proc_instance\|alt_vip_common_fifo2:output_msg_queue\|scfifo:scfifo_component\|scfifo_scd1:auto_generated\|a_dpfifo_e471:dpfifo\|altsyncram_ums1:FIFOram\|q_b" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "soc_system:soc_system\|soc_system_Video_Input:video_input\|alt_vip_cvi_core:cvi_core\|alt_vip_cvi_write_fifo_buffer:write_fifo_buffer" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "soc_system:soc_system\|soc_system_Frame_Buffer:frame_buffer\|alt_vip_packet_transfer:pkt_trans_rd" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "soc_system_hps_fpga_interfaces.sdc" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "soc_system_HPS_fpga_interfaces.sdc" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "RST" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "alt_vip_scaler_alg_core" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "cvo_core" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "vip_HPS_fpga_interfaces.sdc" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "alt_vip_dil_vof_scheduler.sdc" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} | ||
{ "" "" "" "alt_vip_dil_scheduler.sdc" { } { } 0 9999 "" 0 0 "Design Software" 0 -1 0 ""} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,264 @@ | ||
//============================================================================ | ||
// Atari 5200 replica | ||
// | ||
// Port to MiSTer | ||
// Copyright (C) 2017 Sorgelig | ||
// | ||
// This program is free software; you can redistribute it and/or modify it | ||
// under the terms of the GNU General Public License as published by the Free | ||
// Software Foundation; either version 2 of the License, or (at your option) | ||
// any later version. | ||
// | ||
// This program is distributed in the hope that it will be useful, but WITHOUT | ||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
// more details. | ||
// | ||
// You should have received a copy of the GNU General Public License along | ||
// with this program; if not, write to the Free Software Foundation, Inc., | ||
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
//============================================================================ | ||
|
||
module emu | ||
( | ||
//Master input clock | ||
input CLK_50M, | ||
|
||
//Async reset from top-level module. | ||
//Can be used as initial reset. | ||
input RESET, | ||
|
||
//Must be passed to hps_io module | ||
inout [37:0] HPS_BUS, | ||
|
||
//Base video clock. Usually equals to CLK_SYS. | ||
output CLK_VIDEO, | ||
|
||
//Multiple resolutions are supported using different CE_PIXEL rates. | ||
//Must be based on CLK_VIDEO | ||
output CE_PIXEL, | ||
|
||
//Video aspect ratio for HDMI. Most retro systems have ratio 4:3. | ||
output [7:0] VIDEO_ARX, | ||
output [7:0] VIDEO_ARY, | ||
|
||
output [7:0] VGA_R, | ||
output [7:0] VGA_G, | ||
output [7:0] VGA_B, | ||
output VGA_HS, | ||
output VGA_VS, | ||
output VGA_DE, // = ~(VBlank | HBlank) | ||
|
||
output LED_USER, // 1 - ON, 0 - OFF. | ||
|
||
// b[1]: 0 - LED status is system status ORed with b[0] | ||
// 1 - LED status is controled solely by b[0] | ||
// hint: supply 2'b00 to let the system control the LED. | ||
output [1:0] LED_POWER, | ||
output [1:0] LED_DISK, | ||
|
||
output [15:0] AUDIO_L, | ||
output [15:0] AUDIO_R, | ||
output AUDIO_S, // 1 - signed audio samples, 0 - unsigned | ||
input TAPE_IN, | ||
|
||
// SD-SPI | ||
output SD_SCK, | ||
output SD_MOSI, | ||
input SD_MISO, | ||
output SD_CS, | ||
|
||
//High latency DDR3 RAM interface | ||
//Use for non-critical time purposes | ||
output DDRAM_CLK, | ||
input DDRAM_BUSY, | ||
output [7:0] DDRAM_BURSTCNT, | ||
output [28:0] DDRAM_ADDR, | ||
input [63:0] DDRAM_DOUT, | ||
input DDRAM_DOUT_READY, | ||
output DDRAM_RD, | ||
output [63:0] DDRAM_DIN, | ||
output [7:0] DDRAM_BE, | ||
output DDRAM_WE, | ||
|
||
//SDRAM interface with lower latency | ||
output SDRAM_CLK, | ||
output SDRAM_CKE, | ||
output [12:0] SDRAM_A, | ||
output [1:0] SDRAM_BA, | ||
inout [15:0] SDRAM_DQ, | ||
output SDRAM_DQML, | ||
output SDRAM_DQMH, | ||
output SDRAM_nCS, | ||
output SDRAM_nCAS, | ||
output SDRAM_nRAS, | ||
output SDRAM_nWE | ||
); | ||
|
||
assign {DDRAM_CLK, DDRAM_BURSTCNT, DDRAM_ADDR, DDRAM_DIN, DDRAM_BE, DDRAM_RD, DDRAM_WE} = '0; | ||
|
||
assign LED_USER = sd_act; | ||
assign LED_DISK = 0; | ||
assign LED_POWER = 0; | ||
|
||
assign VIDEO_ARX = ratio ? 8'd4 : 8'd16; | ||
assign VIDEO_ARY = ratio ? 8'd3 : 8'd9; | ||
|
||
`include "build_id.v" | ||
localparam CONF_STR = { | ||
"ATARI5200;;", | ||
"X;", | ||
"J,Fire 1,Fire 2,ROM Select,*,#,Start,Pause,Reset,0,1,2,3;", | ||
"V,v1.00.",`BUILD_DATE | ||
}; | ||
|
||
//////////////////// CLOCKS /////////////////// | ||
|
||
wire locked; | ||
wire clk_sys; | ||
wire clk_mem; | ||
|
||
pll pll | ||
( | ||
.refclk(CLK_50M), | ||
.rst(0), | ||
.outclk_0(clk_mem), | ||
.outclk_1(SDRAM_CLK), | ||
.outclk_2(clk_sys), | ||
.locked(locked) | ||
); | ||
|
||
wire reset = RESET | status[0] | ~initReset_n | buttons[1]; | ||
|
||
reg initReset_n = 0; | ||
always @(posedge clk_sys) begin | ||
integer timeout = 0; | ||
|
||
if(timeout < 5000000) timeout <= timeout + 1; | ||
else initReset_n <= 1; | ||
end | ||
|
||
////////////////// HPS I/O /////////////////// | ||
wire [15:0] joy_0; | ||
wire [15:0] joy_1; | ||
wire [15:0] joya_0; | ||
wire [15:0] joya_1; | ||
wire [1:0] buttons; | ||
wire [31:0] status; | ||
|
||
wire PS2_CLK; | ||
wire PS2_DAT; | ||
|
||
hps_io #(.STRLEN($size(CONF_STR)>>3)) hps_io | ||
( | ||
.clk_sys(clk_sys), | ||
.HPS_BUS(HPS_BUS), | ||
|
||
.conf_str(CONF_STR), | ||
|
||
.joystick_0(joy_0), | ||
.joystick_1(joy_1), | ||
.joystick_analog_0(joya_0), | ||
.joystick_analog_1(joya_1), | ||
|
||
.buttons(buttons), | ||
.status(status), | ||
|
||
.ps2_kbd_clk_out(PS2_CLK), | ||
.ps2_kbd_data_out(PS2_DAT), | ||
|
||
.ps2_kbd_led_use(0), | ||
.ps2_kbd_led_status(0), | ||
|
||
.sd_lba(0), | ||
.sd_rd(0), | ||
.sd_wr(0), | ||
.sd_conf(0), | ||
.sd_buff_din(0), | ||
.ioctl_wait(0) | ||
); | ||
|
||
wire pal; | ||
wire ratio; | ||
wire blank; | ||
assign VGA_DE = ~blank; | ||
assign AUDIO_S = 0; | ||
|
||
assign CLK_VIDEO = clk_sys; | ||
|
||
wire joy_d1ena = ~&joya_0; | ||
wire joy_d2ena = ~&joya_1; | ||
|
||
atari5200top atari5200top | ||
( | ||
.CLK(clk_sys), | ||
.CLK_SDRAM(clk_mem), | ||
.RESET_N(~reset), | ||
|
||
.SDRAM_BA(SDRAM_BA), | ||
.SDRAM_nCS(SDRAM_nCS), | ||
.SDRAM_nRAS(SDRAM_nRAS), | ||
.SDRAM_nCAS(SDRAM_nCAS), | ||
.SDRAM_nWE(SDRAM_nWE), | ||
.SDRAM_DQMH(SDRAM_DQMH), | ||
.SDRAM_DQML(SDRAM_DQML), | ||
.SDRAM_CKE(SDRAM_CKE), | ||
.SDRAM_A(SDRAM_A), | ||
.SDRAM_DQ(SDRAM_DQ), | ||
|
||
.VGA_VS(VGA_VS), | ||
.VGA_HS(VGA_HS), | ||
.VGA_B(B), | ||
.VGA_G(G), | ||
.VGA_R(R), | ||
.VGA_BLANK(blank), | ||
.VGA_PIXCE(CE_PIXEL), | ||
.VGA_RATIO(ratio), | ||
.HBLANK_EX(hblank_ex), | ||
|
||
.AUDIO_L(AUDIO_L), | ||
.AUDIO_R(AUDIO_R), | ||
|
||
.SD_CLK(SD_SCK), | ||
.SD_DAT3(SD_CS), | ||
.SD_CMD(SD_MOSI), | ||
.SD_DAT0(SD_MISO), | ||
|
||
.PS2_CLK(PS2_CLK), | ||
.PS2_DAT(PS2_DAT), | ||
|
||
.JOY1X(joya_0[7:0]), | ||
.JOY1Y(joya_0[15:8]), | ||
.JOY2X(joya_1[7:0]), | ||
.JOY2Y(joya_1[15:8]), | ||
|
||
.JOY1(joy_0 & {12'b111111111111, {4{joy_d1ena}}}), | ||
.JOY2(joy_1 & {12'b111111111111, {4{joy_d2ena}}}) | ||
); | ||
|
||
wire hblank_ex; | ||
|
||
wire [7:0] R,G,B; | ||
assign {VGA_R,VGA_G,VGA_B} = hblank_ex ? 24'd0 : {R,G,B}; | ||
|
||
|
||
////////////////// LED /////////////////// | ||
reg sd_act; | ||
|
||
always @(posedge clk_sys) begin | ||
reg old_mosi, old_miso; | ||
integer timeout = 0; | ||
|
||
old_mosi <= SD_MOSI; | ||
old_miso <= SD_MISO; | ||
|
||
sd_act <= 0; | ||
if(timeout < 1000000) begin | ||
timeout <= timeout + 1; | ||
sd_act <= 1; | ||
end | ||
|
||
if((old_mosi ^ SD_MOSI) || (old_miso ^ SD_MISO)) timeout <= 0; | ||
end | ||
|
||
endmodule |
Oops, something went wrong.