Patent Description:
Clustered computing systems have become popular as demand for data storage, data processing, and communication handling has increased. Data centers typically include large rack-mounted and network-coupled data storage and data processing systems. Many times, data centers and associated computing equipment can be employed to execute jobs for multiple concurrent users or applications. The jobs include execution jobs which can utilize resources of a data center to process data using central processing units (CPUs) or graphics processing units (GPUs). For example, GPU-based processing has increased in popularity for use in artificial intelligence (AI) and machine learning regimes. In these regimes, computing systems, such as blade servers, can include one or more GPUs along with associated CPUs for processing of large data sets.

Processing elements such as GPUs may be provided as cards which can be inserted into slots of a motherboard. Processing systems provided by data centers may have many cards slotted into a live system. Power may be provided to the cards via the slots directly, but the amount of power available to a card through the slot may be limited (e.g., 75W). Cards that may consume large amounts of power, such as some Peripheral Component Interconnect Express (PCIe) GPU cards may require an auxiliary connector to provide additional power beyond the 75W provided by the PCIe connector (e.g., in a x16 slot), such as an additional +<NUM> watts. The auxiliary connector may be a cable or power supply that plugs into a card separately from the PCIe slot. <CIT> discloses an interface of a device used to couple to another device, the interface includes a set of data pins to support high speed data communication on an interconnect link between the devices based on an interconnect protocol. <CIT> discloses a method, system and computer program product provided for implementing sideband control structure for Peripheral Component Interconnect Express add-in cards, or cable cards, that utilize cables to connect to input/output expansion enclosures in a computer system. <CIT> discloses a computing device including an auxiliary power controller connected to the expansion slot to supply auxiliary power to the expansion slot intermittently based on instructions from baseboard management controllers. <CIT> discloses multi-server sleds that include multiple card slots for receiving modular cards. Pairs of card slots can be connected to one another via a Peripheral Component Interconnect Express bus. <CIT> discloses a switch matrix providing a configurable, protocol agnostic, packet switching core, the switch matrix providing a non-blocking switch connecting a configurable number of ports together.

Designs for enabling safe insertion and removal of computing components from a live motherboard are presented herein. In one example, a method includes maintaining a slot power connection and an auxiliary power connection for a peripheral card slot in a powered-off state, and sensing insertion of a peripheral card into the peripheral card slot and responsive to sensing the insertion, detecting whether the auxiliary power connection is employed by the peripheral card. Based on detecting the auxiliary power connection is employed by the peripheral card, the method further includes applying current limits selected for the peripheral card to the slot power connection and the auxiliary power connection and concurrently enabling the slot power connection and the auxiliary power connection for the peripheral card. Based on detecting the auxiliary power connection is not employed by the peripheral card, the method further includes applying a current limit selected for the peripheral card to the slot power connection and enabling only the slot power connection for the peripheral card.

In another example, an apparatus includes a peripheral card slot to receive a peripheral card, and a power control circuit. The power control circuit is configured to maintain a slot power connection and an auxiliary power connection for the peripheral card slot in a powered-off state, and sense insertion of the peripheral card into the peripheral card slot and responsive to sensing the insertion, detect whether the auxiliary power connection is employed by the peripheral card. Based on detecting the auxiliary power connection is employed by the peripheral card, the power control circuit is configured to apply current limits selected for the peripheral card to the slot power connection and the auxiliary power connection and concurrently enable the slot power connection and the auxiliary power connection for the peripheral card. Based on detecting the auxiliary power connection is not employed by the peripheral card, the power control circuit is configured to apply a current limit selected for the peripheral card to the slot power connection and enable only the slot power connection for the peripheral card.

In another example, an apparatus may comprise a rackmount chassis including a plurality of peripheral card slots, including a first peripheral card slot, a plurality of auxiliary power connectors corresponding to the plurality of peripheral card slots, the plurality of auxiliary power connectors including a first auxiliary power connector, and a power control circuit. The power control circuit is configured to manage power to the plurality of peripheral card slots and the plurality of auxiliary power connectors, including maintain the plurality of peripheral card slots and the plurality of auxiliary power connectors in a power on state, while maintaining the first peripheral card slot and the first auxiliary power connector in a powered off state. The power control circuit is further configured to sense a connection of a peripheral card at both the first peripheral card slot and the first auxiliary power connector, and convert the first peripheral card slot and the first auxiliary power connector to the power on state only when the connection is detected concurrently at both the first peripheral card slot and the first auxiliary power connector.

This Overview is provided to introduce a selection of concepts in a simplified form that are further described below in the Technical Disclosure. It should be understood that this Overview is not intended to identify key features or essential features of the claimed subject matter, nor should it be used to limit the scope of the claimed subject matter.

While several embodiments are described in connection with these drawings, the disclosure is not limited to the embodiments disclosed herein.

Data processing for large data sets, such as via server computing systems in data centers, has become common. In these regimes, computing systems can include one or more GPUs along with associated CPUs for processing of large data sets. Processing elements such as GPUs may be provided as cards which can be inserted into slots of a motherboard. Processing systems provided by data centers may have many cards slotted into a live system. Some cards may employ power received through a peripheral card slot as well as supplemental power, such as from an auxiliary power cable.

If one of the power connections is provided to a card before the other (e.g., the auxiliary cable before the slot, or vice-versa) when inserting a card into a live system, the card may be damaged. Similarly, removing one of the power sources from a card before the other when removing the card from a live system may cause damage to the card. Damage to a card may include burning out overloaded power circuity, power finding sneak paths through integrated circuit (IC) power structures, short circuits inadvertently encountered by physical removal, or similar problems. Damage may be permanent damage, or temporary problems until a full power cycle of the card is performed, or until the card is reset. Furthermore, connecting or removing cards with multiple power connections in a live system can cause false indications to the computing system that a card has been inserted or removed when the card is not fully connected or disconnected, leading to errors. Systems and methods are not available for hot plugging power intensive cards without powering down an entire system.

If the system into which a card is being inserted or removed is powered down, then there may be no risk in damaging the card when connecting or removing the power connections. However, powering down an entire system (e.g., a motherboard and all connected cards) to add or remove a card may create unwanted processing interruptions and delays.

The examples herein provide for enhanced systems for safely providing and removing power for computing components having multiple power connections, such as GPUs, in a live, powered-on processing system. The example designs provide a means to guarantee power will only be presented and removed from a component when adequate time or information has been retrieved or passed. Additionally, the example designs allow in-circuit power on/off control to help in troubleshooting and triage processes of recovering from code issues with the host (node) the circuit is attached too. Example systems also provide the ability to reduce wasteful energy expenditure when a component is not in use, and can be turned off (e.g., power may be removed). Example electronic fuse (eFuse or e-fuse) switches enable dynamic power limit controls, enabling the eFuse to control the range of acceptable power provided to a component based on the specific requirements of the component.

These examples can be employed in a rackmount-capable chassis having a circuit, mainboard, or motherboard with a plurality of slots (which may use PCIe or other communication protocols) into which high power draw add-in cards can be inserted, such as GPUs, tensor processing units (TPUs), or other processing cards. Slots of the chassis can be powered down individually and reset, for example to attempt to recover or troubleshoot failed slots or cards without removal. Moreover, individual slots can have associated cards removed or inserted without powering down the entire chassis or mainboard that houses other slots or cards.

As an example, a three-stage debug/reset process can be performed for non-responsive or defective cards in slots. The process may include, (<NUM>) perform a PCIe-initiated reset (e.g., a soft reset) comprising an in-band reset; (<NUM>) perform an out-of-band (e.g., a hard reset); and (<NUM>) perform a power cycle of the slot itself, independent of the other slots in the chassis, to restart the affected card.

Example designs can have an eFuse circuit per voltage rail for each slot/card. Current limits for certain eFuse circuits can be dynamically adjusted according to properties of the card inserted. For example, during insertion of a card, a <NUM>. 3V auxiliary power rail connected to the slot can be initially enabled (and having a fixed-current eFuse set to, e.g., ~350mA). 3V auxiliary power may allow retrieval of vital product data (VPD) for a card from an EEPROM (electrically erasable programmable read-only memory), where the VPD information indicates a card power requirement or current level needed. This indication may be a model number or other card identifier, which may then be cross-checked against a data structure (e.g., a table stored to a memory of the processing system) that indicates empirical power requirement data, or may directly indicate a power or current requirement in watts or amps. From this data, the eFuses for other voltage rails (e.g., 12V PCIe Auxiliary connector and <NUM>. 3V PCIe slot) can be adjusted to provide adequate current for the present card. This dynamic current limit adjustment process can occur before and independently of any PCIe bus-accessed status and configuration operations for the card.

As a first example system, <FIG> is presented. <FIG> is a system diagram illustrating computing system <NUM>. System <NUM> may include power control circuitry <NUM>, one or more PCIe connector slots <NUM>, <NUM>, and <NUM>, one or more PCIe auxiliary power connectors <NUM>, <NUM>, and <NUM>, and PCIe interface circuitry <NUM>. Multiple components of system <NUM> may be included in a single physical device, such as on a circuit board of a rackmount chassis casing, or one or more components may be remotely located and connected via communication interfaces and power lines.

The PCIe interface connectors <NUM>-<NUM> may be peripheral card slots configured to receive and interface with a PCIe card, such as PCIe cards <NUM>, <NUM>, and <NUM>. PCIe slots <NUM>-<NUM> may come in different physical configurations, such as edge connectors, x1, x4, x8, x16, and x32, where the number after the x may indicate how many lanes or pins that PCIe slot has. Slot widths can be selected to support single-wide or double-wide PCIe cards, among other widths, including combinations thereof. While some cards can be wider (e.g., double-wide) with respect to a slot, they may still only couple into a single slot and its associated slot power. The PCIe connectors <NUM>-<NUM> may be configured to provide power to a slotted PCIe card <NUM>-<NUM> through one or more power rails, such as a primary 12V power rail <NUM>, <NUM>, and <NUM>, a primary <NUM>. 3V power rail <NUM>, <NUM>, and <NUM>, and an auxiliary <NUM>. 3V power rail (<NUM>. 3V AUX) <NUM>, <NUM>, and <NUM>. The PCIe connector <NUM>-<NUM> may also be configured to provide data to and receive data from PCIe card <NUM>-<NUM>, for example to provide data to the card <NUM>-<NUM> for processing and to receive processed data results. Data may be communicated to and from the PCI connector <NUM>-<NUM> via data channels or busses <NUM>, <NUM>, and <NUM>, which may communicate with PCIe interface circuitry <NUM>.

