System on Chip Configuring FPGAs. Firmware and the boot process Booting is a complex process for any system It requires some form of firmware to be available.

Slides:



Advertisements
Similar presentations
Accessing I/O Devices Processor Memory BUS I/O Device 1 I/O Device 2.
Advertisements

FPGA (Field Programmable Gate Array)
FPGA Configuration. Introduction What is configuration? – Process for loading data into the FPGA Configuration Data Source Configuration Data Source FPGA.
StreamBlade SOE TM Initial StreamBlade TM Stream Offload Engine (SOE) Single Board Computer SOE-4-PCI Rev 1.2.
+ CS 325: CS Hardware and Software Organization and Architecture Internal Memory.
I/O Interfaces.
9/20/6Lecture 3 - Instruction Set - Al1 The Hardware Interface.
The ARM7TDMI Hardware Architecture
Steven Koelmeyer BDS(hons)1 Reconfigurable Hardware for use in Ad Hoc Sensor Networks Supervisors Charles Greif Nandita Bhattacharjee.
Embedded Systems Programming Networking on the puppeteer.
Chapter 9 Bootloader. Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2002 Chapter 9, Slide 2 Learning Objectives  Need for a bootloader.
Real-Time Systems Design JTAG – testing and programming.
Configurable System-on-Chip: Xilinx EDK
Programmable logic and FPGA
Configuration. Mirjana Stojanovic Process of loading bitstream of a design into the configuration memory. Bitstream is the transmission.
5.1 Chaper 4 Central Processing Unit Foundations of Computer Science  Cengage Learning.
Embedded Systems Programming Introduction to the course.
Chapter 8 Input/Output. Busses l Group of electrical conductors suitable for carrying computer signals from one location to another l Each conductor in.
Higher Computing Computer Systems S. McCrossan 1 Higher Grade Computing Studies 2. Computer Structure Computer Structure The traditional diagram of a computer...
COE4OI5 Engineering Design Chapter 2: UP2/UP3 board.
Chapter 4 The System Unit: Processing and Memory Prepared by : Mrs. Sara salih.
Introduction to Computing: Lecture 4
Understanding Computers, Ch.31 Chapter 3 The System Unit: Processing and Memory.
Lecture #3 Page 1 ECE 4110– Sequential Logic Design Lecture #3 Agenda 1.FPGA's 2.Lab Setup Announcements 1.No Class Monday, Labor Day Holiday 2.HW#2 assigned.
Remote Firmware Down Load. Xilinx V4LX25 Altera Stratix Control Altera Stratix Control Xilinx V4FX20 EPROM XCF08 EPROM XCF08 EPROM EPC16 EPROM EPC16 EPROM.
AT94 Training 2001Slide 1 AT94K Configuration Modes Atmel Corporation 2325 Orchard Parkway San Jose, CA Hotline (408) OR.
1-1 Embedded Network Interface (ENI) API Concepts Shared RAM vs. FIFO modes ENI API’s.
집적회로 Spring 2007 Prof. Sang Sik AHN Signal Processing LAB.
J. Christiansen, CERN - EP/MIC
Field Programmable Gate Arrays (FPGAs) An Enabling Technology.
Memory Management COSC 513 Presentation Jun Tian 08/17/2000.
Lecture #3 Page 1 ECE 4110–5110 Digital System Design Lecture #3 Agenda 1.FPGA's 2.Lab Setup Announcements 1.HW#2 assigned Due.
Accessing I/O Devices Processor Memory BUS I/O Device 1 I/O Device 2.
EE3A1 Computer Hardware and Digital Design
System on Chip Introduction to Craig’s part Craig Duffy
© 1999 Altera Corporation Configuration/Program Method for Altera Device.
Embedded Network Interface (ENI). What is ENI? Embedded Network Interface Originally called DPO (Digital Product Option) card Printer without network.
Computer Architecture Lecture 6 by Engineer A. Lecturer Aymen Hasan AlAwady 1/12/2013 University of Kufa - Informatics Center for Research and Rehabilitation.
CSCI1600: Embedded and Real Time Software Lecture 9: Input Output Concepts Steven Reiss, Fall 2015.
1 Lecture 1: Computer System Structures We go over the aspects of computer architecture relevant to OS design  overview  input and output (I/O) organization.
Hardware: Input and Processing. Input and Processing Technology Hardware devices can be grouped according to how and where they are used in the four steps.
DSP C5000 Chapter 10 Understanding and Programming the Host Port Interface (EHPI) Copyright © 2003 Texas Instruments. All rights reserved.
بسم الله الرحمن الرحيم MEMORY AND I/O.
Lesson 2 Component Overview Core Hardware Fundamentals.
1 Device Controller I/O units typically consist of A mechanical component: the device itself An electronic component: the device controller or adapter.
Main Memory Main memory – –a collection of storage locations, –each with a unique identifier called the address. Word- –Data are transferred to and from.
Networked Embedded Systems Pengyu Zhang EE107 Spring 2016 Lecture 8 Serial Buses.
Bootloaders Many embedded processors have flash memory. This allows us to alter a product even though it is in the users hands: -fix bugs -upgrade or enhance.
10- Lock Bits, Fuse Bits and Boot Loader. Boot Loader Support – Read-While-Write Self- Programming: The Boot Loader Support provides a real Read-While-Write.
Components of Computer. Memory Unit Most important part of the computer Used to store data and instructions that are currently in use Main memory consists.
Maj Jeffrey Falkinburg Room 2E46E
Bootloaders Many embedded processors have flash memory. This allows us to alter a product even though it is in the users hands: -fix bugs -upgrade or.
ARM Embedded Systems
Topics SRAM-based FPGA fabrics: Xilinx. Altera..
UNIT – Microcontroller.
CS703 - Advanced Operating Systems
An Introduction to Microprocessor Architecture using intel 8085 as a classic processor
Subject Name: Embedded system Design Subject Code: 10EC74
AT91RM9200 Boot strategies This training module describes the boot strategies on the AT91RM9200 including the internal Boot ROM and the U-Boot program.
Chapter 2: Operating-System Structures
Chapter 4: MEMORY.
Chapter 9 Bootloader.
"Computer Design" by Sunggu Lee
Chapter 5 Computer Organization
Chapter 2: Operating-System Structures
ADSP 21065L.
Presentation transcript:

System on Chip Configuring FPGAs

Firmware and the boot process Booting is a complex process for any system It requires some form of firmware to be available when the machine receives power The boot process has a number of possible problems –Memory controllers won’t be initialised The code has to be able to run in very small amount of RAM –Quite often can use the processor cache in the earliest phases –Devices won’t be enabled Network booting will require a configured NIC

Booting and Programmable Hardware As FPGAs are volatile devices - based on SRAM –This means that they must be initialised In a traditional architecture the FGPA must be enabled like any other device –Although it has to be configured first Devices can be re-configured In such a system the FPGA can’t be involved in the very early phase of booting –Unless it has an automatic configuration scheme Booting FPGAs has 2 phases –Initialisation Data is downloaded –Configuration The chip goes into a known (programmed) state

FPGA Configuration schemes Configuration SchemeTypical Use Configuration DeviceUse EPC EPROM device to auto configure Passive SerialUse either Microprocessor or vendor specific cable – i.e. byteblaster Passive Parallel SynchronousParallel synchronous microprocessor interface Passive Parallel AsynchronousParallel asynchronous microprocessor interface. Device treated as memory Passive Serial AsynchronousSerial asynchronous microprocessor interface. Joint Test Action Group (JTAG)Configuration through IEEE standard interface

FPGA Configuration schemes There are 2 general approaches, these are selected using the MSEL pin –Active The device requests configuration at boot time –Done using configuration device, used in soft systems –Only done at boot time. –Not very flexible for multiple device and error control can be a problem. –Passive The device is reprogrammed under the control of the microprocessor or external control Can be redone at any time during system uptime. Not all devices support all schemes –JTAG conformance may include test but not reprogramming. For newer, larger devices, parallel programming is preferred to speed up system boot times.

FPGA data files Devices have different sizes –THE FLEX 6K FPGA is 260,000 bits –The EPC devices have to match the device size There are lots of different formats and standards –Some files will have initialisation and configuration information embedded –The vendors expect you to use their download tools, this is not always possible or desirable.

Using configuration devices Is fast and convenient Requires no user intervention Can boot soft system this way Has to be wired up on system build Is not very flexible Limited error handling capabilities Difficult to reconfigure with configuration devices

Using cables Either using the proprietary cables or JTAG interface is really only done in a development environment –It is quite fiddly –It requires a host machine –Can take a long time However it can be done on a dead system!

Altera FLEX 6k configuration For Puppeteer –No configuration device –* Is in JTAG chain But device can only test Programming can be done via JTAG under control of StrongARM –Only some pins are connected Can only use Passive serial –AKA bitbanging Configuration SchemeTypical Use Configuration DeviceUse EPC EPROM device to auto configure Passive SerialUse either Microprocessor or vendor specific cable – i.e. byteblaster Passive Serial AsynchronousSerial asynchronous microprocessor interface. Joint Test Action Group (JTAG) * Configuration through IEEE standard interface

FPGA Passive Serial DATA nCONFIG DCLCK CONF_DONE nSTATUS INIT_DONE FLEX 6000 FPGAStrongArm SA1110 GPIO 17 GPIO 25 GPIO 18 GPIO 23 GPIO 1* CS* * GPIO 1 is used as a input pin for FPGA interrupt handling

FPGA problems Not all the pins are connected –nSTATUS and INIT_DONE, for example It is possible to proceed without them This requires just monitoring the CONF_DONE pin until it goes high, this will require long and inefficient delays Difficult to know if the download has been successful The format of the data is unknown –I am assuming that it is a raw binary file (.rbf) The current FPGA data appears to have a preamble and is 0x180 bytes longer than the current BSP suggests. The Altera documentation is not very forthcoming on file formats as it assumes you are using their tools to create and download the files. But it works :) !

StrongARM GPIO pins To use the GPIO pins we must program various registers Some are re-used later on so need resetting to a specific state We need to know where the data for the device is –It is in FLASH We have to write a program to do the reprogramming –What to do on failure?

.h file for FPGA configuration

Some addresses and constants –All are physical addresses At boot time the MMU is off The udelay function is from uboot A structure for the GPIO pin registers The GPIO pins we will use Some masks