/**********************************************************************/ /* sys_gen.h */ /* sys_mem.h definitons of memory blocks */ /* sys_generic.h definition of generic message, header, */ /* message length, header length */ /* sys_mess.h definitions of VME -> DSP messages */ /* sys_action_id.h definitions of action_id */ /* sys_flags.h definitions of flags */ /* sys_error_codes.h definitions of error_codes */ /* sys_response_codes.h definition of response codes */ /**********************************************************************/ /*********************************************************************/ /* MEMORY BLOCKS */ /*********************************************************************/ #define EXT0_SIZE 0x40000 #define EXT1_SIZE 0x40000 #define CODE_BLOCKSIZE 0x2800 /* size of RAM block allocated for code */ /* 0x800: boot code, 0x2000 code */ #define MESS_BLOCKSIZE 0x2000 /* size of message buffer in RAM */ #define TRIG_BLOCKSIZE 0x2000 /* size of block where trigger info is stored */ #define DATA_BLOCKSIZE (EXT0_SIZE - CODE_BLOCKSIZE - MESS_BLOCKSIZE \ - TRIG_BLOCKSIZE) /* size of block in RAM where data is stored: */ /* add EXT1_SIZE if expansion RAM card available*/ /**********************************************************************/ /* MESSAGES: */ /**********************************************************************/ /**********************************************************************/ /* sys_generic.h: */ /* sys_messhead.h message header definition */ /* sys_gener_mess.h structure definitions of generic message */ /* ****************************************************************** * MESSAGE HEADER * * ciw: command identifier word * ciw: flag | action_id * len: message length * dsp: dsp # * dsp_dipsw: dsp dip switch setting * channel: unit/channel # serviced by dsp * spare: spare ****************************************************************** */ #define HEADER u_int32 ciw; \ u_int32 len; \ u_int32 dsp; \ u_int32 dsp_dipsw; \ u_int32 channel; \ u_int32 host_ciw; \ u_int32 spare[5]; /**********************************************************************/ /* generic message */ /**********************************************************************/ struct m_generic { HEADER }; typedef struct m_generic m_generic; /* ============================================================= */ /* header length: DSP: 1 byte = 1 word (32 bits) */ /* */ /* maximum message length in SRAM message buffer xxx + HEADLEN */ /* ============================================================= */ #define HEADLEN sizeof (m_generic) / sizeof (int32) #define MESSLEN MESS_BLOCKSIZE #define MAX_MESS_ARRAY (MESS_BLOCKSIZE - HEADLEN) /* ============================================================= */ /* messages from VME to DSP */ /* ============================================================= */ /* -------------------------------------------- */ /* ECHO */ /* -------------------------------------------- */ struct m_echo { HEADER int32 data[2047]; }; typedef struct m_echo m_echo; /* -------------------------------------------- */ /* MESSAGE_TEST */ /* -------------------------------------------- */ struct m_message_test { HEADER int32 tmess_size; int32 startval; int32 delta; }; typedef struct m_message_test m_message_test; /* --------------------------------------------------------------------- * INITIALIZE * # of parameters: 1 run_mode: * 0: data transmission at end of burst upon request * 1: data transmission for each event (real time) --------------------------------------------------------------------- */ struct m_init { HEADER }; typedef struct m_init m_init; /* ------------------------------------------------ */ /* DISABLE_READOUT */ /* # of parameters: 0 */ /* ------------------------------------------------ */ struct m_disable_read { HEADER }; typedef struct m_disable_read m_disable_read; /* ----------------------------------------- */ /* ENABLE_READOUT */ /* # of parameters: 0 */ /* ----------------------------------------- */ struct m_enable_read { HEADER }; typedef struct m_enable_read m_enable_read; /* ----------------------------------------- */ /* SELECT_RUN_MODE */ /* # of parameters: 1 */ /* ----------------------------------------- */ struct m_sel_run { HEADER int32 runmode ; /* run mode: 0: data transmission at end of burst 1: data transmission event by event in real time */ }; typedef struct m_sel_run m_sel_run; /* ----------------------------------------- */ /* SELECT_TRIGGER_MODE */ /* # of parameters: 4 */ /* ----------------------------------------- */ struct m_sel_trig { HEADER int32 trignum[4]; /* # of trigger accepts per trigger from source 0-3 */ }; typedef struct m_sel_trig m_sel_trig; /* ----------------------------------------- */ /* SELECT_ALIGN_DELAY */ /* # of parameters: 2 */ /* ----------------------------------------- */ struct m_align_delay { HEADER int32 delay1; /* delay for trigger alignment fifo 1 */ int32 delay2; /* delay for trigger alignment fifo 2 */ }; typedef struct m_align_delay m_align_delay; /* ----------------------------------------- */ /* SELECT_TIME_PARAM */ /* # of parameters: 3 */ /* ----------------------------------------- */ struct m_sel_time { HEADER int32 tr_time ; /* time interval to read trigger counter and fifo */ int32 rt_rtout; /* timeout for readout routine (RT_TRANSFER mode) */ int32 t_addoff; /* offset for 13 bit graycode address (trigger fifo)*/ }; typedef struct m_sel_time m_sel_time; /* ----------------------------------------- */ /* SET_DAC */ /* # of parameters: 2 */ /* ----------------------------------------- */ struct m_set_dac { HEADER int32 dac; /* DAC: (DSP card: 0-3) */ int32 voltage; /* voltage: (0-4095) */ }; typedef struct m_set_dac m_set_dac; /* ----------------------------------------- */ /* LOAD_GRAYCODE_PATTERN */ /* # of parameters: 256 */ /* ----------------------------------------- */ struct m_load_gray { HEADER int32 graycode[256]; /* data */ }; typedef struct m_load_gray m_load_gray; /* ------------------------------------------------------ */ /* CALIBRATE */ /* # of parameters: 3 */ /* 1) # of triggers to generate for calibration run */ /* 2) take_data (0 or 1) */ /* 3) user parameter */ /* ------------------------------------------------------ */ struct m_calib { HEADER int32 acqui_events; int32 take_data; int32 user_par; }; typedef struct m_calib m_calib; /* --------------------------------------------- */ /* LOAD_DATA */ /* # of parameters: MAX_MESS_ARRAY */ /* --------------------------------------------- */ struct m_load_data { HEADER int32 data_format; /* data format: */ int32 data_word[MAX_MESS_ARRAY]; /* data */ }; typedef struct m_load_data m_load_data; /* --------------------------------------------- */ /* TRANSFER_DATA */ /* # of parameters: 1 */ /* --------------------------------------------- */ struct m_transfer_data { HEADER int32 data_format; }; typedef struct m_transfer_data m_transfer_data; /* --------------------------------------------- */ /* DSP_STATUS */ /* # of parameters: 14 */ /* --------------------------------------------- */ struct m_dsp_status { HEADER int32 dac_setting[4]; int32 al_delay_setting[2]; int32 runmode; int32 ro_enabled; int32 tcc_connected; int32 tr_time; int32 rt_rtout; int32 t_addoff; int32 trig_timer_val; int32 clock_timer_val; }; typedef struct m_dsp_status m_dsp_status; /* --------------------------------------------- */ /* DATA_SUMMARY */ /* # of parameters: 3 */ /* --------------------------------------------- */ struct m_data_summary { HEADER int32 flag; /* = 0 : # triggers = # data blocks = 1 : error = -1 : no trigger information */ int32 numtrig; /* # triggers */ int32 numdat; /* # data blocks */ }; typedef struct m_data_summary m_data_summary; /* --------------------------------------------- */ /* RESET_DONE */ /* # of parameters: 1: boot code version */ /* --------------------------------------------- */ struct m_reset_done { HEADER int32 bootver; }; /* ---------------------------------------------------------------- */ /* CODE_LOADED */ /* # of parameters: 2: code version */ /* parameter 1: system code version */ /* parameter 2: system communication and user code versions */ /* ---------------------------------------------------------------- */ struct m_code_loaded { HEADER int32 codever_sys; int32 codever_scom_us; }; typedef struct m_code_loaded m_code_loaded; /* --------------------------------------------- */ /* RESPONSE */ /* # of parameters: 1 */ /* --------------------------------------------- */ struct m_response { HEADER int32 response_code; }; typedef struct m_response m_response; /* --------------------------------------------- */ /* FATAL_ERROR */ /* # of parameters: 1 */ /* --------------------------------------------- */ struct m_fatal_error { HEADER int32 error_code; }; typedef struct m_fatal_error m_fatal_error; /* --------------------------------------------- */ /* ERROR_REPORT */ /* # of parameters: 1 */ /* --------------------------------------------- */ struct m_error_report { HEADER int32 error_code; }; typedef struct m_error_report m_error_report; /* ====================================================================== * ACTION_ID: * * * * sys_action_id.h * GENERAL MESSAGES: DEFINITIONS OF action_id * * system: action_id 1-99 * messages VME->DSP: 1-49 * messages DSP->VME: 50-79 * * error messages DSP->VME: 80-99 * pixels: action_id 100-199 * strips: action_id 200-299 * * Messages/Action initiated by VME CPU ====================================================================== */ #define INITIALIZE 1 #define DISABLE_READOUT 3 #define ENABLE_READOUT 4 #define SELECT_TRIGGER_MODE 5 #define TRANSFER_DATA 6 #define SET_DAC 9 #define SELECT_ALIGN_DELAY 11 #define LOAD_GRAYCODE_PATTERN 12 #define LOAD_CODE 14 #define LOAD_DATA 15 #define CALIBRATE 16 #define SELECT_RUN_MODE 17 #define SELECT_TIME_PARAM 18 #define ECHO 19 #define MESSAGE_TEST 20 #define GET_DSP_STATUS 21 #define VALIDATE_DATA 22 /* ================================================== */ /* Messages sent from DSP to VME */ /* ================================================== */ #define DATA_TRANSFER 50 #define DATA_SUMMARY 51 #define RESET_DONE 52 #define RESPONSE 53 #define CODE_LOADED 54 #define ECHO_REPLY 55 #define TEST_MESSAGE 56 #define DSP_STATUS 57 /* ================================================== */ /* Error messages sent from DSP to VME */ /* ================================================== */ #define FATAL_ERROR 80 #define ERROR_REPORT 81 /* ================================================== */ /* sys_error_codes.h */ /* ERROR CODE DEFINITIONS */ /* fatal errors: reported by message fatal_error */ /* ================================================== */ #define NO_LL 1 /* low level card not present */ #define NO_HL 2 /* high level card not present */ #define RO_ERROR 3 /* readout error */ #define MEM_OVERFLOW 4 /* memory overflow */ #define INVALID_RUNMODE 5 #define INVALID_AL_DELAY 6 #define GRAYCODE_TOO_LONG 7 #define INVALID_LINK 8 #define COMMAND_UNKNOWN 9 #define FORMAT_UNKNOWN 10 #define MESSAGE_TOO_LONG 11 /* other errors: reported by message error_report */ #define INVALID_DAC_VALUE 50 #define INVALID_DESTINATION_DAC 51 #define TRIG_ERROR 52 /* error reading trigger info */ #define NO_DET_DATA 53 #define NO_TRIG_DATA 54 #define NO_DATA 55 /* ================================================== */ /* sys_response_codes.h */ /* RESPONSE CODE DEFINITIONS */ /* ================================================== */ #define DONE 0 #define ACCEPTED 1 #define REFUSED 2 /* ================================================== */ /* sys_flags.h */ /* DEFINITIONS OF FLAGS */ /* ================================================== */ #define SOB_SIG_FLAG 0 #define EOB_SIG_FLAG 1 #define TRIGGER_FLAG 2 #define DSP_DATA_READY_FLAG 3 #define DSP_STATE 4 #define ABORT_FLAG 5 #define VERBOSE_FLAG 6 #define BOOT_CODE_VERSION 7 #define HOST_STATE 8 #define CODEVER_SYS 9 #define CODEVER_SCOM_US 10 /* =================================================================== * * DEFINITIONS OF DSP_STATE FLAG VALUES * * RESET_COMPLETE = 4: reset done, boot code running, * dsp is waiting for message load_code * DOWNLOAD_COMPLETE = 5: code loaded and running * IDLE = 1: dsp is waiting for * start of burst signal or messages * EXECUTING = 2: dsp is executing action initiated by message * BURST_LOOP = 3: dsp is in burst-loop * (reading data, waiting for end of burst signal) * * values 20 - 60: states reserved for strips code * values 61 - 100: states reserved for pixel code /* ==================================================================== */ #define IDLE 1 #define EXECUTING 2 #define BURST_LOOP 3 #define RESET_COMPLETE 4 #define DOWNLOAD_COMPLETE 5 /* ============================================== */ /* DEFINITIONS OF HOST_STATE FLAG VALUES */ /* ============================================== */ #define HS_RESETTING_DSP 0xfadedbad #define HS_READY 0x0 /* ============================================== */ /* RUN_MODE DEFINITIONS */ /* ============================================== */ #define EOB_TRANSFER 0 #define RT_TRANSFER 1 #define CALIB_RUN 2 /* ============================================== */ /* OTHER DEFINITIONS */ /* ============================================== */ #define MAX_AL_DELAY 255 #define MAX_GRAYCODE 256 #define MAX_DATA_FORMAT 10 #define DSP_LED_G 2 /* output port bit numbers */ #define DSP_LED_Y 1 #define DSP_LED_R 0 #define DSP_LED_ON 0 #define DSP_LED_OFF 1