PCIe interface circuitry <NUM> may include communication and control circuitry for managing communication among and between components of system <NUM>, as well as communication with components <NUM> that may be a part of or external to system <NUM> over data channel or bus <NUM>. Components <NUM> may include elements such as central processing units (CPUs), network interface cards (NICs), solid state drives (SSDs), field-programmable gate arrays (FPGAs), other computing components, or any combination thereof. In an example, PCIe interface circuitry <NUM> may include one or more components of a communication fabric formed from among a plurality of PCIe switching elements and various control elements. Among these control elements may be a control system or circuit which controls PCIe switch circuitry, provides control access to external agents to the control system and PCIe switch circuitry, and also provides various fabric management functions to compose/decompose logical arrangements of components (e.g., among PCIe cards <NUM>-<NUM> and additional components <NUM>) within the PCIe fabric. In some examples, the PCIe interface circuitry <NUM> may employ Ethernet traffic transported over a PCIe link or other link.

In addition to communication links and buses, PCIe interface circuitry <NUM> can comprise one or more microprocessors and other processing circuitry that retrieves and executes software, such as job interfaces and fabric management software, from an associated storage system (not shown). PCIe interface circuitry <NUM> can be implemented within a single processing device but can also be distributed across multiple processing devices or sub-systems that cooperate in executing program instructions. Examples of PCIe interface circuitry <NUM> may include general purpose central processing units, application specific processors, and logic devices, as well as any other type of processing device, combinations, or variations thereof. In some examples, PCIe interface circuitry <NUM> comprises an Intel® microprocessor, Apple® microprocessor, AMD® microprocessor, ARM® microprocessor, field-programmable gate array (FPGA), application specific integrated circuit (ASIC), application specific processor, or other microprocessor or processing elements.

Peripheral PCIe cards <NUM>-<NUM> may receive power to operate via the PCIe connector slots <NUM>-<NUM>. The PCIe connector slots <NUM>-<NUM> may provide power to the PCIe cards <NUM>-<NUM> via one or more power inputs, such as a 12V power line or rail <NUM>-<NUM>, a <NUM>. 3V power via power line or rail <NUM>-<NUM>, and a <NUM>. 3V auxiliary power line or rail <NUM>-<NUM>. The power rails can be used in any combination to provide power to the PCIe cards <NUM>-<NUM>. However, some PCIe cards <NUM>-<NUM> may require more power to operate than can be provided via the PCIe connector <NUM>-<NUM>. The cards <NUM>-<NUM> may be configured with an additional power connection interface that can connect to a PCIe auxiliary power connector <NUM>-<NUM>. The auxiliary power connector <NUM>-<NUM> may be configured to provide additional current (e.g. 50A @ 12V) over a power line or power rail <NUM>, <NUM>, and <NUM>.

Power control circuitry <NUM> may include one or more circuits or processors configured to manage the provision of power to PCIe cards <NUM>-<NUM> over the various power rails or lines <NUM>-<NUM>. Power control circuitry <NUM> may monitor telemetry readings for metrics such as power usage (e.g., voltage and current), temperature, or other data. Power control circuitry <NUM> may control current limits provided over the power lines <NUM>-<NUM> to prevent catastrophic system failure, and may control power on/off settings to various power lines based on a status of any connected PCIe cards <NUM>-<NUM>. Power control circuitry <NUM> may include one or more eFuse circuits to control power over particular power rails, as well as additional processors or logic circuits to manage power on/off control, status monitoring, firmware execution, or other operations.

A card <NUM>-<NUM> that receives power over both the PCIe connector <NUM>-<NUM> and PCIe auxiliary power <NUM>-<NUM> may be damaged if a live power connection is provided through one of the connectors <NUM>-<NUM>, <NUM>-<NUM> when the other connector is not connected. This could arise when inserting or removing card <NUM>-<NUM> from a live or powered board (e.g., a motherboard or mainboard including connectors <NUM>-<NUM>), as it may be difficult or impossible to connect or remove both power connections simultaneously. While risk of damage can be eliminated by shutting off the power to the whole board, this may interrupt processing being performed by other components of a system. For example, if PCIe card <NUM> needs to be replaced or diagnosed, the entire system <NUM> may be shut down including the connectors for PCIe cards <NUM> and <NUM>, which may have been occupied performing other tasks. It would therefore be advantageous if PCIe peripheral cards with high power requirements could be inserted into or removed from a live board (e.g., hot swapping or live swapping, or similar terminology).

Accordingly, power control circuitry <NUM> may be configured to control the provision of power over the power rails <NUM>-<NUM> to enable cards <NUM>-<NUM> to be connected or disconnected safely, without shutting off power to other cards <NUM>-<NUM>. The power control circuitry <NUM> may implement systems and methods as described herein to detect the connection or disconnection of power lines <NUM>-<NUM> to turn power rails off and on in a manner that allows safe hot swapping of PCIe cards <NUM>-<NUM> into a live board. For example, using firmware, hardware, or a combination of both, the power control circuitry <NUM> may detect when a card is connected or disconnected from a PCIe connector slot <NUM>-<NUM> or a PCIe auxiliary power line <NUM>-<NUM>, and turn a power supply to the associated slot and auxiliary line on or off accordingly. For example, if power control circuitry <NUM> detects that PCIe auxiliary connector <NUM> has been disconnected from PCIe card <NUM>, or if the PCIe card <NUM> has been disconnected from the PCIe connector <NUM>, the power control circuitry <NUM> may shut off power to both the auxiliary power line <NUM> and primary card slot power lines <NUM> and <NUM> (and in some examples, auxiliary card slot line <NUM>) to prevent damage to the card. If a card <NUM> is not plugged into system <NUM>, or if a determination is made that the card <NUM> is idle or otherwise inactive, the power control circuitry <NUM> can shut off power to the corresponding connector slot <NUM> and auxiliary power connector <NUM> to conserve energy. If a card <NUM> is detected as being connected to one of PCIe connector <NUM> or auxiliary connector <NUM>, the power control circuitry <NUM> may keep power off until a determination is made that both the PCIe connector <NUM> and the auxiliary connector <NUM> are connected.

In some examples, an auxiliary power line of the PCIe connector (e.g., <NUM>. 3V Aux lines <NUM>-<NUM>) may be active without damaging card <NUM>-<NUM>, even if the 12V auxiliary power line <NUM>-<NUM> is not connected. The power from the <NUM>. 3V auxiliary line <NUM>-<NUM> may be used to determine the power requirements of a connected card <NUM>-<NUM>, such as by reading an EEPROM memory of the card <NUM>-<NUM>. As described previously, the data read from the card <NUM>-<NUM> may include a model number or other card identifier, which identifier may be provided to power control circuitry <NUM> or another processing element (e.g., PCIe interface circuitry <NUM>, or CPU <NUM>). The processing element may compare the identifier against a data structure (e.g., stored to a memory of the processing system) that indicates empirical power requirement data, or may directly indicate the card's power or current requirement in watts or amps. From this data, the power control circuitry <NUM> may adjust power thresholds for other voltage rails (e.g., 12V PCIe Auxiliary connector <NUM>-<NUM> and 12V and <NUM>. 3V PCIe slot <NUM>-<NUM> lines via main power rails <NUM>-<NUM> and <NUM>-<NUM>) to provide adequate current for the present card <NUM>-<NUM>. This dynamic current limit adjustment process can occur before and independently of any PCIe bus-accessed status and configuration operations for the card <NUM>-<NUM>. The EEPROM information may be retrieved via an associated bus, such as I<NUM>C (Inter-Integrated Circuit), SMBus (System Management Bus), or PMBus (Power Management Bus), which may include buses <NUM>-<NUM>, or another bus (not shown).

Turning now to <FIG>, additional detail is provided for an example computing system <NUM>. System <NUM> may include a control circuit <NUM>, a limiter circuit <NUM> for a <NUM> Volt power line, a limiter circuit <NUM> for a primary <NUM> Volt power line, and a limiter circuit <NUM> for an auxiliary <NUM> Volt power line. System <NUM> may further include a PCIe connecter slot <NUM>, and an auxiliary power connecter <NUM>, both of which may be configured to connect to a PCIe card <NUM>.

In some examples, PCIe connector <NUM> may correspond to PCIe connectors <NUM>-<NUM> of <FIG>, and auxiliary power connector <NUM> may correspond to PCIe auxiliary power connectors <NUM>-<NUM> of <FIG>. Similarly, power control circuit <NUM> may correspond to power control circuitry <NUM> of <FIG>. Limiter circuits <NUM>-<NUM> may include eFuses or other circuits configured to control a power range provided to a PCIe card <NUM>. Limiter circuits <NUM>-<NUM> may be included in power control circuitry <NUM> of <FIG>, or they may be situated between power control circuitry <NUM> and PCIe connector slots <NUM>-<NUM> and PCIe auxiliary power connectors <NUM>-<NUM>.

