Changeset 10803 for firmware


Ignore:
Timestamp:
May 24, 2011, 6:08:46 PM (8 years ago)
Author:
weitzel
Message:
FTM: crate reset implemented
Location:
firmware/FTM
Files:
3 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;
  • firmware/FTM/ethernet/w5300_modul.vhd

    r10740 r10803  
    1818--
    1919----------------------------------------------------------------------------------
     20
    2021LIBRARY IEEE;
    2122USE IEEE.STD_LOGIC_1164.all;
     
    109110    crate_reset_param         : OUT std_logic_vector (15 DOWNTO 0) := (others => '0')
    110111  );
    111 
    112112END w5300_modul ;
    113113
     
    606606                if (dd_write_general_ready = '1') then
    607607                  data_package_type <= FTM_PACKAGE_TYPE_DD;
    608                   data_package_length <= DD_BLOCK_SIZE + 1; -- +1 := package end
     608                  data_package_length <= X"0" & (DD_BLOCK_SIZE + 1); -- +1 := package end
    609609                  read_addr_state <= READ_FROM_DD_ADDR;
    610610                  local_sd_addr <= X"000"; -- start at address 0x000
     
    640640                next_state <= SEND_FTU_ERROR;
    641641                data_package_type <= FTM_PACKAGE_TYPE_FTU_ERR;
    642                 data_package_length <= FTU_ERROR_LENGTH + 1; -- +1 := package end
     642                data_package_length <= X"0" & (FTU_ERROR_LENGTH + 1); -- +1 := package end
    643643                read_addr_state <= READ_FTU_ERROR;
    644644                local_sd_addr <= X"000";
     
    851851                    state_read_data <= RD_5;
    852852                    data_package_type <= FTM_PACKAGE_TYPE_FTU_LIST;
    853                     data_package_length <= FL_BLOCK_SIZE + 1; -- +1 := package end
     853                    data_package_length <= X"0" & (FL_BLOCK_SIZE + 1); -- +1 := package end
    854854                    read_addr_state <= READ_FROM_FL_ADDR;
    855855                    local_sd_addr <= X"000"; --start at address 0x000
     
    863863              when RD_READ_SD_BLOCK =>
    864864                data_package_type <= FTM_PACKAGE_TYPE_SD;
    865                 data_package_length <= SD_BLOCK_SIZE + 1; -- +1 := package end
     865                data_package_length <= X"0" & (SD_BLOCK_SIZE + 1); -- +1 := package end
    866866                state_read_data <= RD_5;
    867867                read_addr_state <= READ_FROM_SD_ADDR;
     
    875875              when RD_READ_SD_ADDR =>
    876876                data_package_type <= FTM_PACKAGE_TYPE_SD_WORD;
    877                 data_package_length <= SD_SINGLE_WORD_SIZE + 1; -- +1 := package end
     877                data_package_length <= X"0" & (SD_SINGLE_WORD_SIZE + 1); -- +1 := package end
    878878                state_read_data <= RD_5;
    879879                read_addr_state <= READ_FROM_SD_ADDR;
  • firmware/FTM/ftm_definitions.vhd

    r10779 r10803  
    234234  -- crate reset
    235235  constant CMD_CRESET         : std_logic_vector := X"0020";
    236   constant RESET_TIME         : integer := 1000;
     236  constant RESET_TIME         : integer := 50;  -- hold reset line for 1us (@ 50MHz clk)
    237237 
    238238  -- start and end of package
Note: See TracChangeset for help on using the changeset viewer.