Documentation
The USB 2.0 Mass Storage Design Platform is a complete, integrated solution dedicated to wide range of USB based Mass Storage Devices. You can use it in wide range of applications, like portable flash memory, digital audio player, card reader or digital camera.
The complete MS Design Platform includes:
- DUSB2 peripheral controller designed to support 12 Mb/s "Full Speed" (FS) and 480 Mb/s "High Speed" (HS) serial data transmission rates
- DP8051XP ultra high performance, speed optimized, fully customizable 8051 8-bit microcontroller with built in DoCDTM debug IP core
- Mass Storage Devices software stack optimized for DP8051XP 8-bit CPU
- FPGA board with ready to use, preprogrammed example flash memory device application
- HAD2 – DoCDTM Hardware Assisted Debugger board
- DoCDTM Debug Software
- DoCDTM driver for Keil development software
- DoCDTM driver for IAR development software
Performance
Each core has been tested in variety of FPGA and ASIC technologies. Its implementation results are summarized below.
| Implementation |
Speed grade |
Utilized Area [Slices] |
Frequency [MHz] cpuclk/utmiclk |
|---|---|---|---|
| SC | -7 | 2470 | 100/>100 |
| ECP2 | -7 | 2680 | 80/>100 |
| ECP2M | -7 | 2680 | 70/>100 |
| XP2 | -7 | 2990 | 60/>100 |
Implementation results of the USB 2.0 Mass Storage Devices Design Platform in LATTICE devices.
| Implementation |
Speed grade |
Utilized Area [Slices] |
Frequency [MHz] cpuclk/utmiclk |
|---|---|---|---|
| SPARTAN-III | -5 | 2790 | 50/>100 |
| SPARTAN-IIIE | -5 | 2790 | 60/>100 |
| VIRTEX-4 | -12 | 2790 | 75/>100 |
| VIRTEX-5 | -3 | 1460 | 90/>100 |
Implementation results of the USB 2.0 Mass Storage Devices Design Platform in XILINX devices.
| Implementation |
Speed grade |
Utilized Area [LC] |
Frequency [MHz] cpuclk/utmiclk |
|---|---|---|---|
| CYCLONE-II | -6 | 4690 | 60/>100 |
| CYCLONE-III | -6 | 4690 | 70/>100 |
| STRATIX-II | -3 | 3220 | 100/>100 |
| STRATIX-III | -2 | 3220 | 110/>100 |
| Arria GX | -6 | 3220 | 80/>100 |
Implementation results of the USB 2.0 Mass Storage Devices Design Platform in ALTERA devices.
Key Features
- Full compliance with the USB 2.0 specification
- Full-speed 12 Mbps operation
- High-speed 480 Mbps operation
- Supports UTMI Transceiver Macrocell Interface
- Synchronous RAM interface for FIFOs
- Suspend and resume power management functions
- 100% software compatible with industry standard 8051
- Up to 256 bytes of internal (on-chip) Data Memory
- Up to 64K bytes of internal (on-chip) or external (off-chip) Program Memory
- Up to 16M bytes of external (off-chip) Data Memory
- User programmable Program Memory Wait States solution for wide range of memories speed
- User programmable External Data Memory Wait States solution for wide range of memories speed
- Allows operation from a wide range of CPU clock frequencies
- Fully synthesizable
- Static synchronous design
- Positive edge clocking
- No internal tri-states
- Lite design, small gate count and fast operation
- Scan test ready
Applications
- Portable flash memory device
- Digital audio player
- Card reader
- Digital camera
Symbol
clk
por
clkcpu
prgromdata (7:0)
prgramdata (7:0)
ramdatai (7:0)
sfrdatai (7:0)
xdatai (7:0)
sxdmdatai (7:0)
int0
int1
t0
t0
t1
gate1prgaddr (15:0) 

prgdatao (7:0) 

prgramwr 

ramaddr (7:0) 

ramdatao (7:0) 

ramwe 

ramoe 

sfraddr (6:0) 

sfrdatao (7:0) 

sfrwe 

sfroe 

xaddr (23:0) 

xdatao (7:0) 

xdataz 

xprgrd 

xprgwr 

xdatard 

xdatawr 

sxdmaddr (15:0) 

sxdmdatao (7:0) 

sxdmoe 

sxdmwe 

utmiclk
utmilinestate (1:0)
utmidatai (7:0)
utmirxvalid
utmirxactive
utmirxerror
utmitxreadyutmiopmode (1:0) 

utmidatao (7:0) 

utmitxvalid 

utmisuspendm 

utmixcvrselect 

utmitermselect 

sramdataia (7:0)
sramdataib (7:0)sramaddra (13:0) 

sramaddrb (13:0) 

sramdataoa (7:0) 

sramdataob (7:0) 

sramwea 

sramweb 

