Electrical computers and digital data processing systems: input/ – Intrasystem connection – Bus access regulation
Reexamination Certificate
1999-12-22
2001-01-09
Lee, Thomas C. (Department: 2182)
Electrical computers and digital data processing systems: input/
Intrasystem connection
Bus access regulation
C709S230000, C714S004110, C714S799000, C370S464000
Reexamination Certificate
active
06173355
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to the Universal Serial Bus (USB) protocol. In particular, the invention relates to the use of a shared buffer for sending and receiving data.
2. Description of the Related Art
Universal Serial Bus (USB) is a standard peripheral interface for attaching personal computers to a wide variety of devices: e.g., digital telephone lines, monitors, modems, mice, printers, scanners, game controllers, keyboards, and other peripherals. The USB thus replaces existing interfaces such as the RS-232C serial ports, parallel ports, PS/2 interfaces, and game/MIDI ports.
In accordance with USB, all attached devices connect to a personal computer through a single connector type using a tiered-star topology. A host personal computer includes a single USB controller. The host controller provides the interface between the USB network and the host personal computer. The host controller controls all accesses to USB resources and monitors the bus's topology. A USB hub provides USB attachment points for USB devices.
A USB function is a USB device that is able to transmit and receive information on the bus. A function may have one, or more, configurations, each of which defines the interfaces that make up the device. Each interface, in turn, is made up of one of more end points.
An endpoint is the ultimate source, or sink, of data. An endpoint pipe provides for the movement of data between USB and memory, and completes the path between the USB host and the function endpoint.
Each endpoint is an addressable entity on USB and is required to respond to IN and OUT tokens from the USB host (typically a PC). IN tokens indicate that the host has requested to receive information from an endpoint, and OUT tokens indicate that the host is about to send information to an endpoint.
On detection of an IN token addressed to an endpoint, the endpoint is responsible for responding with a data packet. If the endpoint is currently stalled, a STALL handshake packet is sent. If the endpoint is enabled, but no data is present, a negative acknowledgment (NAK) handshake packet is sent.
Similarly, on detection of an OUT token addressed to an endpoint, the endpoint is responsible for receiving a data packet sent by the host and storing it in a buffer. If the endpoint pipe is currently stalled, at the end of the data transmission, a STALL handshake packet is sent. If the endpoint pipe is currently disabled, at the end of the data transmission, no handshake packet is sent. If the endpoint pipe is enabled, but no buffer is present in which to store the data, a NAK handshake packet is sent.
A disabled endpoint, or endpoints not currently mapped to an endpoint pipe, do not respond to IN, OUT, or SETUP tokens.
A number of vendors have developed implementations of the USB standard. For example, Intel Corp. has released the 8x931Ax, 8x931Hx, 8x930Ax, and 8x930Hx devices.
However, these devices have a number of limitations. The 8x930 and 8x931 have a transmit buffer and a receive buffer dedicated to each endpoint pair. Thus the number of endpoints can constrain the size of the buffers, or vice versa. There is a need to increase the number of endpoints without a corresponding increase in total buffer size.
In addition, after receiving data, the 8x930 and 8x931 require processor intervention to remove the data from the buffer before it becomes full. There is a need to reduce processor intervention after receiving data.
SUMMARY OF THE INVENTION
The present invention addresses these and other problems by providing a buffer that can be shared among a number of endpoints.
According to one embodiment, an apparatus for sending data from a USB endpoint to a USB host according to the present invention includes a first memory, a second memory, a data processor, a pointer memory, and a controller. The data processor is configured to generate at least a first data packet of data in the first memory and a second data packet of the data in the second memory. The pointer memory is configured to contain a pointer corresponding to a memory. The controller is configured to send a data packet from a USB endpoint to a USB host on a USB endpoint pipe, and to receive a signal. The data processor generates a first data packet in the first memory and a second data packet in the second memory. The controller generates in the pointer memory a pointer to the first memory, sends the data packet pointed to by the pointer, then waits for an acknowledgement signal from the host. If the controller does not receive the signal, it resends the data packet. If the controller does receive the signal, it generates in the pointer memory a second pointer to the second memory and sends the data packet pointed to by the pointer.
According to a further embodiment, after the signal is received, the data processor generates a third data packet of the data in the first memory. After the controller receives the signal and sends the second data packet, the controller then waits for a second acknowledgement signal. If the controller does not receive the second signal, it resends the second data packet. If the controller does receive the signal, it generates in the pointer memory a third pointer to the first memory and sends the data packet pointed to by the pointer.
According to another embodiment, an apparatus for receiving data from a USB host includes a first memory, a second memory, a data processor, a pointer memory, and a controller. The data processor is configured to generate data from at least a first data packet in the first memory. The pointer memory is configured to contain a pointer corresponding to a memory. The controller is configured to receive a data packet at a USB endpoint from a USB host on a USB endpoint pipe, and to detect an error. The controller generates in the pointer memory a first pointer to the first memory, receives the first data packet into the memory pointed to by the pointer, then detects whether a first error occurred. If the error is detected, the controller continues receiving. If the error is not detected, the data processor generates the data from the first data packet, and the controller generates a second pointer to the second memory and receives a second data packet into the memory pointed to by the pointer.
According to a further embodiment, after the second data packet is received, the controller detects whether a second error occurred. If the second error is detected, the controller continues receiving. If the second error is not detected, the data processor generates the data from the second data packet, and the controller generates a third pointer to the first memory and receives a third data packet into the memory pointed to by the pointer.
According to yet another embodiment, a method of sending data from a USB endpoint to a USB host according to the present invention includes the steps of generating a first data packet of the data in a first memory, generating a second data packet of the data in a second memory, generating a first pointer to the first memory, and sending the data packet pointed to by the pointer from the USB endpoint to the USB host. Then, the method further includes the steps of waiting for an acknowledgement signal from the host and continuing to send the data packet if the signal is not received. The method further includes, once the signal is received, the steps of generating a second pointer to the second memory, then sending the data packet pointed to by the pointer.
According to a further embodiment, after the signal is received, the method further includes the step of generating a third data packet of the data in the first memory. After the steps of receiving the signal and sending the data packet, the method further includes the steps of waiting for a second acknowledgement signal from the host and continuing to send the second data packet if the second signal is not received. The method further includes, once the second signal is received, the steps of generating a third pointer to the first memory, then sending the data
Brief David
Falik Ohad
Elamin Abdelmoniem
Lee Thomas C.
Limbach & Limbach LLP
National Semiconductor Corporation
LandOfFree
System for sending and receiving data on a universal serial... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with System for sending and receiving data on a universal serial..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and System for sending and receiving data on a universal serial... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2438317