---------------------------------------------------------------------------------- -- Company: -- Engineer: -- -- Create Date: 12:16:03 06/13/2011 -- Design Name: -- Module Name: MPI_CORE_SCHEDULER - Behavioral -- Project Name: -- Target Devices: -- Tool versions: -- Description: -- -- Dependencies: -- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: -- ---------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity MPI_CORE_SCHEDULER is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; priority_rotation : in STD_LOGIC; instruction_fifo_empty : in STD_LOGIC; instruction_fifo_data : in STD_LOGIC_VECTOR (7 downto 0); instruction_available : out STD_LOGIC; get_request_fifo_data : in STD_LOGIC_VECTOR (7 downto 0); get_request_fifo_empty : in STD_LOGIC; instruction_fifo_rd_en : out STD_LOGIC; get_request_fifo_rd_en : out STD_LOGIC; fifo_selected : out STD_LOGIC; fifo_empty : out STD_LOGIC; fifo_rd_en : in STD_LOGIC; data_out : out STD_LOGIC_VECTOR (7 downto 0) ); end MPI_CORE_SCHEDULER; architecture Behavioral of MPI_CORE_SCHEDULER is signal sel_signal : std_logic; -- declaration des composants du scheduler COMPONENT CDEMUX1 PORT( di : IN std_logic; sel : IN std_logic; do1 : OUT std_logic; do2 : OUT std_logic ); END COMPONENT; COMPONENT CMUXP1 PORT( di1 : IN std_logic; di2 : IN std_logic; sel : IN std_logic; do : OUT std_logic ); END COMPONENT; COMPONENT CMUX8 PORT( di1 : IN std_logic_vector(7 downto 0); di2 : IN std_logic_vector(7 downto 0); sel : IN std_logic; do : OUT std_logic_vector(7 downto 0) ); END COMPONENT; COMPONENT round_robbin_machine PORT( get_request_fifo_empty : IN std_logic; instruction_fifo_empty : IN std_logic; priority_rotation : IN std_logic; clk : IN std_logic; reset : IN std_logic; fifo_selected : OUT std_logic; instruction_available : OUT std_logic; mux_sel : OUT std_logic ); END COMPONENT; begin -- instances des composants mpi_core_rr_machine: round_robbin_machine PORT MAP( get_request_fifo_empty => get_request_fifo_empty, instruction_fifo_empty => instruction_fifo_empty, priority_rotation => priority_rotation , clk => clk, fifo_selected => fifo_selected, instruction_available => instruction_available , reset => reset, mux_sel => sel_signal ); Fifo_empty_MUX: CMUXP1 PORT MAP( di1 => instruction_fifo_empty , di2 => get_request_fifo_empty, do => fifo_empty, sel => sel_signal ); rd_en_demux: CDEMUX1 PORT MAP( di => fifo_rd_en , sel => sel_signal, do1 => instruction_fifo_rd_en, do2 => get_request_fifo_rd_en ); data_MUX8: CMUX8 PORT MAP( di1 => instruction_fifo_data , di2 => get_request_fifo_data, sel => sel_signal, do => data_out ); end Behavioral;