Limiter circuits <NUM>-<NUM> may be configured to control an amount of power or current provided over various power rails to PCIe connector slot <NUM> and auxiliary power connector <NUM>. For example, auxiliary power connector <NUM> may receive a 12V power line via limiter circuit <NUM>, while PCIe connector <NUM> may be connected to power rails for a primary <NUM>. 3V line via limiter circuit <NUM>, an auxiliary <NUM>. 3V power line via limiter circuit <NUM>, or a 12V power line via limiter circuit <NUM>. In the depicted example, there may be a single limiter circuit per voltage rail, so that the limiter circuit <NUM> may control the power 12V provided to the both the auxiliary power connector <NUM> and the PCIe connector <NUM>. In another embodiment, there may be separate limiter circuits for per-destination instead of per-rail. While examples of the voltage provided over various power lines are provided herein, other voltage amounts may be used in other example embodiments. The limiter circuits <NUM>-<NUM> may have both a power input line as well as control signal inputs, designated A, B, and C, from the power control circuit <NUM>. The control signal inputs A-C may allow control circuit <NUM> to adjust an amount of power or current provided via each limiter circuit <NUM>-<NUM>, including raising or lowering a power supply, or turning a power line on or off entirely.

Control circuit <NUM> may receive signals or indicators from PCIe connector <NUM>, auxiliary power connector <NUM>, or both. In some examples, the signals may provide information on an inserted PCIe card <NUM>, such as by using the <NUM>. 3V auxiliary (e.g., I<NUM>C) line to read data from a memory (e.g., an EEPROM) of the PCIe card <NUM> to determine a model or power requirements of the card. This model or power requirement information may be applied by the control circuit <NUM> to set power limits applied by limiter circuits <NUM>-<NUM> via control signals A-C. For example, the control circuit <NUM> may use the information from the card <NUM> to determine how much power or current to apply through a primary <NUM>. 3V slot connection via limiter circuit <NUM> at PCIe connector <NUM>, how much power or current to apply through limiter circuit <NUM> to auxiliary power connector <NUM> or PCIe connector <NUM>, or whether the card <NUM> needs the auxiliary power connector <NUM> at all.

Similarly, control circuit <NUM> may receive indicators regarding whether a card <NUM> is plugged into PCIe connector slot <NUM>, or whether the auxiliary power connector <NUM> is connected to a card <NUM>. For example, a control line PE_PRESENT# may connect a GPIO (general-purpose input/output) digital signal pin of the PCIe connect <NUM> to a microcontroller (such as control circuit <NUM>, although in some examples an IO Expander or FPGA may be used). The PE_PRESENT# signal may indicate when a card is inserted into PCIe connector <NUM>. Similarly, a control line AUX CABLE PRESENT# may connect a GPIO pin of the auxiliary power connector <NUM> (e.g., via an AUX_SENSE line as discussed in <FIG>) to a microcontroller to indicate when the auxiliary power cable is connected. An example usage of these signal lines to control power is described in more detail in regard to <FIG> and <FIG>. The control circuit <NUM> may disable (or keep at the minimal amount) a power supply at limiter circuits <NUM> and <NUM> if only one of the two connections is detected, to avoid damage to the card <NUM> during hot plugging. If the appropriate power connections for operating the card <NUM> (e.g., only the PCIe connector <NUM>, or both connections at PCIe connector slot <NUM> and auxiliary power connector <NUM>) are determined to be secure and stable (e.g., based on a timeout period), the control circuit <NUM> can direct the limiter circuits <NUM>-<NUM> to apply an appropriate amount of power or current to turn on and operate PCIe card <NUM>. An example circuit diagram for a power control system is described in regard to <FIG>.

<FIG> depicts an example circuit diagram <NUM> for implementing hot plug power control protection for PCIe peripheral cards. The circuit diagram <NUM> shows an example system for generating control signals A, B, and C, shown in <FIG>, to disable or enable power on example auxiliary 12V, primary 12V, primary <NUM>. 3V, and <NUM>. 3V AUX lines. Circuit <NUM> may include a set of logic gates and signal lines, as well as control processor <NUM>. Control processor <NUM> may be a microprocessor, FPGA, or similar circuit configured to detect a connection status of a PCIe card slot and auxiliary cable, and enable or disable slot power, cable detection, and standby power based on the determination. The circuit diagram <NUM> may be incorporated into control circuit <NUM> of <FIG>.

The circuit <NUM> may receive signal AUX_SENSE, a sense line for connection of an auxiliary power cable, along line <NUM> (e.g., from auxiliary power connector <NUM> of <FIG>). The AUX_SENSE line can serve a dual purpose. Under PCIe-SIG (special interest group) standard specification, connecting an auxiliary cable to a card can short the sense line on the auxiliary connector to indicate a type of power. In the example embodiment of <FIG>, AUX_SENSE <NUM> can be used not just for shorted output, but also as an input. By pulling AUX_SENSE <NUM> down to ground via a low value resistor <NUM>, line <NUM> can be used as an input for detection, since cards that use aux power may pull the AUX_SENSE line up. Line <NUM> may be provided to a comparator <NUM> (optionally implemented via an operational amplifier), which may be used with hysteresis to detect if the AUX_SENSE line is above <NUM>. 6mV (e.g. by comparing AUX_SENSE with a feedback loop across resistor <NUM> and <NUM>. 6mV line <NUM>).

The output of comparator <NUM> may produce signal "AUX CABLE PRESENT#," alternately referred to as "CABLE_PRSNT#," along line <NUM>. AUX CABLE PRESENT# <NUM> may provide an indicator of whether an auxiliary cable is connected to a PCIe card based on the AUX_SENSE line <NUM> and the comparison performed at comparator <NUM> (with the # in a signal name indicating an active-low or inverted logic state for the signal). For example, AUX CABLE PRESENT# <NUM> may be logic <NUM> when an auxiliary cable is connected, or <NUM> when no cable is connected. Similarly, circuit <NUM> may receive a signal "PE_PRESENT#" (e.g., from PCIe connector slot <NUM> of <FIG>), alternately referred to as "PE_PRSNT#", along line <NUM> to provide an indicator of whether a PCIe card is plugged into the PCIe connector slot. PE_PRESENT# <NUM> may also be used to determine card size (e.g., x1, x4, x8, x16). AUX CABLE PRESENT# <NUM> and PE_PRESENT# <NUM> may be provided to control processor <NUM> as well as to the hardware logic of circuit <NUM>.

Further, circuit <NUM> may receive signals "ENABLE STANDBY POWER" on line <NUM>, "ENABLE CABLE DETECTION" on line <NUM>, and "SLOT POWER ENABLE" on line <NUM>, each of which may be provided from control processor <NUM> based on a detected card and auxiliary cable status. ENABLE STANDBY POWER <NUM>, alternately referred to as "SLOT_3V3_AUX_EN," may control whether to enable a <NUM>. 3V auxiliary power control line, for example via control signal C to limiter circuit <NUM> of <FIG>. ENABLE CABLE DETECTION <NUM>, alternately referred to as "En_CBL_DETECT," may control whether the circuit monitors for a connection status of the 12V auxiliary power connector <NUM> of <FIG>. For example, if a determination is made that the card does not require an auxiliary power supply to supplement the slot power, cable detection can be skipped or deactivated. ENABLE CABLE DETECTION <NUM> can generally be used by control processor <NUM> to enforce gating to control power on and off timing. SLOT POWER ENABLE <NUM>, alternately referred to as "SLOT_12V_3V3_EN," may control whether to provide power via <NUM>. 3V primary power line and via 12V power line (e.g., via control signal B to limiter circuit <NUM> and via control signal A to limiter circuit <NUM> of <FIG>). SLOT POWER ENABLE <NUM> may be activated when the system detects a connection at both the slot <NUM> and auxiliary connector <NUM>, or at only the slot <NUM> if a determination is made that no auxiliary cable is to be connected.

Standby power may be enabled for the PCIe slot <NUM> based on an ENABLE STANDBY POWER signal along line <NUM>. 3V AUX ENABLE signal "C" may be output along line <NUM> and provided to limiter circuit <NUM>. For example, standby power may be activated when a card <NUM> is detected as being inserted into the PCIe connector slot <NUM>. Enabling standby power may allow reading card details, e.g., from an EEPROM of the card, that may indicate an amount of power the card requires to operate. The standby power signal from line <NUM> may be sent across a resistor <NUM> to provide the <NUM>. 3VAUX ENABLE signal <NUM>, or the signal <NUM> may be output from an AND gate <NUM> based on signal <NUM> and a signal <NUM> representing a status of a plugged card and connected auxiliary cable. The <NUM> pathway may be removed and the AND gate <NUM> may be used to enable full hardware power off control of the <NUM>. 3V auxiliary power. Alternately, the AND gate <NUM> (and signal line <NUM>) may be removed and the <NUM> pathway may be used for full software-based control of the <NUM>. 3V auxiliary power (e.g. via control processor <NUM> based on the ENABLE STANDBY POWER signal).

Supplemental power (e.g. <NUM>. 3V) may be provided across element <NUM> to line <NUM>, across element <NUM> to line <NUM>, or both, to provide additional protection from plug transients, such as sporadic signals or voltage spikes when a card is not fully and securely connected during insertion or removal. Elements <NUM> and <NUM> may include a pull-up resistor that provides a consistent input to a logic gate when an 'external' input on that line may sometimes be floating or unconnected, for example. Additional circuity can be included between lines <NUM> or <NUM> and GROUND in the form of a transient-voltage-suppression (TVS) diode that can clamp voltages above a certain level to protect from electrostatic discharge or other unwanted spikes on lines that might have user-influenced connections (e.g. slots, plugs, switches).

As indicated above, AUX CABLE PRESENT# <NUM> may be applied to AND gate <NUM>, with a <NUM> value when a card is connected to auxiliary power connector <NUM>, and a <NUM> value when the auxiliary power connector is not connected to a card. Similarly, ENABLE CABLE DETECTION <NUM> may be applied to AND gate <NUM>, with a <NUM> value when an auxiliary cable connection is needed to enable power, and a <NUM> value when an auxiliary cable connection is not required. Based on the inputs, the AND gate <NUM> may generate a signal AUX_CABLE_ PLUGGED# <NUM>, which may be applied to NOR gate <NUM>. Accordingly, AUX_CABLE_ PLUGGED# <NUM> may indicate whether power may be supplied to a card based on a status of the auxiliary cable connection, where a <NUM> value may indicate either that an auxiliary cable is connected, or that no auxiliary cable is required.

