USB Host Core :: Overview

Project maintainers


Name: usb_host_core
Created: Jul 12, 2015
Updated: Jul 26, 2015
SVN Updated: Jul 26, 2015
SVN: Browse
Latest version: download (might take a bit to start...)
Statistics: View
Bugs: 0 reported / 0 solved
Star1you like it: star it!

Other project properties

Category:Communication controller
Development status:Stable
Additional info:Design done, FPGA proven, Specification done
WishBone compliant: No
WishBone version: n/a
License: GPL


This IP core is a cutdown USB host controller which allows communications with full-speed (12mbps) USB devices.

The IP is accessed via a Wishbone slave interface (asynchronous read result) for control, status and data.

Data to be sent or received is stored in some internal FIFOs (which are configurable in size). The data is accessed through the Wishbone slave port. There is no DMA engine (e.g. a bus mastering interface) associated with this IP.

The core functions well, is very small, but is fairly inefficient in terms of CPU cycles required to perform USB transfers.
This core is not compliant with any standard USB host interface specification, e.g OHCI or EHCI.


Instance usbh and hookup to UTMI PHY interface and a Wishbone master (e.g. from your CPU).
The core requires a 48MHz clock input.


Verified under simulation and on FPGA with various USB devices attached (hubs, mass storage, network devices).


TX_FIFO_DEPTH - Transmit FIFO size
TX_FIFO_ADDR_W - Transmit FIFO size (width of size field)
RX_FIFO_DEPTH - Receive FIFO size
RX_FIFO_ADDR_W - Receive FIFO size (width of size field)


With the default configuration...

* the design contains 214 flops, 2 RAM cells (RX and TX FIFOs)
* synthesizes to more than the required 48MHz on a Xilinx Spartan 6 LX9 (speed -3)
© copyright 1999-2018, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.