#ifndef _FrontPanelH_
#define _FrontPanelH_
#include "jtag.h"
#include "standardheaders.h"
#include "switches.h"
#include "esd.h"
#include "mechanical.h"
class CB_Front_VME : public TBundle {
public:
port LED_MB_VB;
port LED_DSP_VB;
port LED_DSP_VA;
port LED_HPU0;
port LED_HPU1;
port LED_VME0;
port LED_VME1;
port DIPSW0_;
port DIPSW1_;
port DIPSW2_;
virtual void Register() {
reg( LED_MB_VB );
reg( LED_DSP_VB );
reg( LED_DSP_VA );
reg( LED_HPU0 );
reg( LED_HPU1 );
reg( LED_VME0 );
reg( LED_VME1 );
regb( DIPSW0_, 4, 0 );
regb( DIPSW1_, 4, 0 );
regb( DIPSW2_, 4, 0 );
}
};
class CM_FrontPanel : public TModule {
public:
CB_Front_CG CG;
CB_Front_IC IC;
CB_Front_JT JT;
CB_Front_VME VME;
port MB_VCC;
port DSP_VCC;
port MB_VCC5;
port GND;
CP_EMU_HEADER EmuHeader;
CP_JTAG_HEADER JTAG_Header;
CP_TTC_HEADER TTC_Header;
CP_DIPSW5 Switch_JT_CG;
CP_ESD_STRIP_400 ESD_Strip;
CP_R1M_HW ESD_Res[ 4 ];
enum { hole_count = 4 };
CP_VME_PANEL_HOLE PanelHoles[ hole_count ];
CP_DIPSW5 Switches[ 3 ];
CP_DUAL_LED_RT_GRN LEDpwrVC;
CP_DUAL_LED_RT_GRN LEDpwrVB;
CP_DUAL_LED_RT_GRN LEDpwrVA5;
CP_DUAL_LED_RT_RED LEDhpu;
CP_DUAL_LED_RT_RED LEDvme;
CP_R110 Rled[ 11 ];
CP_R0 Rgnd;
virtual void Register() {
reg( CG );
reg( IC );
reg( JT );
reg( VME );
reg( MB_VCC );
reg( DSP_VCC );
reg( MB_VCC5 );
reg( GND );
reg( EmuHeader );
reg( JTAG_Header );
reg( TTC_Header );
reg( Switch_JT_CG );
reg( ESD_Strip );
rega( ESD_Res, 4 );
rega( PanelHoles, hole_count );
rega( Switches, 3 );
reg( LEDpwrVC );
reg( LEDpwrVB );
reg( LEDpwrVA5 );
reg( LEDhpu );
reg( LEDvme );
rega( Rled, 11 );
reg( Rgnd );
}
virtual void Connect() {
wireall( GND );
wire( JT.JTAG, JTAG_Header );
"/NC" << JTAG_Header.BYPASS_N;
"/NC" << JTAG_Header.P_ENA;
"/NC" << JTAG_Header.TRST_N;
MB_VCC << JTAG_Header.VCC;
wire( JT.Emulator, EmuHeader );
JT.TCK_RET << EmuHeader.TCK_RET;
"/NC" << EmuHeader.KEY;
DSP_VCC << EmuHeader.PD;
wire( CG, TTC_Header );
wire( IC, TTC_Header );
merge( GND, Switch_JT_CG.A );
Switch_JT_CG.B( 2, 0 ) << JT.JTAG_DIPSW( 2, 0 );
Switch_JT_CG.B( 3 ) << CG.CKOE_DIPSW;
Switch_JT_CG.B( 4 ) << CG.VBOE_DIPSW;
"ESD_FRONT" << ESD_Strip.FRONT;
for ( int i = 0; i < hole_count; ++ i ) {
"ESD_FRONT" ^ PanelHoles[ i ];
}
"ESD_FRONT" ^ ESD_Res[ 0 ] ^ "ESD_0_1" ^ ESD_Res[ 1 ] ^ "ESD_REAR" << ESD_Strip.REAR;
GND ^ ESD_Res[ 2 ] ^ "ESD_2_3" ^ ESD_Res[ 3 ] ^ "ESD_MID" << ESD_Strip.MID;
int i = 0;
MB_VCC ^ Rled[ i++ ] ^ "LED_MB_VCC" << LEDpwrVC.ANODE( 0 );
DSP_VCC ^ Rled[ i++ ] ^ "LED_DSP_VCC" << LEDpwrVC.ANODE( 1 );
MB_VCC ^ Rled[ i++ ] ^ "LED_MB_VB" << LEDpwrVB.ANODE( 0 );
MB_VCC ^ Rled[ i++ ] ^ "LED_DSP_VB" << LEDpwrVB.ANODE( 1 );
MB_VCC5 ^ Rled[ i++ ] ^ "LEDV5";
"LEDV5" ^ Rled[ i++ ] ^ "LED_MB_VCC5" << LEDpwrVA5.ANODE( 0 );
MB_VCC ^ Rled[ i++ ] ^ "LED_DSP_VA" << LEDpwrVA5.ANODE( 1 );
MB_VCC ^ Rled[ i++ ] ^ "LED_HPU0" << LEDhpu.ANODE( 0 );
MB_VCC ^ Rled[ i++ ] ^ "LED_HPU1" << LEDhpu.ANODE( 1 );
MB_VCC ^ Rled[ i++ ] ^ "LED_VME0" << LEDvme.ANODE( 0 );
MB_VCC ^ Rled[ i++ ] ^ "LED_VME1" << LEDvme.ANODE( 1 );
"LED_GND" ^ Rgnd ^ GND;
"LED_GND" << LEDpwrVC.CATHODE( 0 );
"LED_GND" << LEDpwrVC.CATHODE( 1 );
VME.LED_MB_VB << LEDpwrVB.CATHODE( 0 );
VME.LED_DSP_VB << LEDpwrVB.CATHODE( 1 );
"LED_GND" << LEDpwrVA5.CATHODE( 0 );
VME.LED_DSP_VA << LEDpwrVA5.CATHODE( 1 );
VME.LED_HPU0 << LEDhpu.CATHODE( 0 );
VME.LED_HPU1 << LEDhpu.CATHODE( 1 );
VME.LED_VME0 << LEDvme.CATHODE( 0 );
VME.LED_VME1 << LEDvme.CATHODE( 1 );
merge( GND, Switches[ 0 ].A );
merge( GND, Switches[ 1 ].A );
merge( GND, Switches[ 2 ].A );
VME.DIPSW0_ << Switches[ 0 ].B;
VME.DIPSW1_ << Switches[ 1 ].B;
VME.DIPSW2_ << Switches[ 2 ].B;
}
};
#endif