Asservissement-Positionnement

TI STARTER KIT


Présentation
DSP TMS320VC31
Carte d'évaluation TI DSP Starter Kit
Carte d'Extension - Asservissement Positionnement
Soft

Usine à gaz - Utilisation
Usine à gaz - Historique


Introduction

La présentation de la carte DSP est axée sur les points qui vont être utiles pour l'application. Elle ne saurait en AUCUN CAS se substituer aux documentations de T.I. L'aspect filtrage numérique (fonction d'origine de la carte) est volontairement laissé de côté.

Documentations

Site web TI : www.ti.com
Ressource principale (datasheet complète de la famille TMS320VC3x) : TMS320C3x User guide.pdf
Spécificités du C31 : tms320c31.pdf
Carte d'évaluation : DSP Starter Kit User Guide.pdf
Documentation compilateur : Optimizing C Compiler User Guide.pdf

Et tout le contenu de ce répertoire

Présentation générale

La carte d'évaluation DSP Starter Kit vendue par T.I. comporte :

  • un DSP TMS320VC31 @ 50MHz
  • un PAL, assurant le décodage des signaux du bus
  • une interface // permettant le téléchargement du code dans la carte.
  • une régulation à 5V de l'alimentation.

Cette documentation regroupe tout ce qu'il est indispensable de savoir sur cette carte : DSP Starter Kit User Guide.pdf

Mécaniquement, la carte comporte 4 connecteurs d'extension (4*40 pin), regroupant tous les singaux du bus, plus quelques autres signaux. Elle comporte aussi une DB25 destinée à être reliée à un port paralèlle de PC.

Mapping mémoire

La carte va générer un certain nombre de signaux, qui vont permettre de découper en espaces dinstincts, l'espace mémoire du DSP.

Mapping mémoire carte DSK Starter Kit

La carte va donc générer les signaux :

  • _USER_BOOT actif de 1000h à 400000h (lecture/ecriture)
  • _USER_RAM actif de 80A000h à BFFFFFh (lecture/ecriture)
  • _USER_IOR actif de C00000h à DEFFFFh en lecture
  • _USER_IOW actif de C00000h à DEFFFFh en écriture
  • Les 2 dernières plages E00000h à FFFFFFh sont utilisées par la communication avec le PC (détaillée ensuite)

Ces signaux serviront pour la carte d'extension. Il sera ainsi possible de rajouter de la Flash (sur _USER_BOOT), de la Ram sur _USER_RAM, et des E/S sur _USER_IOR,_USER_IOW. On remarque aussi qu'une partie de la mémoire interne est utilisée par un Kernel

Interface DB25

Cette interface permet de réaliser une communication entre la carte et un PC. Elle permet aussi de télécharger du code, et d'assurer des fonctions de debuggage.

Fonctionnement

Schema de la communication DSP<->PC sur la carte Starter Kit


Une des fonctions de base de ce circuit (sur la carte Starter Kit) est d'envoyer le code du PC vers le DSP au démarrage.

Bootload du Kernel

En se référant à la page précédente, on voit que le démarrage commence lorsque le signal _RESET, passe à 1. Il est controlé par le port //. En l'absence de connexion, le signal est à 1.(donc le DSP n'est pas en reset, cependant un circuit RC assure une impulsion de reset au démarrage. Cette impulsion est assez faible, et dans tous les cas, insuffisante lorsqu'une carte d'extension est présente)

L'action effectuée va ensuite dépendre de l'état des interruptions (non représentées ici). _INT0,_INT1 et _INT3 sont à 1. Par contre _INT2, est commandée par le port //. Tant que _INT2, ne bouge pas le DSP va ATTENDRE, et ne fera strictement RIEN d'AUTRE

Lorsque le soft de chargement va s'executer (sur le PC), il va mettre _INT2 à 0. Le DSP va lors commencer le chargement (à l'@ FFF000h). C'est à dire que le DSP va effectuer une lecture sur l'@ FFF000h. Etant juste sorti d'un reset, la fin de la lecture sera déterminé par la fin des 7 wait states ET le signal _RDY qui passe à 0(cf ici). Justement, le signal _RDY est généré par le PAL. Ce signal va aussi varier en fonction de l'@ accédée. Sur la plage d'adresse FFF000h à FFFFFFh, il est relié au port // (via 2 bascules qui permettent de synchroniser ce signal). Le reste du temps il est à 0.

Le DSP va donc attendre que le port // du PC indique que la lecture est terminée. Ce mécanisme permet de rendre la communication asynchrone (il y'a blocage du DSP tant que le PC n'a pas répondu). Ce mécanisme va donc permettre d'envoyer des paquets de données au DSP. Ces paquets contiennent une adresse de destination, et des données. Le DSP va aller écrire les données à l'addresse de destination.

Dans le cas présenté ici, les données envoyées ici sont le contenu du code d'un Kernel (Noyau), qui va être mis dans les 256 derniers mots de RAM de la mémoire interne. Une fois le dernier paquet envoyé, l'execution du code commence à l'adresse du premier paquet. Ici cette adresse correspond au début du Kernel, qui va donc être executé.

