Agenda. Introduction FPGA DSP platforms Design challenges New programming models for FPGAs

Similar documents
Intro to System Generator. Objectives. After completing this module, you will be able to:

Basic Xilinx Design Capture. Objectives. After completing this module, you will be able to:

Method We follow- How to Get Entry Pass in SEMICODUCTOR Industries for 3rd year engineering. Winter/Summer Training

Accelerating FPGA/ASIC Design and Verification

Chapter 5. Hardware Software co-simulation

Introduction to DSP/FPGA Programming Using MATLAB Simulink

Avnet Speedway Design Workshop

Model-Based Design for effective HW/SW Co-Design Alexander Schreiber Senior Application Engineer MathWorks, Germany

Cover TBD. intel Quartus prime Design software

Creating Parameterized and Energy-Efficient System Generator Designs

System-on Solution from Altera and Xilinx

Cover TBD. intel Quartus prime Design software

FPGA Implementation and Validation of the Asynchronous Array of simple Processors

FPGA for Software Engineers

Parallel FIR Filters. Chapter 5

Modeling a 4G LTE System in MATLAB

Virtex-II Architecture. Virtex II technical, Design Solutions. Active Interconnect Technology (continued)

Tutorial - Using Xilinx System Generator 14.6 for Co-Simulation on Digilent NEXYS3 (Spartan-6) Board

Vivado Design Suite User Guide

A SIMULINK-TO-FPGA MULTI-RATE HIERARCHICAL FIR FILTER DESIGN

Spartan -6 LX150T Development Kit Hardware Co-Simulation Reference Design User Guide

Introduction to C and HDL Code Generation from MATLAB

RUN-TIME RECONFIGURABLE IMPLEMENTATION OF DSP ALGORITHMS USING DISTRIBUTED ARITHMETIC. Zoltan Baruch

INTRODUCTION TO FPGA ARCHITECTURE

Spartan -6 LX150T Development Kit Hardware Co-Simulation Reference Design Tutorial

VHX - Xilinx - FPGA Programming in VHDL

Hardware Implementation and Verification by Model-Based Design Workflow - Communication Models to FPGA-based Radio

Signal Processing Algorithms into Fixed Point FPGA Hardware Dennis Silage ECE Temple University

INTRODUCTION TO CATAPULT C

Simulink Design Environment

Design and Verify Embedded Signal Processing Systems Using MATLAB and Simulink

SDR Spring KOMSYS-F6: Programmable Digital Devices (FPGAs)

Developing a Data Driven System for Computational Neuroscience

NEW FPGA DESIGN AND VERIFICATION TECHNIQUES MICHAL HUSEJKO IT-PES-ES

Reconfigurable Computing. Design and Implementation. Chapter 4.1

FPGA design with National Instuments

FPGA Architecture Overview. Generic FPGA Architecture (1) FPGA Architecture

Implementing MATLAB Algorithms in FPGAs and ASICs By Alexander Schreiber Senior Application Engineer MathWorks

Design and Verify Embedded Signal Processing Systems Using MATLAB and Simulink

AC : INCORPORATING SYSTEM-LEVEL DESIGN TOOLS INTO UPPER-LEVEL DIGITAL DESIGN AND CAPSTONE COURSES

SECURE PARTIAL RECONFIGURATION OF FPGAs. Amir S. Zeineddini Kris Gaj

Extending the Power of FPGAs

Tools for Reconfigurable Supercomputing. Kris Gaj George Mason University

Xilinx System Generator v Xilinx Blockset Reference Guide. for Simulink. Introduction. Xilinx Blockset Overview.

H100 Series FPGA Application Accelerators

ECE 699: Lecture 12. Introduction to High-Level Synthesis

Introduction to Field Programmable Gate Arrays

Core Facts. Documentation Design File Formats. Verification Instantiation Templates Reference Designs & Application Notes Additional Items

DSP Builder Handbook Volume 1: Introduction to DSP Builder

