vppg.h

Go to the documentation of this file.
00001 /*   vppg.h
00002      Author: Suzannah Daviel 
00003 
00004      Include file for PPG (Pulse Programmer) for BNMR
00005 
00006   $Id: vppg.h 3638 2007-03-02 01:35:35Z amaudruz $
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 /* MIDAS_TYPE_DEFINED */
00026 
00027 #include "vmicvme.h"
00028 
00029 // Masks
00030 #define VPPG_DEFAULT_PPG_POL_MSK 0x000000  
00031 
00032 // Registers
00033 #define VPPG_PPG_RESET_REG       0x00   /* W     BYTE   W  */
00034 #define VPPG_PPG_START_TRIGGER   0x01   /* W     BYTE   W  */
00035 #define VPPG_BYTES_PER_WORD      0x02   /* 8     BYTE  RW  */
00036 #define VPPG_TOGL_MEM_DEVICE     0x03   /* W     BYTE   W  */
00037 #define VPPG_CLEAR_ADDR_COUNTER  0x04   /* W     BYTE   W  */
00038 #define VPPG_LOAD_MEM            0x06   /* 1     BYTE  RW  */
00039 #define VPPG_PROGRAMMING_FIN     0x07   /* 1     BYTE  RW  */
00040 #define VPPG_OUTP_POL_MASK_HI    0x08   /* 8     BYTE  RW  */
00041 #define VPPG_OUTP_POL_MASK_MID   0x09   /* 8     BYTE  RW  */
00042 #define VPPG_OUTP_POL_MASK_LO    0x0A   /* 8     BYTE  RW  */
00043 #define VPPG_POLZ_SOURCE_CONTROL 0x0B   /* 2     BYTE  RW  */
00044 #define VPPG_VME_POLZ_SET        0x0C   /* 1     BYTE  RW  */
00045 #define VPPG_VME_READ_STAT_REG   0x0D   /* 8     BYTE  RO  */
00046 #define VPPG_VME_TRIGGER_REG     0x0E   /* 8     BYTE  RW  */
00047 #define VPPG_VME_RESET           0x0F   /* 8     BYTE  RW  */
00048 #define VPPG_VME_RESET_COUNTERS  0x10   /* 8     BYTE  R0  */
00049 #define VPPG_VME_MCS_COUNT_HI    0X11   /* 8     BYTE  R0  */
00050 #define VPPG_VME_MCS_COUNT_MH    0X12   /* 8     BYTE  R0  */
00051 #define VPPG_VME_MCS_COUNT_ML    0X13   /* 8     BYTE  R0  */
00052 #define VPPG_VME_MCS_COUNT_LO    0X14   /* 8     BYTE  R0  */
00053 #define VPPG_VME_CYC_COUNT_HI    0X15   /* 8     BYTE  R0  */
00054 #define VPPG_VME_CYC_COUNT_MH    0X16   /* 8     BYTE  R0  */
00055 #define VPPG_VME_CYC_COUNT_ML    0X17   /* 8     BYTE  R0  */
00056 #define VPPG_VME_CYC_COUNT_LO    0X18   /* 8     BYTE  R0  */
00057 #define VPPG_VME_BEAM_CTL        0X19   /* 2     BYTE  RW  */
00058 #define VPPG_VME_TRIG_CTL        0X1A   /* 2     BYTE  RW  */
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

Midas DOC Version 2.0.2 ---- PSI Stefan Ritt ----
Contributions: Pierre-Andre Amaudruz - Sergio Ballestrero - Suzannah Daviel - Doxygen - Peter Green - Qing Gu - Greg Hackman - Gertjan Hofman - Paul Knowles - Exaos Lee - Rudi Meier - Glenn Moloney - Dave Morris - John M O'Donnell - Konstantin Olchanski - Renee Poutissou - Tamsen Schurman - Andreas Suter - Jan M.Wouters - Piotr Adam Zolnierczuk