Skip to content
Snippets Groups Projects
agilex_LL_firmware.vhd 17.8 KiB
Newer Older
Baptiste LEFEVRE's avatar
Baptiste LEFEVRE committed
library ieee;
use ieee.std_logic_1164.all;

entity agilex_LL_firmware is
port(
		--clk_sys_bak_50m_p	  : in std_logic;
		--refclk_156m_qsfpdd_p : in std_logic;
		clk_sys_100m_p : in std_logic;
		--i2c_0_scl : inout std_logic;
		--i2c_0_sda : inout std_logic;
Baptiste LEFEVRE's avatar
Baptiste LEFEVRE committed
		
		refclk0_clk           : in std_logic;           --          refclk0.clk
		refclk1_clk           : in std_logic;           --          refclk1.clk
		pin_perst    : in std_logic;    --        pin_perst.pin_perst
			
		pcie_rx_n_in0    : in std_logic;    --       hip_serial.rx_n_in0
		pcie_rx_p_in0    : in std_logic;    --                 .rx_p_in0
		pcie_rx_n_in1    : in std_logic;    --       			 .rx_n_in1
		pcie_rx_p_in1    : in std_logic;    --                 .rx_p_in1
		pcie_rx_n_in2    : in std_logic;    --                 .rx_n_in2
		pcie_rx_p_in2    : in std_logic;    --                 .rx_p_in2
		pcie_rx_n_in3    : in std_logic;    --                 .rx_n_in3
		pcie_rx_p_in3    : in std_logic;    --                 .rx_p_in3
		pcie_rx_n_in4    : in std_logic;    --                 .rx_n_in4
		pcie_rx_p_in4    : in std_logic;    --                 .rx_p_in4
		pcie_rx_n_in5    : in std_logic;    --                 .rx_n_in5
		pcie_rx_p_in5    : in std_logic;    --                 .rx_p_in5
		pcie_rx_n_in6    : in std_logic;    --                 .rx_n_in6
		pcie_rx_p_in6    : in std_logic;    --                 .rx_p_in6
		pcie_rx_n_in7    : in std_logic;    --                 .rx_n_in7
		pcie_rx_p_in7    : in std_logic;    --                 .rx_p_in7
		pcie_rx_n_in8    : in std_logic;    --                 .rx_n_in8
		pcie_rx_p_in8    : in std_logic;    --                 .rx_p_in8
		pcie_rx_n_in9    : in std_logic;    --                 .rx_n_in9
		pcie_rx_p_in9    : in std_logic;    --                 .rx_p_in9
		pcie_rx_n_in10   : in std_logic;    --                 .rx_n_in10
		pcie_rx_p_in10   : in std_logic;    --                 .rx_p_in10
		pcie_rx_n_in11   : in std_logic;    --                 .rx_n_in11
		pcie_rx_p_in11   : in std_logic;    --                 .rx_p_in11
		pcie_rx_n_in12   : in std_logic;    --                 .rx_n_in12
		pcie_rx_p_in12   : in std_logic;    --                 .rx_p_in12
		pcie_rx_n_in13   : in std_logic;    --                 .rx_n_in13
		pcie_rx_p_in13   : in std_logic;    --                 .rx_p_in13
		pcie_rx_n_in14   : in std_logic;    --                 .rx_n_in14
		pcie_rx_p_in14   : in std_logic;    --                 .rx_p_in14
		pcie_rx_n_in15   : in std_logic;    --                 .rx_n_in15
		pcie_rx_p_in15   : in std_logic;    --                 .rx_p_in15
		
		pcie_tx_n_out0    : out std_logic;    --       hip_serial.tx_n_out0
		pcie_tx_p_out0    : out std_logic;    --                 .tx_p_out0
		pcie_tx_n_out1    : out std_logic;    --       			   .tx_n_out1
		pcie_tx_p_out1    : out std_logic;    --                 .tx_p_out1
		pcie_tx_n_out2    : out std_logic;    --                 .tx_n_out2
		pcie_tx_p_out2    : out std_logic;    --                 .tx_p_out2
		pcie_tx_n_out3    : out std_logic;    --                 .tx_n_out3
		pcie_tx_p_out3    : out std_logic;    --                 .tx_p_out3
		pcie_tx_n_out4    : out std_logic;    --                 .tx_n_out4
		pcie_tx_p_out4    : out std_logic;    --                 .tx_p_out4
		pcie_tx_n_out5    : out std_logic;    --                 .tx_n_out5
		pcie_tx_p_out5    : out std_logic;    --                 .tx_p_out5
		pcie_tx_n_out6    : out std_logic;    --                 .tx_n_out6
		pcie_tx_p_out6    : out std_logic;    --                 .tx_p_out6
		pcie_tx_n_out7    : out std_logic;    --                 .tx_n_out7
		pcie_tx_p_out7    : out std_logic;    --                 .tx_p_out7
		pcie_tx_n_out8    : out std_logic;    --                 .tx_n_out8
		pcie_tx_p_out8    : out std_logic;    --                 .tx_p_out8
		pcie_tx_n_out9    : out std_logic;    --                 .tx_n_out9
		pcie_tx_p_out9    : out std_logic;    --                 .tx_p_out9
		pcie_tx_n_out10   : out std_logic;    --                 .tx_n_out10
		pcie_tx_p_out10   : out std_logic;    --                 .tx_p_out10
		pcie_tx_n_out11   : out std_logic;    --                 .tx_n_out11
		pcie_tx_p_out11   : out std_logic;    --                 .tx_p_out11
		pcie_tx_n_out12   : out std_logic;    --                 .tx_n_out12
		pcie_tx_p_out12   : out std_logic;    --                 .tx_p_out12
		pcie_tx_n_out13   : out std_logic;    --                 .tx_n_out13
		pcie_tx_p_out13   : out std_logic;    --                 .tx_p_out13
		pcie_tx_n_out14   : out std_logic;    --                 .tx_n_out14
		pcie_tx_p_out14   : out std_logic;    --                 .tx_p_out14
		pcie_tx_n_out15   : out std_logic;    --                 .tx_n_out15
		pcie_tx_p_out15   : out std_logic;    --                 .tx_p_out15
		
		pio_out0   : out std_logic_vector(31 downto 0)   --     pio_out_port.export
		--pio_out1  : out std_logic_vector(31 downto 0)   --    pio_out1_port.export
	  
	);

