Simplify 3-D Imaging Designs Using Cypress FX3

Simplify 3-D Imaging Designs Using Cypress FX3
By Anup Shivakumar, Product Marketing Engineer, Cypress Semiconductor
Introduction
3-D Imaging presents a new opportunity for designers of human-machine interfaces to change
the way consumers interact with content on computers, tele-presence systems, game
consoles, and other electronic products. 3-D Imaging enables the perception of depth in video,
tracking of body movement, and tracking of finger gestures – all beyond the capability of
traditional interface devices such as mice, joysticks, keyboards, track-pads, and touch screens.
3-D imaging already factors strongly in consumers’ buying decisions in video, gaming, and
motion-sensing applications.
3-D imaging uses two image sensors to track movement and to capture 3 dimensional images.
Common dual-sensor configurations for 3-D imaging can be found in the table below:
Application
Column Row
Pixels
Pixels
Resolution
Video
1,920
1,080
Gaming
1,280
Motion Sensing
640
Frame
Rate
Color Depth
Bandwidth
2.07 megapixels 30 fps
24 bits (RGB)
3.0 Gbps
720
0.92 megapixels 120 fps
8 bits (B&W)
1.8 Gbps
480
0.31 megapixels 60 fps
8 bits (B&W)
0.3 Gbps
Even at lower resolution and color depth, applications requiring more precise motion-sensing
require a higher frame rate, which can push bandwidth requirements up to 1.8 Gbps.
Design Problems Engineers Face Today
3-D imaging requires up to 3 Gbps of bandwidth: USB 2.0 provides only 480 Mbps of
bandwidth. As a result, most USB 2.0 based 3-D imaging solutions have limited capabilities
and performance.
3-D imaging requires multiple ICs: 3-D imaging requires two sensors to capture parallel image
streams that are then combined to form a 3-D image. In addition to the multiple sensors, they
often use multiple camera controllers (one for each image sensor) as well as a hub to transfer
the data to the host system. Multiple ICs increase the cost of the system, and also require
more PCB real estate.
www.cypress.com
1
Simplify 3-D Imaging Designs Using Cypress FX3
3-D imaging designs must be flexible: 3-D imaging systems often interface to various image
sensors with differing resolutions, frame rates, and bus widths. Additionally, they may transfer
data over USB and use different data types to transfer image data. The system may also need
to be modified to use standard USB Video Class (UVC) protocol or a custom USB protocol.
These requirements increase the complexity of the imaging system and may need additional
software and firmware development.
Cypress’ EZ-USB FX3
Cypress’ EZ-USB FX3 provides a compact, one-chip solution that solves the above issues by
providing a high bandwidth, flexible solution for 3-D imaging. The FX3 provides USB 3.0
connectivity, thereby removing the bandwidth constraint that is faced by current 3-D imaging
designs. The FX3 is a highly flexible system that can be used to interface and operate with
various different image sensors and USB protocols, providing a single-chip solution for any 3-D
imaging application.
The block diagram for the FX3 is shown below:
Figure 1: FX3 block diagram
www.cypress.com
2
Simplify 3-D Imaging Designs Using Cypress FX3
FX3-Based 3-D Imaging Design Development
The FX3’s highly configurable General Programmable Interface II (GPIF II) is a 32-bit parallel
bus running at 100 MHz, allowing the FX3 to communicate with systems that have a parallel
interface. This provides engineers with the flexibility to connect dual image sensors without the
need for additional ICs.
The GPIF II Designer is Cypress design software that contains a simple GUI to configure the
GPIF II. Refer to Appendix B for a link to download this software. The overall steps to connect
to two image sensors with GPIF II are shown below:
1. Initiate a new project using Cypress-supplied interfaces, or start a new project from
scratch.
Figure 2: Starting GPIF II with a descriptor
www.cypress.com
3
Simplify 3-D Imaging Designs Using Cypress FX3
2. Select the type, bus width, and I/Os of the desired interface.
Figure 3: Selecting GPIF II parameters
3. Create a state machine that matches interface timing by adding state blocks and
transitional conditions.
Figure 4: Creating GPIF II state machine
www.cypress.com
4
Simplify 3-D Imaging Designs Using Cypress FX3
4. Visualize state transitions and associated output signals.
Figure 5: State transitions
5. Generate the GPIF II descriptor, which will be used in the firmware development.
Figure 6: Generating GPIF II descriptor
Writing Firmware for 3-D Imaging Design
All 3-D imaging applications require firmware for the FX3. This firmware that is loaded onto
FX3 controls the way FX3 interacts with the image sensors and the USB 3.0 host. Any custom
3-D imaging application will require additional firmware development.
Cypress provides a powerful Software Development Kit (SDK) that allows engineers to quickly
get their firmware started. Refer to Appendix B for a link to download the SDK. It contains the
complete software and firmware stack for FX3. It also comes with tools, documents, drivers
and application examples, which can accelerate 3-D application development.
3-D imaging firmware can be developed using the FX3 SDK by following the steps below:
1. The FX3 SDK includes sample UVC code that can be used as a reference to
develop 3-D imaging firmware. The GPIF II descriptor (see section above) will be
used here.
www.cypress.com
5
Simplify 3-D Imaging Designs Using Cypress FX3
2. Different image sensors and custom 3-D applications will require firmware
modification. Once the firmware is complete, the firmware image can be
generated by building the project.
3. Complete design guidelines can be found in the application note “How to
Implement an Image Sensor Interface with FX3 in a UVC Framework”. Refer to
Appendix B for the link to download the application note.
4. FX3 comes with a large list of firmware APIs that can be used to develop custom
3-D applications. More information about this can be found in the “FX3
Programmers Manual” and the “Firmware API Guide”. These documents are
included in the FX3 SDK.
Figure 7: FX3 firmware development using SDK
Prototyping 3-D Imaging Designs Using FX3 DVK
The FX3 Development Kit (DVK) can be used to quickly create hardware prototypes. Refer to
Appendix B for a link to buy the FX3 DVK. The 3-D imaging firmware (see section above), can
be programmed on to the FX3 chip over USB, using Cypress Control Center (included in the
FX3 SDK). The FX3 DVK and an example 3-D imaging prototype are shown below:
www.cypress.com
6
Simplify 3-D Imaging Designs Using Cypress FX3
FX3
GPIF II Connector
Figure 8: FX3 DVK (CYUSB3KIT-001)
Figure 9: Example 3-D imaging prototype
www.cypress.com
7
Simplify 3-D Imaging Designs Using Cypress FX3
Conclusion
3-D imaging is emerging as the trend in imaging, gaming, interactive peripherals, and humanmachine interface design. As consumers seek new and innovative ways to interact with their
technology and content, the opportunity for 3-D imaging interfaces will only increase. The
Cypress FX3 provides a one-chip solution to help user interface developers and peripheral
manufacturers develop and prototype 3-D applications quickly and easily. The day is fast
approaching when methods of human-machine interaction that seemed only plausible in sci-fi
stories become reality with the help of 3-D imaging applications.
www.cypress.com
8
Simplify 3-D Imaging Designs Using Cypress FX3
Appendix A: Terms and Definitions
3-D Imaging
3-D Imaging uses two image sensors to capture three-dimensional images or to track
movements. It requires more bandwidth than conventional imaging – up to 3.0 Gbps.
Bandwidth
Bandwidth = The number of image sensors x resolution x frame rate x color depth
USB 3.0 (SuperSpeed USB)
Operates at 5 Gbps – 10x faster than USB 2.0 (Hi-Speed USB). It distributes 1.8x more power
to bus-powered devices than USB 2.0. It is backward compatible with USB 2.0.
USB 3.0 Host, USB 3.0 Device, USB 3.0 Hub
A USB 3.0 Host (e.g., a PC) directs traffic flow and distributes power over the bus. A USB 3.0
Device (e.g., a hard disk drive) is a peripheral on the bus. A USB 3.0 Hub directs data traffic
between a USB 3.0 Host and multiple USB Devices.
USB Camera Controller
USB camera controllers are microcontrollers that convert an image sensor data-stream into
USB traffic.
USB 3.0 Peripheral Controller
USB 3.0 peripheral controllers are microcontrollers in a USB Device that handle USB 3.0 traffic
and communicate with the USB Host.
USB 3.0 Driver
A USB 3.0 driver is a software program in the host system that operates or controls the USB
3.0 Device attached to it.
Firmware
Firmware is a set of instructions programmed on a USB 3.0 peripheral controller.
UVC (USB Video Class)
UVC is a widely adopted standard for consumer cameras that is supported by major PC
operating systems. It defines the behavior of a USB video camera, known as a “UVC camera”.
EZ-USB® FX3™
FX3 is Cypress’s programmable USB 3.0 Peripheral Controller with integrated USB 3.0
transceiver. It includes a powerful on-chip ARM9™ processor and 512KB RAM for firmware
storage and data buffering. It provides additional peripheral connectivity via I2C, I2S, SPI, and
UART. FX3 includes a Software Development Kit (SDK) with example code to reduce design
effort.
www.cypress.com
9
Simplify 3-D Imaging Designs Using Cypress FX3
GPIF™ II: Second-Generation General Programmable Interface
GPIF II is a programmable 100-MHz, 32-bit bus that allows FX3 to communicate with systems
that have a parallel interface.
GPIF II Designer
GPIF II Designer is design software that installs on your PC. It contains simple a graphical user
interface (GUI) to configure the GPIF II.
GPIF II Descriptor
GPIF II descriptors are sets of commonly predefined GPIF II configurations used to program
FX3 quickly.
FX3 Application Programming Interface (API)
APIs are firmware in the SDK library that implements common and specialized USB functions.
Cypress Control Center
Control Center is a simple GUI in the FX3 SDK used to configure the FX3 Development Kit
(DVK).
www.cypress.com
10
Simplify 3-D Imaging Designs Using Cypress FX3
Appendix B: References and Links
FX3 3-D Imaging Demo Video: www.cypress.com/fx3/3dimaging
Maximum Throughput Performance Demo Video: www.cypress.com/fx3
Machine Vision Camera Demo Video: www.cypress.com/?rID=66430
FX3 HD 720p Camera Kit Demo Video: www.cypress.com/?rID=72422
EZ-USB FX3 Development Kit (CYUSB3KIT-001): www.cypress.com/?rID=58321
EZ-USB FX3 HD 720p Camera Kit: www.cypress.com/?rID=72599
Software Development Kit: www.cypress.com/?rID=57990
The SDK includes Eclipse IDE, ARM GCC, Cypress USB 3.0 driver, example code, FX3
Programmers Manual, and API Guide.
GPIF II Designer: www.cypress.com/?rID=59628
EZ-USB FX3 Application Notes:
Getting Started with EZ-USB FX3: www.cypress.com/?rID=59979
This application note gives highlights of USB 3.0 technology and an overview of the FX3
architecture, software, and collateral. It shows FX3 SDK setup, Cypress USB driver
installation, firmware download, and USB 3.0 traffic verification.
EZ-USB FX3 Hardware Design Guidelines and Schematic Checklist:
www.cypress.com/?rID=53203
This application note shows how to design a board with 5-Gbps USB 3.0 traces.
How to Implement an Image Sensor Interface with FX3 in a UVC Framework:
www.cypress.com/?rID=62824
This application note describes a UVC video streaming application in which FX3 streams
images from an image sensor to a USB Host.
www.cypress.com
11
Simplify 3-D Imaging Designs Using Cypress FX3
Worldwide Sales and Design Support
Cypress maintains a worldwide network of offices, solution centers, manufacturer’s representatives, and distributors. To find
the office closest to you, visit us at Cypress Locations.
PSoC® Solutions
Products
Automotive
cypress.com/go/automotive
psoc.cypress.com/solutions
Clocks & Buffers
cypress.com/go/clocks
PSoC 1 | PSoC 3 | PSoC 5
Interface
cypress.com/go/interface
Lighting & Power Control
cypress.com/go/powerpsoc
cypress.com/go/plc
Memory
cypress.com/go/memory
Optical Navigation Sensors
cypress.com/go/ons
PSoC
cypress.com/go/psoc
Touch Sensing
cypress.com/go/touch
USB Controllers
cypress.com/go/usb
Wireless/RF
cypress.com/go/wireless
Cypress Developer Community
Community | Forums | Blogs | Video | Training
Technical Support
cypress.com/go/support
EZ-USB® and FX3™ are registered trademarks of Cypress Semiconductor Corp. All other trademarks or registered trademarks referenced herein are
the property of their respective owners.
Cypress Semiconductor
198 Champion Court
San Jose, CA 95134-1709
Phone
Fax
Website
: 408-943-2600
: 408-943-4730
: www.cypress.com
© Cypress Semiconductor Corporation, 2012-2013. The information contained herein is subject to change without notice. Cypress Semiconductor
Corporation assumes no responsibility for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any
license under patent or other rights. Cypress products are not warranted nor intended to be used for medical, life support, life saving, critical control or
safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for use as
critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The
inclusion of Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies
Cypress against all charges.
This Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide
patent protection (United States and foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a
personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works of, and compile the Cypress Source Code and derivative
works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with a Cypress
integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source
Code except as specified above is prohibited without the express written permission of Cypress.
Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the
right to make changes without further notice to the materials described herein. Cypress does not assume any liability arising out of the application or
use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems where a
malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-support systems
application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
Use may be limited by and subject to the applicable Cypress software license agreement.
www.cypress.com
12