[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [usb] Endpoint Numbers



Rudolf,

	There are four types of endpoints (or transactions), namely, control,
interrupt, isochronous and bulk. For control endpoints, they can be either
In or Out. As for the rest, they are only In or Out. And within control
transaction, there may be control, in, out, and status packets. As for the
rest, there are in, out or status packets.
	You can implement two different schemes. One is fixed by synthesis, which
mostly implemented to save gates. And other one is register set. So instead
of linked list, where the hardware has to fetch, read, compare and move on
next, a finite number of comparators can be used to check the endpoint
configuration.
	I am not familiar with all the classes. But so far from the cases that I
have dealt with is that the endpoints are either control, in or out only at
one time. But they could be changed during run time due to different
configurations, interfaces or alternative interfaces.

best regards,
Peter

-----Original Message-----
From: owner-usb@opencores.org [mailto:owner-usb@opencores.org]On Behalf
Of Rudolf Usselmann
Sent: Tuesday, January 09, 2001 8:54 PM
To: USB Mailing List
Subject: [usb] Endpoint Numbers



Looks like I'm dropping the idea of a linked list in memory to define
endpoints. I will instead allow at compile (synthesis) time to define
how many endpoints an implementation has.

Now, I'm thinking that any given endpoint that is instantiated at
compile time, can perform only one of CONTROL, IN or OUT functions,
which can be selected by the software of the function. This will
make the design very simple.

Now I have two questions:

1) Since the endpoints are instantiated at synthesis time, I can
set the endpoint numbers at that time. However, this would then
make it impossible to have an endpoint 3 (for example) that has CONTROL,
IN and OUT operations at the same time. So what I can do, is to make
the actual USB endpoint number programmable by the functions controller.
So one could set up 3 endpoint 5s, one for each operation.

What do you guys think ?

2) Considering the above scheme, how many (maximum) endpoints should I
 support ?

Thanks for your help guys and gals !


rudi