Coolquest, Inc. Home Products Support About Contact
cbold_logo_gif C++BOLD Example Design: CRB 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 _CRB_PowerH_
#define _CRB_PowerH_
 
#include "headers.h"
 
// The backplane subsystem supplies decoupling capacitors for the points of power entry onto the backplane.
// Additional decoupling capacitors are provided in the other subsystems, i.e., in CM_TimSlot and CM_RodSlot
 
// CM_Power:
 
 
class CM_Power : public TModule {    // Power subsystem
public:
// ***** member bundles ***** //
 
// ***** member ports ***** //
 
  port VCC5;     // 5.0 V
  port VCC3;     // 3.3 V
  port GND;
 
// ***** member modules and parts ***** //
 
  CP_HEADER10X2CS   AuxPower;         // auxiliary power connector:  9A max per voltage  <<< Label this header on the silkscreen:  "AUX Power"
 
  CP_CHIP_LED_RED   LedVcc5[ 2 ];     // power indication LED's, one per supply per side (front/back)
  CP_CHIP_LED_GRN   LedVcc3[ 2 ];
  CP_R220           Rled5[   2 ];     // resistors for LED's
  CP_R110           Rled3[   2 ];
 
 
  enum {                          // number of power and ground bugs
         v33_bug_count = 4,       // >>> place one decoupling capacitor near each power bug
         v50_bug_count = 4,       // >>> place one decoupling capacitor near each power bug
         gnd_bug_count = 8 };
 
 
  CP_POWER_BUG_10    V3_Bugs[ v33_bug_count ];     // for VCC3 (3.3V)
  CP_POWER_BUG_10    V5_Bugs[ v50_bug_count ];     // for VCC5 (5.0V)
  CP_POWER_BUG_10    GndBugs[ gnd_bug_count ];     // for GND  (0.0V)
 
  // decoupling
  enum {
         v3_cdc_count =  v33_bug_count + 0,
         v5_cdc_count =  v50_bug_count + 0 };
  CP_CDC_POS  V3_CDC[ v3_cdc_count ];    // ceramic decoupling for backplane 3.3V
  CP_CDC_POS  V5_CDC[ v5_cdc_count ];    // ceramic decoupling for backplane 5.0V
 
 
  virtual void Register() {
// bundles
 
// ports
    reg( VCC5 );
    reg( VCC3 );
    reg( GND );
 
// parts and modules
    reg( AuxPower    );
    rega( LedVcc5, 2 );
    rega( LedVcc3, 2 );
    rega( Rled5,   2 );
    rega( Rled3,   2 );
 
    rega( V3_Bugs, v33_bug_count );
    rega( V5_Bugs, v50_bug_count );
    rega( GndBugs, gnd_bug_count );
 
    rega( V3_CDC, v3_cdc_count );
    rega( V5_CDC, v5_cdc_count );
  }
 
  virtual void Connect() {
    wireall( GND );
 
// decoupling:
    for ( int i = 0; i < v3_cdc_count; ++ i )  VCC3  <<  V3_CDC[ i ].POS;
    for ( int i = 0; i < v5_cdc_count; ++ i )  VCC5  <<  V5_CDC[ i ].POS;
 
// power bugs:
    for ( int i = 0; i < v33_bug_count; ++ i ) {  VCC3 ^ V3_Bugs[ i ]; }
    for ( int i = 0; i < v50_bug_count; ++ i ) {  VCC5 ^ V5_Bugs[ i ]; }
    for ( int i = 0; i < gnd_bug_count; ++ i ) {  GND  ^ GndBugs[ i ]; }
 
                                                // the installed connector may be either a 10x1 x 3-amp or 10x2 x 1-amp connector
// aux power connector:                         //  cols    1 row x 3A/pin     2 row x 1A/pin
    merge( VCC5,       AuxPower.P(  6,  1 ) );  //     3                9A                 6A
    merge( GND,        AuxPower.P( 16,  7 ) );  //     5               15A                10A
    merge( VCC3,       AuxPower.P( 20, 17 ) );  //     2                6A                 4A
 
// LED's:
    int i = 0;
    VCC3           ^ Rled3[ 0 ] ^  "LED_V3_0"     <<  LedVcc3[ 0 ].ANODE;  // <<< place one Vcc3 LED on the front of the backplane, one on the back
    VCC3           ^ Rled3[ 1 ] ^  "LED_V3_1"     <<  LedVcc3[ 1 ].ANODE;
 
    VCC5           ^ Rled5[ 0 ] ^  "LED_V5_0"     <<  LedVcc5[ 0 ].ANODE;  // <<< place one Vcc5 LED on the front of the backplane, one on the back
    VCC5           ^ Rled5[ 1 ] ^  "LED_V5_1"     <<  LedVcc5[ 1 ].ANODE;  // <<< place all Rled's on back of backplane
 
 
    GND        <<   LedVcc3[ 0 ].CATHODE;    // <<< for best solderability, trace between LED's and ground via should be >= 1 inch
    GND        <<   LedVcc3[ 1 ].CATHODE;
    GND        <<   LedVcc5[ 0 ].CATHODE;
    GND        <<   LedVcc5[ 1 ].CATHODE;
 
  }
};
 
#endif

 

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

Legal Copyright © 2007 by Coolquest, Inc. Contact