Designing and Prototyping Digital Systems on SoC FPGA The MathWorks, Inc. 1

ISE Design Suite Software Manuals and Help

Modeling and implementation of dsp fpga solutions

Basic FPGA Architectures. Actel FPGAs. PLD Technologies: Antifuse. 3 Digital Systems Implementation Programmable Logic Devices

ESL design with the Agility Compiler for SystemC

DSP Builder Handbook Volume 1: Introduction to DSP Builder

Documentation Design File Formats

DSP Co-Processing in FPGAs: Embedding High-Performance, Low-Cost DSP Functions

An Overview of a Compiler for Mapping MATLAB Programs onto FPGAs

V8-uRISC 8-bit RISC Microprocessor AllianceCORE Facts Core Specifics VAutomation, Inc. Supported Devices/Resources Remaining I/O CLBs

Advanced FPGA Design. Jan Pospíšil, CERN BE-BI-BP ISOTDAQ 2018, Vienna

Avnet Speedway Design Workshop

CPE/EE 422/522. Introduction to Xilinx Virtex Field-Programmable Gate Arrays Devices. Dr. Rhonda Kay Gaede UAH. Outline

Synthesis Options FPGA and ASIC Technology Comparison - 1

Graduate Institute of Electronics Engineering, NTU FPGA Design with Xilinx ISE

FPGA architecture and design technology

: : (91-44) (Office) (91-44) (Residence)

Core Facts. Documentation Design File Formats. Verification Instantiation Templates Reference Designs & Application Notes Additional Items

Reprint. Transmission Systems Prototyping based on Stateflow/Simulink Models

TSEA44 - Design for FPGAs

10GBase-R PCS/PMA Controller Core

Reconfigurable Computing. Design and implementation. Chapter 4.1

LogiCORE IP Floating-Point Operator v6.2

An introduction to CoCentric

isplever Reed-Solomon Encoder User s Guide October 2005 ipug05_03.0

FPGA for Complex System Implementation. National Chiao Tung University Chun-Jen Tsai 04/14/2011

AL8253 Core Application Note

Introduction to Field Programmable Gate Arrays

Design and Verification of FPGA Applications

MODEL BASED HARDWARE DESIGN WITH SIMULINK HDL CODER

Core Facts. Documentation Design File Formats. Verification Instantiation Templates Reference Designs & Application Notes Additional Items

Keck-Voon LING School of Electrical and Electronic Engineering Nanyang Technological University (NTU), Singapore

High Level Abstractions for Implementation of Software Radios

Prototyping Architectural Support for Program Rollback Using FPGAs

Synthesis of VHDL Code for FPGA Design Flow Using Xilinx PlanAhead Tool

Simplify System Complexity

PINE TRAINING ACADEMY

Field Programmable Gate Array (FPGA)

FPGAs: FAST TRACK TO DSP

VHDL for Synthesis. Course Description. Course Duration. Goals

EE 459/500 HDL Based Digital Design with Programmable Logic

Vivado HLx Design Entry. June 2016

Connecting MATLAB & Simulink with your SystemVerilog Workflow for Functional Verification

INTRODUCTION TO FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)

LogiCORE IP Serial RapidIO Gen2 v1.2

Programmable Logic. Any other approaches?

ISSN Vol.02, Issue.11, December-2014, Pages:

CMPE 415 Programmable Logic Devices Introduction

Lab 3 Sequential Logic for Synthesis. FPGA Design Flow.

Hardware Description of Multi-Directional Fast Sobel Edge Detection Processor by VHDL for Implementing on FPGA

Fast evaluation of nonlinear functions using FPGAs

Transcription:

New Directions in Programming FPGAs for DSP Dr. Jim Hwang Xilinx, Inc. Agenda Introduction FPGA DSP platforms Design challenges New programming models for FPGAs System Generator Getting your math into an FPGA Co-simulation interfaces Incorporating HDL modules Implementing control circuits The future SDR Forum Tutorial 2