end entity;


architecture rtl of agilex_LL_firmware is
     component pcie_ed is
Baptiste LEFEVRE's avatar
Baptiste LEFEVRE committed
        port (
            refclk0_clk                : in  std_logic                     := 'X'; -- clk
            refclk1_clk                : in  std_logic                     := 'X'; -- clk
            pin_perst_pin_perst        : in  std_logic                     := 'X'; -- pin_perst
            --pcie_ninit_done_ninit_done : in  std_logic                     := 'X'; -- ninit_done
            hip_serial_rx_n_in1        : in  std_logic                     := 'X'; -- rx_n_in1
            hip_serial_tx_n_out8       : out std_logic;                            -- tx_n_out8
            hip_serial_rx_n_in2        : in  std_logic                     := 'X'; -- rx_n_in2
            hip_serial_rx_p_in0        : in  std_logic                     := 'X'; -- rx_p_in0
            hip_serial_rx_p_in15       : in  std_logic                     := 'X'; -- rx_p_in15
            hip_serial_tx_p_out14      : out std_logic;                            -- tx_p_out14
            hip_serial_tx_p_out5       : out std_logic;                            -- tx_p_out5
            hip_serial_rx_p_in1        : in  std_logic                     := 'X'; -- rx_p_in1
            hip_serial_tx_p_out15      : out std_logic;                            -- tx_p_out15
            hip_serial_rx_p_in4        : in  std_logic                     := 'X'; -- rx_p_in4
            hip_serial_tx_n_out13      : out std_logic;                            -- tx_n_out13
            hip_serial_tx_p_out4       : out std_logic;                            -- tx_p_out4
            hip_serial_rx_n_in15       : in  std_logic                     := 'X'; -- rx_n_in15
            hip_serial_tx_p_out10      : out std_logic;                            -- tx_p_out10
            hip_serial_rx_p_in3        : in  std_logic                     := 'X'; -- rx_p_in3
            hip_serial_rx_n_in14       : in  std_logic                     := 'X'; -- rx_n_in14
            hip_serial_tx_n_out14      : out std_logic;                            -- tx_n_out14
            hip_serial_tx_n_out0       : out std_logic;                            -- tx_n_out0
            hip_serial_tx_p_out13      : out std_logic;                            -- tx_p_out13
            hip_serial_tx_p_out7       : out std_logic;                            -- tx_p_out7
            hip_serial_tx_p_out1       : out std_logic;                            -- tx_p_out1
            hip_serial_rx_p_in7        : in  std_logic                     := 'X'; -- rx_p_in7
            hip_serial_tx_n_out11      : out std_logic;                            -- tx_n_out11
            hip_serial_rx_n_in3        : in  std_logic                     := 'X'; -- rx_n_in3
            hip_serial_tx_p_out11      : out std_logic;                            -- tx_p_out11
            hip_serial_rx_n_in4        : in  std_logic                     := 'X'; -- rx_n_in4
            hip_serial_tx_p_out6       : out std_logic;                            -- tx_p_out6
            hip_serial_rx_n_in8        : in  std_logic                     := 'X'; -- rx_n_in8
            hip_serial_tx_n_out3       : out std_logic;                            -- tx_n_out3
            hip_serial_rx_n_in5        : in  std_logic                     := 'X'; -- rx_n_in5
            hip_serial_rx_n_in12       : in  std_logic                     := 'X'; -- rx_n_in12
            hip_serial_rx_n_in6        : in  std_logic                     := 'X'; -- rx_n_in6
            hip_serial_rx_n_in11       : in  std_logic                     := 'X'; -- rx_n_in11
            hip_serial_rx_n_in9        : in  std_logic                     := 'X'; -- rx_n_in9
            hip_serial_tx_n_out2       : out std_logic;                            -- tx_n_out2
            hip_serial_tx_n_out4       : out std_logic;                            -- tx_n_out4
            hip_serial_tx_p_out8       : out std_logic;                            -- tx_p_out8
            hip_serial_tx_n_out12      : out std_logic;                            -- tx_n_out12
            hip_serial_tx_n_out9       : out std_logic;                            -- tx_n_out9
            hip_serial_tx_p_out0       : out std_logic;                            -- tx_p_out0
            hip_serial_tx_n_out5       : out std_logic;                            -- tx_n_out5
            hip_serial_tx_p_out9       : out std_logic;                            -- tx_p_out9
            hip_serial_tx_n_out15      : out std_logic;                            -- tx_n_out15
            hip_serial_rx_p_in10       : in  std_logic                     := 'X'; -- rx_p_in10
            hip_serial_rx_n_in13       : in  std_logic                     := 'X'; -- rx_n_in13
            hip_serial_rx_p_in5        : in  std_logic                     := 'X'; -- rx_p_in5
            hip_serial_tx_p_out3       : out std_logic;                            -- tx_p_out3
            hip_serial_rx_n_in7        : in  std_logic                     := 'X'; -- rx_n_in7
            hip_serial_rx_p_in12       : in  std_logic                     := 'X'; -- rx_p_in12
            hip_serial_tx_n_out6       : out std_logic;                            -- tx_n_out6
            hip_serial_rx_p_in13       : in  std_logic                     := 'X'; -- rx_p_in13
            hip_serial_rx_p_in2        : in  std_logic                     := 'X'; -- rx_p_in2
            hip_serial_tx_p_out2       : out std_logic;                            -- tx_p_out2
            hip_serial_rx_p_in8        : in  std_logic                     := 'X'; -- rx_p_in8
            hip_serial_rx_p_in9        : in  std_logic                     := 'X'; -- rx_p_in9
            hip_serial_tx_p_out12      : out std_logic;                            -- tx_p_out12
            hip_serial_rx_n_in10       : in  std_logic                     := 'X'; -- rx_n_in10
            hip_serial_tx_n_out1       : out std_logic;                            -- tx_n_out1
            hip_serial_rx_p_in14       : in  std_logic                     := 'X'; -- rx_p_in14
            hip_serial_tx_n_out7       : out std_logic;                            -- tx_n_out7
            hip_serial_tx_n_out10      : out std_logic;                            -- tx_n_out10
            hip_serial_rx_p_in6        : in  std_logic                     := 'X'; -- rx_p_in6
            hip_serial_rx_n_in0        : in  std_logic                     := 'X'; -- rx_n_in0
            hip_serial_rx_p_in11       : in  std_logic                     := 'X'; -- rx_p_in11
            pio_out_port_export        : out std_logic_vector(31 downto 0)        -- export
            --bus_reset_in_reset         : in  std_logic                     := 'X'  -- reset
Baptiste LEFEVRE's avatar
Baptiste LEFEVRE committed
        );
    end component pcie_ed;
	 
	 
	 component reset_release_ip is
        port (
            ninit_done : out std_logic   -- 1 if not ready. 1 if currently reset. O if ready. O if init is done.
        );
    end component reset_release_ip;
	 
