The present invention relates generally to architectures that provide communication paths between host devices and functions, and more particularly to architectures for accommodating communication paths between multiple hosts and one or more shared functions.
Communication protocols can allow a “host” computing devices (for example a personal computer, laptop computer, etc.) to communicate with one or more “secondary” devices. For example, media files can be transferred between media players and a host, image files can be transferred from a camera to a host, or input devices can provide input data for the host (e.g., mouse, game controller, etc.). One popular communication protocol is that included in the Universal Serial Bus (USB) Specification.
To better understand various aspects of the disclosed embodiments, conventional systems for interconnecting secondary devices with a host will now be described with reference to
Various embodiments will now be described in detail that show methods and devices that can allow for communication paths to be created between two hosts, as well as between the hosts and a common function. Such communication paths can be essentially independently of one another. As a result, accesses to a function by either host can be “direct” (i.e., not pass through the other host). Further, such an arrangement can allow hosts to access multiple functions, and/or allow multiple logical communication endpoints to be created from a single physical communication endpoint. Such arrangements can provide significant communication speeds over conventional arrangements like that shown in
Referring now to
A second host device 104 can also send commands and data, and receive responses and data. While a second host device 104 could be a USB type host, a second host device 104 can also operate according to a different protocol than first host device 102, and/or can have an entirely different interface than first host device 102. As but two very particular examples, if first host device 102 communicates via a serial interface (e.g., USB), second host device 104 can communicate via a parallel interface or different type of serial interface.
Functions circuit 106 can provide one or more predetermined function. However, unlike a conventional case like that of
A controller circuit 108 can provide configurable communication paths between first host device 102, second host device 104 and functions circuit 106. Such communication paths are shown as 110-0, 110-1 and 110-2. Communication path 110-0 can be a first host-to-second host (H1-H2) path formed between first host 102 and second host device 104 that does not access functions circuit 106. Communication path 110-1 can be a second host-to-function (H2-F) path formed between second host 104 and functions circuit 106 that does not access first host device 102. In a similar fashion, communication path 110-2 can be a first host-to-function (H1-F) path formed between first host device 102 and functions circuit 106 that does not access second host device 104.
In this way, a controller circuit 108 can provide direct communication paths between host devices and between the host devices and one or more common functions. Such direct communication paths (e.g., paths not through other devices or functions) can allow for faster and/or more efficient data throughput or function execution. Further, such an arrangement can allow for greater versatility in a secondary device, as multiple functions can be accessed any of multiple host devices.
Referring now to
A controller circuit 200 can include an endpoint (EP) storage circuit 202, a switch/control circuit 204, configuration circuit 206, a first host interface (I/F) 208, a second host I/F 210, and a function I/F 212. An EP storage circuit 202 can include storage locations divided, or dividable into multiple EP locations. Each such EP location can store a quantifiable amount of data (e.g., data of a given packet length, or payload size). Such EP locations can also be assigned an identification value (e.g., EP number), and configured for a particular direction. In the example of
It is noted that an endpoint can be a destination or source of information commonly identifiable by all entities participating in a communication flow (e.g., device, threads, etc.). In the very particular example of the Universal Serial Bus (USB) protocol, an endpoint can be a uniquely addressable portion of a USB device that is the source or sink of information in a communication flow between a host and a function. Each USB endpoint can have an endpoint number as well as a direction of flow.
In very particular arrangements, the physical implementation of an endpoint can include an endpoint buffer. An endpoint buffer can be a memory circuit that stores data arriving from a host (configured in the OUT direction), or that stores data that can be read out to a host (configured in the IN direction). Thus, a physical endpoint can be circuitry that can actually stores data in a communication flow. In particular embodiments, such data can be in a predetermined packet format. According to particular embodiments of the invention, an endpoint buffer can be a first-in-first-out memory (FIFO), with start and end pointers that can dictate where data can be read from or written to. Such endpoint FIFOs can include flags to indicate when the FIFO is ready to be read from or written to.
A physical endpoint is a buffer where data will be stored. Logical endpoints are USB endpoints that can be mapped to any physical endpoint. Physical endpoint can be dedicated to a logical endpoint or shared between multiple logical endpoints. All logical endpoints that map to a single physical endpoint share the buffer(s).
Referring still to
In this way, a communication path between two hosts can be created that includes endpoint locations.
In this way, a communication path between one host and one or more functions can be created that includes endpoint locations.
In this way, a communication path between a second of multiple hosts and one or more functions can be created that includes endpoint locations.
Referring now to
In the particular example of
Switch controller circuit 304 can provide control signals to EP storage circuit 302 to enable switch paths and create various communication paths shown as 314-0 to 314-3 in
In the example of
Second host I/F 310′ can be programmable to accommodate different types of host interfaces. For example, second host I/F 310′ can be programmable to enable input signals generated by a second host to be capable of accessing endpoint locations and/or provide control data to other portions of controller circuit 300. Similarly, signals generated by controller circuit 310′ can be altered for compatibility with such a second host device.
Function I/F 312′ can be programmable to provide access to different types and/or numbers of functions. For example, function I/F 312′ can be programmable to enable any of multiple function interfaces. Further I/F 312′ can be programmable to provide different versions of a same function (e.g., one function may execute predetermined operations and provide/receive data according to a first bit width, while a different version of the same function can perform the same operation, but provide/receive data according to a larger or smaller bit width).
As noted above, communication paths that can be created with controller circuit are shown as 314-0 to 314-3. Communication path 314-0 can be a H1-H2 communication path passing from first host I/F 308′ to second host I/F 310′, but completely bypasses function I/F 312′. Communication path 314-1 can be a H1-F communication path passing from first host I/F 308′ to function I/F 312′, bypassing second host I/F 310′. Communication path 314-2 can be a H2-F communication path passing from second host I/F 310′ to function I/F 312′, bypassing first host I/F 308′.
Referring still to
Referring now to
A controller circuit 400 can include some sections like those of
In the particular example of
A configuration circuit 406 can include a processor block 406-0 and processor I/F 406-1. A processor block 406-0 can include a processor, associated I/Os, and instruction set. Although not shown in
The particular example of
Having described the structure of a controller circuit in
Referring to
In this way, a controller circuit like that of
Another feature of the arrangement like of
In this way, a controller circuit can provide multiple logical endpoints for a first host I/F utilizing a single physical endpoint.
Another example showing the mapping of multiple logical endpoints to a same physical endpoint is shown in
While
In this way, a controller circuit can provide multiple logical endpoints for a second host I/F utilizing a single physical endpoint.
An arrangement like of
While
In this way, a controller circuit can allow any of multiple host devices (via host I/Fs) to access any of multiple functions.
An arrangement like of
As shown in
In this way, a controller circuit can establish a control communication path to one host while allowing another host to access available functions.
As noted above, embodiments of the present invention can include a configurable function interface. A first particular example of a configurable function interface is shown in
A configurable function I/F 600 can include a number of physical input/outputs (I/Os) 602, an I/O switch circuit 604, a first function I/F circuit 606, and a second function I/F circuit 608. In the particular example of
An I/O switch circuit 604 can selectively connect configurable I/Os 602-1 to either first function I/F circuit 606 or second function I/F circuit 606 according to configuration information FUNC_CFG.
First function I/F circuit 606 can translate a first type of external signal set into signals compatible with circuits internal to a controller circuit. Similarly, second function I/F circuit 608 can translate a second type of external signal set into signals compatible with circuits internal to controller circuit. As but one example, function I/F circuits (606 and 608) can enable data transfers from endpoint locations to predetermined addresses of devices attached to function I/F 600. The very particular example of
In one very particular example, a first I/F circuit 606 can be a storage port compatible with the SD Memory Card Specification (SD), promulgated by the SD Card Association, the MultiMediaCard System Specification (MMC), promulgated by the MMC Association, and the CE-ATA Standard, promulgated by the CE-ATA Working Group. A second I/F circuit 608 can be a storage port compatible with a NAND memory device, such as those complying with the Open NAND Flash Interface Working Group. More particularly, second I/F circuit 608 can be configurable to operate to operate with one number of I/Os (e.g., ×8) or another number of I/Os (e.g., ×16).
In this way, a configurable function I/F can accommodate one or more different mass storage media devices of differing types.
A second particular example of a configurable function interface is shown in
Of course, while
Just as function interfaces can be programmable, in the embodiments described herein, host interfaces can be programmable. An example of such an arrangement is shown in
A programmable host I/F 800 can include a number of host physical input/outputs (I/Os) 802, a clock circuit 804, data input latches 806-0, address input latches 808, control input latches 810-0, data output buffers 806-1, control output buffers 810-1, and I/O switch circuit 812, a control input map circuit 814, a control output map circuit 816, and a programmable state machine 818.
In the particular example of
A clock circuit 804 can receive a clock signal CLK_IN, and generate an internal clock signal CLK. In particular arrangements, a clock circuit 804 can be a buffer circuit, or alternatively, can include frequency locking circuits, such as a phase lock loop (PLL) or delay lock loop (DLL).
Data input latches 806-0 can latch data input signals according to clock signal CLK. Similarly, address input latches 808 can latch address values, and control input latches 810-0 can latch control input values according to clock signal CLK.
Data output buffers 806-1 can drive data values on data I/Os 802-1, also in synchronism with clock signal CLK. Control output buffers 810-1 can drive control data on control outputs 802-4 according to clock signal CLK.
I/O switch circuit 812 can selectively enable signal paths from GPI/Os 802-5 to programmable state machine 818, according to host configuration data HOST_CFG.
Control input map circuit 814 can map incoming control signals to particular internal nodes of a controller circuit and/or logically combine such signals to generate internal control signals. In the reverse manner, control output map circuit 816 can map signals at internal nodes of a controller circuit to output control signals and/or logically combine such internal signals to generate output control signals. Such a mapping can be based upon host configuration data HOST_CFG.
A programmable state machine 818 can be programmed to generate a set of output signals in response to predetermined input signals, and set of input signals in response to predetermined output signals. In one particular case, such an arrangement can include “waveform descriptors” which can include both unconditional and conditional steps that are executed according to predetermined signal sets.
In this way, a programmable interface can allow a controller circuit to accommodate various types of host devices.
A controller circuit according the various embodiments can base timing on a generated clock signal. To accommodate various system speeds, it may be desirable to include a clock circuit that can generate or accommodate clock signals of varying frequencies. One particular example of such an arrangement is shown in
Referring to
A crystal oscillator circuit 902 can be connected to a crystal and other passive components by way of a crystal input terminal 912-0 and a crystal output terminal 912-1, which are preferably physical inputs to an integrated circuit (e.g., pins). Crystal oscillator circuit 902 can generate a periodic output signal fxout having a frequency dependent upon an attached crystal. Different oscillating frequencies can be accommodated by selection of different components based on signal XCLKSEL. A crystal oscillator circuit 902 can receive a power supply voltage VDDX, which can be greater than that of other components of a controller circuit.
A level translator circuit 904 can translate and buffer output signal fxout to levels suitable for the other portions of the clock circuit 900.
An external clock buffer 906 can buffer a clock signal received at an external clock input terminal 914. Preferably, such a clock input terminal is a physical input to an integrated circuit.
A clock signal selector 908 can select a clock signal provided from the external clock buffer 906 or crystal oscillator circuit 902 as an input clock signal CLK_IN based on a clock configuration signal CLK_CFG. Optionally, clock input signal CLK_IN can be provided as an input to a phase lock loop circuit 910, which can multiply and/or divide signal CLK_IN to generate a device clock signal CLK_IN′. In the particular arrangement shown, clock division multiplication can occur according to values CFG_CLK.
In this way, a controller circuit can include a clock signal that can operate according to clock signals having a selectable frequency. Further such a clock signal can be generated by an onboard oscillator, or received via a clock input.
As shown in various embodiments above, a controller circuit can provide various communication paths by controlling a data path between an endpoint storage circuit and either a second host I/F or a function I/F. Additional communication paths can be formed by dynamically switching directions of endpoints. As previously noted, it may be advantageous to provide changes in the configuration of such paths in a dynamic fashion. One example of a configuration circuit for providing such dynamic control is shown in
A configuration circuit 1000 can include a processor 1002, an instruction memory 1004, control registers 1006, and an address/data bus 1008. In very particular examples, a configuration circuit 1000 can correspond to any of configuration circuits shown as 206, 306 or 406 in other embodiments above.
A processor 1002 can execute instructions stored in an instruction memory 1004 and can provide input/output signals on configuration I/O lines 1010. In the very particular example of
It is noted that instruction memory 1004 can be connected to address/data bus 1008, and address bus 1008 can be connected to a second host I/F, EPs, and/or a function I/F. Such an arrangement can allow instructions to be stored in instruction memory 1004 by either a first host (e.g., via an EP), a second host, or a function. Instructions stored within instruction memory 1004 can be firmware or software. This configuration can allow such firmware or software to be loaded via a first host I/F, second host I/F, or even a function I/F.
In the particular example of
Alternatively, a processor 1002 can provide configuration data by way of I/O lines, rather than control registers.
In this way, a control circuit can configure a controller circuit according to sequences contained within firmware or software.
In controller circuit configurations like that of
An endpoint detect circuit 1104 can examine outgoing data from a host for a destination endpoint. Such an endpoint value can be provided to acknowledgement circuit 1106. Acknowledgement circuit 1106 can receive endpoint status information EP_STATUS and a destination endpoint value from endpoint detect circuit 1104. If acknowledgement circuit 1106 determines that a destination endpoint matches an endpoint currently in use by another host or function, it can output a “no acknowledge” indication (NAK) to physical layer logic circuit 1102. In response, physical layer logic circuit 1100 can issue a no acknowledgement back to the host.
In this way, a controller circuit can handle accesses from one host while an endpoint is in use by another host or function.
Embodiments of the present invention can be well suited to performing various other steps or variations of the steps recited herein, and in a sequence other than that depicted and/or described herein.
For purposes of clarity, many of the details of the various embodiments and the methods of designing and manufacturing the same that are widely known and are not relevant to the present invention have been omitted from the following description.
It should be appreciated that reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Therefore, it is emphasized and should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment” in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments of the invention.
Similarly, it should be appreciated that in the foregoing description of exemplary embodiments of the invention, various features of the invention are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claimed invention requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the claims following the detailed description are hereby expressly incorporated into this detailed description, with each claim standing on its own as a separate embodiment of this invention.
It is also understood that the embodiments of the invention may be practiced in the absence of an element and/or step not specifically disclosed. That is, an inventive feature of the invention can be elimination of an element.
Accordingly, while the various aspects of the particular embodiments set forth herein have been described in detail, the present invention could be subject to various changes, substitutions, and alterations without departing from the spirit and scope of the invention.
Number | Name | Date | Kind |
---|---|---|---|
4641261 | Dwyer et al. | Feb 1987 | A |
4701913 | Nelson | Oct 1987 | A |
4713757 | Davidson et al. | Dec 1987 | A |
4862355 | Newman et al. | Aug 1989 | A |
4866606 | Kopetz | Sep 1989 | A |
4890222 | Kirk | Dec 1989 | A |
5289580 | Latif et al. | Feb 1994 | A |
5388249 | Hotta et al. | Feb 1995 | A |
5392421 | Lennartsson | Feb 1995 | A |
5402394 | Turski | Mar 1995 | A |
5416909 | Long et al. | May 1995 | A |
5428748 | Davidson et al. | Jun 1995 | A |
5454080 | Fasig et al. | Sep 1995 | A |
5461723 | Shah et al. | Oct 1995 | A |
5488657 | Lynn et al. | Jan 1996 | A |
5497067 | Shaw | Mar 1996 | A |
5574859 | Yeh | Nov 1996 | A |
5577213 | Avery et al. | Nov 1996 | A |
5586268 | Chen et al. | Dec 1996 | A |
5598409 | Madonna et al. | Jan 1997 | A |
5606672 | Wade | Feb 1997 | A |
5615344 | Corder | Mar 1997 | A |
5621902 | Cases et al. | Apr 1997 | A |
5628001 | Cepuran | May 1997 | A |
5630147 | Datta et al. | May 1997 | A |
5634074 | Devon et al. | May 1997 | A |
5642489 | Bland et al. | Jun 1997 | A |
5655148 | Richman et al. | Aug 1997 | A |
5671355 | Collins | Sep 1997 | A |
5673031 | Meier | Sep 1997 | A |
5675813 | Holmdahl | Oct 1997 | A |
5687346 | Shinohara | Nov 1997 | A |
5701429 | Legvold et al. | Dec 1997 | A |
5748911 | Maguire et al. | May 1998 | A |
5748923 | Eitrich | May 1998 | A |
5754799 | Hiles | May 1998 | A |
5758188 | Appelbaum et al. | May 1998 | A |
5767844 | Stoye | Jun 1998 | A |
5774744 | Story et al. | Jun 1998 | A |
5778218 | Gulick | Jul 1998 | A |
5781028 | Decuir | Jul 1998 | A |
5793745 | Manchester | Aug 1998 | A |
5794033 | Aldebert et al. | Aug 1998 | A |
5802328 | Yoshimura | Sep 1998 | A |
5802558 | Pierce | Sep 1998 | A |
5805834 | McKinley | Sep 1998 | A |
5828854 | Wade | Oct 1998 | A |
5838907 | Hansen | Nov 1998 | A |
5859988 | Ajanovic et al. | Jan 1999 | A |
5862362 | Somasegar et al. | Jan 1999 | A |
5898861 | Emerson et al. | Apr 1999 | A |
5974486 | Siddappa | Oct 1999 | A |
5982879 | Lucey | Nov 1999 | A |
6009480 | Pleso | Dec 1999 | A |
6012103 | Sartore et al. | Jan 2000 | A |
6012115 | Chambers et al. | Jan 2000 | A |
6038667 | Helbig, Sr. | Mar 2000 | A |
6049870 | Greaves | Apr 2000 | A |
6049885 | Gibson et al. | Apr 2000 | A |
6067628 | Krithivas et al. | May 2000 | A |
6085325 | Jackson et al. | Jul 2000 | A |
6085328 | Klein et al. | Jul 2000 | A |
6122676 | Brief et al. | Sep 2000 | A |
6125420 | Eidson | Sep 2000 | A |
6145045 | Falik et al. | Nov 2000 | A |
6148354 | Ban et al. | Nov 2000 | A |
6173355 | Falik et al. | Jan 2001 | B1 |
6175883 | Kvamme et al. | Jan 2001 | B1 |
6189060 | Kodama | Feb 2001 | B1 |
6199122 | Kobayashi | Mar 2001 | B1 |
6212165 | Mann et al. | Apr 2001 | B1 |
6226291 | Chauvel et al. | May 2001 | B1 |
6233640 | Luke et al. | May 2001 | B1 |
6249825 | Sartore et al. | Jun 2001 | B1 |
6272644 | Urade et al. | Aug 2001 | B1 |
6275499 | Wynn et al. | Aug 2001 | B1 |
6279060 | Luke et al. | Aug 2001 | B1 |
6292863 | Terasaki et al. | Sep 2001 | B1 |
6311294 | Larky et al. | Oct 2001 | B1 |
6366980 | Haines et al. | Apr 2002 | B1 |
6389495 | Larky et al. | May 2002 | B1 |
6415343 | Fensore et al. | Jul 2002 | B1 |
6493770 | Sartore et al. | Dec 2002 | B1 |
6505267 | Luke et al. | Jan 2003 | B2 |
6513128 | Wang et al. | Jan 2003 | B1 |
6529988 | Yoshikawa et al. | Mar 2003 | B1 |
6532525 | Aleksic et al. | Mar 2003 | B1 |
6564349 | Mitten et al. | May 2003 | B1 |
6601118 | Rooney | Jul 2003 | B1 |
6615306 | Ajanovic | Sep 2003 | B1 |
6618788 | Jacobs | Sep 2003 | B1 |
6622195 | Osakada et al. | Sep 2003 | B2 |
6622251 | Lindskog et al. | Sep 2003 | B1 |
6625687 | Halbert et al. | Sep 2003 | B1 |
6633537 | Shimizu | Oct 2003 | B1 |
6633933 | Smith et al. | Oct 2003 | B1 |
6633944 | Holm et al. | Oct 2003 | B1 |
6678761 | Garney et al. | Jan 2004 | B2 |
6684272 | Leete et al. | Jan 2004 | B1 |
6697906 | Ayukawa et al. | Feb 2004 | B1 |
6718412 | Purcell et al. | Apr 2004 | B2 |
6760852 | Gulick | Jul 2004 | B1 |
6816929 | Ueda | Nov 2004 | B2 |
6816976 | Wright et al. | Nov 2004 | B2 |
6934793 | Ying et al. | Aug 2005 | B2 |
6970419 | Kalkunte et al. | Nov 2005 | B1 |
7007112 | Ishida et al. | Feb 2006 | B2 |
7010638 | Deng et al. | Mar 2006 | B2 |
7054980 | Wurzburg | May 2006 | B2 |
7062618 | Tsunoda et al. | Jun 2006 | B2 |
7073008 | Wu et al. | Jul 2006 | B2 |
7073010 | Chen et al. | Jul 2006 | B2 |
7080189 | Luttmann | Jul 2006 | B1 |
7110006 | MacInnis et al. | Sep 2006 | B2 |
7127546 | Ying et al. | Oct 2006 | B2 |
7143227 | Maine | Nov 2006 | B2 |
7162565 | Kolokowsky et al. | Jan 2007 | B1 |
7162566 | Lin | Jan 2007 | B2 |
7187946 | Palan | Mar 2007 | B2 |
7213096 | Keys et al | May 2007 | B2 |
7231485 | Harris et al. | Jun 2007 | B2 |
7231653 | Jutz | Jun 2007 | B2 |
7394471 | Chan et al. | Jul 2008 | B2 |
7478191 | Wurzburg et al. | Jan 2009 | B2 |
7484031 | Tjia | Jan 2009 | B2 |
7644147 | Wohlgemuth et al. | Jan 2010 | B1 |
20020040444 | Ohie et al. | Apr 2002 | A1 |
20020156949 | Kubo et al. | Oct 2002 | A1 |
20030172223 | Ying et al. | Sep 2003 | A1 |
20030185249 | Davies et al. | Oct 2003 | A1 |
20030202510 | Witkowski et al. | Oct 2003 | A1 |
20030212841 | Lin | Nov 2003 | A1 |
20040030766 | Witkowski | Feb 2004 | A1 |
20040181811 | Rakib | Sep 2004 | A1 |
20050033880 | Lin | Feb 2005 | A1 |
20050060490 | Lu | Mar 2005 | A1 |
20050157711 | O'Dell et al. | Jul 2005 | A1 |
20060036558 | Matthews | Feb 2006 | A1 |
20060056401 | Bohm et al. | Mar 2006 | A1 |
20060059289 | Ng et al. | Mar 2006 | A1 |
20060059293 | Wurzburg et al. | Mar 2006 | A1 |
20060253639 | Lee et al. | Nov 2006 | A1 |
20070079045 | Luke | Apr 2007 | A1 |
20070170268 | Lee | Jul 2007 | A1 |
20070186016 | Mennekens et al. | Aug 2007 | A1 |
20070245057 | Bohm et al. | Oct 2007 | A1 |
20070245058 | Wurzburg et al. | Oct 2007 | A1 |
20070245059 | Tjia | Oct 2007 | A1 |
20080307145 | Goren et al. | Dec 2008 | A1 |
20090013103 | Chang et al. | Jan 2009 | A1 |
20090055569 | Maheshwari et al. | Feb 2009 | A1 |
Number | Date | Country |
---|---|---|
0890905 | Jan 1999 | EP |
0987876 | Mar 2000 | EP |
1111498 | Jun 2001 | EP |
2352540 | Jan 2001 | GB |
404200119 | Jul 1992 | JP |
410097303 | Apr 1998 | JP |
410097309 | Apr 1998 | JP |