This project is in progress. Verilog source code will be provided for download when it is available. In the meantime, please contact the author if you like to obtain the partial codes or help out in the development.
Ever since the introduction of first PC more than 25 years ago, RS232 Serial Port and Centronics Parallel Port were chosen as the primary communication interface to PC peripheral equipments such as printers, scanners, mice and modems. These are commonly known as COM1, COM2, LPT1, ... ports by operating systems. From the earliest 300bps, serial port can now support 921600bps. Similarly, the original uni-directional parallel port has included EPP and ECP capable of operating in bi-directional mode. However, as technology developed in the early stage of PC era, this communication path is still unable to support massive data transferred required in modern peripheral equipments. Not only does the number of ports is limited, these legacy ports are resource intensive when in use.
To address these problems, Universal Serial Bus (USB) technology is developed. This is an ambitious plan, which ultimately, aims to consolidate all PC peripherals to use the same standard interface. Besides the standard peripheral equipments such as printers and modems, USB keyboard, cameras and hard drives are available. To date, USB2.0 is the latest specifications available. It is an extension over USB1.1 which makes the former capable of supporting high-speed data transfer (>20Mbps).
Unfortunately, USB is not as straight forward as Serial or Parallel port. USB protocol is packet based. Significant pre and post processing are required to complete the transfer. With the advancements of Silicon processing technology and the wide availability of FPGA, the die overhead is negligible as compared to a decade ago. In view of its performance, USB is the way to go.
This page focuses on USB1.1, thus, high-speed mode is ignored.