00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _VPPG_INCLUDE_H_
00009 #define _VPPG_INCLUDE_H_
00010
00011 #include <stdio.h>
00012 #include <stdlib.h>
00013 #include <string.h>
00014
00015 #ifndef MIDAS_TYPE_DEFINED
00016 #define MIDAS_TYPE_DEFINED
00017 typedef unsigned short int WORD;
00018 typedef int INT;
00019 typedef char BYTE;
00020 #ifdef __alpha
00021 typedef unsigned int DWORD;
00022 #else
00023 typedef unsigned long int DWORD;
00024 #endif
00025 #endif
00026
00027 #include "vmicvme.h"
00028
00029
00030 #define VPPG_DEFAULT_PPG_POL_MSK 0x000000
00031
00032
00033 #define VPPG_PPG_RESET_REG 0x00
00034 #define VPPG_PPG_START_TRIGGER 0x01
00035 #define VPPG_BYTES_PER_WORD 0x02
00036 #define VPPG_TOGL_MEM_DEVICE 0x03
00037 #define VPPG_CLEAR_ADDR_COUNTER 0x04
00038 #define VPPG_LOAD_MEM 0x06
00039 #define VPPG_PROGRAMMING_FIN 0x07
00040 #define VPPG_OUTP_POL_MASK_HI 0x08
00041 #define VPPG_OUTP_POL_MASK_MID 0x09
00042 #define VPPG_OUTP_POL_MASK_LO 0x0A
00043 #define VPPG_POLZ_SOURCE_CONTROL 0x0B
00044 #define VPPG_VME_POLZ_SET 0x0C
00045 #define VPPG_VME_READ_STAT_REG 0x0D
00046 #define VPPG_VME_TRIGGER_REG 0x0E
00047 #define VPPG_VME_RESET 0x0F
00048 #define VPPG_VME_RESET_COUNTERS 0x10
00049 #define VPPG_VME_MCS_COUNT_HI 0X11
00050 #define VPPG_VME_MCS_COUNT_MH 0X12
00051 #define VPPG_VME_MCS_COUNT_ML 0X13
00052 #define VPPG_VME_MCS_COUNT_LO 0X14
00053 #define VPPG_VME_CYC_COUNT_HI 0X15
00054 #define VPPG_VME_CYC_COUNT_MH 0X16
00055 #define VPPG_VME_CYC_COUNT_ML 0X17
00056 #define VPPG_VME_CYC_COUNT_LO 0X18
00057 #define VPPG_VME_BEAM_CTL 0X19
00058 #define VPPG_VME_TRIG_CTL 0X1A
00059
00060 struct parameters
00061 {
00062 unsigned char opcode;
00063 unsigned long branch_addr;
00064 unsigned long delay;
00065 unsigned long flags;
00066 char opcode_width;
00067 char branch_width;
00068 char delay_width;
00069 char flag_width;
00070 };
00071 typedef struct parameters PARAM;
00072
00073 void VPPGInit(MVME_INTERFACE *mvme, const DWORD base_adr);
00074 int VPPGLoad(MVME_INTERFACE *mvme,const DWORD base_adr, char *file);
00075 DWORD VPPGPolmskWrite(MVME_INTERFACE *mvme, const DWORD base_adr, const DWORD pol);
00076 DWORD VPPGPolmskRead(MVME_INTERFACE *mvme, const DWORD base_adr);
00077 void VPPGDisable(MVME_INTERFACE *mvme, const DWORD base_adr);
00078 void VPPGEnable(MVME_INTERFACE *mvme, const DWORD base_adr);
00079 BYTE VPPGStatusRead(MVME_INTERFACE *mvme, const DWORD base_adr);
00080 PARAM lineRead( FILE *input);
00081 void byteOutputOrder(PARAM data, char *array);
00082 BYTE VPPGRegWrite(MVME_INTERFACE *mvme, const DWORD base_adr,
00083 DWORD reg_offset, BYTE value);
00084 BYTE VPPGRegRead(MVME_INTERFACE *mvme, const DWORD base_adr,
00085 DWORD reg_offset);
00086 void VPPGPolzSet(MVME_INTERFACE *mvme, const DWORD base_adr, BYTE value );
00087 BYTE VPPGPolzFlip(MVME_INTERFACE *mvme, const DWORD base_adr);
00088 BYTE VPPGPolzRead(MVME_INTERFACE *mvme, const DWORD base_adr);
00089 void VPPGBeamOn(MVME_INTERFACE *mvme, const DWORD base_adr);
00090 void VPPGBeamOff(MVME_INTERFACE *mvme, const DWORD base_adr);
00091 void VPPGBeamCtlPPG(MVME_INTERFACE *mvme, const DWORD base_adr);
00092 BYTE VPPGBeamCtlRegRead(MVME_INTERFACE *mvme, const DWORD base_adr);
00093 void VPPGPolzCtlVME(MVME_INTERFACE *mvme, const DWORD base_adr);
00094 void VPPGPolzCtlPPG(MVME_INTERFACE *mvme, const DWORD base_adr);
00095 BYTE VPPGDisableExtTrig(MVME_INTERFACE *mvme, const DWORD base_adr);
00096 BYTE VPPGEnableExtTrig(MVME_INTERFACE *mvme, const DWORD base_adr);
00097 void VPPGStopSequencer(MVME_INTERFACE *mvme, const DWORD base_adr);
00098 void VPPGStartSequencer(MVME_INTERFACE *mvme, const DWORD base_adr);
00099 BYTE VPPGExtTrigRegRead(MVME_INTERFACE *mvme, const DWORD base_adr);
00100
00101 #endif