mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-05-04 23:35:48 +00:00
MiST: update user_io to the latest with no_csync function
This commit is contained in:
@@ -11,26 +11,27 @@ use IEEE.numeric_std.all;
|
|||||||
|
|
||||||
package mist is
|
package mist is
|
||||||
|
|
||||||
component user_io
|
component user_io
|
||||||
generic(STRLEN : integer := 0 );
|
generic(STRLEN : integer := 0 );
|
||||||
port (
|
port (
|
||||||
clk_sys : in std_logic;
|
clk_sys : in std_logic;
|
||||||
clk_sd : in std_logic := '0';
|
clk_sd : in std_logic := '0';
|
||||||
SPI_CLK, SPI_SS_IO, SPI_MOSI :in std_logic;
|
SPI_CLK, SPI_SS_IO, SPI_MOSI :in std_logic;
|
||||||
SPI_MISO : out std_logic;
|
SPI_MISO : out std_logic;
|
||||||
conf_str : in std_logic_vector(8*STRLEN-1 downto 0);
|
conf_str : in std_logic_vector(8*STRLEN-1 downto 0);
|
||||||
joystick_0 : out std_logic_vector(31 downto 0);
|
joystick_0 : out std_logic_vector(31 downto 0);
|
||||||
joystick_1 : out std_logic_vector(31 downto 0);
|
joystick_1 : out std_logic_vector(31 downto 0);
|
||||||
joystick_2 : out std_logic_vector(31 downto 0);
|
joystick_2 : out std_logic_vector(31 downto 0);
|
||||||
joystick_3 : out std_logic_vector(31 downto 0);
|
joystick_3 : out std_logic_vector(31 downto 0);
|
||||||
joystick_4 : out std_logic_vector(31 downto 0);
|
joystick_4 : out std_logic_vector(31 downto 0);
|
||||||
joystick_analog_0 : out std_logic_vector(15 downto 0);
|
joystick_analog_0 : out std_logic_vector(15 downto 0);
|
||||||
joystick_analog_1 : out std_logic_vector(15 downto 0);
|
joystick_analog_1 : out std_logic_vector(15 downto 0);
|
||||||
status: out std_logic_vector(31 downto 0);
|
status : out std_logic_vector(31 downto 0);
|
||||||
switches : out std_logic_vector(1 downto 0);
|
switches : out std_logic_vector(1 downto 0);
|
||||||
buttons : out std_logic_vector(1 downto 0);
|
buttons : out std_logic_vector(1 downto 0);
|
||||||
scandoubler_disable : out std_logic;
|
scandoubler_disable : out std_logic;
|
||||||
ypbpr : out std_logic;
|
ypbpr : out std_logic;
|
||||||
|
no_csync : out std_logic;
|
||||||
|
|
||||||
sd_lba : in std_logic_vector(31 downto 0) := (others => '0');
|
sd_lba : in std_logic_vector(31 downto 0) := (others => '0');
|
||||||
sd_rd : in std_logic := '0';
|
sd_rd : in std_logic := '0';
|
||||||
@@ -61,18 +62,18 @@ component user_io
|
|||||||
mouse_y : out signed(8 downto 0);
|
mouse_y : out signed(8 downto 0);
|
||||||
mouse_flags : out std_logic_vector(7 downto 0); -- YOvfl, XOvfl, dy8, dx8, 1, mbtn, rbtn, lbtn
|
mouse_flags : out std_logic_vector(7 downto 0); -- YOvfl, XOvfl, dy8, dx8, 1, mbtn, rbtn, lbtn
|
||||||
mouse_strobe : out std_logic
|
mouse_strobe : out std_logic
|
||||||
);
|
);
|
||||||
end component user_io;
|
end component user_io;
|
||||||
|
|
||||||
component mist_video
|
component mist_video
|
||||||
generic (
|
generic (
|
||||||
OSD_COLOR : std_logic_vector(2 downto 0) := "110";
|
OSD_COLOR : std_logic_vector(2 downto 0) := "110";
|
||||||
OSD_X_OFFSET : std_logic_vector(9 downto 0) := (others => '0');
|
OSD_X_OFFSET : std_logic_vector(9 downto 0) := (others => '0');
|
||||||
OSD_Y_OFFSET : std_logic_vector(9 downto 0) := (others => '0');
|
OSD_Y_OFFSET : std_logic_vector(9 downto 0) := (others => '0');
|
||||||
SD_HCNT_WIDTH: integer := 9;
|
SD_HCNT_WIDTH: integer := 9;
|
||||||
COLOR_DEPTH : integer := 6
|
COLOR_DEPTH : integer := 6
|
||||||
);
|
);
|
||||||
port (
|
port (
|
||||||
clk_sys : in std_logic;
|
clk_sys : in std_logic;
|
||||||
|
|
||||||
SPI_SCK : in std_logic;
|
SPI_SCK : in std_logic;
|
||||||
@@ -84,6 +85,7 @@ component mist_video
|
|||||||
scandoubler_disable : in std_logic;
|
scandoubler_disable : in std_logic;
|
||||||
ypbpr : in std_logic;
|
ypbpr : in std_logic;
|
||||||
rotate : in std_logic_vector(1 downto 0);
|
rotate : in std_logic_vector(1 downto 0);
|
||||||
|
no_csync : in std_logic := '0';
|
||||||
blend : in std_logic := '0';
|
blend : in std_logic := '0';
|
||||||
|
|
||||||
HSync : in std_logic;
|
HSync : in std_logic;
|
||||||
@@ -97,7 +99,7 @@ component mist_video
|
|||||||
VGA_R : out std_logic_vector(5 downto 0);
|
VGA_R : out std_logic_vector(5 downto 0);
|
||||||
VGA_G : out std_logic_vector(5 downto 0);
|
VGA_G : out std_logic_vector(5 downto 0);
|
||||||
VGA_B : out std_logic_vector(5 downto 0)
|
VGA_B : out std_logic_vector(5 downto 0)
|
||||||
);
|
);
|
||||||
end component mist_video;
|
end component mist_video;
|
||||||
|
|
||||||
end package;
|
end package;
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
// parameter STRLEN and the actual length of conf_str have to match
|
// parameter STRLEN and the actual length of conf_str have to match
|
||||||
|
|
||||||
module user_io #(parameter STRLEN=0, parameter PS2DIV=100) (
|
module user_io #(parameter STRLEN=0, parameter PS2DIV=100, parameter ROM_DIRECT_UPLOAD=0) (
|
||||||
input [(8*STRLEN)-1:0] conf_str,
|
input [(8*STRLEN)-1:0] conf_str,
|
||||||
|
|
||||||
input clk_sys, // clock for system-related messages (kbd, joy, etc...)
|
input clk_sys, // clock for system-related messages (kbd, joy, etc...)
|
||||||
@@ -33,31 +33,32 @@ module user_io #(parameter STRLEN=0, parameter PS2DIV=100) (
|
|||||||
output reg SPI_MISO,
|
output reg SPI_MISO,
|
||||||
input SPI_MOSI,
|
input SPI_MOSI,
|
||||||
|
|
||||||
output reg [31:0] joystick_0,
|
output reg [31:0] joystick_0,
|
||||||
output reg [31:0] joystick_1,
|
output reg [31:0] joystick_1,
|
||||||
output reg [31:0] joystick_2,
|
output reg [31:0] joystick_2,
|
||||||
output reg [31:0] joystick_3,
|
output reg [31:0] joystick_3,
|
||||||
output reg [31:0] joystick_4,
|
output reg [31:0] joystick_4,
|
||||||
output reg [15:0] joystick_analog_0,
|
output reg [15:0] joystick_analog_0,
|
||||||
output reg [15:0] joystick_analog_1,
|
output reg [15:0] joystick_analog_1,
|
||||||
output [1:0] buttons,
|
output [1:0] buttons,
|
||||||
output [1:0] switches,
|
output [1:0] switches,
|
||||||
output scandoubler_disable,
|
output scandoubler_disable,
|
||||||
output ypbpr,
|
output ypbpr,
|
||||||
output reg [31:0] status,
|
output no_csync,
|
||||||
|
output reg [31:0] status,
|
||||||
|
|
||||||
// connection to sd card emulation
|
// connection to sd card emulation
|
||||||
input [31:0] sd_lba,
|
input [31:0] sd_lba,
|
||||||
input sd_rd,
|
input sd_rd,
|
||||||
input sd_wr,
|
input sd_wr,
|
||||||
output reg sd_ack,
|
output reg sd_ack,
|
||||||
output reg sd_ack_conf,
|
output reg sd_ack_conf,
|
||||||
input sd_conf,
|
input sd_conf,
|
||||||
input sd_sdhc,
|
input sd_sdhc,
|
||||||
output reg [7:0] sd_dout, // valid on rising edge of sd_dout_strobe
|
output reg [7:0] sd_dout, // valid on rising edge of sd_dout_strobe
|
||||||
output reg sd_dout_strobe,
|
output reg sd_dout_strobe,
|
||||||
input [7:0] sd_din,
|
input [7:0] sd_din,
|
||||||
output reg sd_din_strobe,
|
output reg sd_din_strobe,
|
||||||
output reg [8:0] sd_buff_addr,
|
output reg [8:0] sd_buff_addr,
|
||||||
|
|
||||||
output reg img_mounted, //rising edge if a new image is mounted
|
output reg img_mounted, //rising edge if a new image is mounted
|
||||||
@@ -81,25 +82,27 @@ module user_io #(parameter STRLEN=0, parameter PS2DIV=100) (
|
|||||||
output reg [7:0] mouse_flags, // YOvfl, XOvfl, dy8, dx8, 1, mbtn, rbtn, lbtn
|
output reg [7:0] mouse_flags, // YOvfl, XOvfl, dy8, dx8, 1, mbtn, rbtn, lbtn
|
||||||
output reg mouse_strobe, // mouse data is valid on mouse_strobe
|
output reg mouse_strobe, // mouse data is valid on mouse_strobe
|
||||||
|
|
||||||
// serial com port
|
// serial com port
|
||||||
input [7:0] serial_data,
|
input [7:0] serial_data,
|
||||||
input serial_strobe
|
input serial_strobe
|
||||||
);
|
);
|
||||||
|
|
||||||
reg [6:0] sbuf;
|
reg [6:0] sbuf;
|
||||||
reg [7:0] cmd;
|
reg [7:0] cmd;
|
||||||
reg [2:0] bit_cnt; // counts bits 0-7 0-7 ...
|
reg [2:0] bit_cnt; // counts bits 0-7 0-7 ...
|
||||||
reg [9:0] byte_cnt; // counts bytes
|
reg [9:0] byte_cnt; // counts bytes
|
||||||
reg [7:0] but_sw;
|
reg [7:0] but_sw;
|
||||||
reg [2:0] stick_idx;
|
reg [2:0] stick_idx;
|
||||||
|
|
||||||
assign buttons = but_sw[1:0];
|
assign buttons = but_sw[1:0];
|
||||||
assign switches = but_sw[3:2];
|
assign switches = but_sw[3:2];
|
||||||
assign scandoubler_disable = but_sw[4];
|
assign scandoubler_disable = but_sw[4];
|
||||||
assign ypbpr = but_sw[5];
|
assign ypbpr = but_sw[5];
|
||||||
|
assign no_csync = but_sw[6];
|
||||||
|
|
||||||
// this variant of user_io is for 8 bit cores (type == a4) only
|
// this variant of user_io is for 8 bit cores (type == a4) only
|
||||||
wire [7:0] core_type = 8'ha4;
|
// bit 4 indicates ROM direct upload capability
|
||||||
|
wire [7:0] core_type = ROM_DIRECT_UPLOAD ? 8'hb4 : 8'ha4;
|
||||||
|
|
||||||
// command byte read by the io controller
|
// command byte read by the io controller
|
||||||
wire [7:0] sd_cmd = { 4'h5, sd_conf, sd_sdhc, sd_wr, sd_rd };
|
wire [7:0] sd_cmd = { 4'h5, sd_conf, sd_sdhc, sd_wr, sd_rd };
|
||||||
|
|||||||
Reference in New Issue
Block a user