#ifndef _PowerH_
#define _PowerH_
#include "shunt_ovp.h"
#include "multiswitch.h"
#include "measure.h"
#include "switches.h"
#include "headers.h"
#include "irod_supervisor.h"
#include "lv_comparator.h"
#include "dcdc.h"
#include "monopins.h"
class CB_VME_PWR : public TBundle {
public:
port PENA;
port PENC;
port PENB;
port PENB_SURGE;
port HARDRESET_N;
port MBPWR_MR_N;
port DSP_VAOK;
port DSP_VCOK;
port VBOK;
port ONE_O;
port ONE_MR_N;
virtual void Register() {
reg( PENA );
reg( PENC );
reg( PENB );
reg( PENB_SURGE );
reg( HARDRESET_N );
reg( MBPWR_MR_N );
reg( DSP_VAOK );
reg( DSP_VCOK );
reg( VBOK );
reg( ONE_O );
reg( ONE_MR_N );
}
};
class CM_Power : public TModule {
public:
CB_VME_PWR VME;
CB_MeasureControl MeasCtrl;
CB_PWR_Back BK;
CB_PWR_CG CG;
port MB_VCC5;
port MB_VCC;
port VPC;
port DSP_VCC;
port DSP_VA;
port VB;
port GND;
CP_HEADER10X2CS AuxPower;
CP_R1K Pulldown[ 5 ];
CP_R30 SeriesVPC;
CP_R1K Raux_VPC;
CP_HEADER2 LatchSwitch;
CP_HEADER2 LatchOverride;
CM_Supervisor5_3 Super_VCOK;
CM_Supervisor5_3 Super_MBPWROK;
CM_Supervisor5_3 Super_VINOK;
CM_Supervisor5_3 Super_ONE;
CM_LV_Comparator Comp_VAOK;
CM_LV_Comparator Comp_VBOK;
CM_DCDC_7711 DCDC_DSP_VA;
CM_DCDC_7711 DCDC_VB;
CM_ShuntOVP_8A OVP_MB_VCC5;
CM_ShuntOVP_8A OVP_MB_VCC;
CM_ShuntOVP_8A OVP_DSP_VCC;
CM_ShuntOVP_24A OVP_DSP_VA;
CM_ShuntOVP_24A OVP_VB;
CM_ShuntOVP_16A OVP_SW5_VB;
CM_ShuntOVP_16A OVP_SW5_DVA;
CM_Measure Measure;
CM_MultiSwitch4 SW_DSP_VCC;
CM_MultiSwitch4 SW_MB_VCC;
CM_MultiSwitch2 SW_MB_VCC5;
CM_MultiSwitch5 SW_DSP_VA;
CM_MultiSwitch4 SW_VB;
CM_MultiSwitch2 SW_VB_SURGE;
enum { mono_count = 4 };
CP_MONOPIN60 Mono[ mono_count ];
virtual void Register() {
reg( VME );
reg( MeasCtrl );
reg( BK );
reg( CG );
reg( MB_VCC5 );
reg( MB_VCC );
reg( VPC );
reg( DSP_VCC );
reg( DSP_VA );
reg( VB );
reg( GND );
reg( AuxPower );
rega( Pulldown, 5 );
reg( SeriesVPC );
reg( Raux_VPC );
reg( LatchSwitch );
reg( LatchOverride );
reg( Super_VCOK );
reg( Super_MBPWROK );
reg( Super_VINOK );
reg( Super_ONE );
reg( Comp_VAOK );
reg( Comp_VBOK );
reg( DCDC_DSP_VA );
reg( DCDC_VB );
reg( OVP_MB_VCC5 );
reg( OVP_MB_VCC );
reg( OVP_DSP_VCC );
reg( OVP_DSP_VA );
reg( OVP_VB );
reg( OVP_SW5_VB );
reg( OVP_SW5_DVA );
reg( Measure );
reg( SW_DSP_VCC );
reg( SW_MB_VCC );
reg( SW_MB_VCC5 );
reg( SW_DSP_VA );
reg( SW_VB );
reg( SW_VB_SURGE );
rega( Mono, mono_count );
}
virtual void Connect() {
wireall( GND );
int mp = 0;
BK.VPOS3_3 ^ Mono[ mp++ ];
BK.VPOS3_3 ^ Mono[ mp++ ];
VB ^ Mono[ mp++ ];
VB ^ Mono[ mp++ ];
merge( BK.VPOS5, AuxPower.P( 6, 1 ) );
merge( GND, AuxPower.P( 16, 7 ) );
merge( BK.VPOS3_3, AuxPower.P( 20, 17 ) );
VPC ^ SeriesVPC ^ BK.VPC ^ Raux_VPC ^ BK.VPOS5;
"MB_ENABLE" ^ Pulldown[ 0 ] ^ GND;
VME.PENA ^ Pulldown[ 1 ] ^ GND;
VME.PENC ^ Pulldown[ 2 ] ^ GND;
VME.PENB ^ Pulldown[ 3 ] ^ GND;
VME.PENB_SURGE ^ Pulldown[ 4 ] ^ GND;
BK.VPOS3_3 << SW_DSP_VCC.IN;
DSP_VCC << SW_DSP_VCC.OUT;
VME.PENC << SW_DSP_VCC.EN;
BK.VPOS3_3 << SW_MB_VCC.IN;
MB_VCC << SW_MB_VCC.OUT;
"MB_ENABLE" << SW_MB_VCC.EN;
BK.VPOS5 << SW_MB_VCC5.IN;
MB_VCC5 << SW_MB_VCC5.OUT;
"MB_ENABLE" << SW_MB_VCC5.EN;
BK.VPOS5 << SW_DSP_VA.IN;
"SW5_DVA" << SW_DSP_VA.OUT;
VME.PENA << SW_DSP_VA.EN;
BK.VPOS5 << SW_VB.IN;
"SW5_VB" << SW_VB.OUT;
VME.PENB << SW_VB.EN;
BK.VPOS5 << SW_VB_SURGE.IN;
"SW5_VB" << SW_VB_SURGE.OUT;
VME.PENB_SURGE << SW_VB_SURGE.EN;
DSP_VCC << Super_VCOK.VCC;
MB_VCC5 << Super_VCOK.VCC5;
VME.DSP_VCOK << Super_VCOK.RESET_N;
CG.DSP_VCOK << Super_VCOK.RESET_N;
"/NC" << Super_VCOK.MR_N << Super_VCOK.WDI << Super_VCOK.RESET;
MB_VCC << Super_MBPWROK.VCC;
MB_VCC5 << Super_MBPWROK.VCC5;
VME.HARDRESET_N << Super_MBPWROK.RESET_N;
VME.MBPWR_MR_N << Super_MBPWROK.MR_N;
"/NC" << Super_MBPWROK.WDI << Super_MBPWROK.RESET;
BK.VPOS3_3 << Super_VINOK.VCC;
BK.VPOS5 << Super_VINOK.VCC5;
"/NC" << Super_VINOK.MR_N << Super_VINOK.WDI << Super_VINOK.RESET;
"VIN_OK" << LatchSwitch.P( 1 ) << LatchOverride.P( 1 ) << Super_VINOK.RESET_N;
"MB_ENABLE" << LatchSwitch.P( 2 ) << LatchOverride.P( 2 );
MB_VCC << Super_ONE.VCC;
MB_VCC5 << Super_ONE.VCC5;
VME.ONE_MR_N << Super_ONE.MR_N;
VME.ONE_O << Super_ONE.RESET_N;
GND << Super_ONE.WDI;
"/NC" << Super_ONE.RESET;
MB_VCC << Comp_VAOK.VCC;
DSP_VA << Comp_VAOK.IN;
VME.DSP_VAOK << Comp_VAOK.OUT;
Comp_VAOK.RAdjust.SetTypeName( "CP_R6_19KP1" );
MB_VCC << Comp_VBOK.VCC;
VB << Comp_VBOK.IN;
VME.VBOK << Comp_VBOK.OUT;
Comp_VBOK.RAdjust.SetTypeName( "CP_R3_83KP1" );
"SW5_DVA" << DCDC_DSP_VA.VIN;
"SW5_VB" << DCDC_VB.VIN;
DSP_VA << DCDC_DSP_VA.VOUT;
VB << DCDC_VB.VOUT;
MB_VCC5 << OVP_MB_VCC5.Vp;
MB_VCC << OVP_MB_VCC.Vp;
VB << OVP_VB.Vp;
DSP_VCC << OVP_DSP_VCC.Vp;
DSP_VA << OVP_DSP_VA.Vp;
"SW5_VB" << OVP_SW5_VB.Vp;
"SW5_DVA" << OVP_SW5_DVA.Vp;
OVP_MB_VCC5.Radjust.SetTypeName( "CP_R3_09KP1" );
OVP_MB_VCC.Radjust.SetTypeName( "CP_R5_23KP1" );
OVP_DSP_VCC.Radjust.SetTypeName( "CP_R5_23KP1" );
OVP_DSP_VA.Radjust.SetTypeName( "CP_R18_2KP1" );
OVP_VB.Radjust.SetTypeName( "CP_R8_45KP1" );
OVP_SW5_DVA.Radjust.SetTypeName( "CP_R3_09KP1" );
OVP_SW5_VB.Radjust.SetTypeName( "CP_R3_09KP1" );
BK.VPOS12 << Measure.VCC12;
MeasCtrl << Measure.MeasCtrl;
"/NC" << Measure.AIN( 13 );
"/NC" << Measure.AIN( 12 );
"/NC" << Measure.AIN( 11 );
BK.VPOS5 << Measure.AIN( 10 );
BK.VPOS3_3 << Measure.AIN( 9 );
MB_VCC5 << Measure.AIN( 8 );
MB_VCC << Measure.AIN( 7 );
DSP_VCC << Measure.AIN( 6 );
"SW5_DVA" << Measure.AIN( 5 );
"SW5_VB" << Measure.AIN( 4 );
"SENSE_DSP_VA" << DCDC_DSP_VA.SENSE_VOUT << Measure.AIN( 3 );
DSP_VA << Measure.AIN( 2 );
"SENSE_VB" << DCDC_VB.SENSE_VOUT << Measure.AIN( 1 );
VB << Measure.AIN( 0 );
}
};
#endif