Similarly, PE_PRESENT# signal <NUM> may be applied to NOR gate <NUM>, with a <NUM> value when a card is connected to slot <NUM>, and a <NUM> value when the no card is connected. When both the PE_PRESENT# signal <NUM> and the AUX_CABLE_PLUGGED# signal <NUM> are applied to NOR gate <NUM> with <NUM> values, it may indicate that a PCIe card <NUM> is fully connected at both the PCIe connector slot <NUM> and the auxiliary power connector <NUM>, or that a card connected at slot <NUM> does not require an auxiliary cable. The NOR gate <NUM> may then generate a signal indicating the card is connected, which may be provided as an AUTO_DIASBLE_POWER#/ DETECT_PLUG signal <NUM> applied to control processor <NUM>. The signal from NOR gate <NUM> may also be provided as signal <NUM> to the AND gate <NUM>, which may be used for hardware-based control for activating or disactivating the "standby power" with <NUM>. 3VAUX ENABLE signal <NUM>.

The AUTO_DISABLE_POWER#/ DETECT_PLUG signal <NUM> may be used by control processor <NUM> to determine whether a card <NUM> is fully plugged in and full power may be provided to the card through the slot <NUM> and, if appropriate, auxiliary power <NUM>. Alternately, AUTO_DISABLE_POWER#/ DETECT PLUG signal <NUM> may indicate to control processor <NUM> when one of the connections is not connected, and the power to the card should be disabled.

