[INTEL NAVIGATION HEADER]

USB and 8x930Ax Performance Analysis for Isochronous Transfers Pertaining to Digital Audio

INTRODUCTION
The Universal Serial Bus (USB) is a technology for enabling low and medium speed I/O devices to be connected to the PC without card insertions or reconfiguration. The Universal Serial Bus is a specification for a high speed (12 Mbps) bus with provision for guaranteed on-time delivery. Intel’s USB compliant peripheral controller, the 8x930Ax, combines Intel designed USB compliant hardware with a MCS(r) 251 core.

The purpose of this white paper is to allow users to determine a throughput design target for an audio device using isochronous transfers with regards to USB. The user will also be able to understand how many bytes the 8x930Ax peripheral controller can support in an isochronous transfer.

BUS CONFIGURATION
USB uses a 1 ms frame of reference. The USB has 12Mbps or 12,000 bit time in one 1ms frame, or 1500 bytes per 1ms frame. On power-up or when the network configuration changes, the host PC goes through an enumeration process. As each newly attached device is detected, the host interrogates the device for a wealth of information including bandwidth and latency requirements. As enumeration proceeds the host gives each device the required share of the bus. If the full frame is allocated no other device can connect. However, once a device is on board the bus it is guaranteed to be able to use the bandwidth it needs.

BUS BANDWIDTH REQUIREMENTS FOR: 44.1 KHZ SPEAKERS, 16 BITS/SAMPLE
We need to consider 44 or 45 samples
Hence data payload will be 176 or 180
.................. (1)
(sample calculation: data payload = (45 x 16 x 2)/8 = 180 bytes/frame)
isochronous transaction protocol overhead = 10 bytes
.................. (2)
From (1) and (2): Total = 190 bytes/frame
.................. (3)
Worst case bit stuffing is .1667 x 180 = 30 bytes
.................. (4)
From (3) and (4): Total with worst case bit stuffing =220 bytes

Bus characteristics allow 1500 bytes/frame.
Therefore, in the above example, approximately 14.7% bandwidth has been utilized.

8x930Ax PERIPHERAL CONTROLLER PERFORMANCE CALCULATIONS (FOR ISOCHRONOUS TRANSFERS)
The maximum data payload per transaction for full speed isochronous transfer is 1024 bytes. The interrupt routine below is using 12MHz 8x930Ax peripheral controller with EP1 configured as 1024 bytes dual-buffering FIFO to transmit dual 180 bytes isochronous data. The example code to determine the processing load to support one audio endpoint is shown below:

mov		WR12, #Buffer2			;3states binary/2 states source, base address of the external data buffer
mov		WR14, @WR12			;4/3 (6 states for fetching 2 bytes externally)
mov		TXDAT1, R15			;3/4
mov		TXDAT1, R14			;3/4
inc		WR12, #2			;2/1
...		(repeat the above 2 bytes move for 89 times)
mov		TXCNT1, #512			;3/3, write #bytes into byte count register
reti						;12/12 (INTR = 1)

The worst case interrupt latency is 72 states. The states required in source mode for this routine is 72 + 2 + (6 + 4 + 4 + 1)*90 + 3 +12 = 1439 states or 1439 clocks. So the time used by the 8x930Ax peripheral controller to fill 180 bytes data into the FIFO is 1439 clocks or 1439 bit time.
.................. (5)
The overhead for isochronous transfer is 10 bytes (output).
The worse case bit stuffing is 16%

So the transmission time from 512 bytes FIFO to USB is (10 + 512) * 1.16 * 8 = 4,845 bit time.
................... (6)
From (5) and (6) above, time left for the 8x930Ax peripheral controller to do something else is 4,845 - 1439 = 3406 bit times or states.

ASSUMPTION
The above calculation was based on the assumption that the enumeration has completed.

CONCLUSION
From the calculations, you can conclude:
- the 8x930Ax peripheral controller is well able to support isochronous transfers pertaining to high quality audio
- USB has enough speed to cope with high-quality audio



Legal Stuff © 1997 Intel Corporation

Free Web Hosting