OpenXLR8: How to Load Custom FPGA Blocks

Similar documents
CHAPTER 3 EXPERIMENTAL SETUP

Individual Project Report

FPGA Laboratory Assignment 4. Due Date: 06/11/2012

RAPID SOC PROOF-OF-CONCEPT FOR ZERO COST JEFF MILLER, PRODUCT MARKETING AND STRATEGY, MENTOR GRAPHICS PHIL BURR, SENIOR PRODUCT MANAGER, ARM

FPGA Development for Radar, Radio-Astronomy and Communications

Design and Implementation of an AHB VGA Peripheral

Laboratory Exercise 4

Laboratory Exercise 7

CSCB58 - Lab 4. Prelab /3 Part I (in-lab) /1 Part II (in-lab) /1 Part III (in-lab) /2 TOTAL /8

EEM Digital Systems II

Alice EduPad Board. User s Guide Version /11/2017

EECS 578 SVA mini-project Assigned: 10/08/15 Due: 10/27/15

Laboratory 4. Figure 1: Serdes Transceiver

Achieving Timing Closure in ALTERA FPGAs

LFSRs as Functional Blocks in Wireless Applications Author: Stephen Lim and Andy Miller

VHDL Design and Implementation of FPGA Based Logic Analyzer: Work in Progress

Design and analysis of microcontroller system using AMBA- Lite bus

Using SignalTap II in the Quartus II Software

Design and Implementation of Timer, GPIO, and 7-segment Peripherals

ET398 LAB 4. Concurrent Statements, Selection and Process

Implementing Audio IP in SDI II on Arria V Development Board

Registers and Counters

VHDL Upgrading of a TNT2 card

Introduction. ECE 153B Sensor & Peripheral Interface Design Winter 2016

Lecture (04) Arduino Microcontroller Programming and interfacing. By: Dr. Ahmed ElShafee

DE2-115/FGPA README. 1. Running the DE2-115 for basic operation. 2. The code/project files. Project Files

Microcontrollers. Outline. Class 4: Timer/Counters. March 28, Timer/Counter Introduction. Timers as a Timebase.

AN 823: Intel FPGA JESD204B IP Core and ADI AD9625 Hardware Checkout Report for Intel Stratix 10 Devices

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Introductory Digital Systems Laboratory

SASTRA UNIVERSITY UNIVERSITAT POLITÈCNICA DE CATALUNYA. B. Tech. in Electronics & Communication Engineering Bachelor Thesis

California State University, Bakersfield Computer & Electrical Engineering & Computer Science ECE 3220: Digital Design with VHDL Laboratory 7

T1 Deframer. LogiCORE Facts. Features. Applications. General Description. Core Specifics

SignalTap: An In-System Logic Analyzer

Microprocessor Design

Modeling Digital Systems with Verilog

AN 848: Implementing Intel Cyclone 10 GX Triple-Rate SDI II with Nextera FMC Daughter Card Reference Design

[Krishna*, 4.(12): December, 2015] ISSN: (I2OR), Publication Impact Factor: 3.785

Using on-chip Test Pattern Compression for Full Scan SoC Designs

Design and implementation (in VHDL) of a VGA Display and Light Sensor to run on the Nexys4DDR board Report and Signoff due Week 6 (October 4)

Connecting To and Programming the LPC2148 Blue Board. Method 1 ISP (In-System Programming) w/ Flash Magic

Raspberry Pi debugging with JTAG

Single Channel LVDS Tx

THDB_ADA. High-Speed A/D and D/A Development Kit

Authentic Time Hardware Co-simulation of Edge Discovery for Video Processing System

COE758 Xilinx ISE 9.2 Tutorial 2. Integrating ChipScope Pro into a project

Lab 13: FPGA Circuit Realization Ian Callahan

Smart Night Light. Figure 1: The state diagram for the FSM of the ALS.

Lab #10 Hexadecimal-to-Seven-Segment Decoder, 4-bit Adder-Subtractor and Shift Register. Fall 2017

Design of VGA Controller using VHDL for LCD Display using FPGA

Design and Implementation of SOC VGA Controller Using Spartan-3E FPGA

Intel FPGA SDI II IP Core User Guide

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Introductory Digital Systems Laboratory

Traffic Light Controller

Programmable Logic Design I

Digital Systems Laboratory 1 IE5 / WS 2001

UNIVERSITY OF TORONTO JOÃO MARCUS RAMOS BACALHAU GUSTAVO MAIA FERREIRA HEYANG WANG ECE532 FINAL DESIGN REPORT HOLE IN THE WALL

ASTRIX ASIC Microelectronics Presentation Days

NanoCom ADS-B. Datasheet An ADS-B receiver for space applications

Memec Spartan-II LC User s Guide

Alice EduPad for Tiva or MSP432 TI ARM Launchpad. User s Guide Version /23/2017

Introduction. The Clock Hardware. A Unique LED Clock Article by Craig A. Lindley

TTC Interface Module for ATLAS Read-Out Electronics: Final production version based on Xilinx FPGA devices

W0EB/W2CTX DSP Audio Filter Operating Manual V1.12

Inside Digital Design Accompany Lab Manual

