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

  • 20 February - 26 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

  • 6 March - 12 March

    Cours théorie (0h)

    Pratique (3h)

    • Lab 1.2 - Joystick Interface

  • 13 March - 19 March

    Cours théorie (0h)

    Pratique (3h)

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

    • 20 March - 26 March

      Cours théorie (1h)

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

      Pratique (2h)

      • Lab 2.0 - Thermal Camera Interface

    • 27 March - 2 April

      Cours théorie (0h)

      Pratique (3h)

      • Lab 2.1 - Full System Integration

    • 3 April - 9 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

      • 10 April - 16 April

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

        Base du système avec processeurs ARM sur FPGA

      • 17 April - 23 April

        Vacances Pâques

        • 24 April - 30 April

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

          • 1 May - 7 May

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

          • 8 May - 14 May

            Continuation du Lab 3.1 sur l'nstallation d'un OS: Adaptation et compilation de Linux pour la carte de laboratoire.
            • 15 May - 21 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.