To make an equipment that can communicate with the USB protocol do not necessarily need to know the details of the USB protocol. Sometimes even do not need knowledge of the USB protocol altogether. Knowledge of the USB protocol is only required to know the specifications required for our equipment. In fact for mengimplemetasikan USB protocol on FPGA or other auxiliary device is very inefficient and a lot of wasted time to design it. Using the USB controller is more advisable to create a tool that can communicate using this protocol. USB controller has many forms, from the 8051-based microcontroller that has a USB input output directly to the protocol converter from the serial buses such as I2C to USB.
USB controllers are usually sold along with various facilities that facilitate the development of tools, including a complete manual, drivers for Windows XP, sample application code to access the USB, the example code for USB controllers, and schematics elektronikanya.
In the development of applications in personal computer software, communication between the hardware inside the USB hardware is not too concerned because Windows or another operating system that will take care of it. Software developers will only provide data that is sent to the USB devices in the buffer storage and read data from USB devices from the buffer reader. For any driver sometimes Windows already provide it, except for equipment that has a particular specification we have to create your own.
Source : http://id.wikipedia.org/wiki/Universal_Serial_Bus#Perancangan_peralatan_yang_menggunakan_USB