View the site in Français Site displayed in English (USA) View the site in English (GB)
You are here: ac6 > ac6-formation > FPGAs & ASICs > Lattice Mico32 FPGA embedded processor
Download Catalog
Download Catalog
Download as PDF
Download as PDF
Write us
Write us
Printable version
Printable version
 

H1 Lattice Mico32 FPGA embedded processor

Implementing and programming a processor core in an FPGA


formateur
Goals
bullet_jaune_1 Understand the process of creating a system with an FPGA-embedded processor
bullet_jaune_2 Assembling the hardware platform
bullet_jaune_2 Installation of FPGA
bullet_jaune_2 Programming of application software
bullet_jaune_2 Final Integration
bullet_jaune_1 Master the particulars of the Open Source MICO32 core:
bullet_jaune_2 Software architecture
bullet_jaune_2 Wishbone bus
bullet_jaune_2 Standard peripherals: UART, Ethernet (10/100/1000) ...
bullet_jaune_1 Learn to program a the platform using Eclipse.
bullet_jaune_1 Discover installing uClinux and micrium uC/OSII on the platform
This course teachs you how to control the creation of a platform using an embedded CPU. All exercises are done on a board with the Lattice ECP2 Open Source MICO32 core; installation and use of micrium uC/OSII and uClinux will be presented quickly.
Course Material
bullet_jaune_2 A Windows PC per two trainees
bullet_jaune_3 The ISPlever FPGA programming tool
bullet_jaune_3 The MSB tool for creating Mico32 Open Source platform
bullet_jaune_3 The software development environment (based on Eclipse)
bullet_jaune_3 The installation of the platform on uClinux and uC/OSII
bullet_jaune_2 A Lattice ECP2 target board
bullet_jaune_2 Printed handouts of the course slides
bullet_jaune_2 Labs presentation and solutions
Prerequisite
bullet_jaune_2 Basic understanding of processor architecture
bullet_jaune_2 Good knowledge of VHDL programming (course V1 level)
bullet_jaune_2 Knowledge of embedded programming in C (if possible course L2 level)
bullet_jaune_2 For a good understanding of installing uClinux it is desirable to have a basic knowledge of
bullet_jaune_3 Embedded Linux (see course D1) to understand the uClinux boot process
bullet_jaune_3 Linux programming (see course D0) for Linux programming exercises

Outline
First day
Platform development process
bullet_jaune_2 Definition of the platform
bullet_jaune_3 Creation of the physical architecture of the system
bullet_jaune_3 Choice of characteristics and design
bullet_jaune_2 VHDL code generation of the platform
bullet_jaune_2 Implementation of the platform
bullet_jaune_3 Verification of the platform
bullet_jaune_3 Creation of the bitstream for programming the FPGA
bullet_jaune_2 Programming the platform
bullet_jaune_3 Choice of software infrastructure
bullet_jaune_3 Programming in C and assembler
Platform definition with the Mico System Builder
bullet_jaune_2 Selecting core options
bullet_jaune_3 Caches
bullet_jaune_3 Interrupt controller
bullet_jaune_2 Memory selection and configuration
bullet_jaune_3 Internal RAM and ROM
bullet_jaune_3 External flash, serial and parallel
bullet_jaune_3 SRAM and external DDRAM
bullet_jaune_2 Choosing and configuring devices
bullet_jaune_3 GPIOs
bullet_jaune_3 Timer
bullet_jaune_3 UART, SPI, I2C
bullet_jaune_3 Ethernet
bullet_jaune_3 DMA Controller
bullet_jaune_2 Bus arbitration strategies
bullet_jaune_3 Private or shared busses
bullet_jaune_3 Static or dynamic arbitration
bullet_jaune_2 Configuring the platform
bullet_jaune_3 Connection of peripheral bussesto
bullet_jaune_3 Connection of peripheral interrupt controllers and DMA
bullet_jaune_3 Choice of addresses and interrupts
bullet_jaune_2 Checking the consistency of the platform
bullet_jaune_2 VHDL code generation of the platform
Second day
Platform implementation
bullet_jaune_2 Behavioral Simulation
bullet_jaune_3 Using the testbench generated by the MSB
bullet_jaune_2 Synthesis according to the chosen FPGA
bullet_jaune_3 Definition of inputs / outputs
bullet_jaune_3 Placement
bullet_jaune_3 Routing
bullet_jaune_2 After routing simulation
bullet_jaune_3 Checking timings
bullet_jaune_3 Control processing speed
bullet_jaune_2 FPGA programming
bullet_jaune_3 Generating the bitstream
bullet_jaune_3 Transfer to the target
Platform programming
bullet_jaune_2 C programming
bullet_jaune_3 The Eclipse-based programming environment
bullet_jaune_3 Program Runtime Environment
bullet_jaune_3 Programming and code generation constraints
bullet_jaune_3 Linker memory definition
bullet_jaune_2 Simulation on the development station
bullet_jaune_3 Using the MICO32 platform simulator
bullet_jaune_2 Transfer to the target
bullet_jaune_2 Cross debugging
bullet_jaune_3 Use of GDB to cross-debug the program on the target
Install and use of micrium uC/OSII
bullet_jaune_2 Installing micrium uC/OSII on the target platform
bullet_jaune_3 Specific platform requirements for uC/OSII
bullet_jaune_3 Configuration uC/OSII to fit the platform
bullet_jaune_3 Create a simple program
bullet_jaune_3 Recompile
bullet_jaune_3 Transfer on the target
bullet_jaune_3 Cross-debug
Third day
Install and use uClinux
bullet_jaune_2 Installing u-boot on the target
bullet_jaune_3 Specific platform requirements for u-boot and uClinux
bullet_jaune_3 Configuring u-boot to fit the platform
bullet_jaune_3 Recompile u-boot
bullet_jaune_3 Transfer on the target
bullet_jaune_3 Auto-test of the platform by u-boot
bullet_jaune_2 Installing uClinux
bullet_jaune_3 Configure the Linux kernel
bullet_jaune_3 Choice of boot parameters
bullet_jaune_2 Creation of programs for uClinux
bullet_jaune_3 Compilation under Eclipse for uClinux
bullet_jaune_3 Cross-debug
Creating custom components
bullet_jaune_2 The Wishbone bus
bullet_jaune_3 Bus topology and signals
bullet_jaune_3 Master interfaces
bullet_jaune_3 Slave interfaces
bullet_jaune_2 Defining custom input/output components
bullet_jaune_3 Creation of the component VHDL code
bullet_jaune_3 Integration into the Mico System Builder
bullet_jaune_3 Creation of a platform including the new component
bullet_jaune_2 Use of custom components in software
bullet_jaune_3 Creating a program using acomponent
bullet_jaune_3 Notion of driver
System deployment
bullet_jaune_2 Deployment of bitstreams in SPI flash
bullet_jaune_3 Using the JTAG port to program the flash
bullet_jaune_2 Deployment of tested code in parallel flash
bullet_jaune_3 Creation of the flash programming infrastructure
bullet_jaune_3 Reconfiguration of the application for execution from flash
bullet_jaune_3 Deployment of an integrated application
bullet_jaune_3 Deployment of a complete uClinux image