An apparatus for coupling a peripheral device to a host comprising an interface circuit and a logic circuit. The interface circuit may be configured to (i) receive a request from the host and (ii) present a response to the host. The logic circuit may be configured to (i) generate the response when the request is serviceable by the apparatus or (ii) pass the request to an external circuit when the request is not serviceable by the apparatus.
|
12. An apparatus comprising:
means for receiving a request from a host and presenting a response to said request to said host;
means for generating said response automatically when said request is of a first type recognized by said generating means; and
means for passing (i) said request from said receiving and presenting means to an external circuit and (ii) said response from said external circuit to said receiving and presenting means when said request is of a second type not recognized by said generating means.
13. A method for interfacing a peripheral device to a host comprising the steps of:
receiving a request from said host;
automatically responding to said request within a serial interface engine when said request is a first type of request that said serial interface engine is configured to recognize;
when said request is a second type of request that said serial interface engine is not configured to recognize, passing said request to an external circuit;
receiving a response to said request from said external circuit when said request is of said second type; and
passing on said response to said host.
1. An apparatus for coupling a peripheral device to a host comprising:
an interface circuit configured to receive a request from said host and present a response to said request to said host; and
a serial interface engine (SIE) coupled to said interface circuit and configured to (i) automatically generate said response to said request when said request is a first type of request that said serial interface engine is configured to recognize and (ii) pass (a) said request from said interface circuit to an external circuit and (b) said response to said request from said external circuit to said interface circuit when said request is a second type of request that said serial interface engine is not configured to recognize.
4. The apparatus according to
5. The apparatus according to
6. The apparatus according to
7. The apparatus according to
8. The apparatus according to
9. The apparatus according to
10. The apparatus according to
11. The apparatus according to
14. The method according to
generating said response as a stall command when said request is not recognized by said external circuit.
15. The method according to
16. The method according to
17. The method according to
18. The method according to
19. The method according to
20. The method according to
|
The present invention relates to a method and/or architecture for interfacing peripheral devices to a host generally and, more particularly, to a method and/or architecture for intelligent, extensible serial interface engines (SIE) within peripheral devices.
Some systems that connect to the Universal Serial Bus (USB) can include “intelligence” (e.g., DSP, Microprocessor, or ASIC). Systems that contain intelligence can use a USB serial interface engine (SIE) to interface with the USB. The conventional USB SIE is dumb (e.g., a physical layer and a FIFO). The conventional USB SIE acts as a conduit, passing (i) USB requests and data from a host to an outside intelligence and (ii) responses from the outside intelligence to the host.
Referring to
Since the conventional SIEs act only as a conduit, the external processor 20 must handle all USB overhead traffic, which reduces performance.
The present invention concerns an apparatus for coupling a peripheral device to a host comprising an interface circuit and a logic circuit. The interface circuit may be configured to (i) receive a request from the host and (ii) present a response to the host. The logic circuit may be configured to (i) generate the response when the request is serviceable by the apparatus or (ii) pass the request to an external circuit when the request is not serviceable by the apparatus.
The objects, features and advantages of the present invention include providing a method and/or architecture for intelligent, extensible serial interface engines within peripheral devices that may (i) simplify the outside intelligence and firmware; (ii) allow external processor to concentrate on function instead of low level USB protocols; (iii) provide improved performance; (iv) eliminate time consumed communicating between SIE and external processor for low level protocol response; (v) be extensible by allowing external processor to handle: class requests, vendor requests, custom driver requests, USB specification changes and enhancements, (vi) allow peripheral designers to add USB capability to products without having to learn USB protocols, and/or (vii) speed up time to market for peripheral designs.
These and other objects, features and advantages of the present invention will be apparent from the following detailed description and the appended claims and drawings in which:
Referring to
The device 100 may comprise a circuit (block) 108 and a circuit (block) 110. The circuit 108 may be implemented as an enhanced serial interface engine (SIE). The circuit 110 may be implemented as any of a number of processor circuits. For example, the circuit 110 may be implemented as a digital signal processor (DSP), a microprocessor (μP), an application specific integrated circuit (ASIC), or any other processor or controller circuit. The circuit 110 is generally implemented externally to the circuit 108. However, the circuit 108 and the circuit 110 may be mounted on a common circuit board and/or enclosed in a single package.
The circuit 108 may be configured to automatically handle basic protocol requests that would conventionally be handled by an external intelligence (e.g., the processor 110). In one example, the circuit 108 may be configured to handle USB protocol messaging as described in Chapter 9 of the USB 2.0 Specification, which is hereby incorporated by reference in its entirety. For example, the circuit 108 may be configured to automatically respond to enumeration requests using descriptor tables received from the circuit 110. The circuit 108 may be further configured to pass USB host requests to the circuit 110 and to pass responses from the circuit 110 to the host when the circuit 108 is unable to handle the request.
The circuit 108 may be configured to handle the physical layer requirements for USB 2.0 and 1.1, the packet protocol layer, and maintain one or more USB endpoints (e.g., control endpoints and data endpoints). The circuit 108 may be configured to store descriptor information presented by the external processor 110 before enumeration. The circuit 108 may be configured to communicate completion of an enumeration process to the external processor 110 via an interrupt signal. The circuit 108 may be configured to communicate to the external processor using an interrupt that a basic protocol request has been automatically handled. The circuit 108 may be configured to handle USB Chapter 9 protocol communications transparently to the external processor 110.
The circuit 108 may be configured to automatically handle basic USB requests (e.g., enumeration). The circuit 108 may be configured to determine whether the signal USB—HOST—REQUEST is a request of a first type (e.g., a basic request) that may be handled (is serviceable) by the circuit 108 or a request of a second type (e.g., class request) that is generally passed to the circuit 110 (e.g., not serviceable by the circuit 108). The circuit 108 may be configured to generate the signal DEVICE—RESPONSE when the request USB—HOST—REQUEST is of the first type (e.g., request B in the circle 112). When the signal USB—HOST—REQUEST is of the second type (e.g, request A), the circuit 108 generally passes the request to the circuit 110 (e.g., the circles 114 and 116). In general, only requests that are unrecognized by the circuit 108 are passed to the external processor 110.
The external processor 110 generally handles only custom requests, that is, requests not recognized by the circuit 108. The circuit 110 may be configured to generate a response to the requests received from the circuit 108. For example, the circuit 110 may be configured to execute a number of instructions (e.g., software/firmware) in response to the requests. The responses generated by the circuit 110 may be presented to the circuit 108 (e.g., the circle 118). The response generated by the circuit 110 may comprise, for example, a USB response (e.g., the circle 120) or a stall response (e.g., the circle 122). The circuit 108 generally presents the response received from the circuit 110 to the host.
The external processor 110 may be configured to pre-load the circuit 108 with descriptor tables that may be required for enumeration. The circuit 108 may be configured, in one example, to automatically respond to all host enumeration requests (e.g., the circle 112). The circuit 108 may be configured to pass all unrecognized requests (e.g., requests that are unserviceable by the circuit 108) to the external processor 110. For example, the external processor 110 may be configured to respond to standard class device requests (e.g., as defined in the Class Device Definitions for Human Interface Devices (HID) specification, revision 1.1, dated Apr. 7, 1999, which is hereby incorporated by reference in its entirety), vendor specific requests, and/or custom device requests. The external processor 110 may be configured to respond with either a USB response or a STALL when the request is not recognized.
The present invention may enhance the functionality of an SIE peripheral device by increasing performance while reducing the need for external processor intervention and overhead. The present invention may provide USB compatibility with less firmware and fewer external processor cycles.
Referring to
When the request is unrecognized by the circuit 108, the request may be passed on to the external processor (e.g., the block 210). The processor 110 may be configured, in one example, via firmware, to handle requests passed on from the circuit 108. The processor 110 may check the request to determine whether the request is recognized or not. When the request is recognized, the processor 110 may be configured to issue a response to the circuit 108 (e.g., the “No” arrow from the block 212). The circuit 108 may be configured to pass the response from the external processor 110 onto the host (e.g., the block 208). When the request received from the host is an unknown request, the processor 110 may be configured to issue a stall response (e.g., the block 214).
The external processor 110 may load all descriptor information tables needed for enumeration into the circuit 108 before enumeration. The circuit 108 may be configured to automatically respond to all recognized USB requests from the host. When a request is received that the circuit 108 does not recognize, the circuit 108 may be configured to pass the unrecognized request (e.g., class and vendor specific requests) to the external processor 110. The external processor 110 may be configured (e.g., through firmware) to respond to the request or stall the request.
Referring to
The present invention may simplify the outside intelligence of a USB peripheral device. The external processor 110 may concentrate on function instead of low level USB protocols. The present invention may provide higher performance. For example, the present invention may eliminate time consumed communicating between the circuit 108 and the external processor 110 for low level protocol responses. In one example, the present invention may provide an enhanced serial interface engine that is extensible. For example, provision may be made to allow the external processor 110 to handle class requests, vendor requests, custom driver requests, USB specification changes and/or other enhancements.
The present invention may be implemented in firmware or logic. The present invention may provide for the addition of intelligence to an SIE only peripheral chip. Historically, SIE only peripherals have been dumb devices with no provision to automatically respond to USB requests. The present invention may add intelligence to SIEs without adding significant cost or taking away from the functionality desired from an SIE. The present invention may allow USB system designers to gain increased performance with less code.
The function performed by the flow diagram of
The present invention may also be implemented by the preparation of ASICs, FPGAs, or by interconnecting an appropriate network of conventional component circuits, as is described herein, modifications of which will be readily apparent to those skilled in the art(s).
The present invention thus may also include a computer product which may be a storage medium including instructions which can be used to program a computer to perform a process in accordance with the present invention. The storage medium can include, but is not limited to, any type of disk including floppy disk, optical disk, CD-ROM, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, Flash memory, magnetic or optical cards, or any type of media suitable for storing electronic instructions.
While the invention has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made without departing from the spirit and scope of the invention.
Patent | Priority | Assignee | Title |
10678913, | Jan 21 2011 | NetScout Systems, Inc | Apparatus and method for enhancing security of data on a host computing device and a peripheral device |
8566934, | Jan 21 2011 | NetScout Systems, Inc | Apparatus and method for enhancing security of data on a host computing device and a peripheral device |
8869273, | Jan 21 2011 | NetScout Systems, Inc | Apparatus and method for enhancing security of data on a host computing device and a peripheral device |
9875354, | Jan 21 2011 | NetScout Systems, Inc | Apparatus and method for enhancing security of data on a host computing device and a peripheral device |
Patent | Priority | Assignee | Title |
4689740, | Nov 02 1981 | U S PHILIPS CORPORATION | Two-wire bus-system comprising a clock wire and a data wire for interconnecting a number of stations |
5559502, | Jan 14 1993 | FUTURE LINK SYSTEMS | Two-wire bus system comprising a clock wire and a data wire for interconnecting a number of stations and allowing both long-format and short-format slave addresses |
5689196, | Dec 02 1994 | FUTURE LINK SYSTEMS | Circuit comprising a data communication bus |
5974486, | Aug 12 1997 | Atmel Corporation | Universal serial bus device controller comprising a FIFO associated with a plurality of endpoints and a memory for storing an identifier of a current endpoint |
6012103, | Jul 02 1997 | MONTEREY RESEARCH, LLC | Bus interface system and method |
6145045, | Jan 07 1998 | National Semiconductor Corporation | System for sending and receiving data on a Universal Serial Bus (USB) using a memory shared among a number of end points |
6148354, | Apr 05 1999 | Sandisk IL Ltd | Architecture for a universal serial bus-based PC flash disk |
6173355, | Jan 07 1998 | National Semiconductor Corporation | System for sending and receiving data on a universal serial bus (USB) using a memory shared among a number of endpoints |
6370603, | Dec 31 1997 | Renesas Electronics Corporation | Configurable universal serial bus (USB) controller implemented on a single integrated circuit (IC) chip with media access control (MAC) |
6389495, | Jan 16 1999 | MONTEREY RESEARCH, LLC | Dedicated circuit and method for enumerating and operating a peripheral device on a universal serial bus |
6629169, | Mar 14 2001 | Winband Electronics Corp. | Apparatus and method for testing of USB device |
WO9617305, | |||
WO9834376, | |||
WO9909712, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 31 2001 | Cypress Semiconductor Corp. | (assignment on the face of the patent) | / | |||
Mar 31 2001 | CORDNER, SCOTT | Cypress Semiconductor Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 011695 | /0669 | |
Mar 12 2015 | Cypress Semiconductor Corporation | MORGAN STANLEY SENIOR FUNDING, INC | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 035240 | /0429 | |
Mar 12 2015 | Spansion LLC | MORGAN STANLEY SENIOR FUNDING, INC | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 035240 | /0429 | |
Mar 12 2015 | Cypress Semiconductor Corporation | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE 8647899 PREVIOUSLY RECORDED ON REEL 035240 FRAME 0429 ASSIGNOR S HEREBY CONFIRMS THE SECURITY INTERST | 058002 | /0470 | |
Mar 12 2015 | Spansion LLC | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE 8647899 PREVIOUSLY RECORDED ON REEL 035240 FRAME 0429 ASSIGNOR S HEREBY CONFIRMS THE SECURITY INTERST | 058002 | /0470 | |
Aug 11 2016 | MORGAN STANLEY SENIOR FUNDING, INC , AS COLLATERAL AGENT | Cypress Semiconductor Corporation | PARTIAL RELEASE OF SECURITY INTEREST IN PATENTS | 039708 | /0001 | |
Aug 11 2016 | MORGAN STANLEY SENIOR FUNDING, INC , AS COLLATERAL AGENT | Spansion LLC | PARTIAL RELEASE OF SECURITY INTEREST IN PATENTS | 039708 | /0001 | |
Aug 11 2016 | Cypress Semiconductor Corporation | MONTEREY RESEARCH, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 040911 | /0238 |
Date | Maintenance Fee Events |
Feb 19 2009 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Feb 19 2009 | M1554: Surcharge for Late Payment, Large Entity. |
Feb 04 2013 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Mar 06 2017 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Mar 06 2017 | M1556: 11.5 yr surcharge- late pmt w/in 6 mo, Large Entity. |
Date | Maintenance Schedule |
Aug 16 2008 | 4 years fee payment window open |
Feb 16 2009 | 6 months grace period start (w surcharge) |
Aug 16 2009 | patent expiry (for year 4) |
Aug 16 2011 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 16 2012 | 8 years fee payment window open |
Feb 16 2013 | 6 months grace period start (w surcharge) |
Aug 16 2013 | patent expiry (for year 8) |
Aug 16 2015 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 16 2016 | 12 years fee payment window open |
Feb 16 2017 | 6 months grace period start (w surcharge) |
Aug 16 2017 | patent expiry (for year 12) |
Aug 16 2019 | 2 years to revive unintentionally abandoned end. (for year 12) |