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

H1 Lattice Mico32 FPGA embedded processor

Implementing and programming a processor core in an FPGA

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 Lattice Diamond 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