The DSP Hardware Platforms Switch Switch Matrix Matrix CLB, CLB, IOB, IOB, DCM DCM Programmable Arithmetic Fabric Synchronous Dual-Port RAM BRAM Hundreds of 18b x 18b multipliers SDR Forum Tutorial 3 Parallelism beats clock speed What Makes a Platform Successful? Device technology is only part of the solution Examples of successful platforms: Intel x86 Sun Sparc TI TMS320Cxxx Virtex-II Pro/Spartan-3 Microsoft Windows Solaris DSP/BIOS, CCS HDL + ISE +? Challenge: Expand the FPGA software platform to support the DSP application developer SDR Forum Tutorial 4

Design Challenges Lowering the barrier to entry for FPGA-based DSP Simplify traditional FPGA design flows Target the application programmer Edit, compile, debug programming models Streamline clerical tasks, expand functionality where possible Delivering tools for architecture exploration and design Support quick design iterations Generate efficient hardware from system model Pulling hardware into the design loop Provide pushbutton flow for hardware acceleration SDR Forum Tutorial 5 A New Way of FPGA Programming A platform-based programming model for FPGAs System level abstractions in Simulink and MATLAB Mathematics, sampled data systems Automatic code generation of efficient hardware Single source for entire development cycle Refine high level abstractions only as needed Minimize verification requirements Allow the user to work in the language of the problem Block diagrams, MATLAB, HDLs, C, assembly, Leverage existing technologies System level software tools and programming languages Physical design tools & IP libraries FPGA hardware platforms SDR Forum Tutorial 6

System Generator for DSP Library-based, visual data flow Polymorphic operators Arbitrary precision fixed-point Bit and cycle true modeling Multi-rate signal processing Seamlessly integrated with Simulink and MATLAB Type and rate propagation Test bench and data analysis Automatic code generation Synthesizable VHDL IP cores HDL test bench Project and constraint files SDR Forum Tutorial 7 System Generator for DSP Library-based, visual data flow Polymorphic operators Arbitrary precision fixed-point Bit and cycle true modeling Multi-rate signal processing Seamlessly integrated with Simulink and MATLAB Type and rate propagation Test bench and data analysis Automatic code generation Synthesizable VHDL IP cores HDL test bench Project and constraint files SDR Forum Tutorial 8

System Generator Flow DSP Development Flow 1. Develop Algorithm & System Model Simulink MDL 2. Automatic Code Generation RTL VHDL & Cores 3. Xilinx Implementation Flow Bitstream Download to FPGA SDR Forum Tutorial 9 System Generator Flow DSP Development Flow 1. Develop Algorithm & System Model Simulink MDL HW Simulation Flow 2. Automatic Code Generation RTL VHDL & Cores 3. Xilinx Implementation Flow HDL Test Bench Test Vectors Bitstream Download to FPGA SDR Forum Tutorial 10

Implementing Math in an FPGA A multiply-accumulate engine Select precision to avoid overflow Minimize resources required y N 1 = hx n i n i i= 0 N 1 hx i= 0 2 N 1 m i= 0 i n i hi Accumulator Width m log h = + 2 i SDR Forum Tutorial 11 Implementing Math in an FPGA A multiply-accumulate engine Select precision to avoid overflow Minimize resources required Parametric implementation Accumulator Width m log h = + 2 i SDR Forum Tutorial 12

Single-MAC FIR Filter FPGA memory bandwidth keeps the arithmetic engine fully occupied Delay line Pipeline registers High performance and compact footprint 85 slices xc2v250-6 1 18x18 multipliers, 1 BRAM 213 MHz (12 bit data & coefficients) SDR Forum Tutorial 13 Filter Design Made Easy SDR Forum Tutorial 14

