Multiple Boards on One Hub

Hello,

I just got the PipeTest app translated and running in VC++6! Anyway I wanted to get a little more info on using multiple instances on one hub or multiple host ports. Reading all the multiple instance info in the manual, I have more questions… I understand that there are 256 possible USB endpoints on a USB port, I also understand there are 8 possible USB endpoints on an FX2. How does this relate to the 256 OK endpoints, and the endpoint address ranges, and are there limitations on the number or assignment of OK endpoints in the case of multiple instances on a single host port? If there are limitations, how is this affected by using separate host ports on the same machine?

Thanks for the design info!

Bill

Bill, those are all different things. Devices on a hub do not map to USB endpoints. USB endpoints do not map to “OK” endpoints.

If you have 127 USB devices attached to your machine, each one of them can have the full 256 “OK” endpoints.

The only limitation you will run into is bandwidth.

So you are saying that I can put 127 3001 boards on one USB2 Hub, as long as I can tolerate the bandwidth dedgradation? Have you done the experiment to confirm this? Would there be bandwidth dedgradation if I only talk to one board at a time? Are there any other issues for a large system that I should be aware of?

Thanks for the help,

Bill

Hi Bill-

Well – we haven’t actually tried 127 devices, but I think that’s the maximum supported USB amount. Also, I think the USB hub itself counts against the maximum number of USB devices, so you’ll be limited there, too.

We have had several situations using at least two devices. They are independently addressible thanks for the USB serial number on each one.

I don’t think there are any other issues than the performance degradation. Talking to one board at a time will not incur much (if any) degradation.

We have not tried any large systems, though, so if you have anything to note during your experiments, please let us know!

I just got a two board system up for testing right now. Since I only have two boards right now, and the current system I am implementing only requires two boards, I won’t have an opportunity to test a large system, however I have another customer that would very much like to implement a larger system. Real success / failure info would help upfront with the risk assesment. It appeared to me that there might be some limitation due to the number of USB endpoints consumed by each FX2 device… reading the TRM, it looks like 8 to me… four in, four out… so there may be a limit of 128 / 8 = 16 boards? I would also be interested if anyone has tested two boards on separate host ports simultaneously transfering data? It would also be nice to have performance data on the various peripheral chipsets also… if anyone out there has something, please speak up…

Thanks…

Hey Bill-

I’m curious where you got the idea that the endpoints were a limited resource. As far as I know, each device has its own endpoints. So it’s not a situation where there are only 128 endpoints that must be parcelled out among the attached devices. But if you have a reference for that, I’d be happy to look into it. The reference we use here is the Mindshare “USB System Architecture” book. It’s quite good.

If you can write up a sample application that would test bandwidth when multiple devices are attached, we would be happy to try that application here with several boards. I would ask that the app be fairly turnkey – so that all we have to do is attach the devices and run it. We will report the results.

Hello,

Well taking your implied advice and going back and re-reading USB_20.pdf (the spec from the USB.org website) and the EZUSB_FX2_TRM.pdf (Technical Referance Manual for the FX-2 from the Cypress website) (it’s been a while) I was quite off the mark… guess I was thinking the FX2 was a “compound device” or something. So the bottom line, as you said: 127 devices max, including each hub counts as a device(5.2.3). There is a max of 5 non-root hubs in series, between root hub and end function device(4.1.1). As an aside, 16 USB Endpoints In, 16 out max per device (note these are not the same as OK endpoints)(5.3.1.2). Also note that the FX2 has 7 endpoints including the EP0control endpoint (TRM ch2).

As for testing, I would like to take you up on that next month, when I have the time, can get the customer to pay for the development, and have a bit more experience with the device. Thanks for the offer…

Bill