Programmation DSP et Shell (ST & RT)

Pré-requis nécessaires

Bases de la programmation en C et notions d'algorithmique
Représentation binaire naturel/hexadécimal des nombres entiers.
Représentation en complément à 2 sur n bits et opérations arithmétiques associées.
Représentation d’un nombre réel en virgule fixe (format Qn) et en virgule flottante, précisions associées. 

Objectifs

  • Initiation à la programmation de processeur spécialisé de type DSP.
  • Initiation à la programmation Shell 

Compétences visées

Partie DSP :

  • Connaître et exploiter les avantages d'une architecture de type DSP (Digital Signal Processor).
  • Comprendre l'organisation de la mémoire, le jeu d'instruction, l'arithmétique à virgule fixe ou flottante, les modes d'adressage, les registres, les appels de sous-programmes, etc.
  • Optimiser le code assembleur en utilisant le parallélisme et en remplissant le pipeline d'un processeur.
  • Programmer en C et en assembleur une application de filtrage numérique en temps réel. 

Partie Shell :

  • Manipuler les commandes de base d'un shell Linux.
  • Réaliser des scripts shell Linux en utilisant des opérateurs de comparaison, des opérations de boucle, les redirections d'entrées/sorties et les expressions régulières. 

Descriptif

Partie DSP :
Architecture Von-Neumann vs Harward, focus sur un exemple d’architecture de la famille C6x de Texas Instrument : organisation du CPU et de la mémoire. Rappels et compléments sur les bases du langage C : les différents types de données, les tableaux, les pointeurs et les fonctions avec passage des paramètres par valeur ou par adresse. Introduction au langage assembleur :  jeu d’instructions , opcode, décodage, exécution et  délais d’instruction, manipulation sur les pointeurs pour les chargements et les écritures en mémoire. Développement de programmes en assembleur tel que le produit scalaire de 2 tableaux avec optimisation progressive du code en jouant sur l’ordre des instructions et le parallélisme, puis en optimisant le pipeline. Réalisation d’un filtre RIF (Réponse Impulsionnelle Finie) à l’aide d’un simulateur « C6713 Device Cycle Accurate Simulator » via CCS (Code Composer Studio) et  en utilisant une carte de développement C6713 DSP starter Kit.

Partie Shell :
Pour permettre l'acquisition des compétences visées, la partie shell se compose d'une partie théorique (10h) et d'une partie pratique (12h).
Contenu de la partie théorique :
1) Écriture d'un programme shell basique (manipulation de variables, d'opérateurs conditionnels et arithmétiques, de comparaison, de boucles...)
2) Compréhension des concepts pour manipuler les entrées/sorties dans un script
3) Concepts principaux pour utiliser des expressions régulières dans un script
4) Mise en situation sur l'écriture avancée de scripts shell

Contenu de la partie pratique :
La partie pratique sera composée de 3 TPs pour mettre en situation l'étudiant sur la réalisation de scripts de configuration d'un système. Les exercices proposés concernent les manipulations quotidiennes d'un administrateur réseau qui souhaite automatiser certaines tâches du quotidien (création d'un utilisateur et de son profil, rechercher l'ensemble des fichiers d'un utilisateur sur les systèmes de fichier locaux ou distants, automatiser la configuration de services réseaux tels qu'un serveur Ldap ou Apache...).
Un projet sera également donné aux étudiants qu'ils devront réaliser sur leur temps personnel."  

Bibliographie

DSP Applications Using C and the TMS320C6x DSK », Topics in Digital Signal Processing, Rulph CHASSAING, John Wiley & Sons, Inc.