Decsription the the 68020 Program that Operates the VBD During Normal Data Acquisition for use with JANUARY 1991 COMINT PROM's --------------------------------------------------- 12-AUG-1991 During normal operation the L1 Trigger 68020 program performs a number of tasks that facilitate the transfer of events to the L2 system. These tasks include: 1. Colection of Pulser Programming information form the Central Detector and Calorimeter pulsers. 2. Collection of the CAMAC data via the CES CAMAC Branch Driver module type CBD 8210 that is in the L1 Trigger's VME crate. 3. Building the L1 Trigger Jet List which is part of the L1 Data Block. 4. Building the Crate Header for the L1 Trigger VME crate. 5. Performing any reformating of the L1 raw data block from the COMINT card that is necessary in order to make the L1 Trigger Data Block match D0 Note 967 (e.g. inserting the ADC zero energy responce in the Trigger Tower Et area of the data block for sections of the L1 Trigger for which the hardware is not installed. 6. Controlling the VBD (e.g. setting up the initial word count and starting address lists, assigning a buffer and telling the VBD to start a run through its DMA list, watching for a VBD VME timeout or a Request to transfer to L2 but no Grant timeout. 7. During low event rate conditions, this program displays details about each event transfered (e.g. which Specific Triggers Fired, status of the sync bits). 8. This program generates some L1 Monitor Trouble Warning Bits for the L1 Trigger Monitor system. These L1 Monitor Trouble Warning Bits indicate that the L1 VME Transfer program is looping properly and they show if the L1 Trigger is having trouble transfering events into L2. List of Source Modules in this 68020 Program: ------------------------------------------------- VBD_2.SRC This is the VBD control and the "main line" that calls all the other routines. It includes MAIN_SYMBOLS.INCLUDE Initialize_Hard_Soft_1.SRC 1. Initialize all of the MVME-214 memory and all of the Short-214 memory to zero. Build a block of CTFE zero energy responce data. Initialize the VBD and its DMA list. Build Crate Header Words #2, #3, and #4. Initialize the Ironics I/O module. Initialize the Trouble Warning Bits. Display the Crate ID, the Version Number, and the Revision Number. Clear the COMINT card. Set the VBD Buffer select to zero. Send a message to the console that initialization is complete. Initialize_CAMAC_1.SRC Send the "Z", "C", and "I" commands to the crate controller. While doing this have a special Bus Error exception routine running in order to "see" if the bus cycles to the CAMAC interface complete without error and to get this routine out of trouble if there is a bus time out. Send a message to the console which shows if the CAMAC initializations routine had any trouble or not. Initialize_Pulser_1.SRC The area in the MVME-214 module that will be used to hold all of the pulser programming data is initialized to alternating $5's and $A's. Cyclic_1.SRC This is the main routine that is running during normal operation. This routine waits for the Slave Ready Signal, then it calls various other routine to prepair the L1 Data Block for transfer, then calls routines to collect the pulser programming data and the CAMAC data, and then it tells the VBD to DMA list read the all the data and send it into L2. This routine also generates some of the L1 Monitor Trouble Warning Bits. MOVE_DATA_1.SRC This moves blocks of data around (mostly in the MVME-214 memory) in order to turn the raw data block, as built by COMINT with the current hardware configuration, into blocks that can be read by the VBD and result in the D0 Note 967 format. SPEC_TRIG_PROG_FIRE_1;SRC This builds the lists that show for this event which Specific Triggers were programmed to use a certain Reference Set AND that fired on this event. This data is in the L1 Data Block and used to build the Jet List. EM_JET_LIST_1.SRC This routine builds the L1 EM Jet List and orders it in decreasing Et. SORT_EM_JET_LIST_1.SRC This routine sorts the EM Et Index List which is then used to order the EM Jet List. TEt_JET_LIST_1.SRC This routine builds the L1 Total Et Jet List and orders it in decreasing Et. SORT_TEt_JET_LIST_1.SRC This routine sorts the Total Et Index List which is then used to order the Total Et Jet List. GET_CAMAC_1.SRC This routine reads the CAMAC data. GET_PULSERS_1.SRC This routine reads the Central Detector and Calorimeter Pulser Programming data. Naming of Program Modules, Program Sections, and Entry Points ----------------------------------------------------------------- The Program Module Name has the format: Abc_Wxyz_1.SRC The Label on the IDNT directive has the format: Abc_Wxyz The Program Section Name has the format: Sect_Abc_Wxyz The Label on the Entry Point has the format: Begin_Abc_Wxyz Names of Program Modules in the 68k VBD_2 Program ------------------------------------------------------- Module Name Entry Point Length Blocks Lines --------------------------- --------------------------- ------------------- VBD_2.SRC absolute $10000 Main_Symbols.Include 50 Blk 431 Line VBD_Version_Number.SRC VBD_Revision_Number.SRC Initialize_Hard_Soft_1.SRC Begin_Initialize_Hard_Soft 66 Blk 546 Line Initialize_Pulser_1.SRC Begin_Initialize_Pulser Initialize_CAMAC_1.SRC Begin_Initialize_CAMAC Cyclic_1.SRC Begin_Cyclic Move_Data_1.SRC Begin_Move_Data 228 Line Spec_Trig_Prog_Fire_1.SRC Begin_Spec_Trig_Prog_Fire 266 Line EM_Jet_List_1.SRC Begin_EM_Jet_List Sort_EM_Jet_List_1.SRC Begin_Sort_EM_Jet_List TEt_Jet_List_1.SRC Begin_TEt_Jet_List Sort_TEt_Jet_List_1.SRC Begin_Sort_TEt_Jet_List Get_Pulser_1.SRC Begin_Get_Pulser Get_CAMAC_1.SRC Begin_Get_CAMAC Block Diagram of 68k Program for use with the January 1991 COMINT PROM's ---------------------------------------------------------------------------- +-------------------------------+ | | | VBD_2 | | | | | | main routine that | | calls other routines | | | | announce the program | | | | INCLUDE: | +------------------------------+ | VERSION_NUMBER.INC | | | | REVISION_NUMBER.INC | | Initialize_Software | | MAIN_SYMBOLS.INC | | | | | | Make Crate Headers Words | | Call INITIALIZE_SOFTWARE | | #2, #3, and #4. | | | | Initialize the Data in the | | Call INITIALIZE_HARDWARE | | MVME-214 memory module. | | | | Initialize the Data in the | | Call INITIALIZE_PULSER | | Short 214 memory module. | | | | Make the Pointer List and | | Call INITIALIZE_CAMAC | | the Word Count List for | | | | the VBD data cable driver. | | Announce that | +------------------------------+ | Initialization | | is finished | | | +------------------------------+ | JMP to CYCLIC | | | | | | Initialize_Hardware | | | | | +-------------------------------+ | Initialize the VBD module. | MOVE_DATA | Initialize the Ironics I/O | | module. | SPEC_TRIG_PROG_FIRE | Initialize the COMINT card. | | | EM_JET_LIST +------------------------------+ SORT_EM_JET_LIST GET_CAMAC GET_PULSERS Tests of the EM Jet List Builder ------------------------------------ 1. The Specific Triggers included in the EM Jet List must match those that were programmed to use a Reference Set and that fired: Program all but one Spec Trig to use a given Ref Set, Fire the one Spec Trig that does not use the Ref Set: verify a null EM Jet List. Fire all but one Spec Trig, Program only that one Spec Trig to use a Ref Set: verify a null list. Fire all Spec Trigs, Program only a few Spec Trigs to use a Ref Set: verify only those few Spec Trigs in the list. Program all Spec Trigs to use a Ref Set, Fire only a few Spec Trigs: verify only those few Spec Trigs in the list. 2. Verify the detailed VAX address offsets in the list with both positive and negative eta Trigger Towers in the list. 3. Verify the detailed VAX address offsets in the list with both phi indexes in the range 1...16 and in the range 17...32 in the list. 4. Check program behavior with long lists (>16 entries) and with short lists (0, 1, 2, 3 entries). 5. Verify that to get an entry in the list that the Ref Set with Trigger Towers above threshold must match the Ref Set that had Spec Trigs Programmed to use it and that fired. Fire all Spec Trigs, Program all Spec Trigs to depend on all but 1 Ref Set, have all Trigger Towers above threshold for all Ref Sets but the one Ref Set that has no Spec Trigs depending on it: verify a null list. Fire all Spec Trigs, all Trigger Towers are above threshold for all but one Ref Set, only that Ref Set has Spec Trigs that depend on it: verify a null list. 6. Show that the detailed contents of all entries in the jet list are independent of the Reference Set that contributed them