Que fait le Kernel ?

Le Kernel est chargé et en train de s'executer. Il s'agit d'un programme (dont le source est donné dans la documentation du Starter Kit) qui s'initialise et ensuite attend (boucle infinie). Il va réagir à l'interruption _INT2 (qui, donc, peut être déclenchée par le port //). C'est à dire que le PC, va pouvoir interrompre le DSP (à ce moment là il ne fait rien d'autre, donc il va juste interrompre la boucle infinie), et pouvoir executer des routines qui vont offrir plusieurs services (détaillés dans la documentation du Starter Kit). Le PC va transmettre un paquet de données contenant une opération à effectuer et des données (toujours de la même façon : le DSP lit l'@ FFF000h et il attend ensuite la réponse du PC). Les opérations sont :

  • Envoi de données à une adresse (le DSP va aller écrire ces données à cette adresse)
  • Lecture de données à une adresse (le DSP va lire les données à cette adresse)
  • Execution du code (RUN)
  • Execution d'un pas (SSTEP)
  • Arrêt du code (HALT)
  • Lecture de l'état des registres
  • etc ...

Ce Kernel permet donc, moyennant l'utilisation des librairies de fonctions fournies sur le PC d'effectuer de nombreuses taches de debuggage. Il est possible de lire et écrire n'importe quelle adresse mémoire, c'est à dire qu'il est possible de lire et modifier dans la mémoire du DSP, mais aussi d'atteindre les périphériques branchés sur le bus du DSP. Il est donc possible de prendre un contrôle quasiment complet de la carte.

Remarque :

Ce Kernel fonctionne en IT, c'est à dire que le programme utilisateur continue à s'executer entre temps (à moins que l'on vienne le stopper). Ce qu'il ne faut pas perdre de vue, car il va lui aussi faire des accès sur le bus, etc.

Le Kernel est donc chargé et peut faire plein de choses. La première qui va lui être demandée par le PC est de charger le code de l'utilisateur (et les données) et ensuite d'exécuter ce code.

Il est à noter que ce mécanisme a été prévu pour fonctionner avec l'assembleur fourni avec le Starter Kit. Cependant, il n'est fourni avec le starter Kit, qu'un assembleur et pas de compilateur C. C'est donc le compilateur C générique, vendu par TI qui est utilisé. Jusque là rien ne changeait (que l'on vienne mettre du code généré par ci ou ça, du son, du texte, etc). Jusqu'au moment où le code de l'utilisateur est exéecuté.

Dans le cas de l'assembleur fourni avec la carte, un simple exécution de la fonction RUN, permet de lancer le code. Dans le cas du compilateur TI, il est NECESSAIRE de commencer par un SSTEP PUIS un RUN.

Et ensuite ?

Le programme de l'utilisateur va se dérouler (à moins qu'il ne se plante). Il est ensuite possible à tout moment (via le port //) d'interrompre le DSP, de venir lire n'importe quelle @ , ecrire dedans, etc. Ce qui se révèle extrêmement pratique pour le debug.

Cette communication a été par la suite déportée à l'extérieur de la carte Starter Kit (problème mécanique). Tous les signaux servant à cette communication sont reportés sur les connecteurs d'extension, elle a été déportée sur la carte 'rajoutée' sur la carte d'extension. Cependant pour que la communication dépaortée puisse fonctionner une modification a dû être apportée au latch 74HCT245 (en orange sur le schéma), sur la carte Starter Kit. : sa patte 19 (G : Gate Enable) a été déconnectée de sa piste et reliée à la patte 20 (+5V), permettant de le rendre inactif. Il n'est donc PAS POSSIBLE d'utiliser les 2 communications en même temps. Pour utiliser la communication de la carte Starter Kit, il faut :

  • Désactiver la communication aditionnelle (en retirant la carte ou en patchant le 74HC245 de la communication aditionnelle), de la même manière
  • Rétablir la connection de la patte 19 du 74HC245 de la carte Starter Kit

 

Connecteur d'extension - reste de la carte

L'interêt de cette carte est de reporter une très grande majorité des signaux du DSP et quelques signaux décodés en plus (énumérés au dessus), sur 4 connecteurs d'extension. Il est ainsi possible de rajouter une carte d'extension avec de la mémoire, des périphériques,etc.
La carte comporte en plus un CNA et un CAN (non détaillés ici).
La consommation de la carte fait chauffer son régulateur tout en restant acceptable. La carte peut soit être alimentée par une source alternative (transfo), soit par une tension continue (qui peut être fournie via le connecteur d'extension -- ou un connecteur rajouté sur la carte). Sans carte d'extension, ce StarterKit reste d'une grande fiabilité et n'a aucun aléa de fonctionnement. Cependant, la mémoire interne du DSP ( 1KMot - 256 Mots nécessaire au Kernel est assez limitée).

Soft

L'ensemble des fonctions PC est fourni avec la carte. Ces fonctions fonctionnent sous DOS et ont été portées pour Win. Elles sont détaillées plus loin.