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
First Claim
Patent Images
1. A controller for operating a peripheral in accordance with the Universal Serial Bus (USB) specification, comprising:
- means for receiving data packets;
a FIFO for storing data contained in received data packets, said FIFO being associated with at least two endpoints;
a packet control store for storing, as a current endpoint, an identifier contained in an endpoint field of a received data packet, wherein data stored in said FIFO corresponds to said current endpoint;
a state machine to control sequencing of a transaction based on said current endpoint, said transaction including reception and transmission of a plurality of data packets, said state machine thereby being capable of controlling sequencing of transactions with any endpoint;
a plurality of endpoint control stores; and
a selector coupled to said plurality of endpoint control stores for selecting one of said endpoint control stores based on said current endpoint;
said state machine coupled to receive the contents of a selected one of said endpoint control stores.
6 Assignments
0 Petitions
Accused Products
Abstract
A versatile USB controller comprises a serial interface engine (SIE) for connection with a host. The SIE is capable of simulating a disconnect/connect sequence in situations where a reboot of the device is appropriate. The controller further includes a control store for keeping track of multiple endpoints of a device. A FIFO provides data transfer between each of the endpoints and the host. A state machine provides transaction sequencing with the host for each endpoint. In a variation of the preferred embodiment, a second FIFO is included to provide additional buffering capability.
-
Citations
27 Claims
-
1. A controller for operating a peripheral in accordance with the Universal Serial Bus (USB) specification, comprising:
-
means for receiving data packets; a FIFO for storing data contained in received data packets, said FIFO being associated with at least two endpoints; a packet control store for storing, as a current endpoint, an identifier contained in an endpoint field of a received data packet, wherein data stored in said FIFO corresponds to said current endpoint; a state machine to control sequencing of a transaction based on said current endpoint, said transaction including reception and transmission of a plurality of data packets, said state machine thereby being capable of controlling sequencing of transactions with any endpoint; a plurality of endpoint control stores; and a selector coupled to said plurality of endpoint control stores for selecting one of said endpoint control stores based on said current endpoint; said state machine coupled to receive the contents of a selected one of said endpoint control stores. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A controller for transmitting data in accordance with the Universal Serial Bus (USB) specification, comprising:
-
a microcontroller interface for connection to a microcontroller; a port for attachment to a USB host; serial means, coupled to said port, for receiving and transmitting USB packets, including means for extracting an endpoint identifier from a packet of a TOKEN type; control means for managing the transfer of packets between said USB host and said microcontroller, including first memory means for storing an extracted endpoint identifier, thereby defining an active endpoint; a FIFO for storing data obtained from a received packet, said FIFO associated with said active endpoint; state machine means, coupled to said control means, for controlling the sequencing of a transaction with said USB host based on said active endpoint, said transaction comprising plural packets; and a second memory means for storing configuration and state information for each endpoint; said state machine means coupled to said second memory means to receive configuration and state information corresponding to said active endpoint. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13)
-
-
14. A method of transferring data between a host and a device in accordance with the Universal Serial Bus standard, said method comprising:
-
receiving a first packet, said first packet containing a first endpoint identifier; storing said first endpoint identifier thereby defining a current endpoint; receiving a second packet corresponding to said current endpoint, said second packet containing first data; storing said first data into a first FIFO; reading out said first data from said first FIFO; receiving a third packet, said third packet containing a second endpoint identifier; storing said second endpoint identifier thereby redefining said current endpoint; receiving a fourth packet corresponding to said current endpoint, said fourth packet containing second data; storing said second data into said first FIFO; and reading out said second data from said first FIFO; whereby said first FIFO serves to store data received for each of said first and second endpoints. - View Dependent Claims (15, 16, 17)
-
-
18. A method of transferring data between a host and a device in accordance with the Universal Serial Bus standard, said method comprising:
-
producing first data associated with a first endpoint and second data associated with a second endpoint; receiving a first packet containing an endpoint identifier; storing said endpoint identifier into a current endpoint store; selecting one of said first and second data, by matching the endpoint identified in said current endpoint store with one of said first and second endpoints; storing a selected one of said first and second data into a first FIFO; and transmitting data stored in said first FIFO to said host. - View Dependent Claims (19, 20, 21)
-
-
22. A method of operating a device in accordance with the Universal Serial Bus standard, said method comprising:
-
associating a first plurality of endpoints with a first FIFO; associating a second plurality of endpoints with a second FIFO; receiving a first packet, said first packet containing an endpoint identifier; storing said endpoint identifier as a current endpoint; receiving a second packet; matching said current endpoint to one of said first and second FIFO'"'"'s; and storing data contained in said second packet into a matched one of said FIFO'"'"'s. - View Dependent Claims (23, 24, 25, 26, 27)
-
Specification