#ifndef _T_VMEBuffersH_
#define _T_VMEBuffersH_
#include "sn74abte16245.h"
#include "74f07.h"
#include "rod_clones.h"
class CM_VMEBuffers : public TModule {
public:
port D;
port VMED;
port DBUFOE_N;
port DBUFDIR;
port A;
port VMEA;
port ABUFDIR;
port ABUFOE_N;
port IBUFOE_N;
port VPC;
port DTACK_N;
port VME_DTACK_N;
port BERR_N;
port VME_BERR_N;
port IACKOUT_N;
port VME_IACKOUT_N;
port IRQ;
port VME_IRQ;
port VCC5;
port GND;
port AM;
port VME_AM;
port AS_N;
port VME_AS_N;
port DS0_N;
port VME_DS0_N;
port DS1_N;
port VME_DS1_N;
port WRITE_N;
port VME_WRITE_N;
port SYSRESET_N;
port VME_SYSRESET_N;
port IACK_N;
port VME_IACK_N;
port IACKIN_N;
port VME_IACKIN_N;
CP_SN74ABTE16245 DataBuffer15_00;
CP_SN74ABTE16245 DataBuffer31_16;
CP_SN74ABTE16245 AddrBuffer15_01;
CP_SN74ABTE16245 AddrBuffer23_16;
CP_SN74ABTE16245 AddrBuffer31_24;
CP_74F07 CntlBuffer1;
CP_74F07 CntlBuffer2;
CP_SN74ABTE16245 InptBuffer;
CP_R360 VPC_Res_AddrBuf;
CP_R360 VPC_Res_DataBuf;
CP_R360 VPC_Res_InptBuf;
CP_R0 OE_Res_AddrBuf;
CP_R0 OE_Res_DataBuf;
CP_R0 OE_Res_InptBuf;
CP_R0 Pullup_DIR_InptBuf;
CP_R0 Pulldown_DIR_InptBuf;
CP_R4_7K Pullup_OE_AddrBuf;
CP_R4_7K Pullup_OE_DataBuf;
CP_R4_7K Pullup_OE_InptBuf;
CP_R110 Pullup_IACKOUT;
CP_EXB2HV222JV Pullup_CtrlBuf1;
CP_EXB2HV222JV Pullup_CtrlBuf2;
virtual void Register() {
regb( D, 31, 0 );
regb( VMED, 31, 0 );
reg ( DBUFOE_N );
reg ( DBUFDIR );
regb( A, 31, 0 );
regb( VMEA, 31, 0 );
reg ( ABUFDIR );
reg ( ABUFOE_N );
reg ( IBUFOE_N );
reg ( VPC );
reg ( DTACK_N );
reg ( VME_DTACK_N );
reg ( BERR_N );
reg ( VME_BERR_N );
reg ( IACKOUT_N );
reg ( VME_IACKOUT_N );
regb( IRQ, 7, 1 );
regb( VME_IRQ, 7, 1 );
reg ( VCC5 );
reg ( GND );
regb( AM, 5, 0 );
regb( VME_AM, 5, 0 );
reg ( AS_N );
reg ( VME_AS_N );
reg ( DS0_N );
reg ( VME_DS0_N );
reg ( DS1_N );
reg ( VME_DS1_N );
reg ( WRITE_N );
reg ( VME_WRITE_N );
reg ( SYSRESET_N );
reg ( VME_SYSRESET_N );
reg ( IACK_N );
reg ( VME_IACK_N );
reg ( IACKIN_N );
reg ( VME_IACKIN_N );
reg( DataBuffer15_00 );
reg( DataBuffer31_16 );
reg( AddrBuffer15_01 );
reg( AddrBuffer23_16 );
reg( AddrBuffer31_24 );
reg( CntlBuffer1 );
reg( CntlBuffer2 );
reg( InptBuffer );
reg( VPC_Res_AddrBuf );
reg( VPC_Res_DataBuf );
reg( VPC_Res_InptBuf );
reg( OE_Res_AddrBuf );
reg( OE_Res_DataBuf );
reg( OE_Res_InptBuf );
reg( Pullup_DIR_InptBuf );
reg( Pulldown_DIR_InptBuf );
reg( Pullup_OE_AddrBuf );
reg( Pullup_OE_DataBuf );
reg( Pullup_OE_InptBuf );
reg( Pullup_IACKOUT );
reg( Pullup_CtrlBuf1 );
reg( Pullup_CtrlBuf2 );
}
virtual void Connect() {
D( 15, 0 ) << DataBuffer15_00.B;
D( 31, 16 ) << DataBuffer31_16.B;
VMED( 15, 0 ) << DataBuffer15_00.A;
VMED( 31, 16 ) << DataBuffer31_16.A;
A( 0 ) << AddrBuffer23_16.B( 8 );
VMEA( 0 ) << AddrBuffer23_16.A( 8 );
A( 15, 1 ) << AddrBuffer15_01.B( 0, 14 );
A( 23, 16 ) << AddrBuffer23_16.B( 0, 7 );
A( 31, 24 ) << AddrBuffer31_24.B( 7, 0 );
VMEA( 15, 1 ) << AddrBuffer15_01.A( 0, 14 );
VMEA( 23, 16 ) << AddrBuffer23_16.A( 0, 7 );
VMEA( 31, 24 ) << AddrBuffer31_24.A( 7, 0);
DBUFOE_N << DataBuffer15_00.OE_N << DataBuffer31_16.OE_N;
ABUFOE_N << AddrBuffer15_01.OE_N << AddrBuffer23_16.OE_N << AddrBuffer31_24.OE_N;
IBUFOE_N << InptBuffer.OE_N;
DBUFDIR << DataBuffer15_00.DIR << DataBuffer31_16.DIR;
ABUFDIR << AddrBuffer15_01.DIR << AddrBuffer23_16.DIR << AddrBuffer31_24.DIR;
"IBUFDIR" << InptBuffer.DIR;
GND ^ Pulldown_DIR_InptBuf ^ InptBuffer.DIR;
VCC5 ^ Pullup_DIR_InptBuf ^ InptBuffer.DIR;
VPC ^ VPC_Res_AddrBuf ^ "OE_N_BIAS_A" << AddrBuffer15_01.VCCBIAS << AddrBuffer23_16.VCCBIAS << AddrBuffer31_24.VCCBIAS;
VPC ^ VPC_Res_DataBuf ^ "OE_N_BIAS_D" << DataBuffer15_00.VCCBIAS << DataBuffer31_16.VCCBIAS;
VPC ^ VPC_Res_InptBuf ^ "OE_N_BIAS_C" << InptBuffer.VCCBIAS;
"OE_N_BIAS_A" ^ OE_Res_AddrBuf ^ ABUFOE_N;
"OE_N_BIAS_D" ^ OE_Res_DataBuf ^ DBUFOE_N;
"OE_N_BIAS_C" ^ OE_Res_InptBuf ^ GND;
ABUFOE_N ^ Pullup_OE_AddrBuf ^ VCC5;
DBUFOE_N ^ Pullup_OE_DataBuf ^ VCC5;
IBUFOE_N ^ Pullup_OE_InptBuf ^ VCC5;
merge( VCC5, Pullup_CtrlBuf1.A );
merge( VCC5, Pullup_CtrlBuf2.A );
merge( "/NC", Pullup_CtrlBuf1.B( 7, 6 ) );
merge( "/NC", Pullup_CtrlBuf2.B( 7, 6 ) );
"UNUSED" << CntlBuffer1.A( 0 ) << Pullup_CtrlBuf1.B( 0 );
BERR_N << CntlBuffer1.A( 5 ) << Pullup_CtrlBuf1.B( 1 );
DTACK_N << CntlBuffer1.A( 1 ) << Pullup_CtrlBuf1.B( 2 );
IACKOUT_N << CntlBuffer1.A( 4 ) << Pullup_CtrlBuf1.B( 3 );
IRQ( 7 ) << CntlBuffer1.A( 2 ) << Pullup_CtrlBuf1.B( 4 );
IRQ( 6 ) << CntlBuffer1.A( 3 ) << Pullup_CtrlBuf1.B( 5 );
IRQ( 5 ) << CntlBuffer2.A( 0 ) << Pullup_CtrlBuf2.B( 0 );
IRQ( 4 ) << CntlBuffer2.A( 5 ) << Pullup_CtrlBuf2.B( 1 );
IRQ( 3 ) << CntlBuffer2.A( 1 ) << Pullup_CtrlBuf2.B( 2 );
IRQ( 2 ) << CntlBuffer2.A( 4 ) << Pullup_CtrlBuf2.B( 3 );
IRQ( 1 ) << CntlBuffer2.A( 2 ) << Pullup_CtrlBuf2.B( 4 );
"UNUSED_RETRY" << CntlBuffer2.A( 3 ) << Pullup_CtrlBuf2.B( 5 );
"/NC" << CntlBuffer1.Y( 0 );
VME_BERR_N << CntlBuffer1.Y( 5 );
VME_DTACK_N << CntlBuffer1.Y( 1 );
VME_IACKOUT_N << CntlBuffer1.Y( 4 ) ^ Pullup_IACKOUT ^ VCC5;
VME_IRQ( 7 ) << CntlBuffer1.Y( 2 );
VME_IRQ( 6 ) << CntlBuffer1.Y( 3 );
VME_IRQ( 5 ) << CntlBuffer2.Y( 0 );
VME_IRQ( 4 ) << CntlBuffer2.Y( 5 );
VME_IRQ( 3 ) << CntlBuffer2.Y( 1 );
VME_IRQ( 2 ) << CntlBuffer2.Y( 4 );
VME_IRQ( 1 ) << CntlBuffer2.Y( 2 );
"/NC" << CntlBuffer2.Y( 3 );
SYSRESET_N << InptBuffer.B( 0 );
DS1_N << InptBuffer.B( 1 );
DS0_N << InptBuffer.B( 2 );
AM( 5 ) << InptBuffer.B( 3 );
WRITE_N << InptBuffer.B( 4 );
AM( 0 ) << InptBuffer.B( 5 );
AM( 1 ) << InptBuffer.B( 6 );
AM( 2 ) << InptBuffer.B( 7 );
AS_N << InptBuffer.B( 8 );
AM( 3 ) << InptBuffer.B( 9 );
IACK_N << InptBuffer.B( 10 );
IACKIN_N << InptBuffer.B( 11 );
AM( 4 ) << InptBuffer.B( 12 );
VME_SYSRESET_N << InptBuffer.A( 0 );
VME_DS1_N << InptBuffer.A( 1 );
VME_DS0_N << InptBuffer.A( 2 );
VME_AM( 5 ) << InptBuffer.A( 3 );
VME_WRITE_N << InptBuffer.A( 4 );
VME_AM( 0 ) << InptBuffer.A( 5 );
VME_AM( 1 ) << InptBuffer.A( 6 );
VME_AM( 2 ) << InptBuffer.A( 7 );
VME_AS_N << InptBuffer.A( 8 );
VME_AM( 3 ) << InptBuffer.A( 9 );
VME_IACK_N << InptBuffer.A( 10 );
VME_IACKIN_N << InptBuffer.A( 11 );
VME_AM( 4 ) << InptBuffer.A( 12 );
"UNUSED_ADDR_15_01" << AddrBuffer15_01.A( 15) << AddrBuffer15_01.B( 15);
"UNUSED_ADDR_23_16_" << AddrBuffer23_16.A(15, 9) << AddrBuffer23_16.B(15, 9);
"UNUSED_ADDR_31_24_" << AddrBuffer31_24.A(15, 8) << AddrBuffer31_24.B(15, 8);
"UNUSED_CTRL_15_13_" << InptBuffer.A( 15, 13) << InptBuffer.B(15, 13);
wireall( VCC5 );
wireall( GND );
}
};
#endif