High Performance Interface between the OMAP3 and an FPGA Philip - - PowerPoint PPT Presentation

high performance interface between the omap3 and an fpga
SMART_READER_LITE
LIVE PREVIEW

High Performance Interface between the OMAP3 and an FPGA Philip - - PowerPoint PPT Presentation

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary High Performance Interface between the OMAP3 and an FPGA Philip Balister philip@opensdr.com Open SDR June 23, 2011 Outline Introduction USRP E1XX Device Driver


slide-1
SLIDE 1

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

High Performance Interface between the OMAP3 and an FPGA

Philip Balister

philip@opensdr.com

Open SDR

June 23, 2011

slide-2
SLIDE 2

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

1

Introduction

2

USRP E1XX

3

Device Driver

4

GNU Radio on OMAP3

5

Summary

slide-3
SLIDE 3

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

What is Software Defined Radio (SDR)

A/D CPU

slide-4
SLIDE 4

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

OMAP3

High performance (and easily available) ARM. 600 MHz Cortex-A8 NEON and VFP extensions for floating point acceleration POWERVRTMgraphics hardware C64X+ DSP

slide-5
SLIDE 5

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

OMAP3 Block Diagram

slide-6
SLIDE 6

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

ARM Cortex A8

ARM version 7 instruction set (armv7a) Thumb 2 instructions allow smaller code size NEON SIMD coprocessor (single precision vector floating point) Supported by GNU Compiler Collection (GCC) C, C++, Java, FORTRAN, ADA etc Current GCC does not optimize NEON well Commercial compilers are available with better NEON Support

slide-7
SLIDE 7

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

Texas Instruments C64X+ DSP

32 bit fixed point processor VLIW based instruction set 8 instructions per cycle, 8 execution units Memory Management Unit (MMU) available TI Code Composer for software development Command line Linux compiler available DSPLINK provides communications between DSP and ARM

slide-8
SLIDE 8

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

Key Features of the USRP E1XX

High performance interface to FPGA based on GPMC controller Uses Gumstix Overo COM (Computer On Module) for processor All functions in one box, capable of standalone operation Develop flow graphs and block directly on the box Supported peripherals: monitors via HDMI/DVI, keyboard and mouse via USB Available with the largest Spartan 3A-DSP available. Same code runs on Linux, Mac, Windows, and USRP-Embedded. Supports all USRP daughterboards Open Source FPGA and drivers

slide-9
SLIDE 9

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

USRP E100

slide-10
SLIDE 10

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

USRP Embedded Block Diagram

Digital Interface FPGA Configure

Gumstix Overo 720 MHz ARM Cortex A8 520 MHz TI C64x+ DSP PowerVR SGX GPU 512 MB RAM 4 GB microSD card F R O N T P A N E L

USB Serial Console USB Master USB OTG HDMI Video Audio In / Out

10/100 baseT Ethernet

Ethernet

Spartan 3A-DSP

  • 1800 (E100)
  • 3400 (E110)

GPMC BUS

LEDs GPIO JTAG Logic Analyzer Debug Port UART IPPS

Flexible Clock Gen

10 MHz

CODEC

Analog Interface

D A U G H T E R B O A R D

USRP E1x0 Block Diagram

Optional GPSDO

slide-11
SLIDE 11

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

System Diagram

CODEC FPGA GPMC GPIO DMA ARM DSP RAM L3/L4

slide-12
SLIDE 12

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

Device Driver Overview

Must support high data rates (MSPS) Zero copy design based on a large ring buffer DMA used to transfer data to/from the ring buffer User space memory maps the ring buffer Ring buffer allocated via get free pages

slide-13
SLIDE 13

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

Ring Buffer Structure

s t r u c t r i n g b u f f e r i n f o { i n t f l a g s ; i n t l e n ; }; s t r u c t { s t r u c t r i n g b u f f e r i n f o t x r b i [N ] ; t x b u f [ 2 0 4 8 ] [N ] ; s t r u c t r i n g b u f f e r i n f o r x r b i [N ] ; r x b u f [ 2 0 4 8 ] [N ] ; };

slide-14
SLIDE 14

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

Filling the ring buffer from the FPPA

GPIO signals the FPGA has data ready to transfer Read the number of bytes to transfer from the FPGA control space Configure the transfer destination address and length Start the DMA transfer Use dma sync single for device to invalidate the cache When DMA transfer ends, wake up the data received work queue Attempt to start a new transfer

slide-15
SLIDE 15

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

Writing the ring buffer to the FPPA

User writes data into the ring buffer User calls write to trigger data transfer from ring buffer to fpga Write the number of bytes to be transferred to the FPGA control space Configure the source address and length Execute data store barrier Start data transfer Wake up space available work queue Attempt to start a new transfer

slide-16
SLIDE 16

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

Poll implementation

Poll operation is critical for syncronizing user application with FPGA. Two wait queues monitored for wake up events (transmit and receive) For read, kernel has pointer to next empty entry in ring buffer ... For read, poll checks buffer before for valid data For write, kernel has pointer to next buffer to to send ... For write, poll checks the block before the pointer for space available

slide-17
SLIDE 17

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

User space interface

Flags indicate if data is available or space available in ring buffer If data available process data from ring buffer When processing complete or buffer filled, update flags If no data available or no space available, call poll to wait We can mark a buffer flag as returned from poll, but not processed

slide-18
SLIDE 18

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

GNU Radio on the OMAP3

GNU Radio was originally developed for high end X86 systems. GNU Radio does run on the OMAP3 GNU Radio floating point performance poor Solution: Rewrite performance critical sections using NEON USRP1 works with OMAP3 system, USRP2 does not (no Gig-E solutions)

slide-19
SLIDE 19

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

References

https://github.com/balister/linux-omap-philip http://gnuradio.org http://www.ettus.com

slide-20
SLIDE 20

Outline Introduction USRP E1XX Device Driver GNU Radio on OMAP3 Summary

Questions

Questions?