Brevet FR2802321A1 — publié le 20010615

PROCESSEUR CONFIGURABLE PAR L'UTILISATEUR L'invention a pour objet un circuit programmable comprenant un processeur et une mémoire comprenant un programme objet destiné à être exécuté par processeur. Plus généralement, l'invention concerne toute application embarquee dans laquelle il est souhaitable de disposer d'un circuit programmable. P -1 lus en plus fréquemment, circuits programmables sont utilisés dans des dispositifs embarques, tels que par exemple un dispositif freinage assisté dans une voiture ou bien un dispositif de réglage de température dans un appareil électroménager ou une installation industrielle. Pour ces applications embarquees, les circuits programmables sont le plus souvent associés à des convertisseurs de type analogique/digital et des capteurs de mesure. Pour chaque application, l'utilisateur choisit le (ou les) convertisseur(s) et le processeur les mieux adaptés à l'application souhaitée en fonction des performances requises, en terme de vitesse ou de consommation par exemple Pour compléter le circuit programmable de son application, l'utilisateur mémorise ensuite un programme objet dans la mémoire connectée au processeur, le programme objet tenant compte de paramètres prédéfinis du processeur. Actuellement, l'utilisateur trouve sur le marché une large variété de convertisseurs. Par contre, le choix d'un processeur est relativement restreint. Par exemple, la plupart des processeurs commercialisés travaillent sur 8 ou 16 bits, rarement 32. Si l'utilisateur choisit un convertisseur 10 bits, il devra nécessairement choisir un processeur travaillant sur au moins 16 bits, qui est surdimmensionné par rapport au convertisseur choisi. Classiquement, un circuit programmable comprend un processeur et une mémoire de programme associée contenant un programme objet à exécuter par le processeur. Le programme objet est construit par l'utilisateur il comprend une série d'instructions issues d'un jeu d'instructions de base compréhensible par le processeur. Le nombre et l'ordre des instructions du programme objet dépendent des paramètres prédéfinis du processeur qui doit l'exécuter. Les processeurs les plus courants possèdent des paramètres qui ne sont pas accessibles à l'utilisateur. Aussi, pour améliorer performances de son application, l'utilisateur est souvent contraint à changer de processeur, qui a pour conséquence l'obligation de construire un nouveau programme objet basé sur un jeu d'instructions différent. Il existe également 'ourd'hui sur le marché un processeur configurable, pour lequel l'utilisateur peut choisir par exemple le type d'additionneur (rapide ou lent) utilisé par le processeur. Cependant, un tel processeur configurable est difficile à utiliser et les possibilités de choix de paramètres et/ou de circuits sont limitées. Il serait donc intéressant, pour les concepteurs, de pouvoir disposer d'un circuit programmable ou plutôt d'un ensemble de circuits programmables utilisant le même langage, c'est-à-dire le même jeu d'instructions, mais ayant des caractéristiques techniques différentes, conduisant à des coûts ou des performances différentes. Dans ce but, l'invention concerne un processeur pour exécuter des instructions d'un programme objet mémorisé dans une mémoire de programme connectée au processeur, caractérisé en ce qu'il comprend des paramètres prédéfinis choisis par l'utilisateur et en ce que le programme objet comprend des instructions d'un jeu d'instructions compréhensible par le processeur, le jeu d'instructions étant indépendant des paramètres prédéfinis du processeur. De préférence, les paramètres prédéfinis du processeur comprennent notamment une taille prédéfinie registre, la taille prédéfinie étant le nombre de bits d'un registre du processeur. Les paramètres prédéfinis processeur comprennent également un nombre prédéfini de registres, le nombre prédéfini correspondant au nombre registres du processeur. Enfin, les paramètres prédéfinis comprennent également - un nombre de registres coupleurs de périphériques, - un nombre de registres dans une pile, et une taille de registres de la pile, taille étant le nombre de bits d'un registre, et - une taille d'un mot de la mémoire de programme, et une taille d'un mot d'adresse de la mémoire de programme. Selon un mode de réalisation de l'invention, le jeu d'instructions comprend une pluralité de codes d'instructions de même taille répartis en une pluralité de classes d'opérations, chaque code étant divisé en une pluralité de champs, les codes d'instructions d'une même classe d'opérations ayant la même pluralité de champs. Les classes d'opérations comprennent une classe d'opérations de transfert comprenant des opérations de chargement d'un mot d'instruction de la mémoire de programme dans un ou des premiers registres processeur, et des opérations de mémorisation d'un nombre binaire dans le ou les premiers registres. La pluralite de champs des codes d'instructions de la classe des opérations de transfert comprend - un premier champ caractérisant la classe des opérations de transfert, - un second champ caractérisant l'opération à effectuer, - un troisième champ contenant une première adresse pour désigner le ou les premiers registres du processeur destinés à recevoir soit le mot d'instruction à charger, soit le nombre binaire à mémoriser, et - un quatrième champ contenant soit une seconde adresse pour désigner un ou des seconds registres contenant une adresse complète de la mémoire de programme laquelle est situé le mot d'instruction à charger, soit un mot contenant des bits du nombre binaire transférer dans le ou les premiers registres. La classe d'opérations de transfert comprend entre autre une première et une seconde instructions pour mémoriser, dans les premiers registres, soit un mot contenant les bits de poids faible du nombre binaire, soit un mot contenant les bits de poids fort du nombre binaire, la seconde instruction étant utilisée si le nombre de bits du nombre binaire est strictement supérieur à la taille prédéfinie des premiers registres. De préférence, si un mot d'instruction doit être chargé, l'adresse complète de la mémoire de programme à laquelle est situé le mot d'instruction à charger, est obtenue par juxtaposition du contenu des seconds registres, le contenu de l'un des seconds registres correspondant aux bits de poids faible de l'adresse complète, et le contenu de l'autre des seconds registres correspondant aux bits de poids fort de l'adresse complète. La classe d'opération de transfert comporte en outre une troisième instruction pour charger le mot d'instruction de la mémoire de programme dans les premiers registres du processeur, les bits de poids faible du mot d'instruction étant chargé dans l'un des premiers registres, les bits de poids fort du mot d'instruction étant chargés dans l'autre des premiers registres. L'invention a également pour objet un jeu d'instructions pour un processeur comprenant une mémoire morte dans laquelle sont mémorisés, d'une part des paramètres prédéfinis du processeur, et d'autre part des instructions d'un programme objet comprenant uniquement des instructions du jeu d'instructions, l'enchaînement des instructions du programme objet dépendant des paramètres prédéfinis processeur, le processeur étant utilisé pour exécuter des instructions du programme objet. Le jeu d'instructions de l'invention est caractérisé en ce qu'il est indépendant des paramètres prédéfinis du processeur, le jeu d'instructions pouvant être utilisé avec des processeurs ayant des paramètres prédéfinis différents. De préférence, les paramètres prédéfinis du processeur comprennent notamment une taille prédéfinie et un nombre prédéfini registres, la taille prédéfinie étant le nombre de bits d'un registre du processeur et le nombre prédéfini correspondant au nombre de registres du processeur. L'invention concerne également dispositif programmable comprenant une mémoire utilisateur comprenant des instructions d'un programme source écrit dans un langage compréhensible par l'utilisateur, et un circuit programmable pour exécuter le programme source. Le dispositif programmable est caractérisé en ce que le circuit programmable comprend un processeur et une mémoire de programme pour mémoriser des instructions d'un programme objet compréhensible par le processeur. Le dispositif programmable comprend en outre des moyens de codage pour lire les instructions du programme source et écrire les instructions correspondantes du programme objet dans la mémoire de programme. Le programme objet comprend uniquement des instructions d'un jeu d'instructions compréhensible par le processeur et connu des moyens de codage, l'enchaînement des instructions du programme objet dépend des paramètres prédéfinis du processeur, les moyens de codage pouvant être utilisés avec des processeurs utilisant le même jeu d'instructions mais ayant des paramètres prédéfinis différents. Enfin, l'invention a pour objet un système programmable comprenant plusieurs circuits programmables. Chaque circuit programmable comprend un processeur et une mémoire de programme dans laquelle sont mémorisées des instructions à exécuter par le processeur, chaque processeur utilisant un même jeu d'instructions. De plus chaque processeur comprend des paramètres prédéfinis différents, un des paramètres prédéfinis étant la taille prédéfinie des registres du processeur, et un autre des paramètres prédéfinis étant le nombre prédéfini de registres du processeur. Ainsi, avec l'invention, le concepteur dispose d'un langage de programmation, c'est-à-dire d'un jeu d'instructions, compréhensible par des processeurs différents ayant des paramètres différents. Ainsi, avec le même jeu d'instructions, le concepteur peut très facilement choisir un processeur ou un autre, en fonction des besoins de l'application qu'il souhaite mettre en oeuvre, ou remplacer le processeur d'une installation existante. Le concepteur n'a plus besoin réapprendre un nouveau jeu d'instructions pour utiliser des processeurs ayant des caractéristiques techniques différentes et construire le programme et de sa nouvelle application. Le concepteur peut ainsi facilement optimiser son application, sans devoir necessairement investir trop de temps ou d'argent. L'invention sera mieux comprise d'autres caractéristiques et avantages apparaîtront ' la lecture de la description qui va suivre, la description faisant reférence aux dessins annexés dans lesquels - la figure 1 est un schéma d' dispositif programmable, selon l'invention, - la figure 2 est un schéma-bloc d'un processeur du dispositif programmable de la figure 1, - les figures 3A à 3D sont des diagrammes montrant structure des instructions d'un jeu d instructions, selon l'invention. - les figures 4A à 4D sont des diagrammes fonctionnement du processeur de l'invention. dispositif programmable 10 de l'invention comprend, conformément à la figure 1, une mémoire utilisateur 20, des moyens de codage 30 et un circuit programmable 40 comprenant une mémoire de programme une memoire de configuration 60 et un circuit configurable 70 qui communique avec la mémoire configuration 60 et/ou avec la mémoire de programme 50, selon technologie d'implantation. L'ensemble constitué du circuit configurable 70 et de la mémoire configuration 60 forme un processeur dont des paramètres sont contenus dans la mémoire de configuration 60. paramètres sont les caractéristiques techniques processeur, ils sont à priori spécifiques à un processeur donné sont différents d'un processeur à un autre. liste et la signification des paramètres du processeur de l'invention seront détaillées plus longuement lors de la description du processeur représenté sur la figure 2. mémoire utilisateur 10 contient des instructions d'un programme source écrit par l'utilisateur dans un langage compréhensible par lui-même, tel que par exemple, le langage de programmation C. La mémoire de programme peut etre réalisée de différente manière, l'essentiel étant de disposer d'un support inscriptible sur lequel est inscrit le programme source. Le programme source doit être exécuté par le processeur du circuit programmable 40 pour realiser une application donnée, par exemple une application embarquée telle que le pilotage d'une installation industrielle ou bien la gestion d'un système de freinage assisté. mémoire de programme 50 et la mémoire de configuration 60 sont de préférence des mémoires de type inscriptibles ou réinscriptibles, par exemple de type EPROM ou EEPROM. Dans l'exemple de la figure 1, le circuit programmable 40 comprend une mémoire de programme 50 et une mémoire de configuration 60. Il est bien sûr possible utiliser une seule mémoire contenant d'une part les paramètres du circuit configurable 60 et d'autre part le programme objet qu'il doit exécuter. Il est également possible d'utiliser une mémoire de configuration intégrée au circuit configurable 60, ou bien plusieurs mémoires intégrées, chacune associée à un élément circuit configurable. Les moyens de codage 30 permettent à 'utilisateur de traduire le programme source en un programme objet compréhensible par le circuit programmable 40 et plus particulièrement par le processeur qu'il comprend. Lors de l'utilisation du dispositif programmable 10, les moyens de codage 30 vont lire le programme source dans la mémoire 10, puis ils codent les différentes instructions du programme source en fonction des paramètres du circuit programmable 40 qui sont ceux du processeur et d'un jeu d'instructions comprehensible par le circuit programmable 40. Les moyens de codage 30 vont ensuite écrire dans la mémoire de programme 50, les instructions du programme objet obtenu codage des instructions du programme source. Le circuit programmable 40 comprend ainsi une mémoire de programme 50 contenant un programme objet basé sur un jeu instructions compréhensible par le processeur ; le circuit 40 peut alors fonctionner de manière autonome, sur instruction de l'utilisateur, par exemple sous la forme d'un signal ON/OFF, pour exécuter les instructions du programme objet correspondant à une application donnée. Dans l'exemple de la figure 1, les moyens de codage 30 sont connectés à la mémoire de configuration 60 et vont lire dans cette mémoire les paramètres du circuit programmable 40. Cependant, les moyens de codage peuvent également avoir accès aux paramètres du circuit programmable 40 par des moyens autres qu'une connexion directe entre la mémoire de configuration et les moyens de codage 30. Par exemple, les paramètres pourraient être fournis par l'utilisateur lors d'une initialisation des moyens de codage 30. Cette solution est avantageuse pour l'utilisateur car elle lui permet de modifier aisément les paramètres du processeur pour obtenir un programme obj optimisé, en terme de nombre d'instructions ou bien de vitesse d'exécution par exemple. Il suffit ensuite à l'utilisateur de mémoriser les paramètres dans la mémoire de configuration 50 du processeur. Les moyens de codage 30 peuvent être réalisés de différentes manières, l'essentiel étant de disposer de moyens pour traduire un programme écrit dans langage de haut niveau, par exemple le langage en un programme objet compréhensible par le processeur qui doit l'exécuter. Le programme objet fourni par les moyens de codage comprend une série d'instructions issues du jeu d'instructions, c'est-à-dire du langage du processeur, le nombre et l'ordre des instructions du programme objet dependant des paramètres du processeur. L'utilisateur n'a ainsi plus besoin d'écrire un programme objet en code binaire, et peut se limiter à 1 écriture d'un programme source dans un langage de haut niveau facilement compréhensible, le langage de haut niveau étant beaucoup plus simple à utiliser pour les concepteurs. Les moyens de codage 30 de l'invention présentent l'avantage de pouvoir être utilisés pour des circuits programmables ayant des paramètres différents, terme par exemple de taille de mots utilisés ou de nombre de registres, mais ayant en commun un même langage, défini par un jeu d'instructions commun. Un processeur 100 de l'invention comprend, conformément à la figure 2, une unité de commande 120, unité de traitement 140, une mémoire de donnée l60, et une unité d'entrée / sortie 180. Dans l'exemple de la figure 2, le processeur 100 est équivalent au circuit configurable 70 de la figure 1 et il est connecte à une unique mémoire morte 110 comprenant d'une part, les paramètres de configuration du processeur 100 et autre part, un programme objet comprenant une série d'instructions à exécuter par le processeur Dans l'exemple de la figure 2, non limitatif de l'invention, la mémoire de configuration 60 et la mémoire de programme 50 sont ainsi remplacées par une seule mémoire . Il est également possible d'utiliser un processeur 100 comprenant une mémoire de configuration diffuse, est-à- dire en pratique plusieurs mémoires de configuration de taille beaucoup plus réduite, chacune étant associee à un élément du processeur 100. L'unité de commande 120 comprend un contrôleur 122, un contrôleur d'interruption 124, une unité de saut 126 et une pile 128. L'unité de traitement 140 comprend un banc de registres 142, une unité arithmétique et logique 144, une unité de transfert 146, un registre d'état 148 et une unité d'accès mémoire 150. Tous les éléments du processeur fonctionnement en mode synchrone, seul le contrôleur d'interruption fonctionne en mode asynchrone et est independant des autres éléments du processeur 100. Le processeur 100 est basé sur une architecture de type architecture de Harvard dans laquelle les données et les instructions transitent par l'intermédiaire de bus de données de bus d'instructions séparés. Un bus d'instructions 190 relie la mémoire morte 110 au contrôleur 122, à l'unité de saut 126, à l'unité arithmétique et logique 144, au banc de registres 142, à l'unité transfert 146 et à l'unité d'accès mémoire 150. Trois bus de-données, deux bus d'opérandes 192, 194 et un de résultat 196, relient les éléments du processeur 100 entre eux. Les bus d'opérandes 192, 194, connectés en parallèle, relient le contrôleur 122, l'unité de saut 126, le banc de registres 142, l'unité arithmétique et logique 144, et l'unité de transfert 146. Seul le banc de registres 142 a un accès en écriture sur les bus d'opérandes 192, 194 ; le contrôleur 122, l'unité de saut 126, l'unité arithmétique et logique 144 et ï' unite de transfert 146 ont un accès en lecture sur les bus d'opérandes 192, 194. Le bus de résultat 196 relie l'unité arithmétique et logique 144, l'unité de transfert 146, l'unité d'accès mémoire 150, le banc de registres 142, registre d'état 148, la mémoire de données 160 et l'unité d'entrées/sorties 180. Enfin, l'unite d'interruption 120 et le contrôleur 122 sont connectés ensemble pour recevoir de l'extérieur des signaux d'interruption. Le contrôleur 122 gère les échanges d'instructions entre la mémoire morte 110 et le processeur 100, ainsi que le flux des signaux de commande des autres circuits pendant le fonctionnement du processeur 100. Le contrôleur d'interruption 124 fonctionne en mode asynchrone, il est indépendant des autres unités processeur 100 et n'est pas relié aux bus de données ou d'instructions. Il gère les priorités des signaux d'interruption reçus depuis l'extérieur du processeur 100, ainsi que le fonctionnement du processeur 100 lorsqu'un signal d'interruption est reçu. Le contrôleur d'interruptions 124 est également prioritaire au niveau de la gestion des instructions par le contrôleur 122. L'unité de saut 126 fonctionne en mode synchrone, elle gère les interruptions, sur instruction du contrôleur d'interruption 124 lorsqu'un signal d'interruption extérieur est reçu. L'unité de saut 126 gère également les différentes instructions de saut lors du fonctionnement normal du processeur 100. Elle gère, pour chaque saut, le chargement de l'adresse de saut dans le contrôleur 122 et celui de l'adresse de retour de saut dans la pile 128. La pile 128 est un banc de Z registres de M bits. préférence, le niveau zéro de la pile 128 indique en permanence la valeur zéro. Le contenu de la pile 128 est geré par l'unité de saut 126. Le paramètre M définit egalement la taille d'un mot d'adresse de mémoire morte 110, qui peut contenir 2m mots de K bits Z, M e K sont des paramètres du processeur 100 mémorises dans la memoire morte 110. Le banc de registres 142 comprend un circuit de decodage et X registres de N bits, X et N etant des paramètres du processeur 100. Le banc de registres 142 gere la mise à disposition d'un (ou des) opérande (s) nécessaire (s) à l'exécution d'une instruction. banc de registres gère également le chargement du résultat d'une opération sur le bus de résultat 196, par exemple d'une opération de transfert ou d'une opération arithmetique. L'unité arithmétique et logique 144 comprend un circuit de décodage, et des circuits élémentaires de calcul, par exemple un circuit d'addition, un circuit de soustraction, et des circuits de logique pour réaliser opérations logiques suivantes : négation, Et, Ou, Ou exclusif, Déplacements et rotations. L'unité arithmétique logique 144 exécute les instructions concernant les opérations d'arithmétique ou de logique puis calcule la nouvelle valeur du registre d'état 148 pour chaque opération. L'unité de transfert 146 gère les transferts de mots entre les registres du banc de registres 142, les transferts de mots entre le banc de registres et la mémoire morte 110 ou la mémoire de données 160, ainsi que les transferts de mots entre le banc de registres 142 et 1 unité d'entrées/'sorties 180. Le registre d'état 148 est un registre, exemple huit bits, dont le contenu est modifié par l'unité arithmétique et logique 144 lorsqu'une opération de calcul est exécutée. Le contenu du registre d'état 148 comprend des informations sur le résultat de l'operation effectuée, il indique par exemple si le résultat de l'opération est nul ou bien négatif. Le registre d'état 148 uniquement mis à jour lorsqu'un résultat est fourni par l'unité arithmétique et logique 144 par exemple, les transferts de données n'ont aucune influence sur valeur du contenu registre d'état 148. unité d'accès mémoire 150 est utilisée comme mémoire tampon entre d'une part les unités d'exécution, qui sont l'unité arithmétique et logique 144 et 'unité de transfert 146, et d'autre part les unités de chargement de données, qui sont le banc de registres 142, le registre d'état 148, la mémoire de données 60 et l'unite d'entrées/sorties 180. L'unité d'accès mémoire 150 est utilisée pour synchroniser l'écriture des données dans les unités de chargement de données avec la mise à disposition des données sur le bus de résultat 196. La mémoire de données 160 est une mémoire vive (RAM) qui peut contenir 2L mots de N bits, L étant la largeur d'un mot d'adresse de la mémoire de données 160. L et N sont des paramètres du processeur, mémorisés dans la mémoire morte. L'unité d'entrées/sorties 180 comprend Y registres coupleurs de périphériques, Y étant également un paramètre du processeur de l'invention. Les registres coupleurs de périphériques servent de registres tampons pendant une opération d'écriture ou de lecture en direction des ports d'entrées/sorties de 'unité d'entrées/sorties 180. Ainsi, dans le mode préféré de réalisation de l'invention, les paramètres du processeur 100 sont les suivants (les valeurs numériques sont données à titre indicatif mais non limitatif de l'invention) . X est le nombre de registres du banc de registres 142, X est également appelé hauteur du banc de registres. Par exemple, X est choisi entre 8 et 32. Y est le nombre de registres coupleurs de périphériques de l'unité d'entrées/sorties 180, Y définit ainsi, plus ou moins directement, le nombre de péripheriques qu'il est possible de connecter au processeur 100. Y sera par exemple choisi inférieur à 128. est la hauteur, c'est-à-dire le nombre de registres, de la pile 128, Z varie entre 4 et 64. K définit la taille (ou le nombre de bits) d'un de la mémoire morte, dans l'exemple, K est égal à 16. est la largeur d'un mot d'adresse de la mémoire de données 160, c'est-à-dire le nombre de bits d'un d'adresse de la mémoire de données 160. L est compris entre et 16. est la largeur de la pile 128, c'est-à-dire nombre de bits d'un registre de la pile 128 ; M définit également la largeur d'un mot d'adresse de la mémoire morte du processeur 100. M est par exemple compris entre 16 et 24. N définit la taille des mots sur lesquels le processeur 100 travaille, N est ainsi le nombre de bits d'un registre du processeur 100 (registres du banc de registres, registres coupleurs de périphériques, ... ), de préférence N est compris entre 8 et 16. Les paramètres du processeur 100 sont des constantes mémorisées dans la mémoire morte 110 du processeur 100, que l'utilisateur peut aisément varier en fonction des performances qu'il souhaite pour le processeur. I1 suffit pour cela de réécrire une partie du contenu de la mémoire morte 110. Avec l'invention, l'utilisateur dispose d'un processeur facile d'utilisation, dont les paramètres sont aisément modifiables. Dit autrement, l'utilisateur dispose d'un ensemble de processeurs différents, ayant des paramètres différents en terme de taille de mots ou de nombre de registres par exemple, qui sont facilement interchangeables. I1 peut ainsi optimiser son application, remplacer simplement un processeur par un autre, sans avoir besoin d'investir trop de temps ou argent pour cela. Le processeur 100 de la figure 2 fonctionne de la manière suivante. Lors de la mise sous tension du processeur, l'unité de commande 120 va lire dans la memoire morte 110 les paramètres du processeur 100. unité de commande 120 va ensuite lire dans la mémoire morte 110 les instructions du programme objet à executer, decode les instructions et transmet des signaux de commande adéquats à un ou des composants de l'unité de traitement 140 chargés d'exécuter l'instruction reçue. Après exécution de l'instruction, l'unité de traitement transmet éventuellement un résultat à la mémoire de données 160 et/ou à l'unité d'entrées/sorties par 'intermédiaire du bus de résultat 196. Avant de détailler plus longuement le fonctionnement du processeur 100 de la figure 2, il est nécessaire de préciser le mode d'instruction du processeur 100, c'est-à-dire la structure des instructions utilisées dans le programme obj et appartenant au jeu d'instructions du processeur. Le jeu d'instruction de l'invention a été choisi et realisé pour pouvoir être utilisé avec des processeurs ayant des paramètres prédéfinis différents et notamment avec des processeurs ayant des tailles ou des nombres de registres différents. Par exemple, le même jeu instructions est utilisé de manière identique avec un processeur ayant X = 8 registres de N = 14 bits bien avec un processeur ayant X = 32 registres de N = 10 bits. Le jeu d'instructions du processeur 100 comprend un ensemble d'instructions, divisé en classes instructions. Dans un exemple, le jeu d'instructions comprend 47 instructions, et est divisé en quatre classes d'instructions, conformément aux figures 3A à 3D, qui sont une classe d'opérations entre registres du processeur, une classe d'opérations portant sur un seul registre, une classe d'opérations de transfert et une classe d'opérations de saut. S'il le souhaite, l'utilisateur peut ajouter de manière simple des instructions complémentaires au jeu d'instructions de l'invention, en utilisant pour cela l'une des structures des instructions existantes. L'utilisateur adapte ainsi au mieux les performances du processeur à 'application qu'il souhaite mettre en #uvre. La classe des opérations entre registres comprend des instructions pour réaliser des opérations arithmétiques et logiques, des opérations de transfert ou comparaison entre registres et des opérations de modification du contenu du registre d'état La classe des opérations portant un seul registre comprend des instructions pour réaliser des opérations de décalage de bits dans un registre, des opérations arithmétiques et logiques, et des opérations test de bits dans un registre. La classe d'opérations de transfert comprend des instructions pour réaliser des opérations de chargement mots dans la mémoire de données 160, des opérations de chargement de mot depuis la mémoire morte 110 et des opérations de chargement de mot depuis ou vers l'unité entrées/sorties 180. La construction des instructions de chaque classe d'instructions est présentée sur les figures 3A à 3D. Dans l'exemple, chaque instruction de l'ensemble du jeu d'instructions est codée sur K bits, avec K = 16. Un premier champ 210, correspondant aux deux bits de poids le plus fort du code de l'instruction considérée, indique la classe de l'instruction. Par exemple, une instruction dont les bits de poids le plus fort sont égaux à "00" appartient à la classe d'opérations entre registres. Un second champ 220 indique la référence de l'instruction dans une classe d'instructions donnée. Par exemple, l'instruction dont le second champ 220 est égal "0010" est une addition si l'instruction appartient à classe d'opérations entre registres. Il est noter que deux instructions, appartenant à des classes d'instructions différentes, peuvent avoir des seconds champs 220 identiques. L'ensemble formé par le premier et le second champs définit ainsi le code de référence d'une instruction, les instructions de l'ensemble du jeu d'instructions ayant des codes de référence différents. Le code des instructions de la classe des opérations entre registres comporte également (figure 3A) un troisième et un quatrième champs ADR,, ADRJ correspondant à des adresses de premier et second registres du banc de registres 142 utilisés pour réaliser l'opération. Le troisième champ ADRI correspond aux bits de poids le plus faible du code de l'instruction considérée. Par exemple, pour réaliser une addition entre deux nombres binaires A, B mémorisés dans deux registres RA, RB du banc de registres 142, l'instruction adéquate sera codée de la manière suivante - un premier 210 et un second 220 champs indiquant le code de référence correspondant à une instruction d'addition, dans l'exemple "00 00l0", - un troisième champ ADRI contenant l'adresse du registre RA du banc de registres 142, par exemple "0000l", et - un quatrième champ ADRJ contenant l'adresse du registre RB du banc de registres 142, par exemple "00010". Dans l'exemple le code complet d'une opération d'addition entre les contenus des registres RA et RB s'écrit finalement : "00 0010 00010 00001". Après exécution de l'opération, le résultat sera mémorisé dans le registre RA dont l'adresse est indiquée dans le troisième champ ADRI. L'ensemble formé par les premier, second, troisième et quatrième champs forment un code de K bits, correspondant à une instruction donnée. Le code des instructions de la classe des opérations portant sur un seul registre comporte (figure 3B) un troisième champ ADRI correspondant à une adresse d'un registre du banc de registres 142, et un quatrième champ 230. Selon l'instruction, le quatrième champ peut contenir un nombre binaire, par exemple si 'opération envisagée est une addition immédiate d'un nombre au contenu du registre d'adresse ADRI. Le quatrième champ peut également contenir un nombre binaire indiquant le poids d'un bit, par exemple si l'opération envisagée est un test d'un bit du registre d'adresse ADRI. Enfin, le quatrième champ peut contenir un nombre non significatif, par exemple si une opération de décalage de bits dans un registre est envisagée. Après exécution d'une opération portant un seul registre, le résultat sera mémorisé dans le registre dont l'adresse est indiquée dans le troisième champ ADRI. code des instructions de la classe des opérations de saut comporte (figure 3D) un troisième champ 240, et éventuellement, selon l'instruction considérée, un quatrième champ (non représenté sur la figure 3D). Les troisième et quatrième champs peuvent contenir des nombres binaires, des adresses de registres ou bien des nombres non significatifs, selon l'instruction. Le code des instructions de la classe des opérations de transfert comporte (figure 3C) un troisième champ ADRI correspondant à une adresse d'un registre du banc de registres 142, et un quatrième champ 230. Selon l'instruction, le quatrième champ 230 peut contenir un nombre binaire, par exemple si l'opération envisagée est le chargement immédiat d'un nombre dans le registre d'adresse ADRI. Le quatrième champ peut également contenir une adresse d'un registre contenant un mot à charger, par exemple si une opération de chargement mot dans le registre d'adresse ADRI est envisagée. Enfin le quatrième champ peut contenir une adresse d'un registre coupleur de périphérique contenu dans l'unité d'entrées/sortie, par exemple si une information est reçue d'un périphérique ou doit etre transmise à un périphérique connecté à l'unité d'entrées/sorties 180. jeu d'instructions de l'invention présente l'avantage de pouvoir être utilisé pour processeurs ayant paramètres différents, et en particulier pour des processeurs utilisant chacun une taille registre N différente. Pour cela le jeu d'instructions de l'invention comprend des instructions spécifiques pour des opérations de transfert, qui sont utilisables quelle que soit la taille N des registres du processeur. Deux instructions complémentaires LDIH et LDIL, dites de chargement immédiat, permettent charger dans un registre du processeur 100, par exemple un registre du banc de registres 142, un nombre binaire NB de taille supérieure à la taille N des registres du processeur 100. La première instruction LDIL permet de charger les bits de poids faible du nombre NB et la seconde instruction LDIH permet de charger les bits de poids fort du nombre NB. Le chargement du nombre NB s'effectue en deux étapes. Dans une première étape, l'instruction LDIH est utilisée pour charger les bits de poids fort du nombre NB dans un premier registre RA du banc de registre. Puis dans une seconde étape, l'instruction LDIL est utilisée pour charger les bits de poids faible du nombre NB dans un second registre RB du banc de registre. Le contenu des registres RA et RB est par la suite utilisé séparément ou bien ensemble, selon l'instruction à exécuter. Dans le cas où la taille du nombre NB est inférieure à la taille N des registres du processeur, il suffira évidemment d'utiliser une seule instruction, LDIL, pour charger le nombre binaire NB dans un registre du processeur 100. troisième instruction permet de charger, dans un registre du processeur, un mot contenu dans la mémoire morte qui peut être une instruction ou bien un paramètre du processeur par exemple. Plus précisément, l'instruction LPM est codée de la manière suivante (figure 3C) . - premier champ 210 égal à "10" indiquant une instruction de 1a classe des opérations de transfert, - second champ 220 égal à "1100" correspondant à une instruction de chargement d'instruction depuis la mémoire morte 110, - un troisième champ ADRI contenant l'adresse d'un registre RI du banc de registre 142, et - un quatrième champ 230 contenant i'adresse ADRJ d'un registre Rj du banc de registre 142, le registre Rj contenant les bits de poids faible de l'adresse ADRINST de la mémoire morte 110 à laquelle le mot à charger est mémorise Lors de l'exécution de la troisième instruction LPM, processeur 100 va d'abord lire le contenu du registre Rj dont l'adresse ADRJ est mémorisée dans le quatrieme champ 230, le processeur lit également le contenu registre suivant R,I*1 d'adresse ADRJ+, dans le banc registres 142. Puis le processeur reconstitue l'adresse ADRINST par juxtaposition des contenus des registres R,I+l et RJ, le contenu du registre RJ+l correspondant aux bits de poids fort mot d'adresse ADRINST le contenu du registre Rj correspondant aux bits de poids faible du mot d'adresse ADRINST. processeur va ensuite lire le mot à charger dans la mémoire morte 110, à l'adresse ADRINST. Enfin, le processeur memorise les bits de poids faible du mot lu dans le registre RI du banc de registres et les bits de poids fort du mot lu dans le registre RI+I. L'instruction LPM est particulièrement intéressante dans le cas où la taille N des registres du processeur est petite, par exemple dans les cas où N = 8 ou N = 10. En effet, une adresse ADRINST de la mémoire morte étant mémorisée dans deux registres consécutifs Ri,,, Ri, il est possible d'utiliser une mémoire morte de taille 22;N K, c'est-à-dire une mémoire morte contenant 2`'N mots (ou instructions) de K bits. De la même façon, le à charger étant mémorisé dans deux registres consécutifs RI RI,,, il est possible de lire aisément dans la mémoire morte des mots comprenant jusqu'à 2*N bits. Dans le cas où la taille N des registres du processeur est égale ou supérieure à la taille K d'un mot la mémoire morte 110, l'instruction LPM est utilisée avec un registre RI+I contenant N bits non significatifs. même, dans le cas où N est supérieur à M, M étant le nombre de bits sur lequel est codée une adresse la mémoire morte, alors l'instruction LPM est utilisée simplement en utilisant un registre Ri+I dont le contenu non significatif. L'instruction de chargement LPM depuis la mémoire morte 110 peut ainsi être utilisée quelle que soit la taille N des registres du processeur 100. Finalement, le jeu d'instructions de l'invention, avec ses instructions spécifiques LDIH, LDIL et LPM, peut ainsi être aisément utilisé pour des processeurs ayant des tailles N de registres différentes. Le processeur 100 est un processeur de type RISC, dans lequel l'exécution des instructions se fait sous la forme d'un pipeline à cinq étages, c'est-à-dire d'un ensemble de cinq étapes exécutées successivement. Chaque instruction est ainsi exécutée en cinq étapes, chaque étape étant réalisée en une période d'un signal d'horloge CLK (figures 4A à 4D), le début d'une étape correspondant par exemple à un front montant signal d'horloge CLK. Le début du pipeline, pour une instruction donnée, est décalé d'une période du signal horloge CLK par rapport au début du pipeline de l'instruction précédente. Ainsi, à chaque front montant du signal d'horloge CLK, l'exécution d'une instruction se termine et l'exécution d'une nouvelle instruction débute comme cela est le cas pour un processeur de type RISC. Le déroulement de l'exécution d'une instruction d'opération sur un ou deux registres est décrit en relation avec la figure 4B. Dans une première étape, appelée "FETCH", le contrôleur 122 décode le premier champ 210 du code de l'instruction à exécuter pour déterminer la classe de l'instruction. Puis le contrôleur 122 détermine, à partir de la classe de l'instruction, la succession des différents circuits (unités et/ou registres) de l'unité de traitement 140 à mettre en ceuvre pour exécuter l'instruction et génère les signaux de commande adéquats afin de réaliser le pipeline souhaité. En particulier, le contrôleur active le banc de registres 142 par un signal de commande. Dans une deuxième étape, appelée "DÉCODE", le banc de registres 142 décode les troisième ADRI et quatrième champs de l'instruction et met à disposition sur les bus d'opérandes 192, 194 d'une part un premier opérande dont l'adresse est décrite par le troisième champ ADRI, et d'autre part, soit un second opérande dont l'adresse est décrite par le quatrième groupe de bits, soit le rang d'un bit du premier opérande ou soit un nombre binaire, en fonction de l'opération envisagee. Dans une troisième étape, appelée "EXÉCUTE", l'unité arithmétique et logique 4 calcule le résultat de l'opération à exécuter ainsi que la valeur correspondante du registre d'état 148. Le résultat de l'opération ainsi la valeur du registre d'état 148 sont mis à disposition sur le bus de resultat 196 à la fin de troisième étape. Dans une quatrième étape, appelée "MEMORY ACCES", résultat et la valeur du registre d'état sont chargés dans l'unité d'accès mémoire 150. Enfin, dans une cinquième étape, appelée "WRITE BACK", le résultat est chargé dans le banc de registres et le contenu du registre d'état 148 est mise à jour. Le déroulement de l'exécution d'une instruction opération de transfert est similaire et est décrit en relation avec la figure 4C. Dans la première étape FETCH", le contrôleur 122 décode le premier champ 210 du code de l'instruction à exécuter pour déterminer la classe de l'instruction. Puis le contrôleur 122 determine, à partir de la classe de l'instruction, la succession des différents circuits (unités et/ou registres) de l'unité de traitement à mettre en oeuvre pour exécuter l'instruction et génère les signaux de commande adéquats afin de réaliser le pipeline souhaité. particulier, le contrôleur 122 active le banc registres 142 par un signal de commande. Dans la deuxième étape "DÉCODE", le banc registres 142 décode les troisième ADRI et quatrième champs de l'instruction et met à disposition sur les d opérandes 192, 194, d'une part un premier opérande dont l'adresse est décrite par le troisième champ ADRI, d'autre part, soit un second opérande dont l'adresse est décrite par le quatrième groupe de bits, soit le numéro d'un bit du premier opérande ou soit un nombre binaire, en fonction de l'opération envisagée. Dans la troisième étape "EXÉCUTE", l'unité de transfert 146 génère les signaux nécessaires à la commande du banc de registres 142, et/ou de la mémoire données 160 et/ou de l'unité d'entrées/sorties 180. Dans la quatrième étape "MEMORY ACCES", le (ou les mot (s) à transférer est (sont) chargé(s) dans l'unité d'accès mémoire 150. Enfin, dans la cinquième étape "WRITE BACK", le mot est chargé dans le banc de registres, dans la mémoire de données ou dans un registre de l'unité d'entrées /sorties 180. L 'exécution d'une instruction d'opération saut se déroule en trois étapes seulement (figure 4D). Dans la première étape "FETCH", le contrôleur 122 décode le premier champ 210 du code de l'instruction à exécuter pour déterminer la classe de l'instruction et génère les signaux de commande adéquats afin de réaliser le pipeline souhaité. En particulier, le contrôleur 122 active le banc registres 142 par un signal de commande. Dans la deuxième étape "DÉCODE", le banc de registres 142 décode le troisième champ de l'instruction et met à disposition sur les bus d'opérandes 192, 194, les opérandes nécessaires à la réalisation de l'opération de saut, qui peuvent etre des adresses ou bien des nombres binaires, selon l'instruction. Dans la troisième étape "EXÉCUTE", l'unité saut 126 génère les signaux nécessaires à la commande du contrôleur 120 et de la pile 128, notamment pour mémoriser d'adresse de saut dans le contrôleur et l'adresse de retour de saut dans la pile 128. De plus, afin d'obtenir fictivement un pipeline similaire (en cinq étapes) à celui créé pour les instructions des autres classes, l'unité de saut bloque également toute écriture de données pendant trois cycles d'horloge. Une instruction de saut est ainsi exécutée en cinq périodes du signal d'horloge CLK. processeur de la figure 2 n'est qu'un exemple de réalisation d'un processeur selon l'invention. D'autres processeurs peuvent être utilisés, sans sortir du cadre de 1 invention. En particulier, il tout à fait envisageable d'utiliser des processeurs ayant une architecture de type "non pipe line", qui utilisent entre autres une unité de commande comportant des circuits de taille réduite car comportant un nombre réduit de portes logiques. REVENDICATIONS 1. Processeur (60, 70, 100) pour -xécuter des instructions d'un programme objet mémorisé dans une mémoire de programme (50, 110) connectée au processeur (60, 70, 100), caractérisé en ce qu` comprend des paramètres prédéfinis choisis par l'utilisateur et en ce que le programme objet comprend des instructions d'un jeu d'instructions compréhensible par le processeur (60, 70, 100), le jeu d'instructions étant indépendant des paramètres prédéfinis du processeur (60, 100). 2. Processeur selon la revendication 1, caractérisé en ce que les paramètres prédéfinis du processeur comprennent notamment une taille prédefinie (N) de registre, la taille prédéfinie (N) étant le nombre de bits d'un registre du processeur. 3. Processeur selon l'une des revendications 1 à 2, caractérisé en ce que les paramètres prédéfinis du processeur comprennent également un nombre prédéfini (X) de registres, le nombre prédéfini (X) correspondant au nombre registres du processeur (60, 70, 100). 4. Processeur selon l'une des revendications 1 à 3, caractérisé en ce que les paramètres prédéfinis comprennent également - un nombre (Y) de registres coupleurs de périphériques, - nombre (Z) de registres dans une pile (128), et une taille (M) de registres de la pile (128), la taille etant le nombre de bits d'un registre, - taille (K) d'un mot de la mémoire de programme (50, 110), et une taille (L) d'un mot d'adresse de la memoire de programme (50, 110), 5. Processeur selon l'une des revendications 2 à 4, caractérisé en ce que le jeu d'instructions comprend une pluralité de codes d'instructions de même taille (K) répartis en une pluralité de classes d'opérations, chaque code étant divisé en une pluralité de champs (210, 220, 230, , ADRI, ADRj), les codes d'instructions d'une même classe d'opérations ayant la même pluralité de champs, les classes d'opérations comprenant une classe d'opérations de transfert comprenant des opérations de chargement d'un mot d'instruction de la mémoire de programme (50, 110) dans un ou des premiers registres (RI, RI+I) du processeur (60, 70, 100), et des opérations de mémorisation d'un nombre binaire (NB) dans le ou les premiers registres (RI, RI,-,), la pluralité de champs (2l0, 220, , ADRI) des codes d'instructions de la classe des opérations de transfert comprenant - un premier champ (210) caractérisant la classe des opérations de transfert, - un second champ (220) caractérisant l'opération effectuer, - un troisième champ (ADRI) contenant une première adresse pour désigner le ou les premiers registres (RI, RI,,) du processeur (60, 70, 100) destiné(s) à recevoir soit le mot d'instruction à charger, soit le nombre binaire (NB) à mémoriser, et - un quatrième champ (230) contenant soit une seconde adresse pour désigner un ou des seconds registres (Ri, Ri,,) contenant une adresse complète (ADRINST) de mémoire de programme (50, 110) à laquelle est situé le mot d'instruction à charger, soit un mot contenant des bits du nombre binaire (NB) à transférer dans le ou les premiers registres (RI, RI.,) . 6. Processeur selon la revendication 5, caractérise en ce que la classe d'opérations de transfert comprend une première et une seconde instructions (LDIL, LDIH) pour mémoriser, dans les premiers registres (RI, RI,,) , soit un mot contenant les bits de poids faible du nombre binaire (NB), soit un mot contenant les bits de poids fort du nombre binaire (NB), la seconde instruction (LDIH) étant utilisée si le nombre de bits du nombre binaire (NB) est strictement supérieur à taille prédéfinie (N) des premiers registres (R_, R-r=' . 7. Processeur selon l'une des revendi bons 5 ou 6, caractérisé en ce que l'adresse complète (ADRINSr) de la mémoire de programme (50, 110) à laquelle est situé le mot d'instruction à charger, est obtenue par juxtaposition du contenu des seconds registres (RJ, R"._) , le contenu de l'un des seconds registres (R@) correspondant aux bits de poids faible de l'adresse complète (ADRINST), et le contenu de l'autre des seconds registres (RJ+I) correspondant aux bits de poids fort de l'adresse complète (ADRINST). 8. Processeur selon l'une des revendications 5 à 7, caractérisé en ce qu'il comporte en outre une troisième instruction (LPM) pour charger le mot d'instruction de la mémoire de programme (50, 110) dans premiers registres (RI, RI+i) du processeur (60, 70, 100), les bits de poids faible du mot d'instruction étant chargé dans l'un des premiers registres (RI), les bits de poids fort du mot d'instruction étant chargés dans l'autre des premiers registres (RI,,). 9. Dispositif programmable (10) comprenant une mémoire utilisateur (20) comprenant des instructions d'un programme source écrit dans un langage compréhensible par l'utilisateur, et un circuit programmable (40) pour exécuter le programme source, le dispositif programmable (10) étant caractérisé en ce que le circuit programmable (40) comprend un processeur (60, 70) selon l'une des revendications 1 à 8, et une mémoire de programme (50) pour mémoriser des instructions d'un programme objet compréhensible par le processeur (60, 70), et le dispositif programmable (10) étant caractérisé en ce qu'il comprend en outre des moyens de codage (20) pour lire les instructions du programme source et écrire les instructions correspondantes du programme objet dans la mémoire de programme (50), le programme objet comprenant uniquement des instructions un ieu d'instructions compréhensible par le processeur ,;60, ?@'. connu des moyens de codage (30), l'er,caînement des instructions du programme objet dépendant des paramètres prédéfinis du processeur (60, 70), les moyens de codage (30) pouvant être utilisés avec des processeurs utilisant le même jeu d'instructions mais ayant des paramètres prédéfinis différents. 10. Système programmable comprenant plusieurs circuits programmables (40), caractérisé en ce que chaque circuit programmable (40) comprend un processeur (60, 70, selon l'une des revendications 1 à 8, et une mémoire de programme (50, 110) dans laquelle sont mémorisées des instructions à exécuter par le processeur (60, , 100), chaque processeur (60, 70, 100) utilisant un même jeu d'instructions et en ce que chaque processeur (60, 70, 100) comprend des paramètres prédéfinis différents, un des paramètres prédéfinis étant la taille prédéfinie (N) des registres du processeur (60, 70, 100), et un autre des paramètres prédéfinis étant le nombre prédéfini (X) de registres du processeur (60, 70, 100).