Coolquest, Inc. | Home | Products | Support | About | Contact | |||
|
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 |