Pins description
| Pin | Type | Description |
|---|---|---|
| clk | input | Global clock |
| por | input | Global reset Power On Reset |
| clkcpu | input | CPU clock |
| prgromdata (7:0) | input | Data bus from internal ROM program memory |
| prgramdata (7:0) | input | Data bus from internal RAM program memory |
| ramdatai (7:0) | input | Data bus from internal data memory |
| sfrdatai (7:0) | input | Data bus from user SFR"s |
| xdatai (7:0) | input | Data bus from external memories |
| sxdmdatai (7:0) | input | Data bus from synchronous external data memory (SXDM) |
| int0 | input | External interrupt 0 |
| int1 | input | External interrupt 1 |
| t0 | input | Timer 0 input |
| t0 | input | Timer 0 gate input |
| t1 | input | Timer 1 input |
| gate1 | input | Timer 1 gate input |
| utmiclk | input | USB clock |
| utmilinestate (1:0) | input | USB line state |
| utmidatai (7:0) | input | USB parallel data input bus |
| utmirxvalid | input | USB receive valid |
| utmirxactive | input | USB receive active |
| utmirxerror | input | USB receive error |
| utmitxready | input | USB transmit ready |
| sramdataia (7:0) | input | SRAM port A data input bus |
| sramdataib (7:0) | input | SRAM port B data input bus |
| prgaddr (15:0) | output | Internal program memory address bus |
| prgdatao (7:0) | output | Data bus for internal program memory |
| prgramwr | output | Internal program memory write |
| ramaddr (7:0) | output | Internal Data Memory address bus |
| ramdatao (7:0) | output | Data bus for internal data memory |
| ramwe | output | Internal data memory write enable |
| ramoe | output | Internal data memory output enable |
| sfraddr (6:0) | output | Address bus for user SFR"s |
| sfrdatao (7:0) | output | Data bus for user SFR"s |
| sfrwe | output | User SFR"s write enable |
| sfroe | output | User SFR"s output enable |
| xaddr (23:0) | output | Address bus for external memories |
| xdatao (7:0) | output | Data bus for external memories |
| xdataz | output | Turn xdata bus into "Z" state |
| xprgrd | output | External program memory read |
| xprgwr | output | External program memory write |
| xdatard | output | External data memory read |
| xdatawr | output | External data memory write |
| sxdmaddr (15:0) | output | Address bus for synchronous external data memory (SXDM) |
| sxdmdatao (7:0) | output | Data bus for synchronous external data memory (SXDM) |
| sxdmoe | output | Synchronous external data memory (SXDM) output enable |
| sxdmwe | output | Synchronous external data memory (SXDM) write enable |
| utmiopmode (1:0) | output | USB operational mode |
| utmidatao (7:0) | output | USB parallel data output bus |
| utmitxvalid | output | USB transmit valid |
| utmisuspendm | output | USB suspend |
| utmixcvrselect | output | USB transceiver select |
| utmitermselect | output | USB termination select |
| sramaddra (13:0) | output | SRAM port A address bus |
| sramaddrb (13:0) | output | SRAM port B address bus |
| sramdataoa (7:0) | output | SRAM port A data output bus |
| sramdataob (7:0) | output | SRAM port B data output bus |
| sramwea | output | SRAM port A write enable |
| sramweb | output | SRAM port B write enable |
Block Diagram
| DP8051XP CPUUltra high performance, speed optimized 8-bit embedded controller, 100% software compatible with industry standard 8051. |
clkcpu

prgromdata (7:0)

prgramdata (7:0)

ramdatai (7:0)

sfrdatai (7:0)

xdatai (7:0)

sxdmdatai (7:0)

int0

int1

t0

t0

t1

gate1

prgaddr (15:0)

prgdatao (7:0)

prgramwr

ramaddr (7:0)

ramdatao (7:0)

ramwe

ramoe

sfraddr (6:0)

sfrdatao (7:0)

sfrwe

sfroe

xaddr (23:0)

xdatao (7:0)

xdataz

xprgrd

xprgwr

xdatard

xdatawr

sxdmaddr (15:0)

sxdmdatao (7:0)

sxdmoe

sxdmwe

| CPU interfaceThe CPU interface module is clocked by cpuclk clock and manages communication with DP8051XP CPU. In this module DUSB2 core configuration and status registers are being located. |
| UTMI interfaceThe UTMI interface is clocked by utmiclk clock and manages communication with USB 2.0 Transceiver Macrocell. It is responsible for reset detection, speed handshake, token, data and handshake packet reception and transmission. |
utmiclk
utmilinestate (1:0)
utmidatai (7:0)
utmirxvalid
utmirxactive
utmirxerror
utmitxready
utmiopmode (1:0)
utmidatao (7:0)
utmitxvalid
utmisuspendm
utmixcvrselect
utmitermselect| SRAM interfaceThe SRAM interface module manages communication with Synchronous Random Access Memory. It generates address, read and write signals for the SRAM memory and buffers data bytes during the FIFO read and write operations. |
sramdataia (7:0)
sramdataib (7:0)
sramaddra (13:0)
sramaddrb (13:0)
sramdataoa (7:0)
sramdataob (7:0)
sramwea
sramweb| EP0Special bidirectional endpoint used for device configuration. Allows generic USB control and status access. |
| EP1Unidirectional, configurable data endpoint used for application specific data transmission. Supports INTERRUPT, BULK and ISOCHRONOUS transfers. |
| EP2Unidirectional, configurable data endpoint used for application specific data transmission. Supports INTERRUPT, BULK and ISOCHRONOUS transfers. |
clk

por
