diff --git a/modules/wishbone/wishbone_pkg.vhd b/modules/wishbone/wishbone_pkg.vhd index 15d2e045009dbd6754f4d24e8cc39db6b26badc3..b9f2ddc3fb5a0e11e62c5a9db749bee3f149dc84 100644 --- a/modules/wishbone/wishbone_pkg.vhd +++ b/modules/wishbone/wishbone_pkg.vhd @@ -7,91 +7,40 @@ library work; package wishbone_pkg is --- number of wishbone masters provided by CPU->WB bridge --- constant c_wishbone_num_masters : integer := 12; --- CPU address bus width - constant c_cpu_addr_width : integer := 19; --- WB address bus width. Must be log2(c_wishbone_num_masters) smaller than --- c_cpu_addr_width as the most significant bits select the master port (peripheral) - constant c_wishbone_addr_width : integer := 14; - - - component wb_cpu_bridge - generic ( - g_simulation :integer := 0; - g_wishbone_num_masters : integer); - port ( - sys_rst_n_i : in std_logic; - cpu_clk_i : in std_logic; - cpu_cs_n_i : in std_logic; - cpu_wr_n_i : in std_logic; - cpu_rd_n_i : in std_logic; - cpu_bs_n_i : in std_logic_vector(3 downto 0); - cpu_addr_i : in std_logic_vector(c_cpu_addr_width-1 downto 0); - cpu_data_b : inout std_logic_vector(31 downto 0); - cpu_nwait_o : out std_logic; - wb_clk_i : in std_logic; - wb_addr_o : out std_logic_vector(c_wishbone_addr_width - 1 downto 0); - wb_data_o : out std_logic_vector(31 downto 0); - wb_stb_o : out std_logic; - wb_we_o : out std_logic; - wb_sel_o : out std_logic_vector(3 downto 0); - wb_cyc_o : out std_logic_vector (g_wishbone_num_masters - 1 downto 0); - wb_data_i : in std_logic_vector (32 * g_wishbone_num_masters-1 downto 0); - wb_ack_i : in std_logic_vector(g_wishbone_num_masters-1 downto 0)); - end component; - - component wb_gpio_port - generic ( - g_num_pins : natural); - port ( - sys_rst_n_i : in std_logic; - wb_clk_i : in std_logic; - wb_sel_i : in std_logic; - wb_cyc_i : in std_logic; - wb_stb_i : in std_logic; - wb_we_i : in std_logic; - wb_addr_i : in std_logic_vector(2 downto 0); - wb_data_i : in std_logic_vector(31 downto 0); - wb_data_o : out std_logic_vector(31 downto 0); - wb_ack_o : out std_logic; - gpio_b : inout std_logic_vector(g_num_pins-1 downto 0)); - end component; - - component wb_spi_master - port ( - refclk2_i : in std_logic; - sys_rst_n_i : in std_logic; - wb_sel_i : in std_logic; - wb_cyc_i : in std_logic; - wb_stb_i : in std_logic; - wb_we_i : in std_logic; - wb_addr_i : in std_logic_vector(c_wishbone_addr_width-1 downto 0); - wb_data_i : in std_logic_vector(31 downto 0); - wb_data_o : out std_logic_vector(31 downto 0); - wb_ack_o : out std_logic; - spi_mosi_o : out std_logic; - spi_miso_i : in std_logic; - spi_cs_o : out std_logic; - spi_sck_o : out std_logic); - end component; - - component wb_vic - generic ( - g_num_interrupts : natural); - port ( - rst_n_i : in std_logic; - wb_clk_i : in std_logic; - wb_addr_i : in std_logic_vector(5 downto 0); - wb_data_i : in std_logic_vector(31 downto 0); - wb_data_o : out std_logic_vector(31 downto 0); - wb_cyc_i : in std_logic; - wb_sel_i : in std_logic_vector(3 downto 0); - wb_stb_i : in std_logic; - wb_we_i : in std_logic; - wb_ack_o : out std_logic; - irqs_i : in std_logic_vector(g_num_interrupts-1 downto 0); - irq_master_o : out std_logic); - end component; + constant c_wishbone_address_width : integer := 32; + constant c_wishbone_data_width : integer := 32; + + subtype t_wishbone_address is + std_logic_vector(c_wishbone_address_width-1 downto 0); + subtype t_wishbone_data is + std_logic_vector(c_wishbone_data_width-1 downto 0); + subtype t_wishbone_byte_select is + std_logic_vector((c_wishbone_address_width/8)-1 downto 0); + subtype t_wishbone_cycle_type is + std_logic_vector(2 downto 0); + subtype t_wishbone_burst_type is + std_logic_vector(1 downto 0); + + type t_wishbone_interface_mode is (CLASSIC, PIPELINED); + + type t_wishbone_master_out is record + cyc : std_logic; + stb : std_logic; + adr : t_wishbone_address; + sel : t_wishbone_byte_select; + we : std_logic; + dat : t_wishbone_data; + end record t_wishbone_master_out; + + subtype t_wishbone_slave_in is t_wishbone_master_out; + + type wishbone_slave_out is record + ack : std_logic; + err : std_logic; + rty : std_logic; + stall : std_logic; + dat : t_wishbone_data; + end record t_wishbone_slave_out; + subtype t_wishbone_master_in is t_wishbone_slave_out; end wishbone_pkg;