Ignore:
Timestamp:
May 24, 2011, 6:08:46 PM (8 years ago)
Author:
weitzel
Message:
FTM: crate reset implemented
File:
1 edited

Legend:

Unmodified
Added
Removed
  • firmware/FTM/FTM_central_control.vhd

    r10779 r10803  
    7070    dna_ready            : in  std_logic;
    7171    crate_reset          : IN  std_logic;
    72     crate_reset_ack      : OUT std_logic := '1';
     72    crate_reset_ack      : OUT std_logic := '0';
    7373    crate_reset_param    : IN  std_logic_vector (15 DOWNTO 0);
    7474    start_run            : IN  std_logic;
     
    104104  signal prescaling_FTU01_sig  : std_logic_vector(7 downto 0) := "00100111";
    105105  signal reset_cnt_sig         : integer range 0 to RESET_TIME := 0;
     106  signal crate_reset_param_sig : std_logic_vector (15 DOWNTO 0) := (others => '0');
    106107 
    107108  type state_central_proc_type is (CP_INIT, CP_INIT_DNA, CP_INIT_TIMER,
     
    114115                                   CP_IDLE, CP_PING, CP_START_RATES, CP_READ_RATES, CP_READ_RATES_01,
    115116                                   CP_SEND_START, CP_SEND_END,
    116                                    CP_CRATE_RESET, CP_CRATE_RESET_ACK);
     117                                   CP_CRATE_RESET, CP_CRATE_RESET_01, CP_CRATE_RESET_ACK);
    117118  signal state_central_proc : state_central_proc_type := CP_INIT;
    118119
     
    177178            --state_central_proc <= CP_CONFIG_SCALER;
    178179            --state_central_proc <= CP_IDLE;
     180            --state_central_proc <= CP_CRATE_RESET;
    179181          end if;
    180182
     
    280282            end if;
    281283          elsif (crate_reset = '1') then
     284            crate_reset_param_sig <= crate_reset_param;
    282285            crate_reset_ack <= '1';
    283286            state_central_proc <= CP_CRATE_RESET;
     
    413416          if (crate_reset = '0') then
    414417            crate_reset_ack <= '0';
     418            state_central_proc <= CP_CRATE_RESET_01;
     419          end if;
     420
     421        when CP_CRATE_RESET_01 =>
     422          cc_state_test <= X"1A";
     423          if (reset_cnt_sig < RESET_TIME) then
     424            reset_cnt_sig <= reset_cnt_sig + 1;
     425            if    (crate_reset_param_sig = "0000000000000001") then
     426              crate_res_0 <= '0';
     427            elsif (crate_reset_param_sig = "0000000000000010") then
     428              crate_res_1 <= '0';
     429            elsif (crate_reset_param_sig = "0000000000000100") then
     430              crate_res_2 <= '0';
     431            elsif (crate_reset_param_sig = "0000000000001000") then
     432              crate_res_3 <= '0';
     433            end if;
     434          else
     435            reset_cnt_sig <= 0;
     436            crate_res_0 <= '1';
     437            crate_res_1 <= '1';
     438            crate_res_2 <= '1';
     439            crate_res_3 <= '1';
    415440            state_central_proc <= CP_IDLE;
    416441          end if;
    417          
     442             
    418443        when others =>
    419           cc_state_test <= X"1A";
     444          cc_state_test <= X"1B";
    420445         
    421446      end case;
Note: See TracChangeset for help on using the changeset viewer.