--	 component reset_state_machine is
--			port(
--				clk_i          			: in  std_logic;
--				enable_i						: in std_logic;
--				reset_o  					: out std_logic
--			);
--		end component reset_state_machine;
--signal pio_reset_output_s : std_logic;
Baptiste LEFEVRE's avatar
Baptiste LEFEVRE committed
signal not_ready_s : std_logic;
--signal bus_reset_s : std_logic;
Baptiste LEFEVRE's avatar
Baptiste LEFEVRE committed

 begin 
 
	reset_ip : component reset_release_ip  
		port map (
			ninit_done => not_ready_s  -- ninit_done.reset
		);
	
--	bus_reset_ip : component reset_state_machine
--		port map(
--			clk_i => clk_sys_100m_p,
--			enable_i => '0', --pio_reset_output_s,
--			reset_o => bus_reset_s
--		);
Baptiste LEFEVRE's avatar
Baptiste LEFEVRE committed
			  
 u0 : component pcie_ed
	  port map (
			refclk0_clk           => refclk0_clk,           --          refclk0.clk
			refclk1_clk           => refclk1_clk,           --          refclk1.clk
			pin_perst_pin_perst   => pin_perst,   		--        			pin_perst.pin_perst
			--pcie_ninit_done_ninit_done => not_ready_s,		-- 			ninit_done
Baptiste LEFEVRE's avatar
Baptiste LEFEVRE committed
			hip_serial_rx_n_in1   => pcie_rx_n_in1,   --       			hip_serial.rx_n_in1
			hip_serial_tx_n_out8  => pcie_tx_n_out8,  --                 .tx_n_out8
			hip_serial_rx_n_in2   => pcie_rx_n_in2,   --                 .rx_n_in2
			hip_serial_rx_p_in0   => pcie_rx_p_in0,   --                 .rx_p_in0
			hip_serial_rx_p_in15  => pcie_rx_p_in15,  --                 .rx_p_in15
			hip_serial_tx_p_out14 => pcie_tx_p_out14, --                 .tx_p_out14
			hip_serial_tx_p_out5  => pcie_tx_p_out5,  --                 .tx_p_out5
			hip_serial_rx_p_in1   => pcie_rx_p_in1,   --                 .rx_p_in1
			hip_serial_tx_p_out15 => pcie_tx_p_out15, --                 .tx_p_out15
			hip_serial_rx_p_in4   => pcie_rx_p_in4,   --                 .rx_p_in4
			hip_serial_tx_n_out13 => pcie_tx_n_out13, --                 .tx_n_out13
			hip_serial_tx_p_out4  => pcie_tx_p_out4,  --                 .tx_p_out4
			hip_serial_rx_n_in15  => pcie_rx_n_in15,  --                 .rx_n_in15
			hip_serial_tx_p_out10 => pcie_tx_p_out10, --                 .tx_p_out10
			hip_serial_rx_p_in3   => pcie_rx_p_in3,   --                 .rx_p_in3
			hip_serial_rx_n_in14  => pcie_rx_n_in14,  --                 .rx_n_in14
			hip_serial_tx_n_out14 => pcie_tx_n_out14, --                 .tx_n_out14
			hip_serial_tx_n_out0  => pcie_tx_n_out0,  --                 .tx_n_out0
			hip_serial_tx_p_out13 => pcie_tx_p_out13, --                 .tx_p_out13
			hip_serial_tx_p_out7  => pcie_tx_p_out7,  --                 .tx_p_out7
			hip_serial_tx_p_out1  => pcie_tx_p_out1,  --                 .tx_p_out1
			hip_serial_rx_p_in7   => pcie_rx_p_in7,   --                 .rx_p_in7
			hip_serial_tx_n_out11 => pcie_tx_n_out11, --                 .tx_n_out11
			hip_serial_rx_n_in3   => pcie_rx_n_in3,   --                 .rx_n_in3
			hip_serial_tx_p_out11 => pcie_tx_p_out11, --                 .tx_p_out11
			hip_serial_rx_n_in4   => pcie_rx_n_in4,   --                 .rx_n_in4
			hip_serial_tx_p_out6  => pcie_tx_p_out6,  --                 .tx_p_out6
			hip_serial_rx_n_in8   => pcie_rx_n_in8,   --                 .rx_n_in8
			hip_serial_tx_n_out3  => pcie_tx_n_out3,  --                 .tx_n_out3
			hip_serial_rx_n_in5   => pcie_rx_n_in5,   --                 .rx_n_in5
			hip_serial_rx_n_in12  => pcie_rx_n_in12,  --                 .rx_n_in12
			hip_serial_rx_n_in6   => pcie_rx_n_in6,   --                 .rx_n_in6
			hip_serial_rx_n_in11  => pcie_rx_n_in11,  --                 .rx_n_in11
			hip_serial_rx_n_in9   => pcie_rx_n_in9,   --                 .rx_n_in9
			hip_serial_tx_n_out2  => pcie_tx_n_out2,  --                 .tx_n_out2
			hip_serial_tx_n_out4  => pcie_tx_n_out4,  --                 .tx_n_out4
			hip_serial_tx_p_out8  => pcie_tx_p_out8,  --                 .tx_p_out8
			hip_serial_tx_n_out12 => pcie_tx_n_out12, --                 .tx_n_out12
			hip_serial_tx_n_out9  => pcie_tx_n_out9,  --                 .tx_n_out9
			hip_serial_tx_p_out0  => pcie_tx_p_out0,  --                 .tx_p_out0
			hip_serial_tx_n_out5  => pcie_tx_n_out5,  --                 .tx_n_out5
			hip_serial_tx_p_out9  => pcie_tx_p_out9,  --                 .tx_p_out9
			hip_serial_tx_n_out15 => pcie_tx_n_out15, --                 .tx_n_out15
			hip_serial_rx_p_in10  => pcie_rx_p_in10,  --                 .rx_p_in10
			hip_serial_rx_n_in13  => pcie_rx_n_in13,  --                 .rx_n_in13
			hip_serial_rx_p_in5   => pcie_rx_p_in5,   --                 .rx_p_in5
			hip_serial_tx_p_out3  => pcie_tx_p_out3,  --                 .tx_p_out3
			hip_serial_rx_n_in7   => pcie_rx_n_in7,   --                 .rx_n_in7
			hip_serial_rx_p_in12  => pcie_rx_p_in12,  --                 .rx_p_in12
			hip_serial_tx_n_out6  => pcie_tx_n_out6,  --                 .tx_n_out6
			hip_serial_rx_p_in13  => pcie_rx_p_in13,  --                 .rx_p_in13
			hip_serial_rx_p_in2   => pcie_rx_p_in2,   --                 .rx_p_in2
			hip_serial_tx_p_out2  => pcie_tx_p_out2,  --                 .tx_p_out2
			hip_serial_rx_p_in8   => pcie_rx_p_in8,   --                 .rx_p_in8
			hip_serial_rx_p_in9   => pcie_rx_p_in9,   --                 .rx_p_in9
			hip_serial_tx_p_out12 => pcie_tx_p_out12, --                 .tx_p_out12
			hip_serial_rx_n_in10  => pcie_rx_n_in10,  --                 .rx_n_in10
			hip_serial_tx_n_out1  => pcie_tx_n_out1,  --                 .tx_n_out1
			hip_serial_rx_p_in14  => pcie_rx_p_in14,  --                 .rx_p_in14
			hip_serial_tx_n_out7  => pcie_tx_n_out7,  --                 .tx_n_out7
			hip_serial_tx_n_out10 => pcie_tx_n_out10, --                 .tx_n_out10
			hip_serial_rx_p_in6   => pcie_rx_p_in6,   --                 .rx_p_in6
			hip_serial_rx_n_in0   => pcie_rx_n_in0,   --                 .rx_n_in0
			hip_serial_rx_p_in11  => pcie_rx_p_in11,  --                 .rx_p_in11
			--clock_100_in_clk_clk  => clk_sys_100m_p,  -- 	clock_100_in_clk.clk
			--i2c_master_0_scl_sda_scl   => i2c_0_scl, -- scl
         --i2c_master_0_scl_sda_sda   => i2c_0_sda,   
			pio_out_port_export   => pio_out0   		--    pio_out_port.export
			--pio_reset_export 		 => pio_reset_output_s,
			--bus_reset_in_reset    => '0'--bus_reset_s  			-- 	1 means reset
Baptiste LEFEVRE's avatar
Baptiste LEFEVRE committed
	  );

end rtl;