2 Replies Latest reply on Sep 24, 2013 2:31 AM by jason.trout

    Interrupt endpoint example OR interrupt endpoint latency statistics?

    jason.trout

      Hello,

         

      I've been tasked with getting an estimate for USB 3.0 (and USB 2.0, but lets set that aside for now) latency. My reading suggests that the best possible latency is acheived with interrupt endpoints... but there are no interrupt examples in the distribution (or in any distribution? http://www.cypress.com/?app=forum&id=167&rID=55106). So are there still no interrupt examples I can quickly get some latency figures for? Or do you just... have such figures lying around? I am speaking of PC->chip->PC latency.

         

      Thanks

         

      Jason

        • 1. Re: Interrupt endpoint example OR interrupt endpoint latency statistics?
          rama.sai.krishna.vakkantula

           Hi,

             

              

           

             

              

                    

             

          There is one example project that uses Interrupt transfers.    

           

             

          Please look for the "USBIntrSourceSink" project in the attachment of following application note:    

           

             

          AN86947 - Optimizing USB 3.0 Throughput with EZ-USB® FX3™    

           

             

          I hope this project will be a good starting point for your study.    

           

             

              

                    

             

          Thanks,    

           

             

          Sai Krishna.    

          • 2. Re: Interrupt endpoint example OR interrupt endpoint latency statistics?
            jason.trout

            Thanks for that. Before I go on, is there some other support mechanic from Cypress I should be using for this question? I have nothing to complain about from your assistance (which was timely and relevant :-j), but this is now a significantly more technical question than merely "do you have X"?

               

            I got as far as loading the arm program and getting data back, using the "Streamer" application, but I'm not getting the speeds as advertised in the application note's companion document (in Table 7). I get just under 1.7 MB/S, using "Packets per Xfer" of 1, and "Xfers to Queue" of 1. I am under the impression that this transfers a single packet of (in this case) 3072 bytes.

               

            Using a USB 2.0 slot, I got 700 KB/S. I did rebuild the ARM firmware, but changed no code. This is the contents of the descriptors (right?) as reported by "USB Control Center" software.

               

             

               

            <DEVICE>
                FriendlyName="Cypress USB StreamerExample"
                Manufacturer="Cypress"
                Product="FX3"
                SerialNumber=""
                Configurations="1"
                MaxPacketSize="512"
                VendorID="04 B4"
                ProductID="00 F1"
                Class="00h"
                SubClass="00h"
                Protocol="00h"
                BcdDevice="00 00"
                BcdUSB="03 00"
                <BOS>
                    NumberOfDeviceCapability="02h"
                    DescriptorType="15"
                    DescriptorLength="5"
                    TotalLength="22"
                    <USB20 Device Extension>
                        DescriptorLength="7"
                        DescriptorType="16"
                        DeviceCapabilityType="2"
                        bmAttribute="02h"
                    </USB20 Device Extension>
                    <SUPERSPEED USB>
                        DescriptorLength="10"
                        DescriptorType="16"
                        DeviceCapabilityType="3"
                        FunctionalitySupporte="3"
                        bmAttribute="00h"
                        U1Device Exit Latency="0"
                        U2Device Exit Latency="00h"
                    </SUPERSPEED USB>
                </BOS>
                <CONFIGURATION>
                    Configuration="0"
                    ConfigurationValue="1"
                    Attributes="80h"
                    Interfaces="1"
                    DescriptorType="2"
                    DescriptorLength="9"
                    TotalLength="44"
                    MaxPower="50"
                    <INTERFACE>
                        Interface="0"
                        InterfaceNumber="0"
                        AltSetting="0"
                        Class="FFh"
                        Subclass="00h"
                        Protocol="0"
                        Endpoints="2"
                        DescriptorType="4"
                        DescriptorLength="9"
                        <ENDPOINT>
                            Type="INTERRUPT"
                            Direction="OUT"
                            Address="03h"
                            Attributes="03h"
                            MaxPktSize="3072"
                            DescriptorType="5"
                            DescriptorLength="7"
                            Interval="1"
                        <SUPER SPEED ENDPOINT COMPANION>
                            Type="SUPERSPEED_USB_ENDPOINT_COMPANION"
                            MaxBurst="2"
                            Attributes="00h"
                            BytesPerInterval="C00h"
                        </ENDPOINT>
                        <ENDPOINT>
                            Type="INTERRUPT"
                            Direction="IN"
                            Address="83h"
                            Attributes="03h"
                            MaxPktSize="3072"
                            DescriptorType="5"
                            DescriptorLength="7"
                            Interval="1"
                        <SUPER SPEED ENDPOINT COMPANION>
                            Type="SUPERSPEED_USB_ENDPOINT_COMPANION"
                            MaxBurst="2"
                            Attributes="00h"
                            BytesPerInterval="C00h"
                        </ENDPOINT>
                    </INTERFACE>
                </CONFIGURATION>
            </DEVICE>