Coolquest, Inc. Home Products Support About Contact
cbold_logo_gif C++BOLD Example Design: IROD cbold_logo_gif

Design Home <<  File View  >> Class View Output (partial) Parts Library Examples Home

 

// THIS FILE IS IN THE PUBLIC DOMAIN.
// IT IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
#ifndef _HostPLDH_
#define _HostPLDH_
 
#include "xc95144xl_100.h"
 
// Wrapper for Host CPLD
class CM_HostPLD : public TModule {
public:
 
// ***** member bundles ***** //
  CB_JTAG JT;
 
// ***** member ports ***** //
  port VCC;  //Power and ground
  port GND;
 
  port BDF_OE_N;  //XCVR Output Enables
  port BDG_OE_N;
  port BDH_OE_N;
 
  port BDF_DIR;  //XCVR Direction
  port BDG_DIR;
  port BDH_DIR;
 
  port ARE_N;  //Asynchronous Signals from DSP
  port AWE_N;
  port AOE_N;
  port ARDY;
 
  port BA;  //Address + Data Bus from HPU
  port BDH;
 
  port CE0_N;  //Chip Enables from DSP (all but CE3, which is used for the DRAM on the HPU)
  port CE1_N;
  port CE2_N;
                  // FlashPld, flash memory control signals from host
  port HFL_A;     // address (selects between FlashPld internal registers and flash memory
  port HFL_OE_N;  // read strobe
  port HFL_WE_N;  // write strobe
  port HFL_SPARE; // not currently used
 
  port DP_OE_N;   //Dual-Port RAM Control Signals
  port DP_CE_N;
  port DP_WE_N;
  port DP_INT_N;
  port DP_BUSY_N;
 
  port HINT;         //Host->VME Interrupts
  port HINTREQ;
  port HINTPEND;
 
  port VFIFO_WEN_N;  //VME Fifo Control Signals
  port VFIFO_WR_CLK;
  port VFIFO_PAF_N;
 
  port HFIFO_RD_CLK;  //Host Fifo Control Signals
  port HFIFO_REN_N;
  port HFIFO_EF_N;
  port HFIFO_OE_N;
  port HFIFO_PAE_N;
 
                  // Read/Write + Data Strobes for TTC + BPI + CG + DX FPGAs and CPLDs
  port WR_N;      // read/write (not a strobe)
  port DX_WR_N;   // for reduced loading on WR_N, logically the same as WR_N, to data exchange subsystem
  port TTC_DS_N;
  port BPI_DS_N;  //6 Data Strobes, 1 per BPI FPGA
  port CG_DS_N;
  port DXFA_DS_N; //Front FPGAs
  port DXFB_DS_N;
  port DXB_DS_N;  //Back FPGA
 
  port ASEL;         // selects for power measurement analog mux
 
  port SN_DATA;      // serial number chip data pin
 
  port SOFTRESET_N;
 
// ***** member parts and modules ***** //
  CP_XC95144XL_100 Cpld;
 
 
  virtual void Register() {
// bundles
    reg ( JT );
 
// ports
    reg ( VCC );
    reg ( GND );
 
    reg ( BDF_OE_N );
    reg ( BDG_OE_N );
    reg ( BDH_OE_N );
 
    reg ( BDF_DIR );
    reg ( BDG_DIR );
    reg ( BDH_DIR );
 
    reg ( ARE_N );
    reg ( AWE_N );
    reg ( AOE_N );
    reg ( ARDY );
 
    regb( BA, 21, 14 );
    regb( BDH, 7,  0 );
 
    reg ( CE0_N );
    reg ( CE1_N );
    reg ( CE2_N );
 
    reg ( HFL_A     );
    reg ( HFL_WE_N  );
    reg ( HFL_OE_N  );
    reg ( HFL_SPARE );
 
    reg ( DP_OE_N );
    reg ( DP_CE_N );
    reg ( DP_WE_N );
    reg ( DP_INT_N );
    reg ( DP_BUSY_N );
 
    regb( HINT, 2, 0 );
    reg ( HINTREQ );
    reg ( HINTPEND );
 
    reg ( VFIFO_WEN_N );
    reg ( VFIFO_WR_CLK );
    reg ( VFIFO_PAF_N );
 
    reg ( HFIFO_RD_CLK );
    reg ( HFIFO_REN_N );
    reg ( HFIFO_EF_N );
    reg ( HFIFO_OE_N );
    reg ( HFIFO_PAE_N );
 
    reg ( WR_N );
    reg ( DX_WR_N );
    reg ( TTC_DS_N );
    regb( BPI_DS_N, 5, 0 );  //6 Data Strobes, 1 per BPI FPGA
    reg ( CG_DS_N );
    reg ( DXFA_DS_N );
    reg ( DXFB_DS_N );
    reg ( DXB_DS_N );
 
    regb( ASEL, 3, 0 );
    reg ( SN_DATA    );
    reg ( SOFTRESET_N );
 
// parts and modules
    reg ( Cpld );
  }
 
