From 81e7d690ba2656f91517cdf6d7a9587028fa0a73 Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Sat, 1 Feb 2020 21:30:16 +0100 Subject: [PATCH] MiST: update user_io to the latest with no_csync function --- common/mist/mist.vhd | 44 +++++++++++++++++++------------------- common/mist/user_io.v | 49 +++++++++++++++++++++++-------------------- 2 files changed, 49 insertions(+), 44 deletions(-) diff --git a/common/mist/mist.vhd b/common/mist/mist.vhd index f4b57b7a..83bb42ee 100644 --- a/common/mist/mist.vhd +++ b/common/mist/mist.vhd @@ -11,26 +11,27 @@ use IEEE.numeric_std.all; package mist is -component user_io - generic(STRLEN : integer := 0 ); - port ( - clk_sys : in std_logic; - clk_sd : in std_logic := '0'; +component user_io +generic(STRLEN : integer := 0 ); +port ( + clk_sys : in std_logic; + clk_sd : in std_logic := '0'; SPI_CLK, SPI_SS_IO, SPI_MOSI :in std_logic; - SPI_MISO : out std_logic; - conf_str : in std_logic_vector(8*STRLEN-1 downto 0); - joystick_0 : 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_3 : out std_logic_vector(31 downto 0); - joystick_4 : out std_logic_vector(31 downto 0); + SPI_MISO : out std_logic; + conf_str : in std_logic_vector(8*STRLEN-1 downto 0); + joystick_0 : 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_3 : 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_1 : out std_logic_vector(15 downto 0); - status: out std_logic_vector(31 downto 0); - switches : out std_logic_vector(1 downto 0); - buttons : out std_logic_vector(1 downto 0); + status : out std_logic_vector(31 downto 0); + switches : out std_logic_vector(1 downto 0); + buttons : out std_logic_vector(1 downto 0); 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_rd : in std_logic := '0'; @@ -61,18 +62,18 @@ component user_io 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_strobe : out std_logic - ); +); end component user_io; component mist_video - generic ( +generic ( OSD_COLOR : std_logic_vector(2 downto 0) := "110"; OSD_X_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; COLOR_DEPTH : integer := 6 - ); - port ( +); +port ( clk_sys : in std_logic; SPI_SCK : in std_logic; @@ -84,6 +85,7 @@ component mist_video scandoubler_disable : in std_logic; ypbpr : in std_logic; rotate : in std_logic_vector(1 downto 0); + no_csync : in std_logic := '0'; blend : in std_logic := '0'; HSync : in std_logic; @@ -97,7 +99,7 @@ component mist_video VGA_R : 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) - ); +); end component mist_video; end package; \ No newline at end of file diff --git a/common/mist/user_io.v b/common/mist/user_io.v index b5f0f69a..df7af02a 100644 --- a/common/mist/user_io.v +++ b/common/mist/user_io.v @@ -22,7 +22,7 @@ // 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 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, input SPI_MOSI, - output reg [31:0] joystick_0, - output reg [31:0] joystick_1, - output reg [31:0] joystick_2, - output reg [31:0] joystick_3, - output reg [31:0] joystick_4, - output reg [15:0] joystick_analog_0, - output reg [15:0] joystick_analog_1, - output [1:0] buttons, - output [1:0] switches, - output scandoubler_disable, + output reg [31:0] joystick_0, + output reg [31:0] joystick_1, + output reg [31:0] joystick_2, + output reg [31:0] joystick_3, + output reg [31:0] joystick_4, + output reg [15:0] joystick_analog_0, + output reg [15:0] joystick_analog_1, + output [1:0] buttons, + output [1:0] switches, + output scandoubler_disable, output ypbpr, - output reg [31:0] status, + output no_csync, + output reg [31:0] status, // connection to sd card emulation input [31:0] sd_lba, - input sd_rd, - input sd_wr, - output reg sd_ack, + input sd_rd, + input sd_wr, + output reg sd_ack, output reg sd_ack_conf, - input sd_conf, - input sd_sdhc, + input sd_conf, + input sd_sdhc, 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, - output reg sd_din_strobe, + output reg sd_din_strobe, output reg [8:0] sd_buff_addr, 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 mouse_strobe, // mouse data is valid on mouse_strobe - // serial com port + // serial com port input [7:0] serial_data, input serial_strobe ); reg [6:0] sbuf; 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 [7:0] but_sw; +reg [7:0] but_sw; reg [2:0] stick_idx; assign buttons = but_sw[1:0]; assign switches = but_sw[3:2]; assign scandoubler_disable = but_sw[4]; assign ypbpr = but_sw[5]; +assign no_csync = but_sw[6]; // 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 wire [7:0] sd_cmd = { 4'h5, sd_conf, sd_sdhc, sd_wr, sd_rd };