SERDES Eye/Backplane Demo for the LatticeECP3 Serial Protocol Board User s Guide

Embedded System Training Module ABLab Solutions

Lab 2: Hardware/Software Co-design with the Wimp51

Introduction to JTAG / boundary scan-based testing for 3D integrated systems. (C) GOEPEL Electronics -

The Haply Development Kit

Report. Digital Systems Project. Final Project - Synthesizer

HDL & High Level Synthesize (EEET 2035) Laboratory II Sequential Circuits with VHDL: DFF, Counter, TFF and Timer

FPGA-BASED EDUCATIONAL LAB PLATFORM

AN 696: Using the JESD204B MegaCore Function in Arria V Devices

Rfid Based Attendance System

Electrical and Telecommunications Engineering Technology_TCET3122/TC520. NEW YORK CITY COLLEGE OF TECHNOLOGY The City University of New York

INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY

IOT BASED ENERGY METER RATING

FPGA Design. Part I - Hardware Components. Thomas Lenzi

LAB 3 Verilog for Combinational Circuits

SignalTap Analysis in the Quartus II Software Version 2.0

Design of Vision Embedded Platform with AVR

2.6 Reset Design Strategy

Digital Blocks Semiconductor IP

Laboratory 1 - Introduction to Digital Electronics and Lab Equipment (Logic Analyzers, Digital Oscilloscope, and FPGA-based Labkit)

ScanExpress JET. Combining JTAG Test with JTAG Emulation to Reduce Prototype Development Time. Ryan Jones Corelis, Inc. An EWA Technologies Company

JTAGcable II In Circuit Emulator for Atmel AVR microcontrollers. User s Guide REV 1.0. Many ideas one solution

Arria-V FPGA interface to DAC/ADC Demo

DLP Pico Kit Functional Guide

EE 209 Lab 7 A Walk-Off

TSIU03: Lab 3 - VGA. Petter Källström, Mario Garrido. September 10, 2018

Tools to Debug Dead Boards

DLP Pico Chipset Interface Manual

Field Programmable Gate Array (FPGA) Based Trigger System for the Klystron Department. Darius Gray

TEST PATTERN GENERATION USING PSEUDORANDOM BIST

Error connecting to the target: TMS320F28379D. 1 Error message on connecting the target.

ECE 270 Lab Verification / Evaluation Form. Experiment 9

Lancelot. VGA video controller for the Altera Nios II processor. V4.0. December 16th, 2005

APPLICATION NOTE 4312 Getting Started with DeepCover Secure Microcontroller (MAXQ1850) EV KIT and the CrossWorks Compiler for the MAXQ30

Laboratory Exercise 7

An Integrated EMG Data Acquisition System by Using Android app

Transcription:

OpenXLR8: How to Load Custom FPGA Blocks Webinar Breakdown: Introduc*on to pseudorandom number generator (LFSR) code Review of Verilog wrapper interface to microcontroller Simula*on with Mentor Graphics ModelSim Synthesis using Intel Quartus Prime Lite Upload to FPGA via the Arduino IDE Overview sokware library Run simple sketch to demonstrate new FPGA hardware Webinar Replay from January 12, 2017

Presenters Jason Pecor Harlie Juedes Bryan Craker

Laptop with Windows or Linux (Tools not supported on Mac) Installed Tools: Arduino IDE Intel Quartus Prime Lite Edi*on Pre-Requisites You Will Need: Includes Modelsim-Intel FPGA Edi9on and Max 10 FPGA support A USB Mini cable for connecrng XLR8 board to laptop Follow the instructions here: http://www.aloriumtech.com/openxlr8/

LFSR and Board Library URLs LFSR Code Package: h"ps://github.com/aloriumtechnology/xlr8lfsr Rename to XLR8Build Move to Arduino Libraries file Arduino Board Library URL: h"ps://raw.githubusercontent.com/aloriumtechnology/arduino_boards/master/package_aloriumtech_index.json

Arduino IDE Setup Go to Sketch -> Include Library -> Manage Libraries Search for XLR8 and install XLR8Core and XLR8BuildTemplate Go to Tools -> Board -> Boards Manager Search for XLR8 and install Alorium XLR8 Boards

What is XLR8? Applica*on Accelerator & Development Board Designed for Arduino Developer Community Based on Intel MAX 10 FPGA Programmable with Arduino IDE Field-programmable Gate Array

Why use FPGA? Acceleration FASTER HIGHER-PERFORMANCE Offload

Board Level Block Diagram I2C Digital I/O 3.3V/5V Level ShiK USB FTDI OSC 3.3V Reg Op*onal EEPROM U169 Package ISP 5V Reg JTAG Barrel Connector 3.3V/5V Level ShiK Power/Reset Analog Preamps Analog I/O

FPGA Block Diagram AVR Processor Core Program Memory and Flash ADC Timer PWM I2C SPI UART Processor Bus Data Memory Reconfig PLL Config Flash Image 1 Image 0 Pin Muxing Xcelerator Blocks ( Programmable FPGA Fabric )

