Skip to content
Snippets Groups Projects
Commit afabe1cc authored by BRONES Romain's avatar BRONES Romain
Browse files

Protocol decoder: Use bpmframe stream package, clean

* Remove GT interface ready input: useless
parent ddd42af3
No related branches found
No related tags found
No related merge requests found
......@@ -3,41 +3,33 @@ library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.pkg_combpm_stream.all;
use work.pkg_bpmframe_stream.all;
entity combpm_protocol_electron is
port(
rst_n : in std_logic;
clk : in std_logic;
pps : in std_logic;
rst_n : in std_logic; -- Asynchronous active low reset.
clk : in std_logic; -- Clock synchronous to data input.
pps : in std_logic; -- One pulse per second. Used for frame rate estimation.
mc_time : in std_logic_vector(39 downto 0);
mc_time : in std_logic_vector(39 downto 0); -- Machine clock time for frame time stamping.
-- GT interface
gt_datarx : in std_logic_vector(15 downto 0);
gt_interfaceready : in std_logic;
gt_datarx : in std_logic_vector(15 downto 0); -- Deserialized data.
-- AXIS interface
m_axi_tid : out std_logic_vector(0 downto 0);
m_axi_tdest : out std_logic_vector(9 downto 0);
m_axi_tdata : out std_logic_vector(127 downto 0);
m_axi_tstrb : out std_logic_vector(15 downto 0);
m_axi_tkeep : out std_logic_vector(15 downto 0);
m_axi_tlast : out std_logic;
m_axi_tuser : out std_logic_vector(0 downto 0);
m_axi_tvalid : out std_logic;
m_axi_tready : in std_logic;
m_axis_m2s : out t_bpmframe_axis_m2s;
m_axis_s2m : in t_bpmframe_axis_s2m; -- warning: TREADY is ignored !
-- Status and control interface
soft_reset : in std_logic;
frame_seq_cnt : out std_logic_vector(15 downto 0);
frame_valid_cnt : out std_logic_vector(31 downto 0);
frame_invalid_cnt : out std_logic_vector(31 downto 0);
frame_valid_rate : out std_logic_vector(31 downto 0);
frame_invalid_rate : out std_logic_vector(31 downto 0);
cnt_seq_mismatch : out std_logic;
seq_discontinuity : out std_logic;
frame_error : out std_logic
soft_reset : in std_logic; -- Reset all counters.
frame_seq_cnt : out std_logic_vector(15 downto 0); -- Number of frame in last sequence.
frame_valid_cnt : out std_logic_vector(31 downto 0); -- Count of valid frames.
frame_invalid_cnt : out std_logic_vector(31 downto 0); -- Count of invalid frames.
frame_valid_rate : out std_logic_vector(31 downto 0); -- Valid frame rate.
frame_invalid_rate : out std_logic_vector(31 downto 0); -- Invalid frame rate.
cnt_seq_mismatch : out std_logic; -- Pulse for number of frame in sequence mismatch.
seq_discontinuity : out std_logic; -- Pulse for discontinuity in sequence number.
frame_error : out std_logic -- Pulse for frame error.
);
end entity combpm_protocol_electron;
......@@ -91,6 +83,7 @@ architecture rtl of combpm_protocol_electron is
signal rate_invalid_r : unsigned(31 downto 0);
signal packet : t_combpm_axis_packet;
signal m_axi_tvalid : std_logic;
begin
......@@ -135,8 +128,8 @@ begin
'0';
-- Any and all flag
flag_all <= flag_sop and flag_eop and flag_dummy and flag_rsvd and flag_crc and gt_interfaceready;
flag_frame <= flag_sop and flag_eop and gt_interfaceready;
flag_all <= flag_sop and flag_eop and flag_dummy and flag_rsvd and flag_crc;
flag_frame <= flag_sop and flag_eop;
----------------------------
-- FRAME FIELD EXTRACTION --
......@@ -242,13 +235,11 @@ begin
--------------
-- AXIS OUT --
--------------
-- Static data
m_axi_tstrb <= (others => '1');
m_axi_tkeep <= (others => '1');
m_axi_tid <= "0";
m_axi_tuser <= "0";
m_axi_tlast <= '1'; -- One transfer is One packet.
m_axi_tdata <= combpmpacket2slv(packet);
m_axis_m2s.tdest <= (others => '0');
m_axis_m2s.tdata <= combpmpacket2slv(packet);
m_axis_m2s.tlast <= '1'; -- One transfer is One packet.
m_axis_m2s.tvalid <= m_axi_tvalid;
p_axis:process(clk, rst_n)
begin
......
-- Package BPMFRAME STREAM
-- this package describe the format of the AXI-Stream interface used by blocs of the module COMBPM.
--
-- The usefull things are :
-- * Two record types for port interfaces: t_bpmframe_axis_m2s and t_bpmframe_axis_s2m.
-- * One record type for frame fields: t_bpmframe.
-- * Two functions to transform TDATA (std_logic_vector) to/from t_bpmframe: slv2bpmframe and bpmframe2slv.
library ieee;
use ieee.std_logic_1164.all;
......@@ -17,21 +24,12 @@ package pkg_bpmframe_stream is
tdata : std_logic_vector(C_TDATA_W-1 downto 0);
tlast : std_logic;
tvalid : std_logic;
---tid : std_logic_vector(0 downto 0);
--tuser : std_logic_vector(0 downto 0);
--tstrb : std_logic_vector(15 downto 0);
--tkeep : std_logic_vector(15 downto 0);
end record t_bpmframe_axis_m2s;
type t_bpmframe_axis_s2m is record
tready : std_logic;
end record t_bpmframe_axis_s2m;
subtype t_bpmframe_m_axis_out is t_bpmframe_axis_m2s;
subtype t_bpmframe_s_axis_in is t_bpmframe_axis_m2s;
subtype t_bpmframe_m_axis_in is t_bpmframe_axis_s2m;
subtype t_bpmframe_s_axis_out is t_bpmframe_axis_s2m;
------------------------
-- AXIS STREAM PACKET --
------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment