#ifndef _DataExchangeH_
#define _DataExchangeH_
#include "dxf_fpga.h"
#include "dxb_fpga.h"
#include "std_fifo.h"
class CB_Back_DX : public TBundle {
public:
port DG;
virtual void Register() {
regb( DG, 56, 0 );
}
};
class CB_Half_DX : public TBundle {
public:
port DXD;
port DXC;
virtual void Register() {
regb( DXD, 31, 0 );
regb( DXC, 9, 0 );
}
};
class CB_Host_DX : public TBundle {
public:
port BDH;
port BDF;
port A;
port DXF_STB_N;
port DXB_STB_N;
port WR_N;
port HFIFO_OE_N;
port HFIFO_REN_N;
port HFIFO_RD_CLK;
port HFIFO_EF_N;
port HFIFO_PAE_N;
port DXF_HG;
port DXB_HG;
virtual void Register() {
regb( BDH, 31, 0 );
regb( BDF, 31, 0 );
regb( A, 3, 0 );
regb( DXF_STB_N, 1, 0 );
reg( DXB_STB_N );
reg( WR_N );
reg( HFIFO_OE_N );
reg( HFIFO_REN_N );
reg( HFIFO_RD_CLK );
reg( HFIFO_EF_N );
reg( HFIFO_PAE_N );
regb( DXF_HG, 3, 0 );
regb( DXB_HG, 3, 0 );
}
};
class CM_DataExchange : public TModule {
public:
CB_Back_DX BK;
CB_DX_CG CG;
CB_Half_DX A;
CB_Half_DX B;
CB_Host_DX H;
CB_DX_JT JT;
port MB_VCC;
port MB_VB;
port GND;
CM_DXF_FPGA DXF_FPGA_A;
CM_DXF_FPGA DXF_FPGA_B;
CM_DXB_FPGA DXB_FPGA;
CM_STD_FIFO HostFIFO;
CP_R360 PullupDXF_HG[ 4 ];
CP_R360 PullupDXC_A9;
CP_R360 PullupDXC_A8;
CP_R360 PullupDXC_A7;
CP_R360 PullupDXC_A6;
CP_R360 PullupDXC_B9;
CP_R360 PullupDXC_B8;
CP_R360 PullupDXC_B7;
CP_R360 PullupDXC_B6;
CP_R4_7K PullupMRS;
CP_R4_7K PullupWEN;
CP_R4_7K PullupLD;
port DXF_HG;
virtual void Register() {
reg( BK );
reg( CG );
reg( A );
reg( B );
reg( H );
reg( JT );
reg( MB_VCC );
reg( MB_VB );
reg( GND );
reg( DXF_FPGA_A );
reg( DXF_FPGA_B );
reg( DXB_FPGA );
reg( HostFIFO );
rega( PullupDXF_HG, 4 );
reg( PullupDXC_A9 );
reg( PullupDXC_A8 );
reg( PullupDXC_A7 );
reg( PullupDXC_A6 );
reg( PullupDXC_B9 );
reg( PullupDXC_B8 );
reg( PullupDXC_B7 );
reg( PullupDXC_B6 );
reg( PullupMRS );
reg( PullupWEN );
reg( PullupLD );
}
virtual void Connect() {
wireall( MB_VCC, "VCC" );
wireall( MB_VB, "VB" );
wireall( GND );
JT.DXB_FPGA << DXB_FPGA.JTAG_CONF;
JT.DXF_FPGA_A << DXF_FPGA_A.JTAG_CONF;
JT.DXF_FPGA_B << DXF_FPGA_B.JTAG_CONF;
GND << DXF_FPGA_A.STRAP;
MB_VCC << DXF_FPGA_B.STRAP;
wire2( "INTER_DXF" );
"INTER_DX" << DXF_FPGA_A.INTER_DX( 33, 0 );
"INTER_DX" << DXF_FPGA_B.INTER_DX( 33, 0 );
"INTER_DX" << DXB_FPGA.INTER_DX;
HostFIFO.D( 31, 0 ) << DXB_FPGA.INTER_DX( 31, 0);
"INTER_DX_A" << DXF_FPGA_A.INTER_DX( 35, 34 );
"INTER_DX_A" << DXB_FPGA.INTER_DX_A;
"INTER_DX_B" << DXF_FPGA_B.INTER_DX( 35, 34 );
"INTER_DX_B" << DXB_FPGA.INTER_DX_B;
int k = 0;
CG.DX_CLK( 0 ) << DXF_FPGA_A.DX_CLK;
CG.DXINT_CLK( k ) << DXF_FPGA_A.DXINT_CLK;
CG.DCLK( k ) << DXF_FPGA_A.DCLK;
wire( A, DXF_FPGA_A );
wire( H, DXF_FPGA_A );
H.BDH << DXF_FPGA_A.D;
H.DXF_STB_N( k ) << DXF_FPGA_A.STB_N;
k ++;
CG.DX_CLK( 0 ) << DXF_FPGA_B.DX_CLK;
CG.DXINT_CLK( k ) << DXF_FPGA_B.DXINT_CLK;
CG.DCLK( k ) << DXF_FPGA_B.DCLK;
wire( B, DXF_FPGA_B );
wire( H, DXF_FPGA_B );
H.BDH << DXF_FPGA_B.D;
H.DXF_STB_N( k ) << DXF_FPGA_B.STB_N;
for ( int i = 0; i < 4; ++ i ) {
H.DXF_HG( i ) ^ PullupDXF_HG[ i ] ^ MB_VCC;
}
DXF_FPGA_A.DXC( 9 ) ^ PullupDXC_A9 ^ MB_VCC;
DXF_FPGA_A.DXC( 8 ) ^ PullupDXC_A8 ^ MB_VCC;
DXF_FPGA_A.DXC( 7 ) ^ PullupDXC_A7 ^ MB_VCC;
DXF_FPGA_A.DXC( 6 ) ^ PullupDXC_A6 ^ MB_VCC;
DXF_FPGA_B.DXC( 9 ) ^ PullupDXC_B9 ^ MB_VCC;
DXF_FPGA_B.DXC( 8 ) ^ PullupDXC_B8 ^ MB_VCC;
DXF_FPGA_B.DXC( 7 ) ^ PullupDXC_B7 ^ MB_VCC;
DXF_FPGA_B.DXC( 6 ) ^ PullupDXC_B6 ^ MB_VCC;
k++;
CG.DX_CLK( 1 ) << DXB_FPGA.DX_CLK;
CG.DXINT_CLK( k ) << DXB_FPGA.DXINT_CLK;
CG.DCLK( k ) << DXB_FPGA.DCLK;
wire( H, DXB_FPGA );
H.BDH << DXB_FPGA.D;
H.DXB_STB_N << DXB_FPGA.STB_N;
BK.DG << DXB_FPGA.DG;
k++;
CG.DXINT_CLK( k ) << HostFIFO.WR_CLK;
H.BDF << HostFIFO.Q;
H.HFIFO_OE_N << HostFIFO.OE_N;
H.HFIFO_REN_N << HostFIFO.REN_N;
H.HFIFO_RD_CLK << HostFIFO.RD_CLK;
H.HFIFO_EF_N << HostFIFO.EF_N;
H.HFIFO_PAE_N << HostFIFO.PAE_N;
"HFIFO_MRS_N" << HostFIFO.MRS_N
<< DXF_FPGA_A.HF_MRS_N
<< DXF_FPGA_B.HF_MRS_N
^ PullupMRS ^ MB_VCC;
"HFIFO_WEN_N" << HostFIFO.WEN_N
<< DXF_FPGA_A.HF_WEN_N
<< DXF_FPGA_B.HF_WEN_N
^ PullupWEN ^ MB_VCC;
"HFIFO_LD_N" << HostFIFO.LD_N
<< DXF_FPGA_A.HF_LD_N
<< DXF_FPGA_B.HF_LD_N
^ PullupLD ^ MB_VCC;
"HFIFO_PAF_N" << HostFIFO.PAF_N
<< DXF_FPGA_A.HF_PAF_N
<< DXF_FPGA_B.HF_PAF_N;
}
};
#endif