  virtual void Connect() {
 
    wireall( VCC );
    wireall( GND );
 
    VCC << Cpld.VCCIO;  //VCC and VCCIO on the PLD are the same
 
    //JTAG Signals
    wire ( JT, Cpld );
 
    //!! All Pins temporarily assigned by approximate location of layout estimation !!
    //!! Check before laying out !!
 
    "/NC"  << Cpld.IO1_GTS3;
    "/NC"  << Cpld.IO2_GTS4;
    "/NC"  << Cpld.IO3_GTS1;
    "/NC"  << Cpld.IO4_GTS2;
 
    //EMIF Busses
    BA(14) << Cpld.IO6;
    BA(15) << Cpld.IO7;
    BA(16) << Cpld.IO8;
    BA(17) << Cpld.IO9;
    BA(18) << Cpld.IO10;
    BA(19) << Cpld.IO11;
    BA(20) << Cpld.IO12;
    BA(21) << Cpld.IO13;
 
    BDH(0) << Cpld.IO14;
    BDH(1) << Cpld.IO15;
    BDH(2) << Cpld.IO16;
    BDH(3) << Cpld.IO17;
    BDH(4) << Cpld.IO18;
    BDH(5) << Cpld.IO19;
    BDH(6) << Cpld.IO20;
    BDH(7) << Cpld.IO24;
 
    //Chip Enables
    CE0_N  << Cpld.IO97;
    CE1_N  << Cpld.IO96;
    CE2_N  << Cpld.IO95;
 
    //XCVR Output Enables and Directions
    BDF_OE_N << Cpld.IO94;
    BDG_OE_N << Cpld.IO93;
    BDH_OE_N << Cpld.IO92;
 
    BDF_DIR << Cpld.IO91;
    BDG_DIR << Cpld.IO90;
    BDH_DIR << Cpld.IO89;
 
    //VME FIFO Control
    VFIFO_WEN_N  << Cpld.IO87;
    VFIFO_WR_CLK << Cpld.IO86;  // !! this has series terminators in CM_Host
    VFIFO_PAF_N  << Cpld.IO85;
 
    //Host FIFO Control
    HFIFO_RD_CLK << Cpld.IO82;  // !! this has series terminators in CM_Host
    HFIFO_REN_N  << Cpld.IO81;
    HFIFO_EF_N   << Cpld.IO80;
    HFIFO_OE_N   << Cpld.IO79;
    HFIFO_PAE_N  << Cpld.IO78;
 
    //Dual-Port RAM Control
    DP_OE_N   << Cpld.IO77;
    DP_CE_N   << Cpld.IO76;
    DP_WE_N   << Cpld.IO74;  // !! this has series terminators in CM_Host
    DP_INT_N  << Cpld.IO73;
    DP_BUSY_N << Cpld.IO72;
 
    //Host->VME Interrupts
    HINT(2)  << Cpld.IO71;
    HINT(1)  << Cpld.IO70;
    HINT(0)  << Cpld.IO68;
    HINTREQ  << Cpld.IO67;
    HINTPEND << Cpld.IO66;
 
    HFL_SPARE << Cpld.IO65;
 
    //Flash Memory Control
    HFL_A     << Cpld.IO25;
    HFL_WE_N  << Cpld.IO28;
    HFL_OE_N  << Cpld.IO29;
 
    //Read/Write Direction
    DX_WR_N     << Cpld.IO54;      // fan out WR_N to two pins, one dedicated to Data Exchange subsystem (3 loads)
    WR_N        << Cpld.IO30;      // all others (8 loads)
 
    // Strobes
    BPI_DS_N(0) << Cpld.IO32;  // !! these have series terminators in CM_Host
    BPI_DS_N(1) << Cpld.IO33;
    BPI_DS_N(2) << Cpld.IO34;
    BPI_DS_N(3) << Cpld.IO35;
    BPI_DS_N(4) << Cpld.IO36;
    BPI_DS_N(5) << Cpld.IO37;
    TTC_DS_N    << Cpld.IO39;
    CG_DS_N     << Cpld.IO40;
    DXFA_DS_N   << Cpld.IO41;
    DXFB_DS_N   << Cpld.IO42;
    DXB_DS_N    << Cpld.IO43;
 
    ASEL( 0 )   <<  Cpld.IO46;   // selects for power measurement mux, here because few spare pins elsewhere
    ASEL( 1 )   <<  Cpld.IO49;
    ASEL( 2 )   <<  Cpld.IO50;
    ASEL( 3 )   <<  Cpld.IO52;
 
    SN_DATA     <<  Cpld.IO53;
 
    SOFTRESET_N << Cpld.IO99_GSR;
 
    "/NC"  <<  Cpld.IO22_GCK1;
    "/NC"  <<  Cpld.IO23_GCK2;
 
    // Asynchronous EMIF Signals
    AWE_N  <<  Cpld.IO27_GCK3;
    ARE_N  <<  Cpld.IO55;
    AOE_N  <<  Cpld.IO56;
    ARDY   <<  Cpld.IO58;
 
    "/NC"  <<  Cpld.IO59;
    "/NC"  <<  Cpld.IO60;
    "/NC"  <<  Cpld.IO61;
    "/NC"  <<  Cpld.IO63;
    "/NC"  <<  Cpld.IO64;
  }
};
 
#endif

 

Design Home <<  File View  >> Class View Output (partial) Parts Library Examples Home

Legal Copyright © 2007 by Coolquest, Inc. Contact