USB to SD By: Nadav Haklai & Noam Rabinovici Supervisors: Mike Sumszyk & Roni Lavi Semester: Spring 2010 Create a prototype for file transfer system. Implement a stand alone bridge between USB and SD-Card interfaces. Design a platform for future file transfer developments. Learn the USB and SD-Card protocols. Copy files between USB and SD card devices. Stand-alone device. Support FAT file systems. Easy to use user interface. Low power – self powered (battery) . Fast transfer rates - USB 2.0. Low cost product. Altera DE-3 Development Board High power – Power supply. Large dimensions. Lower transfer rates – generic FPGA. Very expensive. Short development time and resources Using open-source code (FAT). Using Altera examples as skeleton. DE3 Board ISP1761 (USB Controller) USB 2.0 Port Stratix III Leds and switches PIO Controller ISP1761 Controller Nios II Soft Processor Avalon Switch Fabric Console SD Card Connector JTAG PIO Controller On Chip Memory Software: Quartus II 10.0 SOPC Builder NIOS II IDE 10.0 Hardware: Altera DE3 Board ▪ Stratix III FPGA ▪ Soft NIOS II Core ▪ USB Controller - ISP1761 Signal Analyzer USB Analyzer Control Layer Main Program – User Interface Files Layer FAT File System USB mass storage device Driver 512 Bytes Blocks Layer USB Protocol SD-Card Driver USB HOST Controller ISP 1761 HAL Physical Layer NIOS II PIO USB 2.0- Standard for peripheral devices The USB mass storage device class ISP1761 - single-chip Hi-Speed Universal Serial Bus (USB) On-The-Go (OTG) Controller SD-Card - Non-Volatile memory card format Very popular and common (Cameras, Embedded Systems) Fat - File System Definition: A specification to establish communication between devices and a host controller. Main Uses Device Classes Mass Storage Device Human Interface Device (HID) Physical Layer Host/Device Topology USB Protocol - UFI Layer USB Floppy Interface USB method for file transfers Based on SCSI Commands Data packet encapsulation Uses USB low level driver USB UFI level Implementation main commands: Write Command: Read Command: USB Bulk level : Command/Data/Status Flow: Command Status/Block Wrapper Packet structure: USB Write Function Structure Request from the file system to write 512B logical block USBDISK_WriteBlock512 This function writes 512Bytes block using the USB. Changing datagram with the device Request from the file system to write a physical block (equal or less than 512B) USBDISK_ BOT_Write10 Sending the command to the device, same to read & write execute_USBDISK_ BOT Port_BulkI N Port_BulkOut Port_AltIn Port_AltOut USB 2.0- Standard for peripheral devices The USB mass storage device class ISP1761 - single-chip Hi-Speed Universal Serial Bus (USB) On-The-Go (OTG) Controller SD-Card - Non-Volatile memory card format Very popular and common (Cameras, Embedded Systems) Fat - File System SD-Card Protocol SD Mode (1 or 4bits) vs. SPI Mode Bus Protocol basic operation: ▪ Command Packet Format ▪ Data Packet Format SD-Card Implementation: Initialization flow: SD-Card Implementation: Write Flow: Read Flow: SD-Card Write Function Structure: Request from the file system to write 512B logical block SD_write_block LOW_SD_DAT0 SD_DAT0_HIGH Sending the command send_cmd SD_CLK_HIGH LOW_SD_CLK SD_CMD_HIGH executing the command LOW_SD_CMD USB 2.0- Standard for peripheral devices The USB mass storage device class ISP1761 - single-chip Hi-Speed Universal Serial Bus (USB) On-The-Go (OTG) Controller SD-Card - Non-Volatile memory card format Very popular and common (Cameras, Embedded Systems) Fat - File System A method of storing and organizing computer files and their data FAT Fundamentals: Sectors and Clusters Volume Structure: MBR: Implementation – Open Source File System Support for: ▪ SD-Card ▪ USB – Mass Storage Device Application Interface: ▪ f_mount - Register/Unregister a work area ▪ f_open - Open/Create a file ▪ f_write - Write file ▪ f_read - Read file ▪ f_opendir - Open a directory ▪ f_getfree - Get free clusters Files organization on storage device Cluster Chains example USB 2.0- Standard for peripheral devices The USB mass storage device class ISP1761 - single-chip Hi-Speed Universal Serial Bus (USB) On-The-Go (OTG) Controller SD-Card - Non-Volatile memory card format Very popular and common (Cameras, Embedded Systems) Fat - File System SD Card: Signals Timing issues – Driver development. USB: Software bugs in the Terasic DE-3 examples code. FAT: Had to search for reliable open source code. Complex integration of the FAT and the interfaces. ASIC vs. FPGA Board Design Increase SD Card throughput Support for different memory cards USB 3.0 NTFS File system support Low power design considerations User interface Product package Questions?