MATLAB Customization CORDIC processor Versatile family of algorithms for computing functions Arctan, square root, division, logarithm, Shift-and-add architecture Well-suited to FPGA implementation Iteration Equations x i+1 = x i + y i δ ι 2 -i y i+1 = y i x i δ ι 2 -i z i+1 = z i + δ i tan -1 (2 -i ) y 0 δ i ε {-1, 1} SDR Forum Tutorial 15 MATLAB Customization (II) CORDIC accuracy depends on the number of PEs Trade area for precision Use MATLAB to parameterize the processor Propagate parameters down to blocks Data types, constants Conditionally and iteratively instance PEs 4 PEs, 12-bit data 193 LUTs, 213 MHz 8 PEs 325 LUTs, 211 MHz SDR Forum Tutorial 16

Programmatic Diagrams Register subsystem as dynamic Find CORDIC PE sub-blocks Delete the PEs Reconstruct the PE subsystem SDR Forum Tutorial 17 System Resource Estimation Estimate FPGA resources directly from Simulink Every block Any level in the system hierarchy Invoke mapper for more accuracy SDR Forum Tutorial 18

Co-Simulation Interfaces SDR Forum Tutorial 19 Simulink Extensions for HW HDL Configuration Wizard MATLAB compilation block HDL co-simulation Hardware in the loop co-simulation SDR Forum Tutorial 20

HW Co-Simulation Simulink hardware accelerator Verify design in hardware Simulate HDL & EDIF modules Simulink push-button flow Supported platforms Xilinx XtremeDSP kit (Nallatech) Wildcard/Wildcard-II (Annapolis Microsystems) XRC (Alpha Data) Signal Master (Lyr Signal Processing) Hardware in the loop co-simulation SDR Forum Tutorial 21 HW Co-Simulation Flow 1. Develop Algorithm & System Model Simulink Subsystem RTL VHDL & Cores Memory Map IF Clock Drivers System Generator automatically creates a Simulink hardware runtime block Bitstream HW run-time S-function SDR Forum Tutorial 22

HW Co-Simulation Flow 1. Develop Algorithm & System Model Simulink Subsystem RTL VHDL & Cores Memory Map IF Clock Drivers SysGen automatically downloads bitstream for Simulink simulation Bitstream HW Run-time S-function SDR Forum Tutorial 23 HW Co-Simulation (II) Insert a compilation block from the vendor library into the user model. SDR Forum Tutorial 24

HW Co-Simulation (III) Script automatically produces an FPGA configuration file. Press Generate inside SysGen GUI. SDR Forum Tutorial 25 HW Co-Simulation (IV) Script automatically creates a new library containing a parameterized run-time cosimulation block. User copies a co-simulation run-time block into the original model. SDR Forum Tutorial 26

Incorporating HDL Modules in System Generator SDR Forum Tutorial 27 Why HDL? System Generator does not replace HDL design Legacy HDL modules Control circuitry still sometimes easier in HDLs than SysGen Sometimes require access to low-level FPGA resources (e.g. MUXF6, XORCY, multi-phased clocking) Bit and cycle accurate modeling may be undesirable PCI interface, SDRAM interface, etc. It can still be desirable to deliver HDL interface modules during code generation In the early days of compilers, real TM programmers wrote assembly code System Generator designs can be extremely efficient SDR Forum Tutorial 28

HDL Co-Simulation Import legacy HDL and user IP blocks Simulink testbenches for HDL simulation Configuration Wizard to configure black box HDL Single HDL simulator for multiple black boxes SDR Forum Tutorial 29 Black Box Interface Block for representing non-sysgen functions Typically HDL-based M-code configuration function Simulation options Simulink block or subsystem S-function provided by user HDL co-simulation Implementation files HDL, EDIF, constraint files, HDL co-simulation is closely related to Black Box functionality SDR Forum Tutorial 30

HDL Co-Simulation (II) Drag a Black Box into the model SDR Forum Tutorial 31 HDL Co-Simulation (II) Drag a Black Box into the model Configuration Wizard detects VHDL files & customizes block SDR Forum Tutorial 32

