OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [ds_dma64/] [pcie_src/] [pcie_core64_m1/] [source_artix7/] [cl_a7pcie_x4_axi_basic_tx_thrtl_ctl.vhd] - Diff between revs 48 and 49

Show entire file | Details | Blame | View Log

Rev 48 Rev 49
Line 47... Line 47...
-- PART OF THIS FILE AT ALL TIMES.
-- PART OF THIS FILE AT ALL TIMES.
--
--
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- Project    : Series-7 Integrated Block for PCI Express
-- Project    : Series-7 Integrated Block for PCI Express
-- File       : cl_a7pcie_x4_axi_basic_tx_thrtl_ctl.vhd
-- File       : cl_a7pcie_x4_axi_basic_tx_thrtl_ctl.vhd
-- Version    : 1.10
-- Version    : 1.11
--
--
-- Description:
-- Description:
--    TX throttle controller. Anticipates back-pressure from PCIe block and
--    TX throttle controller. Anticipates back-pressure from PCIe block and
--      preemptively back-pressures user design (packet boundary throttling).
--      preemptively back-pressures user design (packet boundary throttling).
--
--
Line 179... Line 179...
  CONSTANT LINKSTATE_PPM_L1_TRANS    : INTEGER := 5;
  CONSTANT LINKSTATE_PPM_L1_TRANS    : INTEGER := 5;
  CONSTANT LINKSTATE_PPM_L23R_TRANS  : INTEGER := 6;
  CONSTANT LINKSTATE_PPM_L23R_TRANS  : INTEGER := 6;
  CONSTANT PM_ENTER_L1               : INTEGER := 32;
  CONSTANT PM_ENTER_L1               : INTEGER := 32;
  CONSTANT POWERSTATE_D0             : INTEGER := 0;
  CONSTANT POWERSTATE_D0             : INTEGER := 0;
 
 
  SIGNAL lnk_up_thrtl           : STD_LOGIC;
  SIGNAL lnk_up_thrtl           : STD_LOGIC:= '0';
  SIGNAL lnk_up_trig            : STD_LOGIC;
  SIGNAL lnk_up_trig            : STD_LOGIC:= '0';
  SIGNAL lnk_up_exit            : STD_LOGIC;
  SIGNAL lnk_up_exit            : STD_LOGIC:= '0';
  SIGNAL tbuf_av_min_thrtl      : STD_LOGIC;
  SIGNAL tbuf_av_min_thrtl      : STD_LOGIC:= '0';
  SIGNAL tbuf_av_min_trig       : STD_LOGIC;
  SIGNAL tbuf_av_min_trig       : STD_LOGIC:= '0';
  SIGNAL tbuf_av_gap_thrtl      : STD_LOGIC;
  SIGNAL tbuf_av_gap_thrtl      : STD_LOGIC:= '0';
  SIGNAL tbuf_gap_cnt           : STD_LOGIC_VECTOR(2 DOWNTO 0);
  SIGNAL tbuf_gap_cnt           : STD_LOGIC_VECTOR(2 DOWNTO 0):= (others => '0');
  SIGNAL tbuf_gap_cnt_t         : STD_LOGIC_VECTOR(2 DOWNTO 0);
  SIGNAL tbuf_gap_cnt_t         : STD_LOGIC_VECTOR(2 DOWNTO 0):= (others => '0');
  SIGNAL tbuf_av_gap_trig       : STD_LOGIC;
  SIGNAL tbuf_av_gap_trig       : STD_LOGIC:= '0';
  SIGNAL tbuf_av_gap_exit       : STD_LOGIC;
  SIGNAL tbuf_av_gap_exit       : STD_LOGIC:= '0';
  SIGNAL gap_trig_tlast         : STD_LOGIC;
  SIGNAL gap_trig_tlast         : STD_LOGIC:= '0';
  SIGNAL gap_trig_tlast_1       : STD_LOGIC;
  SIGNAL gap_trig_tlast_1       : STD_LOGIC:= '0';
  SIGNAL gap_trig_decr          : STD_LOGIC;
  SIGNAL gap_trig_decr          : STD_LOGIC:= '0';
  SIGNAL gap_trig_decr_1        : STD_LOGIC;
  SIGNAL gap_trig_decr_1        : STD_LOGIC:= '0';
  SIGNAL gap_trig_decr_2        : STD_LOGIC;
  SIGNAL gap_trig_decr_2        : STD_LOGIC:= '0';
  SIGNAL tbuf_av_d              : STD_LOGIC_VECTOR(5 DOWNTO 0);
  SIGNAL tbuf_av_d              : STD_LOGIC_VECTOR(5 DOWNTO 0):= (others => '0');
  SIGNAL tcfg_req_thrtl         : STD_LOGIC;
  SIGNAL tcfg_req_thrtl         : STD_LOGIC:= '0';
  SIGNAL tcfg_req_cnt           : STD_LOGIC_VECTOR(1 DOWNTO 0);
  SIGNAL tcfg_req_cnt           : STD_LOGIC_VECTOR(1 DOWNTO 0):= (others => '0');
  SIGNAL trn_tdst_rdy_d         : STD_LOGIC;
  SIGNAL trn_tdst_rdy_d         : STD_LOGIC:= '0';
  SIGNAL tcfg_req_trig          : STD_LOGIC;
  SIGNAL tcfg_req_trig          : STD_LOGIC:= '0';
  SIGNAL tcfg_req_exit          : STD_LOGIC;
  SIGNAL tcfg_req_exit          : STD_LOGIC:= '0';
  SIGNAL tcfg_gnt_log           : STD_LOGIC;
  SIGNAL tcfg_gnt_log           : STD_LOGIC:= '0';
  SIGNAL tcfg_gnt_pipe          : STD_LOGIC_VECTOR(TCFG_GNT_PIPE_STAGES-1 DOWNTO 0);
  SIGNAL tcfg_gnt_pipe          : STD_LOGIC_VECTOR(TCFG_GNT_PIPE_STAGES-1 DOWNTO 0):= (others => '0');
  SIGNAL pre_throttle           : STD_LOGIC;
  SIGNAL pre_throttle           : STD_LOGIC:= '0';
  SIGNAL reg_throttle           : STD_LOGIC;
  SIGNAL reg_throttle           : STD_LOGIC:= '0';
  SIGNAL exit_crit              : STD_LOGIC;
  SIGNAL exit_crit              : STD_LOGIC:= '0';
  SIGNAL reg_tcfg_gnt           : STD_LOGIC;
  SIGNAL reg_tcfg_gnt           : STD_LOGIC:= '0';
  SIGNAL trn_tcfg_req_d         : STD_LOGIC;
  SIGNAL trn_tcfg_req_d         : STD_LOGIC:= '0';
  SIGNAL tcfg_gnt_pending       : STD_LOGIC;
  SIGNAL tcfg_gnt_pending       : STD_LOGIC:= '0';
  SIGNAL wire_to_turnoff        : STD_LOGIC;
  SIGNAL wire_to_turnoff        : STD_LOGIC:= '0';
  SIGNAL reg_turnoff_ok         : STD_LOGIC;
  SIGNAL reg_turnoff_ok         : STD_LOGIC:= '0';
  SIGNAL tready_thrtl_mux       : STD_LOGIC;
  SIGNAL tready_thrtl_mux       : STD_LOGIC:= '0';
  SIGNAL ppm_L1_thrtl           : STD_LOGIC;
  SIGNAL ppm_L1_thrtl           : STD_LOGIC:= '0';
  SIGNAL ppm_L1_trig            : STD_LOGIC;
  SIGNAL ppm_L1_trig            : STD_LOGIC:= '0';
  SIGNAL ppm_L1_exit            : STD_LOGIC;
  SIGNAL ppm_L1_exit            : STD_LOGIC:= '0';
  SIGNAL cfg_pcie_link_state_d  : STD_LOGIC_VECTOR(2 DOWNTO 0);
  SIGNAL cfg_pcie_link_state_d  : STD_LOGIC_VECTOR(2 DOWNTO 0):= (others => '0');
  SIGNAL trn_rdllp_src_rdy_d    : STD_LOGIC;
  SIGNAL trn_rdllp_src_rdy_d    : STD_LOGIC:= '0';
  SIGNAL ppm_L23_thrtl          : STD_LOGIC;
  SIGNAL ppm_L23_thrtl          : STD_LOGIC:= '0';
  SIGNAL ppm_L23_trig           : STD_LOGIC;
  SIGNAL ppm_L23_trig           : STD_LOGIC:= '0';
  SIGNAL cfg_turnoff_ok_pending : STD_LOGIC;
  SIGNAL cfg_turnoff_ok_pending : STD_LOGIC:= '0';
  SIGNAL reg_tlast              : STD_LOGIC;
  SIGNAL reg_tlast              : STD_LOGIC:= '0';
  SIGNAL cur_state              : STD_LOGIC;
  SIGNAL cur_state              : STD_LOGIC:= '0';
  SIGNAL next_state             : STD_LOGIC;
  SIGNAL next_state             : STD_LOGIC:= '0';
 
 
  SIGNAL reg_axi_in_pkt         : STD_LOGIC;
  SIGNAL reg_axi_in_pkt         : STD_LOGIC:= '0';
  SIGNAL axi_in_pkt             : STD_LOGIC;
  SIGNAL axi_in_pkt             : STD_LOGIC:= '0';
  SIGNAL axi_pkt_ending         : STD_LOGIC;
  SIGNAL axi_pkt_ending         : STD_LOGIC:= '0';
  SIGNAL axi_throttled          : STD_LOGIC;
  SIGNAL axi_throttled          : STD_LOGIC:= '0';
  SIGNAL axi_thrtl_ok           : STD_LOGIC;
  SIGNAL axi_thrtl_ok           : STD_LOGIC:= '0';
  SIGNAL tx_ecrc_pause          : STD_LOGIC;
  SIGNAL tx_ecrc_pause          : STD_LOGIC:= '0';
 
 
  SIGNAL gap_trig_tcfg          : STD_LOGIC;
  SIGNAL gap_trig_tcfg          : STD_LOGIC:= '0';
  SIGNAL reg_to_turnoff         : STD_LOGIC;
  SIGNAL reg_to_turnoff         : STD_LOGIC:= '0';
  SIGNAL reg_tx_ecrc_pkt        : STD_LOGIC;
  SIGNAL reg_tx_ecrc_pkt        : STD_LOGIC:= '0';
 
 
  SIGNAL tx_ecrc_pkt            : STD_LOGIC;
  SIGNAL tx_ecrc_pkt            : STD_LOGIC:= '0';
  SIGNAL packet_fmt             : STD_LOGIC_VECTOR(1 DOWNTO 0);
  SIGNAL packet_fmt             : STD_LOGIC_VECTOR(1 DOWNTO 0):= (others => '0');
  SIGNAL packet_td              : STD_LOGIC;
  SIGNAL packet_td              : STD_LOGIC:= '0';
  SIGNAL header_len             : STD_LOGIC_VECTOR(2 DOWNTO 0);
  SIGNAL header_len             : STD_LOGIC_VECTOR(2 DOWNTO 0):= (others => '0');
  SIGNAL payload_len            : STD_LOGIC_VECTOR(9 DOWNTO 0);
  SIGNAL payload_len            : STD_LOGIC_VECTOR(9 DOWNTO 0):= (others => '0');
  SIGNAL packet_len             : STD_LOGIC_VECTOR(13 DOWNTO 0);
  SIGNAL packet_len             : STD_LOGIC_VECTOR(13 DOWNTO 0):= (others => '0');
  SIGNAL pause_needed           : STD_LOGIC;
  SIGNAL pause_needed           : STD_LOGIC:= '0';
 
 
  -- Declare intermediate signals for referenced outputs
  -- Declare intermediate signals for referenced outputs
  SIGNAL cfg_turnoff_ok_xhdl0   : STD_LOGIC;
  SIGNAL cfg_turnoff_ok_xhdl0   : STD_LOGIC:= '0';
  SIGNAL tready_thrtl_xhdl1     : STD_LOGIC;
  SIGNAL tready_thrtl_xhdl1     : STD_LOGIC:= '0';
--   TYPE T_STATE is  (IDLE_A,THROTTLE);
--   TYPE T_STATE is  (IDLE_A,THROTTLE);
--   SIGNAL CUR_STATE_A, NEXT_STATE_A : T_STATE;
--   SIGNAL CUR_STATE_A, NEXT_STATE_A : T_STATE;
  SIGNAL CUR_STATE_A, NEXT_STATE_A : STD_LOGIC;
  SIGNAL CUR_STATE_A, NEXT_STATE_A : STD_LOGIC := '0';
 
 
  constant IDLE : std_logic := '0';
  constant IDLE : std_logic := '0';
  constant THROTTLE : std_logic := '1';
  constant THROTTLE : std_logic := '1';
 
 
BEGIN
BEGIN

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.