|
From: zheng r. <zhe...@gm...> - 2018-10-31 13:01:47
|
Tim Roberts wrote: > Zheng Rong wrote: > > Tim Roberts wrote: > >> >> How much buffering do you have in your design? > > > On the device side, I set a 512*4=2K buffer for the data streaming. > > > That's not very much. In a camera, the pixel stream is usually > continuous. Pixels keep coming in whether they go out or not. If retries > cause the bus side to get delayed, that buffer is going to fill, and the > incoming pixels will get thrown on the floor. At 10MB/sec, that 2048 bytes > will get filled in 200us. If you should happen to miss one microframe, > you'd be screwed. > > Now I am trying to use ISOC transfer mode in my design, but confused by the bandwidth consideration. The device has 4K buffer in isoc mode. The maximum bandwidth for USB2.0 high-speed isoc transfer is 3x1024 B/uframe x 8K uframe/second=24MB/s, for one endpoint. Is it possible to use this configuration to handle a device with burst datarate=27MB/s but average datarate=15MB/s? For example, in my design, the device is a camera, and the pixel clock is 27MHz in frame valid period, (one byte for one poxel) so the datarate is 27MB/s during frame valid interval. While the total datarate is e.g. 15MB/s. From my understanding, the isoc xfer will get data lost because the device fifo buffer (4KB now on my device) is not enough to buffer an image frame (360960 Bytes) to handle the difference between 27M burst rate and 24M xfer bandwidth, even though we don't miss any microframe. Is my understanding right? If I decrease the pixel clock to 24MHz or lower, is it possible to make it work? Best regards, Zheng |