HDL Co-Simulation (III) Drag a ModelSim block into the model Select ModelSim Simulation Mode SDR Forum Tutorial 33 HDL Co-Simulation (III) Drag a ModelSim block into the model Simulink opens ModelSim and co-simulates Select ModelSim Simulation Mode SDR Forum Tutorial 34

HW Co-simulation HDL simulator provides access to internal state of an HDL module If full visibility is not required, can use HW cosimulation interface to implement the Black Box Hardware accelerator for Simulink Use ChipScope internal logic analyzer for real-time debugging on free-running clock SDR Forum Tutorial 35 Implementing Control Circuits in System Generator SDR Forum Tutorial 36

Finite State Machines Common form of control circuitry Many options in System Generator Build out of the Xilinx Blockset primitives Import HDL into Simulink via co-simulation MATLAB code using the System Generator m-code block Embedded microcontrollers SDR Forum Tutorial 37 MATLAB M-Code Compilation System Generator m-code block supports MATLAB control flow constructs Nested branches (if, then, else, switch) Variable assignment Logical, comparison, some arithmetic operators Well-suited for FSM transition functions Code generator compiles into equivalent RTL VHDL function [n, v] = autofsm(s, a, b) stopped = 0; moving = 1; switch s case stopped if a & ~b n = 1, v = 20; else n = 0, v = 0; end case moving if a ~b n = 1, v = 20; else n = 0, v = 0; end otherwise n = 0, v = 0; end SDR Forum Tutorial 38

MATLAB M-Code Compilation System Generator m-code block supports control flow constructs in MATLAB Nested branches (if, then, else, switch) Variable assignment Logical & comparator operators Well-suited for FSM transition functions Code generator compiles into equivalent RTL VHDL architecture behavior of auto_fsm_xlmcode_x_0 is begin process_x_0 : process (s, a, b) is begin s_x_0 := std_logic_vector_to_unsigned (s); a_x_0 := a = "1"; b_x_0 := b = "1"; case_var := s_x_0; case case_var is when "0" => if a_x_0 and (not b_x_0) then v_x_2 := std_logic_vector_to_unsigned ("10100"); n_x_2 := std_logic_vector_to_unsigned ("1"); else v_x_2 := std_logic_vector_to_unsigned ("00000"); n_x_2 := std_logic_vector_to_unsigned ("0"); end if;... SDR Forum Tutorial 39 Embedded Microcontrollers Packet Insertion & Channel Coding Equalizer, carrier recovery, FEC, with microcontroller-based quadrant correction SDR Forum Tutorial 40

PicoBlaze Controller 8-bit programmable state machine Very compact (85 slices) 49 instructions Assembly language 2 clocks/instruction SDR Forum Tutorial 41 PicoBlaze Controller 8-bit programmable state machine Very compact (85 slices) 49 instructions Assembly language 2 clocks/instruction In the QAM demo design Monitors ASM match for frame alignment Quadrant rotation RS-Decoder flow control Emits RS byte index SDR Forum Tutorial 42

Other Approaches to FPGA-based DSP SDR Forum Tutorial 43 The Visible Spectrum Algorithm focus MATLAB-to-gates Accelchip MATLAB compiler C-to-gates Handel-C (Celoxica) Xilinx Forge compiler System level focus System-C Synopsys, Co-Ware, Cadence, Primarily modeling and verification, not implementation Real life, i.e. ad hoc flows Traditional HDL-based FPGA design still going strong SDR Forum Tutorial 44

Where Is Xilinx DSP Going? Additional dedicated hardware functions Beyond PPC 405, 18x18 multipliers, block memories, MGTs Increasingly sophisticated intellectual property (hard and soft) as well as reference designs for signal processing Embedded processors and software as well as hardware Supervisory functions and protocols Design methodologies will continue to support the platform Component-based modeling and deployment Work in the language of the problem SDR Forum Tutorial 45 Thank You SDR Forum Tutorial 46