Coolquest, Inc. Home Products Support About Contact
cbold_logo_gif C++BOLD Example Design: TTM 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 _TTM_FoXcvrH_
#define _TTM_FoXcvrH_
 
#include "hfbr.h"   // Agilent HFBR parts
 
// The class in this files encapsulate the Agilent HFBR fiber optic transceiver.
// Decoupling and other miscellaneous components are provided.
 
 
class CM_WrappedXcvr : public TModule {  // wrapper for HDMP_1032 serializer (transmitter)
 
  bool   UseXmtr;     // Transmitter's associated ports, parts, and connections are implemented only if UseXmtr is true (the default)
 
public:
  void UseTransmitter( bool aUseXmtr = true ) { UseXmtr = aUseXmtr; }    // to not use transmitter, user must call UseTransmitter( false ) before registering the module
  CM_WrappedXcvr()                             { UseXmtr = true;     }
 
// ***** member bundles ***** //
 
// ***** member ports ***** //
  port VCC;     // 3.3V
  port GND;
 
  port RD_N;    // receiver data out, AC coupled within Xcvr
  port RD_P;
  port SD;      // signal detect
 
  port TD_N;    // transmitter data in, AC coupled within Xcvr
  port TD_P;
 
 
// ***** member parts ***** //
 
  CP_HFBR_53A5V  Xcvr;
 
  // decoupling and power filtering
 
  CP_TDC_POS    VCC_TDC;     // tantalum decoupling, on VCC
  CP_CDC_POS    VCC_CDCR;    // ceramic  decoupling, on VCC, for receiver
  CP_CDC_POS    VCC_CDCT;    // ceramic  decoupling, on VCC, for transmitter
 
  CP_CDC_POS    VCCR_CDC;                  // power filter capacitors
  CP_TDC_POS    VCCR_TDC;
  CP_CDC_POS    VCCT_CDC;
 
  CP_L1UH       VCCR_Inductor;
  CP_L1UH       VCCT_Inductor;             // power filter inductors
 
  virtual void Register() {
// bundles
 
// ports
    reg(  VCC );
    reg(  GND );
 
    reg(  RD_N );
    reg(  RD_P );
    reg(  SD );
 
 
// parts
    reg(  Xcvr );
 
    reg(  VCC_TDC  );
    reg(  VCC_CDCR );
 
    reg(  VCCR_CDC );
    reg(  VCCR_TDC );
    reg(  VCCR_Inductor );
 
 
    if ( UseXmtr ) {       // register only if the user wants to use the transmitter
// ports
      reg(  TD_N );
      reg(  TD_P );
// parts
      reg(  VCC_CDCT );
      reg(  VCCT_CDC );
      reg(  VCCT_Inductor );
    }
  }
 
  virtual void Connect() {
    "/NC" << Xcvr.NIC;   // mechanical support pins
 
// receiver, associated parts, and common parts
    wire( RD_N );
    wire( RD_P );
    wire( SD   );
 
    wireall( GND );
    GND   << Xcvr.VEER;
 
    VCC   << VCC_TDC.POS;
    VCC   << VCC_CDCR.POS;
 
    VCC ^ VCCR_Inductor ^  "VCCR" << Xcvr.VCCR << VCCR_CDC.POS   // VCCR via inductors, as per data sheet
                                               << VCCR_TDC.POS;
 
// transmitter and associated parts
 
    if ( UseXmtr ) {       // if the user wants to use the transmitter
      wire( TD_N );
      wire( TD_P );
      GND  << Xcvr.VEET;
 
      VCC  << VCC_CDCT.POS;
      VCC  ^ VCCT_Inductor ^  "VCCT" << Xcvr.VCCT << VCCT_CDC.POS;   // VCCT via inductors, as per data sheet
    }
    else {
      "/NC"  <<  Xcvr.TD_N;
      "/NC"  <<  Xcvr.TD_P;
      "/NC"  <<  Xcvr.VCCT;
      "/NC"  <<  Xcvr.VEET;
    }
  }
};
 
#endif

 

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

Legal Copyright © 2007 by Coolquest, Inc. Contact