The inventions generally relate to Universal Serial Bus (USB) host controllers.
Universal Serial Bus (USB) is a serial bus standard used to interface devices. USB was originally designed for computers, but its popularity has prompted it to also become commonplace on other devices such as, for example, video game consoles, portable digital assistants (PDAs), portable digital video disk (DVD) and media players, cell phones, televisions (TVs), home stereo equipment such as MP3 players and iPods, car stereos, and portable memory devices. USB can be used to connect peripherals such as mouse devices, keyboards, gamepads, joysticks, scanners, digital cameras, printers, external storage, networking components, and many other devices. USB is used to connect several devices to a host controller (HC) through a chain of hubs.
Previous efforts relating to USB host controller (HC) development have gone into making USB HCs bigger and faster and adding as many additional ports as possible. Light weight USB HCs do not currently exist. However, this direction does not appear to be appropriate for the emerging embedded application market for USB. Current USB HCs are designed to support all possible devices and to support up to 127 different devices. These HCs require significant memory and central processing unit (CPU) resources to service efficiently. This acts as a barrier to entry for many potential embedded USB applications, since the cost of adding a full-featured HC.
The inventions will be understood more fully from the detailed description given below and from the accompanying drawings of some embodiments of the inventions which, however, should not be taken to limit the inventions to the specific embodiments described, but are for explanation and understanding only.
Some embodiments of the inventions relate to Universal Serial Bus (USB) host controllers.
In some embodiments a signal is sent to start a current time frame for a Universal Serial Bus host controller. After the sending, a time period is entered during which a pending transaction may be transmitted by the host controller. If a transaction has been formed, the formed transaction is transmitted during the entered period. When less than a maximum transfer period remains between a current time and a start of a next time frame, there is a refraining from transmitting any additional formed transactions during the current time frame.
In some embodiments a Universal Serial Bus host controller includes a set of registers, a memory to buffer read data or written data, and a processor. The processor is able to send a signal to start a current time frame, after the sending, to enter a period during which a pending transaction may be transmitted by the host controller, if a transaction has been formed, to transmit the formed transaction during the entered period, and when less than a maximum transfer period remains between a current time and a start of a next time frame, to refrain from transmitting any additional formed transactions during the current time frame.
In some embodiments, a system includes a USB host controller and a USB device coupled to the USB host controller (for example, via a USB cable). The USB host controller is able to send a signal to start a current time frame, after the sending, to enter a time period during which a pending transaction may be transmitted by the host controller, if a transaction has been formed, to transmit the formed transaction during the entered period, and when less than a maximum transfer period remains between a current time and a start of a next time frame, to refrain from transmitting any additional formed transactions during the current time frame.
In some embodiments an article includes a computer readable medium having instructions thereon which when executed cause a computer to send a signal to start a current time frame for a Universal Serial Bus host controller, after the sending, to enter a period during which a pending transaction may be transmitted by the host controller, if a transaction has been formed, to transmit the formed transaction during the entered period, and when less than a maximum transfer period remains between a current time and a start of a next time frame, to refrain from transmitting any additional formed transactions during the current time frame.
For many embedded applications, USB is attractive as a well-known two-wire interface. USB properties that would be desirable in embedded applications include the actual transport. The plug-n-play and wide range of device support properties of USB are not as desirable in embedded applications. In such applications, there is typically only one device and it is hard-wired in place. In some embodiments, a USB host controller (HC) enables this type of use by providing a simple-to-program host-end controller for USB signaling while removing the need to provide full USB support of all known devices. In some embodiments, an example of the potential proliferation of such a use is a simple Wi-Fi® security configuration proposed by Microsoft Corp. and Intel Corp. This model allows users to transfer security certificates between Wi-Fi® nodes using USB flash drives. The model would proliferate very quickly if adding a single-purpose HC to each node was a reasonable and cost effective addition (for example, to each Wi-Fi® node such as access points, routers, and other types of headless equipment).
In some embodiments state machine 102 may be implemented in software, hardware, and/or firmware (including any combination of one or more thereof. In some embodiments state machine 102 may be implemented using a processor.
In some embodiments, registers 104 include a control/status register 112, a data register 114, an address register 116, and/or a PID (physical interface devices) register 118. In some embodiments, control/status register 112 includes Data Length (for example, ten bits to allow for USB2 high-speed), Direction (for example, one bit to indicate read/write), GO (for example, one bit to signal transaction start), ERR (for example, one bit to indicate error completion), BUSY (for example, one bit to indicate current state of the HC), ENA (for example, one bit to enable/disable the HC), and/or RST (for example, one bit to drive USB reset signaling on wire). In some embodiments, data register 114 is a transaction buffer, which can, for example, be implemented in many different possible currently accepted ways for implementing buffer access. In some embodiments, address register 116 provides addressing components for generated transaction, for example, including ENDPT (for example, four bits to encode a target endpoint number), and/or ADDR (for example, seven bits to encode a target device address). In some embodiments, PID register 118 provides transaction type components for a generated transaction, including for example, TOKEN (for example, eight bits to encode a transaction token such as IN, OUT, SOF, and/or SETUP, etc.), SENDPIC (for example, eight bits to encode the transaction PID such as DATA0, DATA1, ACK, NAK, and/or STALL, etc.), and/or RCVPID (for example, eight bits for latching a PID code returned by the device and/or valid upon transaction completion).
In some embodiments a timer-driven state machine (for example, state machine 102) has three states, including a “Send SOF” (Start of Frame) state, a “Send Pending Transaction” state, and a “Wait for SOF” state. These states provide a way of simply avoiding “babble”, the condition where a party continues to transmit beyond the end of the current frame.
In some embodiments, the timer period between successive “Send SOF” states corresponds to the nature of the USB frame time of the target device (for example, 125 usec for High Speed USB or 1 ms for Full Speed USB). In this state, the USB HC broadcasts a single SOF token to an attached device. The USB HC advances to the “Send Pending Transactions” state upon completion of sending the SOF token, for example.
In some embodiments, in the “Send Pending Transactions” state, the USB HC waits for indication that a transaction has been formed. This is indicated, for example, by host software writing a “GO” bit in the USB HC registers. When this “GO” bit is set, the USB HC will transmit the formed transaction. If the direction bit indicates an “OUT” direction, then the USB HC will also capture the response token of the device in a register. If the direction bit indicates an “IN” direction, the USB HC will capture the returned data to the memory buffer (for example, memory 106). Once the transaction is complete, the USB HC checks the timer. If enough time remains to execute another maximum size transaction, then the USB HC returns to polling the “GO” bit for another transfer.
In some embodiments, the USB HC moves to the “Wait for SOF” state when less than a maximum buffer transfer period remains between the present time and the start of the next time frame, thus preventing a babble condition. The USB HC waits in this state until the timer move it to the “Send SOF” state and the cycle restarts.
In some embodiments embedded USB HC applications are possible that are not advantageous with current USB HCs. For example, by using USB HCs according to some embodiments USB HCs may be proliferated for uses such as Wi-Fi® configurations and/or applications requiring additional flash memory (for example, NAND flash memory).
In some embodiments USB HC state machines may be implemented in software, hardware, and/or firmware, for example (including combinations of one or more of software, hardware, and/or firmware, for example).
Although some embodiments have been described in reference to particular implementations, other implementations are possible according to some embodiments. Additionally, the arrangement and/or order of circuit elements or other features illustrated in the drawings and/or described herein need not be arranged in the particular way illustrated and described. Many other arrangements are possible according to some embodiments.
In each system shown in a figure, the elements in some cases may each have a same reference number or a different reference number to suggest that the elements represented could be different and/or similar. However, an element may be flexible enough to have different implementations and work with some or all of the systems shown or described herein. The various elements shown in the figures may be the same or different. Which one is referred to as a first element and which is called a second element is arbitrary.
In the description and claims, the terms “coupled” and “connected,” along with their derivatives, may be used. It should be understood that these terms are not intended as synonyms for each other. Rather, in particular embodiments, “connected” may be used to indicate that two or more elements are in direct physical or electrical contact with each other. “Coupled” may mean that two or more elements are in direct physical or electrical contact. However, “coupled” may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
An algorithm is here, and generally, considered to be a self-consistent sequence of acts or operations leading to a desired result. These include physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers or the like. It should be understood, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities.
Some embodiments may be implemented in one or a combination of hardware, firmware, and software. Some embodiments may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by a computing platform to perform the operations described herein. A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, the interfaces that transmit and/or receive signals, etc.), and others.
An embodiment is an implementation or example of the inventions. Reference in the specification to “an embodiment,” “one embodiment,” “some embodiments,” or “other embodiments” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least some embodiments, but not necessarily all embodiments, of the inventions. The various appearances “an embodiment,” “one embodiment,” or “some embodiments” are not necessarily all referring to the same embodiments.
Not all components, features, structures, characteristics, etc. described and illustrated herein need be included in a particular embodiment or embodiments. If the specification states a component, feature, structure, or characteristic “may”, “might”, “can” or “could” be included, for example, that particular component, feature, structure, or characteristic is not required to be included. If the specification or claim refers to “a” or “an” element, that does not mean there is only one of the element. If the specification or claims refer to “an additional” element, that does not preclude there being more than one of the additional element.
Although flow diagrams and/or state diagrams may have been used herein to describe embodiments, the inventions are not limited to those diagrams or to corresponding descriptions herein. For example, flow need not move through each illustrated box or state or in exactly the same order as illustrated and described herein.
The inventions are not restricted to the particular details listed herein. Indeed, those skilled in the art having the benefit of this disclosure will appreciate that many other variations from the foregoing description and drawings may be made within the scope of the present inventions. Accordingly, it is the following claims including any amendments thereto that define the scope of the inventions.