When signal <NUM> indicates to control processor <NUM> that the card <NUM> is fully connected, the control processor <NUM> may activate signal SLOT POWER ENABLE along line <NUM>. SLOT POWER ENABLE <NUM> may be provided to AND gate <NUM>, along with a signal <NUM> from NOR gate <NUM>. When these signals indicate that the card <NUM> is fully connected (via signal <NUM>) and power is authorized to be provided to the card <NUM> (via the SLOT POWER ENABLE signal <NUM>), the AND gate <NUM> may generate a signal <NUM> that enables power to the card, via 12V ENABLE signal A and <NUM>. 3V ENABLE signal B. The enable signals <NUM> may be provided to limiter circuits <NUM> and <NUM> of <FIG>, respectively. If the system <NUM> ever determines that one of auxiliary cable <NUM> or slot connection <NUM> has become disconnected (e.g., via signal <NUM> AUTO_DISABLE_POWER#/ DETECT_PLUG), the control processor <NUM> may disable the POWER ENABLE signal <NUM>, which can disable signal <NUM> and 12V ENABLE signal A and <NUM>. 3V ENABLE signal B.

The functional operation of system <NUM> from an initial state will now be described, according to certain embodiments. Starting with an empty slot and an unplugged 12V aux connector (e.g., no card is connected at either point), control processor <NUM> may be in an initialization state, where ENABLE_CABLE_DETECTION <NUM> is disabled by clearing it (e.g., setting a register or signal to <NUM>). As shown in Table <NUM>, an ENABLE_CABLE_DETECTION value of <NUM> may result in AND gate <NUM> output, AUX_CABLE_PLUGGED# <NUM>, to be <NUM>. The AUX_CABLE_PLUGGED# <NUM> value of <NUM> may "fake" a plugged result to the hardware logic of system <NUM>, thereby giving an "enable power" indicator.

A <NUM> value from AUX_CABLE_PLUGGED # <NUM> enables the system <NUM> to sense the card plug status PE_PRESENT# <NUM> as it propagates through NOR gate <NUM>, as an inverter function resulting in inverted output DETECT_PLUG <NUM>. This can be seen in Table <NUM>. When a card is detected as plugged in via DETECT PLUG <NUM>, it enables control processor <NUM> to enable <NUM>. 3V AUX power to the PCIe card via setting (e.g., to a value "<NUM>") ENABLE_ STANDBY_POWER <NUM>, which is provided to AND gate <NUM>. Signal <NUM> from NOR gate <NUM> is still set to "<NUM>", AND gate <NUM> outputs a "<NUM>" value along line <NUM> as control signal "C", resulting in the <NUM>. 3V Aux power line being activated to the card slot. By doing so, control processor <NUM> can interrogate the VPD stored to the PCIe card, if present, to determine power requirements, and setup electronics and current limits appropriately.

If the VPD indicates that a 12V Aux power cable is required to operate the card, control processor <NUM> may wait for AUX_CABLE_PRESENT# <NUM> to go low (<NUM>) before going to the next step. Once the auxiliary cable is connected, control processor <NUM> may enable cable detection via ENABLE_CABLE_DETECTION <NUM> by setting it (<NUM>). As shown in Table <NUM>, once ENABLE_CABLE_DETECTION <NUM> is enabled (<NUM>), power is only authorized by AND gate <NUM> when a cable is also connected (indicated via AUX CABLE PRESENT# <NUM> set to <NUM>). In some embodiments, the control processor <NUM> may set ENABLE_CABLE_DETECTION <NUM> to (<NUM>) without waiting for the cable connection, but this would deactivate the <NUM>. 3V AUX power.

At this point, a card has been detected as connected at both the slot and, if appropriate, the auxiliary cable connection. After a period has elapsed and the cable is still present, control processor <NUM> may turn on slot power by setting (e.g., to "<NUM>") SLOT POWER ENABLE <NUM>. The gathered information on connection status and power status can also be passed to other devices for further uses, such as telemetry limits and plug states.

In situations where the <NUM>. 3V AUX power is enabled (via line <NUM>, "C") but VPD is not present on the PCIe card, or there is insufficient data to determine power requirements, control processor <NUM> may wait for a timeout period to elapse while monitoring for AUX_CABLE_ PRESENT# <NUM> to go low (<NUM>). If AUX_CABLE_PRESENT# <NUM> goes low (<NUM>), control processor <NUM> may enable cable detection via ENABLE_CABLE_DETECTION <NUM> by setting it (<NUM>). However, if a timeout event occurs without AUX_CABLE_PRESENT# going low (<NUM>), control processor <NUM> may turn on slot power by setting SLOT POWER ENABLE <NUM> to (<NUM>), on the assumption the 12V aux power cable is not used. To further improve a robust system, a timer thread can be employed for this unknown card that periodically examines AUX_CABLE_ PRESENT# <NUM>. On detection of this signal going low (<NUM>), the control processor <NUM> may set ENABLE_CABLE_DETECTION <NUM> to (<NUM>), and thereby monitor for the cable becoming disconnected as a trigger to cut off power to the card. Additionally, or in lieu of this, the system <NUM> can examine the card through its primary interface (e.g., PCIe). Additional information may be collected through the primary interface to set up limits when is not obtained through sideband VPD or other means.

Of additional note: Although some of the control logic of system <NUM> may not be needed for plugging in a card, it may be important to remove power to the card if a 12V aux cable or the card is removed from its slot, to prevent damage to the card or to the circuits of the receiving system, such as system <NUM> or other motherboard components. Control processor <NUM> may determine the plug status of cards or auxiliary cables through the hardware logic of system <NUM>, or by connecting signal lines, such as AUX_CABLE_PRESENT# and PE_PRESENT#, directly to the control processor <NUM>. Although not listed, each input signal to system <NUM> may be protected with TVS diodes. Additionally, the detection signals (e.g., AUX_CABLE_ PRESENT#, PE_PRESENT#, and DETECT_PLUG) may be debounced to prevent false triggering.

Turning now to <FIG>, a simplified version of the circuit of <FIG> is illustrated as system <NUM>. System <NUM> differs from system <NUM> in that ENABLE CABLE DETECTION signal <NUM> and AND gate <NUM> have been removed. The system <NUM> may therefore always check for the auxiliary power connection <NUM>, without the ability to turn auxiliary cable detection on or off with the ENABLE CABLE DETECTION signal. Example methods for detection of card connection or disconnection are discussed in regard to <FIG>.

<FIG> depicts a flowchart <NUM> of an example method for card detection and automated power on protection. The method of flowchart <NUM> may allow for enabling power to a card with built-in hardware lockouts to disable or prevent power from being applied when a card is not fully connected, in particular while connecting a card to a live system. The method may be implemented using minimal pins to a logic integrated circuit, such as a microcontroller or FPGA. In some examples, the method may be implemented via power control circuitry <NUM> of <FIG>, control circuit <NUM> of <FIG>, or control processor <NUM> of <FIG> or <FIG>. In some examples, flowchart <NUM> may correspond to an embodiment as depicted in <FIG>, in which an ENABLE CABLE DETECTION line <NUM> is included.

The method may start at <NUM>, where initial signal or variable values may be set such that Unplug_Det = <NUM>, ENABLE CABLE DETECTION/ En_CBL_DETECT <NUM> = <NUM>, SLOT POWER ENABLE/ SLOT_12V_3V3_EN <NUM> = <NUM>, and ENABLE STANDBY POWER/ SLOT_3V3_AUX_EN <NUM> = <NUM>. Unplug_Det may be a static variable, which may be stored in the control processor <NUM> or <NUM> or elsewhere, and may be used to prevent repowering on a slot when a card is disconnected until the variable is cleared. A value of "<NUM>" may indicate power can be activated to a card. Unplug_Det may be checked at power on, set to "<NUM>" when a disconnect is detected, and cleared in the removal code when a card has been fully removed. En_CBL_DETECT <NUM> being set to <NUM> means no cable detection is required to indicate a card is connected (e.g., via NOR gate <NUM>), so DETECT_PLUG <NUM> can indicate a connected card before a cable status is determined. SLOT_12V_3V3_EN <NUM> and SLOT_3V3_AUX_EN <NUM> = <NUM> means main power and standby power to a card slot may be initially disabled.

Before providing power to a slot, unplug detection may be performed, at <NUM>, for example based on an Unplug_Det signal or variable. Unplug detection may include determining if either the slot or auxiliary power cable connection for a powered-on card has been disconnected, as illustrated in example methods of <FIG> and <FIG>. When Unplug_Det is set to "<NUM>", an unplug occurred and the system has not yet reset to allow power to be re-applied to a card. An Unplug_Det value of "<NUM>" may mean that the system is reset and ready to power a card. If an unplug is detected, the method may end, at <NUM>, and not allow a card to be powered on.

When Unplug_Det is "<NUM>," the method may include detecting a plug state for a card slot, at <NUM>. Detecting the plug state may include checking the DETECT_PLUG signal <NUM> of <FIG> and <FIG>. With En_CBL_DETECT <NUM> set to <NUM>, DETECT_PLUG <NUM> may indicate when a PCIe card is inserted into a peripheral slot or port on a computer mainboard for example, such as PCIe connector <NUM> of <FIG>. A determination may be made whether a card is plugged in, at <NUM>. For example, if DETECT_PLUG <NUM> is <NUM>, a card may not be plugged in, while a value of <NUM> may indicate a card is plugged in. If no card is detected, the method may include continuing to determine the card plugged state at <NUM>.

When a card is plugged in, the method may include, at <NUM>, implementing debouncing (e.g. to prevent false plug or unplug determinations due to erratic signals from the contacts of the card as it is inserted into the slot), activating auxiliary slot power (e.g., by turning on a <NUM>. 3V eFuse or limiter circuit <NUM> for the <NUM>. 3V auxiliary power line, setting SLOT_3V3_AUX_EN signal <NUM> to <NUM>), and using the auxiliary slot power to read an EEPROM or other VPD source, if present in the card. A determination may be made whether an EEPROM is present in the card, at <NUM>, for example based on the attempt to read the EEPROM at <NUM>.

If an EEPROM is present, card details read from the EEPROM may be used to determine whether an auxiliary power connection, such as a 12V auxiliary power cable connection <NUM>, is required for operation of the card, at <NUM>. In some examples, the power requirements may be stored in the EEPROM directly, or may be determined by cross-referencing an identifier for the card stored to the EEPROM to a table in a memory of the computing system that indicates power requirements for different card types. In some examples, a determination may also be made for an amount of required power for operation of the card, which can be used to set current limits for the primary slot power line, for the auxiliary power connector line, or both, e.g., using limiter circuits or eFuses <NUM>-<NUM> of <FIG>.

If no auxiliary power is required, at <NUM>, the method may include setting or maintaining the ENABLE CABLE DETECTION /En_CBL_DETECT signal <NUM> to "<NUM>" or false, at <NUM>. This may disable checks that require an auxiliary power cable be connected before powering on the card. At <NUM>, the method may then include setting the SLOT POWER ENABLE /SLOT_12V_3V3_EN signal <NUM> to "<NUM>", which in turn may trigger power being provided to the card through the slot. The method may end, at <NUM>.

Alternately, if the EEPROM does indicate auxiliary power is required, at <NUM>, the method may include setting the ENABLE CABLE DETECTION signal <NUM> to "<NUM>," and optionally setting a timeout value in case no cable is connected, at <NUM>. Alternately, another signal may be provided to end a loop where no cable is connected. By setting ENABLE CABLE DETECTION to <NUM>, the DETECT_PLUG value become <NUM> unless or until an auxiliary cable connection <NUM> is connected, thereby prohibiting main power application to the card until both the slot and the auxiliary cable are connected. The method may therefore include getting a plug state for the auxiliary power connection, at <NUM>. The connection status of the auxiliary cable can be determined via the DETECT_PLUG signal <NUM> as described, or through other signals such as CABLE_PRSNT# <NUM>. At <NUM>, the timeout period may be checked, to see if the timeout value has been reached without an auxiliary cable being connected. Alternately, another signal or "bail" condition may be provided to end a loop where no card cable is connected, such as allowing a user to cancel a card insertion through a UI interface or removing the inserted card. If the timeout period has elapsed, at <NUM> the method may include clearing set variables such as SLOT_3V3_AUX_EN to <NUM>, passing an error to a user through a user interface, and ending the method at <NUM>. If the timeout period has not elapsed, the method may include making a determination of whether the auxiliary connection or cable is plugged in, at <NUM>. If the auxiliary cable is not plugged in (e.g., DETECT_PLUG = <NUM>), the method may include continuing to monitor the plug state, at <NUM>. If the cable is determined to be plugged in (e.g., DETECT_PLUG = <NUM>), the method may include setting the SLOT POWER ENABLE /SLOT_12V_3V3_EN signal <NUM> to "<NUM>" at <NUM>, which in turn may trigger power being provided to the card through the slot and the auxiliary power connection. The method may then end, at <NUM>.

If a determination is made that the card does not include an EEPROM or other source of information indicating whether auxiliary power is required, at <NUM>, the method may include setting the ENABLE CABLE DETECTION /En_CBL_DETECT signal <NUM> to "<NUM>" (e.g., thereby setting DETECT_PLUG to <NUM> if no auxiliary cable is detected), and setting a timeout value at <NUM>. When it is unknown whether the card requires auxiliary power, the timeout may be used to provide sufficient time to connect an auxiliary cable if one is required, which connection may then be detected. However, if no auxiliary cable is connected by the timeout period, the method may proceed as though the card does not require an auxiliary power connection. The timeout period may be set by a manufacturer of the computing system, or may be set by a user or host system to a desired value.

The method may include determining a plug state for the auxiliary power connection <NUM>, at <NUM>, which may include obtaining the value of the DETECT_PLUG signal <NUM>, or the CABLE_PRSNT# <NUM> signal, in some examples. The method may include determining whether the timeout value has expired, at <NUM>. If the timeout has expired, the method may include proceeding on the assumption that no auxiliary power is required, and setting an ENABLE CABLE DETECTION signal <NUM> to "<NUM>" or false, at <NUM>. If the timeout has not expired, the method may include making a determination of whether the auxiliary connection or cable is plugged in, at <NUM>. If the auxiliary cable is not plugged in, the method may include continuing to monitor the plug state, at <NUM>. If the cable is determined to be plugged in at <NUM>, or cable detection was set to "<NUM>" at <NUM>, the method may include setting the SLOT POWER ENABLE signal <NUM> to "<NUM>" at <NUM>, which in turn may trigger power being provided to the card through the slot, and if appropriate, the auxiliary power connection. The method may end, at <NUM>.

<FIG> depicts a flowchart <NUM> of another example method for card detection and automated power on protection. Similar to <FIG>, the method of flowchart <NUM> may allow for enabling power to a card with built-in hardware lockouts to disable or prevent power from being applied when a card is not fully connected. The method of flowchart <NUM> may utilize one or more additional pins to a logic integrated circuit, such as a microcontroller or FPGA, relative to the method of <FIG>. For example, AUX CABLE PRESENT# / CABLE_PRSNT# and PE_PRESENT# lines may be connected to control processor <NUM>, which may not be utilized in the embodiment of <FIG>. The circuitry employed to implement the method of <FIG> may include power control circuitry <NUM> of <FIG>, control circuit <NUM> of <FIG>, or control processor <NUM> of <FIG> or <FIG>. In some examples, flowchart <NUM> may correspond to an embodiment as depicted in <FIG>, in which no ENABLE CABLE DETECTION line is included.

The method may start at <NUM>. As with <FIG>, initial signal values may be set such that Unplug_Det = <NUM>, SLOT POWER ENABLE/ SLOT_12V_3V3_EN <NUM> = <NUM>, and ENABLE STANDBY POWER/ SLOT_3V3_AUX_EN <NUM> = <NUM>. The method may include performing unplug detection, at <NUM>, for example based on an Unplug_Det signal or variable. Unplug detection may include determining if either the slot or auxiliary power cable connection for a powered-on card has been disconnected, as illustrated in example methods of <FIG> and <FIG>. When Unplug_Det is set to "<NUM>", an unplug may have occurred and the system has not yet reset to allow power to be re-applied to a card. An Unplug_Det value of "<NUM>" may mean that the system is reset and ready to power a card. If an unplug is detected, the method may end, at <NUM>, and not allow a card to be powered on.

At <NUM>, the method may include detecting a plug state for a card slot. Detecting the plug state may include checking the PE_PRESENT#/ PE_PRSNT# signal <NUM> of <FIG> and <FIG>, which may directly indicate whether a card has been inserted into the slot. A determination may be made whether a card is plugged in, at <NUM>. For example, if PE_PRSNT# has a value of <NUM>, it may indicate a card is plugged in, and a value <NUM> may indicate no card is plugged in. If no card is detected, the method may include continuing to determine the card plugged state at <NUM>.

When a card is plugged in, the method may include, at <NUM>, implementing debouncing (e.g. to prevent false plug or unplug determinations due to erratic signals from the contacts of the card as it is inserted into the slot), activating auxiliary slot power (e.g., by turning on a <NUM>. 3V eFuse or limiter circuit <NUM> for the <NUM>. 3V auxiliary power line, setting SLOT_3V3_AUX_EN signal <NUM> to <NUM>), and using the auxiliary slot power to read an EEPROM or other VPD source, if present in the card. A determination may be made whether an EEPROM is present in the card, at <NUM>, for example based on the attempt to read the EEPROM.

If no auxiliary power is required, at <NUM>, the method may include setting the SLOT POWER ENABLE /SLOT_12V_3V3_EN signal <NUM> to "<NUM>", at <NUM>, which in turn may trigger power being provided to the card through the slot. The method may end, at <NUM>.

Alternately, if the EEPROM does indicate auxiliary power is required, at <NUM>, the method may include setting a timeout value at <NUM>, to exit the process if no cable is connected after a period of time. Alternately, another signal or "bail" condition may be provided to end a loop where no cable is connected, such as allowing a user to cancel a card insertion through a UI interface or removing the inserted card. The method may then include getting a CABLE_PRSNT# <NUM> state for the auxiliary power connection, at <NUM>. At <NUM>, the timeout period or other bail condition may be checked, to see if an exit condition has been reached without an auxiliary cable being connected. If the timeout period has elapsed, the method may include clearing set variables such as SLOT_3V3_AUX_EN to <NUM>, passing an error to a user through a user interface, or otherwise cancelling the card insertion operation, at <NUM>. The method may then end at <NUM>. If the timeout period has not elapsed, the method may include making a determination of whether the auxiliary connection or cable is plugged in, at <NUM>, for example based on a state of the AUX CABLE PRESENT#/ CABLE_PRSNT# signal <NUM>. If the auxiliary cable is not plugged in (e.g., CABLE_PRSNT# = <NUM>), the method may include continuing to monitor the plug state, at <NUM>. If the cable is determined to be plugged in (e.g., CABLE_PRSNT# = <NUM>), the method may include setting the SLOT POWER ENABLE /SLOT_12V_3V3_EN signal <NUM> to "<NUM>" at <NUM>, which in turn may trigger power being provided to the card through the slot and the auxiliary power connection. The method may then end, at <NUM>.

If a determination is made that the card does not include an EEPROM or other source of information indicating whether auxiliary power is required, at <NUM>, the method may include setting a timeout value at <NUM>. When it is unknown whether the card requires auxiliary power, the timeout may be used to provide sufficient time to connect an auxiliary cable if one is required, which connection may then be detected. However, if no auxiliary cable is connected by the timeout period, the method may proceed as though the card does not require an auxiliary power connection. The timeout period may be set by a manufacturer of the computing system, or may be set by a user or host system to a desired value.

The method may include determining a plug state for the auxiliary power connection <NUM>, at <NUM>, which may include obtaining the value of the CABLE_PRSNT# signal <NUM>, in some examples. The method may include determining whether the timeout value has expired, at <NUM>. If the timeout has not expired, the method may include making a determination of whether the auxiliary connection or cable is plugged in, at <NUM>, for example based on the CABLE_PRSNT# signal <NUM>. If the auxiliary cable is not plugged in, the method may include continuing to monitor the plug state, at <NUM>. If the cable is determined to be plugged in at <NUM>, or the timeout period expired at <NUM>, the method may include setting the SLOT POWER ENABLE /SLOT_12V_3V3_EN signal <NUM> to "<NUM>" at <NUM>, which in turn may trigger power being provided to the card through the slot, and if appropriate, the auxiliary power connection, depending on the CABLE_PRSNT# <NUM> value, or whether a cable was connected or the timeout period expired. The method may end, at <NUM>.

Turning now to <FIG>, a flowchart <NUM> of another example method for card detection and automated power on protection is depicted. The method of <FIG> may be a simplified method compared to the methods of <FIG> and <FIG>, but may share similar operations and determination steps, which may not be described again in full detail for brevity. The method of flowchart <NUM> may allow for enabling power to a card with built-in hardware lockouts to disable or prevent power from being applied when a card is not fully connected. The method may be implemented via power control circuitry <NUM> of <FIG>, control circuit <NUM> of <FIG>, control processor <NUM> of <FIG> or <FIG>, or through other circuits and modules. As used herein, modules may include one or more physical components of a computing device (e.g., logic, circuits, processors, etc.) configured to perform a particular task or job, or may include instructions that, when executed, can cause a processor to perform a particular task or job, or any combination thereof. In some examples, flowchart <NUM> may correspond to an embodiment as depicted in <FIG>, in which an ENABLE CABLE DETECTION line <NUM> is included.

The method may start at <NUM>, with initial values for Unplug_Det = <NUM>, ENABLE CABLE DETECTION/ En_CBL_DETECT <NUM> = <NUM>, SLOT POWER ENABLE/ SLOT_12V_3V3_EN <NUM> = <NUM>, and ENABLE STANDBY POWER/ SLOT_3V3_AUX_EN <NUM> = <NUM>. En_CBL_DETECT <NUM> being set to <NUM> may mean that no cable detection is required to indicate a card is connected (e.g., via NOR gate <NUM>), so DETECT_PLUG <NUM> can indicate a connected card before a cable status is determined. SLOT_12V_3V3_EN <NUM> and SLOT_3V3_AUX_EN <NUM> = <NUM> means main power and standby power to a card slot may be initially disabled.

The method may include performing unplug detection, at <NUM>, for example based on an Unplug_Det signal or variable. Unplug detection may include determining if either the slot or auxiliary power cable connection for a powered-on card has been disconnected, as illustrated in example methods of <FIG> and <FIG>. When Unplug_Det is set to "<NUM>", an unplug may have occurred and the system has not yet reset to allow power to be re-applied to a card. An Unplug_Det value of "<NUM>" may mean that the system is reset and ready to power a card. If an unplug is detected, the method may end, at <NUM>, and not allow power up. If an unplug is not detected, the method may continue to <NUM>.

At <NUM>, the method may include detecting a plug state for a card slot, for example by checking the DETECT_PLUG signal <NUM> of <FIG> and <FIG>. A determination may be made whether a card is plugged in, at <NUM>, for example based on the value of the DETECT_PLUG signal <NUM>. If no card is detected, the method may include continuing to get the card plugged state at <NUM>, or alternately ending the method at <NUM>.

When a card is plugged in, the method may include setting the ENABLE CABLE DETECTION / En_CBL_DETECT signal <NUM> to "<NUM>," and setting a timeout value at <NUM>. The simplified method of <FIG> may forego enabling auxiliary slot power to attempt to read an EEPROM from the card or otherwise attempt to determine whether the card requires an auxiliary power source. Accordingly, the method of <FIG> may rely on a timeout to provide time for an auxiliary cable to be connected to a card, and to proceed as though no auxiliary cable is required if the timeout expires.

After setting the ENABLE CABLE DETECTION signal <NUM> to "<NUM>," the method may include determining a plug state for the auxiliary power connection <NUM>, at <NUM>. The auxiliary cable plug state may be determined based on the value of the DETECT_PLUG signal <NUM> of <FIG> and <FIG>, in some examples. With En_CBL_DETECT set to "<NUM>", the DETECT_PLUG signal may be "<NUM>" until both an auxiliary cable and the cable slot plugs are detected. The method may include determining whether the timeout period has expired, at <NUM>. If the timeout has expired, the method may include proceeding on the assumption that no auxiliary power is required, and setting an ENABLE CABLE DETECTION signal <NUM> to "<NUM>" or false, at <NUM>. If the timeout has not expired, the method may include making a determination of whether the auxiliary connection or cable is plugged in, at <NUM>, for example based on the DETECT_PLUG signal <NUM>. If the auxiliary cable is not plugged in, the method may include continuing to monitor the plug state, at <NUM>. If the cable is determined to be plugged in at <NUM>, or cable detection was set to "<NUM>" at <NUM>, the method may include setting the ENABLE STANDBY POWER /SLOT_3V3_AUX_EN signal to <NUM>, and setting the SLOT POWER ENABLE /SLOT_12V_3V3_EN signal <NUM> to "<NUM>", at <NUM>. The method may then end, at <NUM>.

<FIG> depicts a flowchart <NUM> of another example of a simplified method for card detection and automated power on protection is depicted, relative to the methods of <FIG> and <FIG>. Similar operations and determination steps from previous flowcharts may not be described again in full detail for brevity. The method of flowchart <NUM> may allow for enabling power to a card with built-in hardware lockouts to disable or prevent power from being applied when a card is not fully connected. The method may be implemented via power control circuitry <NUM> of <FIG>, control circuit <NUM> of <FIG>, control processor <NUM> of <FIG> or <FIG>, or other circuits or modules. In some examples, flowchart <NUM> may correspond to an embodiment as depicted in <FIG>, in which no ENABLE CABLE DETECTION line is included.

The method may start at <NUM>, where initial signal values may be set such that Unplug_Det = <NUM>, SLOT POWER ENABLE/ SLOT_12V_3V3_EN <NUM> = <NUM>, and ENABLE STANDBY POWER/ SLOT_3V3_AUX_EN <NUM> = <NUM>. SLOT_12V_3V3_EN <NUM> and SLOT_3V3_AUX_EN <NUM> = <NUM> means main power and standby power to a card slot may be initially disabled.

The method may include performing unplug detection, at <NUM>, for example based on an Unplug_Det signal or variable. Unplug detection may include determining if either the slot or auxiliary power cable connection for a powered-on card has been disconnected, as illustrated in example methods of <FIG>,<FIG>, and <FIG>. When Unplug_Det is set to "<NUM>", an unplug may have occurred and the system has not yet reset to allow power to be re-applied to a card. An Unplug_Det value of "<NUM>" may mean that the system is reset and ready to power a card. If an unplug is detected, the method may end, at <NUM>, and not allow power up.

At <NUM>, the method may include detecting a plug state for a card slot. Detecting the plug state may include checking the PE_PRSNT# signal <NUM> of <FIG> and <FIG>. A determination may be made whether a card is plugged in, at <NUM>, for example based on the value of the PE_PRSNT# signal <NUM>. If no card is detected, the method may include continuing to get the card plugged state at <NUM>, or alternately ending the method at <NUM>.

When a card is plugged in, the method may include setting a timeout value at <NUM>. The method may then include getting a connection state for the auxiliary power connection <NUM>, at <NUM>. The auxiliary cable state may be determined based on the value of an AUX CABLE PRESENT# / CABLE_PRSNT# signal <NUM> of <FIG> and <FIG>, in some examples. If the timeout has not expired, the method may include making a determination of whether the auxiliary connection or cable is plugged in, at <NUM>, for example based on the AUX CABLE PRESENT# signal <NUM>. If the auxiliary cable is not plugged in, the method may include continuing to monitor the plug state, at <NUM>. If the cable is determined to be plugged in at <NUM>, or the timeout period has expired at <NUM>, the method may include setting the ENABLE STANDBY POWER signal to <NUM>, and setting the SLOT POWER ENABLE signal <NUM> to "<NUM>", at <NUM>. Whether power is provided to the auxiliary cable may depend on the value of CABLE_PRSNT# <NUM>, or whether a cable was detected at <NUM> or the timeout period expired at <NUM>. The method may then end, at <NUM>.

Turning now to <FIG>, a flowchart <NUM> for a method for card removal detection and guaranteed power off is depicted. The method of flowchart <NUM> may allow for cutting off power to a card that is not fully connected, particularly in situations where a connected card may be removed from a live system. A system implanting the method of <FIG> may disable power with hardware lockouts, and disable hardware from turning power back on inadvertently when a card is not fully and properly connected at both a slot and via an auxiliary power connection, if applicable. This may be implemented by ensuring all power connected to card has been removed prior to allowing a new connection or turning power back on. The method may be implemented via power control circuitry <NUM> of <FIG>, control circuit <NUM> of <FIG>, control processor <NUM> of <FIG> or <FIG>, or other circuits or modules. In some examples, flowchart <NUM> may correspond to an embodiment as depicted in <FIG>, in which an ENABLE CABLE DETECTION line <NUM> is included.

The method may start at <NUM>, with initial values for SLOT POWER ENABLE/ SLOT_12V_3V3_EN <NUM> = <NUM>, and ENABLE STANDBY POWER/ SLOT_3V3_AUX_EN <NUM> = <NUM>. ENABLE CABLE DETECTION/ En_CBL_DETECT <NUM> may potentially be set to either <NUM> or <NUM>, depending on whether an auxiliary power cable was connected for the inserted card (e.g., set to "<NUM>" if no cable is being used, or set to "<NUM>" if a cable is being used). The state of En_CBL_DETECT <NUM> may affect the behavior of signals such as DETECT_PLUG <NUM>, which may become <NUM> if either the cable or card slot become disconnected (for En_CBL_DETECT = <NUM>), or only when the card slot is disconnected (for En_CBL_DETECT = <NUM>).

The method may include getting a plug state for a card, at <NUM>. Detecting the plug state may include checking the DETECT_PLUG signal <NUM> of <FIG> and <FIG>, to determine whether a card has been disconnected at either the card slot <NUM> or the auxiliary power connection <NUM>, as appropriate. A determination may be made whether a card is plugged in, at <NUM>, for example based on the value of the DETECT_PLUG signal <NUM>. If the card is fully plugged in, the method may end, at <NUM>.

When a card is not fully plugged in, the method may include setting the SLOT POWER ENABLE signal <NUM> to "<NUM>," and setting the ENABLE STANDBY POWER signal <NUM> to "<NUM>," at <NUM>. Setting these values to <NUM> may turn off power to the card, including the auxiliary slot power, the primary slot power, and the auxiliary cable power connection, and may be implemented instantly via hardware logic. Cutting off these power sources can prevent power from being turned back on at the card slot or auxiliary power connection until a full removal of the card occurs.

At <NUM>, the method may include getting a state of the ENABLE CABLE DETECTION signal <NUM>. The status of the ENABLE CABLE DETECTION signal <NUM> may indicate whether an auxiliary power connection <NUM> was connected for the card, for example based on how the signal <NUM> was set in methods <NUM> or <NUM>. A determination may be made whether an auxiliary power cable was plugged in, at <NUM>. If an auxiliary power connection was connected, the method may include changing the value of ENABLE CABLE DETECTION from "<NUM>" to "<NUM>," and setting an unplug detection signal or value Unplug_Det to "<NUM>", at <NUM>. The Unplug_Det signal may be used to indicate when an unplug has occurred with a "<NUM>" value, and that the system has not been reset and ready to power another card until Unplug_Det is set to "<NUM>". If no auxiliary power connection was connected, ENABLE CABLE DETECTION was already set to "<NUM>" and may be kept in that state. Setting the ENABLE CABLE DETECTION to "<NUM>" may enable the DETECT_PLUG signal to indicate whether the card is still plugged in at the card slot.

At <NUM>, the method may include getting the detect plug state, and at <NUM>, making a determination of whether the card is fully unplugged, for example based on the DETECT_PLUG signal <NUM>. If the card is still plugged in, the method may include continuing the monitor the DETECT_PLUG state, at <NUM>. If the card is no longer connected, at <NUM>, or if no cable was plugged in, at <NUM>, the method may include setting a timeout period, at <NUM>. The timeout period may be set to force hysteresis before allowing power to be restored to a card again. A determination may be made whether the timeout period has expired, at <NUM>. If not, the method may include continuing to monitor the timeout period until it expires, at <NUM>. Once the timeout period has expired, the method may include setting the unplug detection state (e.g., via an Unplug_Det signal) to <NUM>, or otherwise allowing the system to recognize plugging in a card and enabling power to be restored to the card slot and auxiliary power connection. The method may then end, at <NUM>.

<FIG> depicts a flowchart <NUM> of another example method for card detection and automated power on protection. Similar to <FIG>, the method of flowchart <NUM> may allow for cutting off power to a card that is not fully connected, particularly in situations where a connected card may be removed from a live system. The method of flowchart <NUM> may utilize one or more additional pins to a logic integrated circuit, such as a microcontrontroller or FPGA, relative to the method of <FIG>. The circuitry employed to implement the method of figure <NUM> may include power control circuitry <NUM> of <FIG>, control circuit <NUM> of <FIG>, or control processor <NUM> of <FIG> or <FIG>. In some examples, flowchart <NUM> may correspond to an embodiment as depicted in <FIG>, in which no ENABLE CABLE DETECTION line is included.

The method may start at <NUM>, with initial values for SLOT POWER ENABLE/ SLOT_12V_3V3_EN <NUM> = <NUM>, and ENABLE STANDBY POWER/ SLOT_3V3_AUX_EN <NUM> = <NUM>.

The method may include getting a plug state for a card, at <NUM>. Getting the plug state may include checking the DETECT_PLUG signal <NUM> of <FIG> and <FIG>, to determine whether a card has been disconnected at either the card slot <NUM> or the auxiliary power connection <NUM>. A determination may be made whether a card is plugged in, at <NUM>, for example based on the value of the DETECT_PLUG signal <NUM>. If the card is fully plugged in (DETECT_PLUG = <NUM>), the method may end, at <NUM>.

When a card is not fully plugged in (DETECT_PLUG = <NUM>), the method may include setting the SLOT POWER ENABLE signal <NUM> to "<NUM>," and setting the ENABLE STANDBY POWER signal <NUM> to "<NUM>," at <NUM>. Setting these values to <NUM> may turn off power to the card, including the auxiliary slot power, the primary slot power, and the auxiliary power connection, and may be implemented instantly via hardware logic. Cutting off these power sources can prevent power from being turned back on at the card slot or auxiliary power connection until a full removal of the card occurs.

The method of <FIG> may include proceeding without a need to determine whether an auxiliary power connection <NUM> was connected, and may skip the cable connection check <NUM>-<NUM> of <FIG>. Accordingly, at <NUM>, the method may include setting an unplug detection signal or value Unplug_Det to "<NUM>". The Unplug_Det signal or value may be used to indicate when an unplug has occurred with a "<NUM>" value, and that the system has not been reset and ready to power another card until Unplug_Det is set to "<NUM>".

The method may include getting states for the CABLE_PRSNT# signal <NUM> and the PE_PRSNT# signal <NUM>, at <NUM>. The status of CABLE_PRSNT# and PE_PRSNT# may indicate whether both the connector slot <NUM> and the auxiliary power connector <NUM> have been disconnected. A determination of whether both CABLE_PRSNT# and PE_PRSNT# are "<NUM>" (e.g., plugged) or "<NUM>" (e.g., unplugged) may be made at <NUM>. If both signals indicate the card is not unplugged, the method may continue monitoring the signal states, at <NUM>.

If both signals indicate the card is fully unplugged, the method may include setting a timeout period, at <NUM>. The timeout period may be set to force hysteresis before allowing power to be restored to a card again. A determination may be made whether the timeout period has expired, at <NUM>. If not, the method may include continuing to monitor the timeout period until it expires, at <NUM>. Once the timeout period has expired, the method may include setting the unplug detection state (e.g., via an Unplug_Det signal) to <NUM>, or otherwise allowing the system to recognize plugging in a card and enabling power to be restored to the card slot and auxiliary power connection, at <NUM>. The method may then end, at <NUM>.

Turning now to <FIG>, a flowchart <NUM> of another example method for card detection and automated power on protection is shown. The method of flowchart <NUM> may allow for enabling power to a card with built-in hardware lockouts to disable or prevent power from being applied when a card is not fully connected. The circuitry employed to implement the method of <FIG> may include power control circuitry <NUM> of <FIG>, control circuit <NUM> of <FIG>, or control processor <NUM> of <FIG> or <FIG>. In some examples, flowchart <NUM> may correspond to an embodiment as depicted in <FIG>, in which an ENABLE CABLE DETECTION line <NUM> is included.

The method may start at <NUM>. To enable power to a newly inserted card, initial signal values should be set such that Unplug_Det = <NUM>, ENABLE CABLE DETECTION/ En_CBL_DETECT = <NUM>, SLOT POWER ENABLE/ SLOT_12V_3V3_EN <NUM> = <NUM>, and ENABLE STANDBY POWER/ SLOT_3V3_AUX_EN <NUM> = <NUM>. The method may include performing unplug detection, at <NUM>, for example based on an Unplug_Det signal or variable. When Unplug_Det is set to "<NUM>", an unplug may have occurred and the system has not yet reset to allow power to be re-applied to a card. An Unplug_Det value of "<NUM>" may mean that the system is reset and ready to power a card. If an unplug is detected, the method may end, at <NUM>, and not allow a card to be powered on.

When Unplug_Det is <NUM>, the method may include setting En_CBL_DETECT is set to <NUM>, or setting it <NUM> if it is not already so set, at <NUM>. At <NUM>, the method may include detecting a plug state for a card slot. Detecting the plug state may include checking the PE_PRESENT#/ PE_PRSNT# signal <NUM> of <FIG> and <FIG>, which may indicate whether a card has been inserted into the slot. A determination may be made whether a card is plugged in, at <NUM>, for example based on the PE_PRSNT# value. If no card is detected, the method may include continuing to determine the card plugged state at <NUM>.

Alternately, if the EEPROM does indicate auxiliary power is required, at <NUM>, the method may include getting a connection status for an auxiliary cable, for example by checking a CABLE_PRSNT# <NUM> state, at <NUM>. At <NUM>, a timeout period or other bail condition may be checked, to see if an exit condition has been reached without an auxiliary cable being connected. If the timeout period has elapsed, the method may include clearing set variables such as SLOT_3V3_AUX_EN to <NUM>, passing an error to a user through a user interface, or otherwise cancelling the card insertion operation, at <NUM>. The method may then end at <NUM>. If the timeout period has not elapsed, the method may include making a determination of whether the auxiliary connection or cable is plugged in, at <NUM>, for example based on a state of the AUX CABLE PRESENT#/ CABLE_PRSNT# signal <NUM>. If the auxiliary cable is not plugged in (e.g., CABLE_PRSNT# = <NUM>), the method may include continuing to monitor the plug state, at <NUM>. If the cable is determined to be plugged in (e.g., CABLE_PRSNT# = <NUM>), the method may include setting En_CBL_DETECT to <NUM>, at <NUM>, which may thereby require the auxiliary cable to remain connected while the card is plugged in. The method may include setting the SLOT POWER ENABLE /SLOT_12V_3V3_EN signal <NUM> to "<NUM>" at <NUM>, which in turn may trigger power being provided to the card through the slot and the auxiliary power connection. The method may then end, at <NUM>.

Returning to the decision of <NUM>, if a determination is made that the card does not include an EEPROM or other source of information indicating whether auxiliary power is required, the method may include getting a plug state for the auxiliary power connection <NUM>, at <NUM>, which may include obtaining the value of the CABLE_PRSNT# signal <NUM>. The method may include determining whether a timeout value has expired, at <NUM>. When it is unknown whether the card requires auxiliary power, the timeout may be used to provide sufficient time to connect an auxiliary cable if one is required, which connection may then be detected. However, if no auxiliary cable is connected by the timeout period, the method may proceed as though the card does not require an auxiliary power connection. The timeout period may be set by a manufacturer of the computing system, or may be set by a user or host system to a desired value. If the timeout has not expired, the method may include making a determination of whether the auxiliary connection or cable is plugged in, at <NUM>, for example based on the CABLE_PRSNT# signal <NUM>. If the auxiliary cable is not plugged in, the method may include continuing to monitor the plug state, at <NUM>. If the cable is determined to be plugged in at <NUM>, the method may include setting En_CBL_DETECT to <NUM> at <NUM>, so that power can be shut off if the cable becomes disconnected. After setting En_CBL_DETECT to <NUM> at <NUM>, or the timeout period expired at <NUM>, the method may include setting the SLOT POWER ENABLE /SLOT_12V_3V3_EN signal <NUM> to "<NUM>" at <NUM>, which in turn may trigger power being provided to the card through the slot, and if appropriate, the auxiliary power connection, depending on the CABLE_PRSNT# <NUM> value, the En_CBL_DETECT value, or whether a cable was connected or the timeout period expired. The method may end, at <NUM>.

<FIG> depicts a flowchart <NUM> of another example method for card detection and automated power on protection. The method of flowchart <NUM> may allow for cutting off power to a card that is not fully connected, particularly in situations where a connected card may be removed from a live system, allowing for slot-specific power control. The circuitry employed to implement the method of figure <NUM> may include power control circuitry <NUM> of <FIG>, control circuit <NUM> of <FIG>, or control processor <NUM> of <FIG> or <FIG>.

The method may start at <NUM>, with initial values for SLOT POWER ENABLE/ SLOT_12V_3V3_EN <NUM> = <NUM>, ENABLE STANDBY POWER/ SLOT_3V3_AUX_EN <NUM> = <NUM>, and a "Bail" variable or value of "<NUM>". The Bail value may be used to determine whether to exit the operations of flowchart <NUM> if an expected trigger or occurrence does not happen. Although Bail may be implemented as a bit flag or register value, alternate methods of exiting the process may be employed, such as timeout periods or user inputs.

The method may include getting a plug state for a card, at <NUM>. Getting the plug state may include checking the CABLE_PRSNT# <NUM> and PE_PRSNT# <NUM> signal values of <FIG> and <FIG>, which may indicate whether a card is connected at the auxiliary cable <NUM> and the card port <NUM>, respectively. A determination may be made whether a card has become disconnected at either element, at <NUM>, for example based on the values of CABLE_PRSNT# <NUM> and PE_PRSNT# <NUM>. As these signals may be "<NUM>" when a connection is detected, a logical "OR" operator (∥) may be used to determine whether either of these signals has changed to "<NUM>", indicating a disconnect. If the card is fully plugged in (a false result from the logical OR), the method may end, at <NUM>.

When a card is not fully plugged in (logical OR = true), the method may include setting the SLOT POWER ENABLE/ SLOT_12V_3V3_EN signal <NUM> to "<NUM>," and setting the ENABLE STANDBY POWER/ SLOT_3V3_AUX_EN signal <NUM> to "<NUM>," at <NUM>. Setting these values to <NUM> may turn off power to the card, including the auxiliary slot power, the primary slot power, and the auxiliary power connection, and may be implemented instantly via hardware logic. Cutting off these power sources can prevent power from being turned back on at the card slot or auxiliary power connection until a full removal of the card occurs. At <NUM>, the method may include setting Unplug_Det = <NUM>. Unplug_Det may be a variable or value which indicates whether a disconnect has occurred, and may prevent power being applied to a card slot until Unplug_Det is reset to <NUM> (see, e.g., <FIG> and <FIG>).

The method may include getting states for the CABLE_PRSNT# signal <NUM> and the PE_PRSNT# signal <NUM>, at <NUM>. At <NUM>, a determination may be made whether the Bail condition has become "<NUM>", a timeout period has been reached, or some other trigger has occurred indicating the method should be exited to avoid an endless loop or hung operation. If the Bail condition has been triggered, the method may include clearing relevant variables or signals, such as setting SLOT_3V3_AUX_EN to <NUM>, at <NUM>, clearing the Unplug_Det value to <NUM> at <NUM>, and ending the method at <NUM>.

If the Bail condition is not met, the method may include determining whether both CABLE_PRSNT# and PE_PRSNT# are "<NUM>" (e.g., plugged) or "<NUM>" (e.g., unplugged) at <NUM>, for example with a logical "AND" operator (&&). If the signals indicate the card is not fully unplugged at both cable and slot, the method may continue monitoring the signal states, at <NUM>. If both signals indicate the card is fully unplugged, the method may include setting a timeout period, at <NUM>. The timeout period may be set to force hysteresis before allowing power to be restored to a card again. A determination may be made whether the timeout period has expired, at <NUM>. If not, the method may include continuing to monitor the timeout period until it expires, at <NUM>. Once the timeout period has expired, the method may include setting the unplug detection state (e.g., via an Unplug_Det signal) to <NUM>, or otherwise allowing the system to recognize plugging in a card and enabling power to be restored to the card slot and auxiliary power connection, at <NUM>. The method may then end, at <NUM>.

Although signal values of "<NUM>" or "<NUM>" are presented herein for various signal lines or system states for implementing the example systems in the circuit diagrams and flowcharts, it should be understood that these signal values or states are exemplary. The processes and systems disclosed herein may be implemented using other signal values, for example by modifying logic gates control line connections.

The functional block diagrams, operational scenarios and sequences, and flow diagrams provided in the Figures are representative of exemplary systems, environments, and methodologies for performing novel aspects of the disclosure. While, for purposes of simplicity of explanation, methods included herein may be in the form of a functional diagram, operational scenario or sequence, or flow diagram, and may be described as a series of acts, it is to be understood and appreciated that the methods are not limited by the order of acts, as some acts may, in accordance therewith, occur in a different order and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a method could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all acts illustrated in a methodology may be required for a novel implementation.

Claim 1:
A method comprising:
maintaining a slot power connection and an auxiliary power connection for a peripheral card slot (<NUM>, <NUM>, <NUM>, <NUM>) in a powered-off state;
sensing insertion of a peripheral card (<NUM>, <NUM>, <NUM>) into the peripheral card slot (<NUM>, <NUM>, <NUM>, <NUM>), characterised in that:
responsive to sensing insertion, detecting whether the auxiliary power connection is employed by the peripheral card (<NUM>, <NUM>, <NUM>);
based at least on detecting the auxiliary power connection is employed by the peripheral card (<NUM>, <NUM>, <NUM>), applying current limits selected for the peripheral card (<NUM>, <NUM>, <NUM>) to the slot power connection and the auxiliary power connection and concurrently enabling the slot power connection and the auxiliary power connection for the peripheral card (<NUM>, <NUM>, <NUM>); and
based at least on detecting the auxiliary power connection is not employed by the peripheral card (<NUM>, <NUM>, <NUM>), applying a current limit selected for the peripheral card (<NUM>, <NUM>, <NUM>) to the slot power connection and enabling only the slot power connection for the peripheral card (<NUM>, <NUM>, <NUM>).