Xcelerator Blocks An Xcelerator Block (XB) is an op*mized hardware implementa*on of a specific func*on. Custom hardware implemented on the same chip Tightly integrated with the microcontroller XBs can access the same register space Integrate with the instruc*ons of the microcontroller Available XBs Floa*ng Point Math Servo Control NeoPixel Control Enhanced Analog-to-Digital Func*onality XB Roadmap Event Counters and Timers Quadrature Encoders/Decoders Pulse Width Modula*on (PWM) Propor*onal-Integral-Deriva*ve (PID) control Mul*ple UARTS

OpenXLR8 Methodology that allows XLR8 users to develop their own Xcelerator Blocks and upload them to the FPGA. HDL

Module-Level Design and SimulaRon Pseudorandom Number Generator Using a Linear Feedback Shift Register (LFSR) 8-bit 4-tap LFSR Module Design Testbench alorium_lfsr_tb.v alorium_lfsr.v LFSR Simulation Testbench

IntegraRon into XLR8 xlr8_top.v XLR8 Top-Level Verilog XLR8 Core Components xlr8_lfsr.v alorium_lfsr.v xlr8_avr_core XLR8 Wrapper xlr8_gpio xlr8_p_mem xlr8_d_mem

Synthesis xlr8_top.v xlr8_lfsr.v alorium_lfsr.v RPD FPGA Programming File xlr8_avr_core xlr8_gpio xlr8_p_mem xlr8_d_mem xlr8_top.v Optional Not Today

XLR8 RPD Upload to FPGA

Run Sketch

Let s Dive In!

HDL Building an LFSR on an FPGA

Linear Feedback Shift Register (LFSR) XNOR D Q D Q D Q D Q D Q D Q D Q D Q 0 1 2 3 4 5 6 7 assign feedback = ~(lfsr_data[7] ^ lfsr_data[5] ^ lfsr_data[4] ^ lfsr_data[3]);

Software Function vs Generated Assembly Code

RTL for the LFSR RTL = Register-Transfer Level HDL code Verilog/SystemVerilog VHDL The LFSR module, alorium_lfsr.v

The testbench, alorium_lfsr_tb.v Testbench

Simulating the Testbench Start Modelsim File -> New -> Library Create the default work library inside of our project RTL directory Compile -> Compile Select alorium_lfsr.v and alorium_lfsr_tb.v Compile and then Done Open the testbench in the work area

Simulating the Testbench Continued Select our testbench signals and bring them into a waves window Hit the Run all button

XLR8 Module xlr8_lfsr.v Connects the signals from the XLR8 core to the LFSR module Instantiates the alorium_lfsr module Controls register access

Register Definitions LFSR Control Address 0xE0 Bit 7 6 5 4 3 2 1 0 Function Unused Freerunning Mode R/W R R R R R R R R/W Initial 0 0 0 0 0 0 0 0 LFSR Seed Address 0xE1 Bit 7 6 5 4 3 2 1 0 Function LFSR Seed Data R/W R/W R/W R/W R/W R/W R/W R/W R/W Initial 0 0 0 0 0 0 0 0 LFSR Data Address 0xE2 Bit 7 6 5 4 3 2 1 0 Function LFSR Result Data R/W R R R R R R R R Initial 0 0 0 0 0 0 0 0

XB Addresses xb_adr_pack.vh Declare the address locations of your registers Refer to the XLR8 User Manual to find open register space

Integration into XLR8 xlr8_top.v XLR8 Top-Level Verilog XLR8 Core Components xlr8_lfsr.v alorium_lfsr.v xlr8_avr_core XLR8 Wrapper xlr8_gpio xlr8_p_mem xlr8_d_mem

XLR8 Top xlr8_top.v Instantiate the xlr8_lfsr module Add the control signals to stgi_xf_io_slv_dbusout and stgi_xf_io_slv_out_en

Modify the Project QSF File xlr8_top.qsf under the quartus directory Add in our module files and the register address file

Arduino IDE Setup Go to Sketch -> Include Library -> Manage Libraries Search for XLR8 and install XLR8Core and XLR8BuildTemplate Go to Tools -> Board -> Boards Manager Search for XLR8 and install Alorium XLR8 Boards

Synthesis xlr8_top.v xlr8_lfsr.v alorium_lfsr.v RPD FPGA Programming File xlr8_avr_core xlr8_gpio xlr8_p_mem xlr8_d_mem xlr8_top.v Optional Not Today

Compile the Project in Quartus Open Quartus and open our project QPF file with File -> Open Project Begin the compile with Processing -> Start Compilation After compilation is completed, File -> Convert Programming Files Open Conversion Setup Data, open openxlr8.cof, and Generate

XLR8 RPD Upload to FPGA

Burn the FPGA Image Open the Arduino IDE Under Tools -> Board select OpenXLR8 Connect your board via USB and make sure it is selected in Arduino under Tools -> Port Tools -> Burn Bootloader

Arduino Library for the LFSR XLR8_LFSR.h Defines the same register addresses as in the RTL Sets and reads the LFSR registers

Arduino LFSR Example Include the XLR8_LFSR.h Set the seed, enter a loop to print the result of the LFSR to serial output Compile and run on the board

Assembly Code: Software vs FPGA

Q&A