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

  • 19 February - 25 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

  • 5 March - 11 March

    Cours théorie (0h)

    Pratique (3h)

    • Lab 1.2 - Joystick Interface

  • 12 March - 18 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!

    • 19 March - 25 March

      Cours théorie (1h)

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

      Pratique (2h)

      • Lab 2.0 - Thermal Camera Interface

    • 26 March - 1 April

      Cours théorie (0h)

      Pratique (3h)

      • Lab 2.1 - Full System Integration

    • 2 April - 8 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

      • 9 April - 15 April

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

        Base du système avec processeurs ARM sur FPGA

      • 16 April - 22 April

        Vacances Pâques

        • 23 April - 29 April

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

          • 30 April - 6 May

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

          • 7 May - 13 May

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

            • 21 May - 27 May

              Ascension, congé

              • 28 May - 3 June

                Présentation Mini-projet:

                15' WITH SLIDES + 15' demo & questions

                AND your usual report, delay 15 of June


                Another date is possible:

                Monday 15/6 afternoon ~15h-17h

                send me an email if you want this option !