------------------------------------------------------------------------------- -- Title : transport layer ------------------------------------------------------------------------------- -- File : transport_layer.vhd ------------------------------------------------------------------------------- -- Description: Takes aligned frame characters from multiple lanes -- Outputs samples from one frame by converter. ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use work.data_link_pkg.all; use work.transport_pkg.all; entity transport_layer is generic ( CS : integer := 1; -- Number of control bits per sample M : integer := 1; -- Number of converters S : integer := 1; -- Number of samples L : integer := 1; -- Number of lanes F : integer := 2; -- Number of octets in a frame CF : integer := 0; -- Number of control words N : integer := 12; -- Size of a sample Nn : integer := 16); -- Size of a word (sample + ctrl if CF -- =0 port ( ci_frame_clk : in std_logic; -- Frame clock ci_reset : in std_logic; -- Reset (asynchronous, active low) di_lanes_data : in lane_character_array(0 to L-1)(F*8-1 downto 0); -- Data from the lanes ci_frame_states : in frame_state_array(0 to L-1); co_frame_state : out frame_state; do_samples_data : out samples_array(0 to M - 1, 0 to S - 1)); -- The -- output samples end entity transport_layer; architecture a1 of transport_layer is begin -- architecture a1 -- maps data from lanes to samples octets_to_samples: entity work.octets_to_samples generic map ( CS => CS, M => M, S => S, L => L, F => F, CF => CF, N => N, Nn => Nn) port map ( ci_frame_clk => ci_frame_clk, ci_reset => ci_reset, ci_frame_states => ci_frame_states, di_lanes_data => di_lanes_data, co_frame_state => co_frame_state, do_samples_data => do_samples_data); end architecture a1;