Weekly outline

  • CS-309 Projet de Systems-on-Chip

    Résumé
    Les étudiants mettront en pratique leurs connaissances en génie informatique, principalement au niveau du matériel. Ils utiliseront des micro-contrôleurs et des systèmes sur FPGA & ARM. Les laboratoires permettront de mettre en oeuvre du Linux embarqué sur FPGA/ARM. Ils utiliseront des outils de cross-développement ainsi que des analyseurs logiques et oscilloscopes.

    Contenu

    Ce cours est centré sur des laboratoires pratiques à réaliser par les étudiants. 

    Généralement une introduction d'une heure est suivie de 1 à 3 sessions de laboratoires pratiques pour réaliser des mini-projets par groupes.

    Lors des laboratoires, les travaux seront effectués sur des cartes FPGA-SOC avec processeurs embarqués sous forme softcore (NIOSII) et/ou hardcore (ARM). Des interfaces programmables simples et complexes seront développées en VHDL pour s'interfacer avec des modules externes à contrôler. 

    La méthodologie pas-à-pas sera utilisée pour arriver à la réalisation de systèmes relativement complexe.

    Les sujets suivants seront étudiés et implémentés :

    1. Analyse du système : Multicore ARMs, FPGA, I/Os, et interfaces programmables spécialisées ;
    2. Design et simulation d'une interface programmable réalisée en VHDL (I, II) ;
    3. Design et simulation d'un accélérateur spécifique réalisé en VHDL (I,II, III) ;
    4. Test du système spécifique avec développement de logiciel en C avec des outils de cross-debugging (baremetal coding)(I) ;
    5. Boot et test d'un système embarqué, baremetal design (I, II) ;
    6. Installation d'un OS: Adaptation et compilation de Linux pour la carte de laboratoire (I, II) ;
    7. Développement d'un logiciel de démonstration (I, II) ;
    8. Présentation des résultats.
    Méthodes d'enseignement

    • Travail par groupes de 2 étudiants
    • Laboratoires pratiques
    • Mini-projets spécifiques par groupe
    • Travaux avec des outils de développement croisé et de systèmes matériels réels
    • Utilisation des outils de débogage tels que cross-debugger, oscilloscopes et analyseurs logiques
    • Les travaux sont réalisés sur les systèmes matériels réels avec des micro-contrôleurs et FPGA.
    Systèmes utilisés

    Le support de laboratoire consiste en carte de développement DE0-nano-SoC (Terasic) avec FPGA Cyclone V (Altera) contenant 2 processeurs ARM-A9 embarqués. 

    Des cartes d'extension particulières pour ces laboratoires ont été développées:
    • Caméra PAL sur support mobile, à interfacer par décodeur PAL
    • 2 servo-moteurs, à contrôler par FPGA
    • Joystick à interfacer sur bus SPI
    • Caméra thermique sur I2c et SPI à gérer par FPGA
    • Affichage LCD à contrôler par FPGA
    Les outils de développement seront principalement:
    • QuartusII, Qsys d'Altera
    • Simulateur ModelSim de Mentor
    • Outils de cross-compilation et debugger pour ARM: ARM-DS5
    • Analyseur Logique sur USB LogicPro16 de saleae

  • 18 February - 24 February

    Cours théorie (1h)
    • Description générale du cours
    • Formation des groupes
    • Analyse du système : 

      • Multicore ARMs, 
      • FPGA, 
      • I/Os, 
      • Interfaces programmables spécialisées
      • VHDL

    Pratique (2h)

    • Lab 1.0 - PWM Control Software

  • 25 February - 3 March

    Cours théorie (0h)

    Pratique (3h)

    • Lab 1.1 - PWM Control Hardware
  • 4 March - 10 March

    Cours théorie (0h)

    Pratique (3h)

    • Lab 1.2 - Joystick Interface

  • 11 March - 17 March

    Cours théorie (1h)

    Pratique (2h)

    • Lab 1.2 - Joystick Interface
      Fin du contrôle des servo-moteurs par Joystick sur l'ADC.
    • DEMO!

  • 18 March - 24 March

    Cours théorie (1h)

    •  Introduction aux caméras: IR, PAL, CMOS

    Pratique (2h)

    • Lab 2.0 - Thermal Camera Interface

  • 25 March - 30 March

    Cours théorie (0h)

    Pratique (3h)

    • Lab 2.1 - Full System Integration

  • 1 April - 7 April

    Part III: Test sur carte, validation

    Test du système spécifique avec développement de logiciel en C avec des outils de cross-debugging (baremetal coding)

    Intro au système ARM-A9

  • 8 April - 14 April

    Boot et test d'un système embarqué, baremetal design (I, II)

    Base du système avec processeurs ARM sur FPGA

  • 15 April - 21 April

    Continuation du Lab 3.0 sur le boot et test d'un système embarqué avec un processeur ARM.

  • 22 April - 28 April

    Vacances Pâques

  • 29 April - 5 May

    Installation d'un OS: Adaptation et compilation de Linux pour la carte de laboratoire

  • 6 May - 12 May

    Continuation du Lab 3.1 sur l'installation d'un OS: Adaptation et compilation de Linux pour la carte de laboratoire.
  • 13 May - 19 May

    Développement d'un logiciel de démonstration sous Linux embarqué.
    Quelques exemples:
    • Afficher "vidéo" thermique sur LCD.
    • Créer une color map pour la caméra thermique (rouge = chaud, bleu = froid), ...
    • Streaming "vidéo" thermique vers un autre PC / serveur web.
    • Appliquer des filtres (openCV) sur les images thermiques en fonction de l'input des joysticks.
    • Jeux vidéos version libncurses:
      • Snake
      • Space Invaders
      • Pacman
      • ...

    Vous pouvez bien sûr aussi proposer des idées.

  • 20 May - 26 May

    Présentation Mini-projet:

    15' WITH SLIDES + 15' demo & questions

    AND your usual report, delay 10 of June at LAST


    Another date is possible:

    Thursday 6th of June 10h-12h

    send me an email if you want this option !

  • 27 May - 2 June

    Ascension, congé

  • 3 June - 9 June

    Final presentation last date possible !!

    Jeudi 6 de 8h15 à 11h.

    Merci de remplir le doodle (1 ligne/groupe, mettez tous les noms du groupe.


    https://epfl.doodle.com/poll/c4qzy95nvnmuq534