Abstract:
An apparatus comprises a memory device to store a pre-generated Universal Serial Bus (USB) command before a USB peripheral device is coupled to a USB. The apparatus also includes a processing device to retrieve the pre-generated USB command from the memory device and transmit the pre-generated USB command to the USB peripheral device over the USB. A method comprises identifying a Universal Serial Bus (USB) peripheral device is coupled to a USB. The USB peripheral device is coupled to the universal serial bus after a pre-generated USB command is stored in a memory device. The method further includes transmitting the pre-generated USB command to the USB peripheral device over the USB in response to identifying the USB peripheral device is coupled to the USB.

Description:
RELATED APPLICATIONS 
       [0001]    This application claims priority from U.S. Provisional Application No. 60/912,577, filed Apr. 18, 2007, which is incorporated herein by reference. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The present disclosure relates generally to Universal Serial Bus (USB) applications, and more particularly to specialized USB controllers. 
       BACKGROUND 
       [0003]    The Universal Serial Bus (USB) specification describes a uniform data transmission protocol for use when transmitting data over a Universal Serial Bus. When fully compliant, USB controllers conform to the USB specification by implementing all of the functionality described by the USB specification. Although the use of fully compliant USB controllers is attractive because they can perform any activity described in USB specification, they may be complex and their incorporation into many USB hosts may be costly and an inefficient use of system resources. Thus the ability to do anything described in USB specification comes at the cost of being able to do a few simple things efficiently. 
     
    
     
       DESCRIPTION OF THE DRAWINGS 
         [0004]    The invention may be best understood by reading the disclosure with reference to the drawings. 
           [0005]      FIGS. 1A and 1B  are block diagrams of universal serial bus host systems according to embodiments of the invention. 
           [0006]      FIG. 2  is a flow diagram illustrating embodiments of the pre-generated USB signaling  200  described with reference to  FIGS. 1A and 1B . 
           [0007]      FIG. 3  is an example flowchart of the universal serial bus host systems shown in  FIGS. 1A and 1B . 
       
    
    
     DETAILED DESCRIPTION 
       [0008]      FIGS. 1A and 1B  are block diagrams of universal serial bus host systems  100  according to embodiments of the invention. Referring to  FIG. 1A , a universal serial bus (USB) host system  100  is coupled to a USB peripheral device  160  via a universal serial bus  150 . The USB host system  100  includes a central processor  120  to control the communication with the USB peripheral device  160  for the USB host system  100 . For instance, the central processor  120  may direct the USB host system  100  to issue requests over the USB  150 , synchronize with incoming data from the USB  150  by tracking synchronization bits in the incoming data, decode the incoming data, determine whether the incoming data was received correctly, and respond to the incoming data when necessary. 
         [0009]    USB host system  100  may be a reduced functionality USB host controller, capable of performing a set of one or more preprogrammed functions from the USB specification. For instance, when the USB host system  100  is incorporated into a host device, such as a battery charger, the USB host system  100  may include functionality that allows the host device to charge the battery of a USB peripheral device  160  (such as a cellphone, PDA, etc) via the USB  150 . The inclusion of a fully compliant USB host controller into a host device that only intends to utilize the USB  150  to perform charging operations can be expensive and unnecessarily complex. 
         [0010]    The USB host system  100  includes a memory  110  to store pre-generated USB data  115  for use in transmissions over the USB  150  to the USB peripheral device  160 . This pre-generated USB data  115  may be generated and stored in memory  110  by the central processor  120  or by another device internal to or external from the USB host system  100 . As will be described below in greater detail, the pre-generated USB data  115  may have a format that allows the USB host system  100  to transfer the pre-generated USB data  115  from the memory  110  to the USB  150  without having to perform alterations on the pre-generated USB data  115 . 
         [0011]    The USB host system  100  includes a universal serial bus physical interface (“phy”)  140  to couple to the USB  150 . The universal serial bus interface  140  may identify when a peripheral device  160  is coupled to the USB host system  100  via the USB  150  and provide a USB state  142  to the central processor  120  that indicates the peripheral device  160  is coupled to the USB host system  100  via the USB  150 . The USB  150  may have at least 3 states: a J state, a K state, and a single-ended 0 (SE0) state. The J state may correspond to a 3 v-0 v condition across the two-wire pair associated with the USB  150 . The K state may correspond to a 0 v-3 v condition across the two-wire pair associated with the USB  150 . The SE0 state may correspond to a 0 v-0 v condition across the two-wire pair associated with the USB  150 . The universal serial bus interface  140  may identify when a peripheral device  160  is coupled to the USB host system  100  according to the presence of one of these USB states, or from transitions in the USB states. 
         [0012]    The central processor  120  may receive pre-generated USB data  115  from the memory  110 , e.g., responsive to the USB state  142 , and direct the USB host system  100  to provide the pre-generated USB data  115  on the USB  150 . In some embodiments, the pre-generated USB data  115  may be a request for the peripheral device  160 , or may be an acknowledgement of USB response data  144  received from the peripheral USB device  160 . The pre-generated USB data  115  may be a complete bit sequence or substantially complete bit sequence that is available for transmission over the USB  150 . For instance, when the pre-generated USB data  115  is a complete bit sequence, the USB host system  100  may directly retrieve the pre-generated USB data  115  from memory  110  and send it over the USB  150  without having to perform additional processing on the data. When the pre-generated USB data  115  is a substantially complete bit sequence, the USB host system  100  may directly retrieve the pre-generated USB data  115  from memory  110  and send it over the USB  150  with little additional processing, such as appending a preamble, etc. 
         [0013]    In some embodiments, the USB host system  100  may send the USB peripheral device  160  at least one pre-generated command that is configured to instruct the USB peripheral device  160  to enable battery charging. The USB peripheral device  160  may charge a battery with power received from the USB host system  100  over the USB  150  responsive to the sent command. The USB host system  100  may determine to send the pre-generated command to the USB peripheral device  160  when the USB host system  100  detects certain pre-defined characteristics of the USB peripheral device  160 . For instance, the USB host system  100  may detect that the USB peripheral device  160  only connects to the USB host system  100  to charge one or more batteries, and thus does not require a fully-compliant USB host. In other embodiments, the USB host system  100  may detect that the USB peripheral device  160  does not require USB functionality that the USB host system  100  does not support, and therefore send the USB peripheral device  160  the pre-generated command. 
         [0014]    The USB host system  100  includes a serializer/deserializer  130  to perform serialization operations on outgoing data and deserialization operations on data incoming from the USB  150 . The USB host system  100  may also includes a universal asynchronous receiver and transmitter (UART)  170  to sample USB response data  144  from the peripheral USB device  160 . In some embodiments, the central processor  120  or other device in the USB host system  100  may sample USB response data  144  from the peripheral USB device  160 . The UART  170  may over-sample the USB response data  144 , for example using a 4 times over-sampling process, to recover the response and to generate sampled USB response data  172 . The UART  170  may provide the sampled USB response data  172  to the central processor  120  via the serializer/deserializer  130  for storage and processing. Embodiments of the operation of the USB host system  100  will be described below in greater detail. 
         [0015]    When the central processor  120  receives the USB state  142  indicating that a USB peripheral device  160  is coupled to the USB host system  100 , the central processor  120  may retrieve a pre-generated Get_Device_Descriptor request, which is a standard USB request, from the memory  110 . Once the pre-generated Get_Device_Descriptor request is provided to the peripheral USB device  160  over the USB  150 , the peripheral USB device  160  may generate a response to the pre-generated Get_Device_Descriptor request. The response may include a device descriptor that describes the type of device coupled to the USB host system  100  via the USB  150 . 
         [0016]    The USB host system  100  may receive the response at the universal serial bus interface  140  as USB response data  144  and provide the USB response data  144  to the UART  170 . The UART  170  may sample the USB response data  144  and provide the sampled USB response data  172  to the central processor  120  via the serializer/deserializer  130  for storage and/or processing. In some embodiments, the UART  170  may over-sample the USB response data  144 , for example, using a 4 times over-sampling process, to generate sampled USB response data  172 . 
         [0017]    The central processor  120  may direct the USB host system  100  to provide an acknowledgement to the response from the peripheral USB device  160 . The acknowledgement may be stored in the memory  110  as pre-generated USB data  115 , which is retrieved responsive to the reception of the response from the peripheral USB device  160 . In some embodiments, the acknowledgement is sent to the peripheral USB device  160  over the USB  150  prior to the central processor  120  parsing the response to identify the device descriptor. 
         [0018]    The central processor  120  may store the sampled USB response data  172  in the memory  110 , and then subsequently retrieve the sampled USB response data  172  for processing. The central processor  120  may parse the sampled USB response data  172  to determine whether the USB response data  144  was correctly received by the USB host system  100 . For instance, the central processor  120  may perform a cyclical redundancy check (CRC) and compare the results of the CRC to the contents of a CRC field in the USB response data  144 . Embodiments of this USB host system-to-peripheral device interaction will be described later in greater detail. 
         [0019]    Referring to  FIG. 1B , the USB host system  101  is similar to the USB host system  100  shown and described in  FIG. 1A  with the following differences. The USB host system  101  includes a direct memory access controller  180  to perform direct memory access (DMA) operations on data in the memory  110 . The direct memory access controller  180  may perform DMA operations responsive to DMA requests  182  from the central processor  120  or from other control logic  190 . 
         [0020]    For instance, the direct memory access controller  180  may retrieve pre-generated USB data  115  from the memory  100  to the USB  150 , via the USB  150  via the serializer/deserializer  130  and the universal serial bus interface  140 . The direct memory access controller  180  may also directly store data received from the USB  150  to the memory  110  for subsequent parsing by the central processor  120 . Both of these DMA operations may be performed without involving the central processor  120 , thus eliminating the need for the central processor  120  to be involved in any real-time aspects of the USB host system  101  control. 
         [0021]    The USB host system  101  includes a TD memory  185  to store transaction descriptors  187  used in performing DMA operations. For instance, the direct memory access controller  180  may receive a DMA request  182  from either the central processor  120  or the control logic  190  that prompts the direct memory access controller  180  to receive a transaction descriptor  187  from the TD memory. The direct memory access controller  180  may perform the DMA operations according to the transaction descriptors  187  received from the TD memory  185 . 
         [0022]      FIG. 2  is a flow diagram illustrating embodiments of the pre-generated USB signaling  200  described with reference to  FIGS. 1A and 1B . Referring to  FIG. 2 , the pre-generated USB signaling  200  includes a plurality of start of frame signals  210 A and  210 B to denote a packet frame associated with the USB  150 . For instance, the USB host systems  100  and  101  may generate or retrieve from memory  110  the start of frame signals  210 A and  210 B to indicate the beginning of a new packet frame for the USB  150 . In some embodiments, the timing between these signals may be 1 millisecond. 
         [0023]    After the start of frame signal  210 A is provided to the USB  150  by the USB host system  100  or  101 , the USB host system  100  or  101  may provide a USB request  220  to the USB  150 . The USB request  220  may be pre-generated data  115  stored in memory  110  that is transferred to the USB  150  during a central processor transfer operation or a DMA operation. 
         [0024]    The USB request  220  may be a standard or vendor USB request with the following fields: a preamble field  222 , a packet identifier field  224 , a USB request data field  226 , and a CRC field  228 . The preamble field  222  may indicate the USB request  220  conforms to the USB specification. The packet identifier field  224  may identify the packet type, such as a standard or vender request, and indicate whether the USB request  220  is a data-in, data-out, or set-up packet. The USB request data field  226  includes the data to be transferred to the peripheral USB device  160  over the USB  150 . The CRC field  228  is for use by the peripheral USB device  160  to determine whether the USB request  220  was received correctly, or that no bits were lost during transfer over the USB  150 . 
         [0025]    After the peripheral USB device  160  receives the USB request  220  over the USB  150 , the peripheral USB device  160  may provide a USB response  230  to the USB request  220 . The peripheral USB device  160  may provide the USB response  230  when the USB  150  is in an idle state, such as when there has not been state switching for a predetermined period of time after the transmission of the USB request  220 . 
         [0026]    The USB response  230  may have a similar format to the USB request  220 , with a preamble field  232 , a packet identifier field  234 , a USB response data field  236 , and a CRC field  238 . The preamble field  232  may indicate the USB response  230  conforms to the USB specification. The packet identifier field  234  may identify the packet type, such as the type of response, and indicate whether the USB response  230  is a data-in, data-out, or set-up packet. The USB response data field  236  includes the data to be transferred to the USB host system  100  or  101  over the USB  150 . The CRC field  238  is for use by the USB host system  100  or  101  to determine whether the USB response  230  was received correctly, or that no bits were lost during transfer over the USB  150 . 
         [0027]    Upon reception of the USB response  230 , the USB host system  100  or  101  provides an acknowledgement ACK  240  over the USB  150 . The acknowledgement ACK  240  may be pre-generated data  115  stored in memory  110  that is transferred to the USB  150  during a central processor transfer operation or a DMA operation. The USB host system  100  or  101  may provide the acknowledgement ACK  240  when the USB  150  is in an idle state, such as when there has not been state switching for a predetermined period of time after the transmission of the USB response  230 . In some embodiments, the USB host system  100  or  101  may automatically send the acknowledgment ACK  240  after receiving the USB response  230  without having first processed or parsed the USB response  230  to determine if it was correctly received. This automatic transmission of the acknowledgement ACK  240  allows the USB host systems  100  and  101  to implement USB host functionality without dedicated hardware to process USB packets in “real-time” as required in conventional systems. 
         [0028]      FIG. 3  is an example flowchart of the universal serial bus host systems shown in  FIGS. 1A and 1B . Referring to  FIG. 3 , in a block  310 , the USB host system  100  or  101  pre-generates and stores a subset of USB commands  115  in a memory  110 , the pre-generated commands  115  available for transmission to at least one USB peripheral device  160  over universal serial bus  150 . The central processor  120  may pre-generate the USB commands or pre-generated USB data  115  and store the commands in the memory  110 . In some embodiments, the memory  110  may be pre-programmed with the pre-generated USB data  115  according to the functionality that the USB host system  100  or  101  intends to supply via the USB  150 . 
         [0029]    In a block  320 , the USB host system  100  or  101  transfers at least one command from the subset of pre-generated commands  115  stored in the memory  110  to the USB peripheral device  160  over the universal serial bus  150 . The USB host system  100  or  101  may be configured to have the central processor  120  to perform transfers of pre-generated USB data  115  to the USB  150 , or include a direct memory access controller  180  to directly access the memory  110  and provide the pre-generated USB data  115  to the USB  150 . The direct memory access controller  180  may perform the DMA operations on the pre-generated USN data  115  without having to involve the central processor  120 . 
         [0030]    In a block  330 , the USB host system  100  or  101  receives a response to the transferred command from the USB peripheral device  160  over the universal serial bus  150 . The response may be sampled or over-sampled by the USB host system  100  or  101  as it is received from the USB  150 . 
         [0031]    In a block  340 , the USB host system  100  or  101  sends an acknowledgment packet ACK to the USB peripheral device  160  over the universal serial bus  150  responsive to receiving the response from the USB peripheral device  160 . The acknowledgement ACK may indicate that a non-corrupted response was received by the USB host system  100  or  101  regardless of whether the USB host system  100  or  101  processed the response to determine if it was corrupted during transmission. In other words, the USB host system  100  or  101  may send the acknowledgement ACK directing the peripheral device  160  to not resend the response, even when a corrupted response is received. 
         [0032]    In a block  350 , the USB host system  100  or  101  stores the response to the memory  110 . The USB host system  100  or  101  may be configured to have the central processor  120  to transfer the response to the memory  110 , or include a direct memory access controller  180  to directly provide the response to the memory  110 . The direct memory access controller  180  may perform the DMA operations on the response without having to involve the central processor  120 . 
         [0033]    In a block  360 , the USB host system  100  or  101  parses the response to identify USB data requested in the command and to determine whether the response was correctly received. In some embodiments, the central processor  120  may perform the parsing of the response when it is not busy performing other processing tasks for the USB host system  100  or  101 . 
         [0034]    Since many applications for USB host systems that a full Host implementation would include USB functionality that would never be used, the selective removal of this non-usable USB functionality allows USB hosts systems to have a reduced size and cost without de facto reduced USB functionality. Some of these reduced-functionality USB host systems may pre-generate their USB commands, instead of generating them on-the-fly, allows for the removal of dedicated USB host controller hardware from these reduced-functionality USB host systems. By acknowledging every packet received from the USB regardless of whether it was corrupted during transmission, allows these reduced-functionality USB host systems to further defray processing until a time more convenient to its processing center(s). Further, an incorporation of DMA functionality between the USB and memory allows the reduced-functionality USB host systems to quickly and efficiently transfer pre-generated data to the USB and store data from the USB to the memory without involving the central processor. 
         [0035]    One of skill in the art will recognize that the concepts taught herein can be tailored to a particular application in many other advantageous ways. In particular, those skilled in the art will recognize that the illustrated embodiments are but one of many alternative implementations that will become apparent upon reading this disclosure. 
         [0036]    The preceding embodiments are exemplary. Although the specification may refer to “an”, “one”, “another”, or “some” embodiment(s) in several locations, this does not necessarily mean that each such reference is to the same embodiment(s), or that the feature only applies to a single embodiment.