TITRE DE L'INVENTION
SYSTEME DE PROCESSEUR MODULAIRE
DOMAINE DE L'INVENTION
La présente invention est relative à un système de processeur modulaire. La présente invention concerne plus particulièrement un système de processeur modulaire à éléments configurables et intereliables.
ARRIERE-PLAN DE L'INVENTION
Les principales limites des processeurs actuels, du type microordinateurs ou grands ordinateurs, sont liées à leur architecture séquentielle. De fait, même quand ils visent à traiter des données de manière simultanée, ces systèmes actuels utilisent généralement des mots d'instructions qui donnent, de façon séquentielle, l'ordre à une ou plusieurs unités arithmétiques et logiques (ou « ALU » pour « Arithmetic and Logic Unit »), d'exécuter une ou plusieurs fonctions. D'une part, le nombre d'instructions contenues dans un mot dépend de la longueur du mot en bits. De plus, le nombre d'instructions contenues dans un mot est limité à une largeur de bus, soit 64, 128 ou 256 bits, y compris dans les cas des très longs mots d'instruction, dits « noyaux VLIW » (pour « Very Long Instruction Word »). Ainsi, les ordres sont donnés de façon séquentielle.
Finalement, de par leur architecture, les systèmes actuels se prêtent mal à la mise en place de procédés simultanés de complexités
variables, de bouclage différent, de caractère évolutif, de réseaux de calculs ou de logique floue notamment.
Il en résulte que les architectures actuelles ne permettent la mise en place d'ordres de traitements par séquences de programmes pour des procédés rapides et parallèles qu'à conditions que tous les éléments, tels que bus, mémoires, processeurs, etc., soient rapides.
Ainsi, en pratique, dans les processeurs disponibles, deux méthodes permettant d'implanter des fonctions simultanées, rapides, complexes ou en réseau par exemple, sont couramment utilisées. Une première méthode consiste à implanter une structure multitâche d'exécution de programmes, dans laquelle différents programmes partagent un même processeur pour effectuer des tâches différentes selon des priorités préétablies. Dans ce cas, l'inconvénient majeur est que les tâches ne sont pas réellement simultanées. De plus, une telle structure multitâche implique une charge de gestion supplémentaire de la part du processeur (on parle dans ce cas d'«overhead»), ce qui peut conduire à une diminution des performances de celui-ci. Il est clair qu'une telle approche séquentielle de transmission des commandes est en contradiction avec la nature du processus dans le cas où l'objectif est d'effectuer des opérations simultanées, qu'elles soient indépendantes, corrélées ou encore que l'objectif soit d'implanter des algorithmes complexes dans le cas d'équations complexes à niveaux.
Une seconde méthode consiste à implanter un système à processeurs multiples. Dans ce cas, plusieurs processeurs se partagent un environnement commun. De tels systèmes sont généralement plus performants que les systèmes précédents. Cependant, ils ont l'inconvénient de nécessiter davantage de composantes. De plus, étant donné que plusieurs processeurs partagent des connections et des bus communs, ces systèmes
sont limités dans leur fonctionnement aux capacités d'échange de données entre les processeurs, c'est à dire essentiellement à un échange à la fois.
De toute évidence, quelle que soit la solution sélectionnée, une telle approche séquentielle requiert de développer des processeurs de plus en plus rapides afin de compenser une architecture qui demeure déficiente et n'utilise pas les possibilités qu'offrent les processeurs dans leur pleine mesure. La vitesse d'horloge compense alors pour l'encodage séquentiel des opérations, parce que, fondamentalement, l'architecture est déficiente.
Dans le domaine du traitement de signaux sonores, un concept de cellules qui partagent temps et ressources pour réaliser une parallélisation sonore de type modulaire a été introduit récemment. Un tel concept ouvre la possibilité d'une capacité de traitement inaccessible aux processeurs séquentiels, de type microprocesseurs et DSP (pour « Digital Signal Processor») courants. Dans des systèmes de parallélisation de signaux sonores basés sur une architecture en cellules tels que décrits dans le brevet américain no. 6,137,044 soumis le 23 septembre 1999 et émis le 24 octobre 2000 notamment, les cellules sont dotées de fonctions destinées à la parallélisation sonore. Elles sont regroupées en «groupes de sorties de cellules», chaque regroupement constituant en l'occurrence un son spécifique. La paramétrisation des cellules et de leur fonctionnement comprend :
- l'établissement d'un mode respectif, tel un mode d'oscillateur sinusoïdal ou un mode d'un signal extérieur par exemple, la définition de paramètres de base de chaque cellule telles que : amplitude relative, fréquence relative, phase, fonction de filtrage, par exemple; et
- la définition de liens qui permettent d'introduire un signal externe dans une cellule ou de commander un ou plusieurs paramètres parmi des paramètres fixés de base par une autre cellule.
De plus, ces systèmes et méthodes de parallélisation sonore enseignent des moyens de regrouper les cellules sur des groupes, qui comportent également des paramètres absolus de fréquence et d'amplitude s'appliquant sur toutes les cellules d'un groupe donné, et des moyens d'assignation des groupes sur les sorties d'un circuit.
De telles configurations font en sorte que chaque groupe de cellules constitue un son généré à partir d'éléments que sont les cellules.
Il apparaît donc que des systèmes dotés d'une architecture modulaire et configurable, permettant un degré élevé de performances et de souplesse sont connus. Ils permettent de générer des signaux en utilisant des ressources, dénommées cellules, qui fonctionnent en partageant des éléments arithmétiques de manière à ce que chacune soit en mesure de générer un signal qui peut être combiné à un signal généré par une autre.
Néanmoins, l'architecture modulaire ainsi développée est clairement destinée à la parallélisation de signaux sonores. En particulier, les fonctions des cellules sont adaptées à la génération et au calcul en parallèle de fonctions sonores. De plus, les paramètres des cellules sont prédéfinis en fonction du contexte du traitement sonore en parallèle, et l'ensemble des opérations entre ces cellules est géré en conséquence. Par conséquent, il reste une grande place pour des méthodes et des systèmes permettant de résoudre les principales limitations processeurs existants et de généraliser un traitement parallèle à tout type de données et de signaux.
SOMMAIRE DE L'INVENTION
Plus spécifiquement, la présente invention propose un système de
processeur modulaire basé sur une architecture en cellules et permettant d'effectuer des traitements sur des données d'entrée afin d'obtenir des données de sortie, le système comprenant des moyens d'effectuer des opérations arithmétiques et logiques complexes, parallèles, distinctes et multiples en utilisant des ressources et une structure adaptée des cellules, les opérations arithmétiques et logiques étant effectuées distinctement sur les cellules de sorte que chaque cellule effectue des opérations qui lui sont destinées selon des besoins et une configuration déterminables, de manière indépendante et simultanée.
Selon un deuxième aspect de l'invention, il est prévu une méthode de traitement de données basée sur une architecture en cellules permettant un traitement parallèle de données fournies en entrée afin de produire des données de sortie, ladite méthode comprenant : - une configuration de fonctions arithmétiques et logiques sur différents niveaux à l'intérieur d'une cellule;
- une exécution des fonctions arithmétiques et logiques vers une fonction finale donnant un résultat unique de sorte qu'au choix et sur chaque cellule le résultat soit utilisé de manière spécifique; - un transfert du résultat de chaque cellule sur une matrice de résultats des cellules;
- une assignation sélective des cellules dans des groupes distincts et indépendants pour combiner les résultats respectifs des cellules;
- un transfert des résultats des groupes distincts et indépendants sur une matrice de résultats des groupes;
- une saisie des données à partir d'interfaces de données pour les accumuler dans une matrice d'entrées;
- une sélection d'une provenance des données sur les différentes fonctions
de chaque cellule;
- une corrélation d'au moins une action sur chaque entrée de donnée provenant de matrices à un niveau variable de manière à les interelier;
- une définition des fonctions appliquées sur les cellules selon une nature générale ou partiellement définie en fonction d'un mode de fonctionnement de chaque cellule;
- une attribution d'au moins une table à la sortie des fonctions de chaque cellule permettant une mémorisation en lecture ou en écriture;
- une application d'une séquence supplémentaire de fonctions arithmétiques, pouvant être choisies sur des lignes de code, au résultat de chaque cellule;
- une application des fonctions à l'intérieur de chaque groupe de sorte que les fonctions s'effectuent sur le résultat d'un groupe dont les résultats proviennent d'un ensemble sélectionné de cellules; - un transfert des sorties de groupes sur une matrice de sortie, sélectivement pour chaque groupe et progressivement sur au moins une sortie de la matrice de sortie;
- une sélection d'une provenance de chaque entrée de la matrice des entrées; - une sélection d'une destination de chaque sortie de la matrice des sorties; et
- une extension de traitement de sorte que les fonctions des cellules s'appliquent sur des niveaux multiples et qu'une inscription de valeurs sur ces données soit d'une provenance sélective.
Selon un troisième aspect, il est prévu un système de traitement de données basé sur une architecture en cellules comprenant : une unité de gestion;
une unité de traitement, l'unité de traitement établissant des paramètres définissant des caractéristiques de données, et appliquant les paramètres à des données de niveau zéro, afin d'engendrer des données de niveaux supérieurs; et une interface fonctionnelle, l'interface fonctionnelletransférant des données de ladite unité de gestion à l'unité de traitement; les paramètres étants inscrit selon une mise en fonction choisie dans le groupe comprenant mise en fonction vectorielle et mise en fonction directe.
D'autres objets, avantages et caractéristiques de la présente invention deviendront apparents à la lecture de la description non restrictive suivante de modes de réalisations spécifiques, donnée à titre d'illustration seulement en référence aux figures annexées.
BREVE DESCRIPTION DES FIGURES
Dans les dessins annexés :
La Figure 1 est un diagramme illustrant un circuit pour un processeur selon un mode de réalisation préférentiel de la présente invention;
Les Figures 2A et 2B représentent un schéma illustrant une interface d'échange de données entre des unités de gestion et de parallélisation, et de cadencement des opérations effectuées dans l'unité de parallélisation du circuit de la Figure 1 ;
Les Figures 3A et 3B représentent un schéma illustrant un circuit d'élaboration d'un paramètre déterminant une propriété de données
dans le circuit de la Figure 1 ;
Les Figures 4A à 4E sont un schéma illustrant comment cinq circuits d'élaboration d'un paramètre selon les Figures 3A et 3B peuvent être utilisés pour déterminer cinq paramètres fixant les propriétés de données à engendrer;
La Figure 5 est un schéma illustrant un circuit d'extension des fonctions de traitement des paramètres de la Figure 4;
La Figure 6 représente un schéma illustrant un circuit générateur de valeurs temporelles ou de sélection de données génériques permettant de désigner des données de niveau zéro, utilisés pour préparer des données de premier niveau;
Les Figures 7A et 7B représentent un schéma illustrant un circuit d'attribution de données de premier niveau à des circuits de l'unité de parallélisation du circuit de la Figure 1 ; Les Figures 8A et 8B représentent un schéma d'un circuit d'attribution de données de second niveau à un circuit monté juste en amont de la sortie de l'unité de parallélisation de la Figure 1 ;
La Figure 9 représente un schéma illustrant la sélection d'entrées sur des matrices de contrôle de paramètres du circuit de la Figure 8;
Les Figures 10A et 10B représentent un schéma illustrant comment des paramètres élaborés dans les circuits des Figures 3 et 4 peuvent être utilisés pour la production de données en fonction de plusieurs sources de données internes ou externes; Les Figures 11 A et 11 B représentent un schéma d'un circuit de sélection de modes de fonctionnement du circuit de la Figure 1 ;
La Figure 12 est un schéma illustrant un circuit générateur de données de premier niveau à partir de données de niveau zéro présentes à
l'intérieur même de l'unité de parallélisation du circuit de la Figure 1 ;
La Figure 13 est un schéma illustrant un autre circuit générateur de données de premier niveau à partir de données de niveau zéro également produites à l'intérieur même de l'unité de parallélisation du circuit de la Figure 1 ;
La Figure 14 est un schéma illustrant un circuit d'attribution sélective d'un groupe d'entrées externes utilisées en tant que sources de formation de données de premier niveau;
La Figure 15 est un schéma illustrant un circuit permettant le stockage de données de niveau zéro;
Les Figures 16A et 16B représentent un schéma d'un circuit d'analyse de données d'entrée afin de déterminer des paramètres caractérisant des données de premier niveau élaborées à partir de données de niveau zéro ayant pour origine des données d'entrées externes; La Figure 17 est un schéma illustrant un circuit permettant en phase finale d'élaboration des données de premier niveau, de tenir compte de coefficients de filtrage ou d'autres fonctions;
Les Figures 18A et 18B représentent un schéma illustrant un i circuit de production de bornes temporelles utilisées au cours de l'élaboration de données de premier et de second niveaux;
La Figure 19 est un schéma illustrant un second circuit de production de bornes temporelles utilisées au cours de l'élaboration des données de premier et second niveaux ; et
Les Figures 20A à 20E composent un organigramme illustrant une méthode de traitement de données selon un second aspect de la présente invention.
DESCRIPTION DETAILLEE DE L'INVENTION
De façon générale, la présente invention propose un processeur modulaire destiné au traitement parallèle de données et/ou à la production de signaux.
D'une part, des données sont fournies en parallèle en entrée ou produites par des traitements parallèles de données issues d'un processeur hôte, de type ordinateur, micro contrôleur ou un processeur de signal numérique DSP par exemple, ou encore produites au besoin et sous toutes combinaisons possibles par des interfaces d'entrées de données.
D'autre part, les données issues des traitements parallèles peuvent être transférées, au besoin et en toute combinaison, au processeur hôte ou à des interfaces de sorties. Plus précisément, la présente invention fournit un circuit comportant un certain nombre de cellules et de groupes. Chaque cellule est associée à un groupe. Les groupes sont des fonctions qui compilent les résultats des cellules qui leur sont destinés.
La configuration opérationnelle des cellules est mise en place par l'intermédiaire de registres. Les registres sont essentiellement des espaces mémoires des cellules. La configuration d'une cellule consiste à commander à ladite cellule de calculer une équation algébrique dans le cadre d'une structure où des valeurs sont introduites dans la cellule et appliquées à des fonctions de différents niveaux. De tels niveaux sont équivalents à des niveaux de parenthèses.
Chaque fonction de chaque cellule est distinctement configurable, par exemple l'addition, la soustraction, la multiplication, la division, les opérations logiques, les opérations décisionnelles. Ainsi,
l'architecture des cellules peut être adaptée en fonction de la manière dont elle est implantée.
Typiquement, une cellule comporte au moins trois niveaux de calculs. A la sortie du dernier niveau de calcul, il est possible d'introduire des fonctions non linéaires ou des calculs indexés, au moyen de tables qui sont parties intégrantes de la structure des cellules.
Les données de telles tables sont dynamiquement accessibles par les cellules et / ou par un processeur externe pour un adressage indexé ou en tables de conversion du type conversion linéaire/ logarithmique suivant une séquence logarithmique par exemple.
De plus, la sortie de chaque cellule peut être additionnée aux sorties d'autres cellules sélectionnées et identifiées à un groupe de cellules spécifique. Un tel groupe peut affecter le résultat de la compilation des cellules à une fonction commune. Le résultat final du groupe est inséré dans une « matrice de groupes » qui contient la sortie de chaque groupe du circuit.
Il est à noter que le résultat d'un groupe est transféré suivant des poids définis par d'autres registres sur un certain nombre d'accumulateurs qui cumulent les groupes qui leur sont destinés. Ces accumulateurs sont contenus dans une « matrice des sorties ». Les sorties peuvent être lues par un processeur externe ou transféré vers des « interfaces de sorties ».
Par ailleurs, le résultat des cellules est introduit dans une « matrice de cellules » qui contient la sortie de chaque cellule du circuit.
Enfin, une quatrième matrice, dite «matrice des entrées » contient les registres d'accumulateurs de données d'entrée qui peuvent être inscrites par un processeur externe ou provenir des interfaces d'entrées.
Les opérations arithmétiques et logiques des cellules sont effectuées sur des données dont la provenance peut être dynamiquement déterminée, soit qu'elles sont directement inscrites par un processeur externe,
par la sortie d'une autre cellule de la matrice de cellules, par la sortie d'un groupe de la matrice de groupes ou par une entrée de la matrice des entrées.
Maintenant, en référence aux Figures 1 à 19, un circuit 10 d'un processeur modulaire selon un mode de réalisation de la présente invention va être décrit.
De façon traditionnelle dans le domaine des systèmes de parallélisation de signal notamment, le système de la présente invention utilise le circuit 10 illustré à la Figure 1 et comprenant généralement : - une unité de gestion 12;
- une interface fonctionnelle 14; et
- une unité de parallélisation 16.
L'unité de gestion 12 peut être un ordinateur personnel doté d'un programme de gestion de données fonctionnant avec tout type de système d'exploitation usuel comme Windows™, par exemple.
Alternativement, l'unité de gestion 12 peut être tout système permettant d'exécuter un programme dédié à la gestion d'un processeur modulaire suivant la présente invention et peut se présenter sous diverses formes, tels que microcontrôleur, automate, système d'acquisition, DSP, ou tout autre système géré par microprocesseur y compris un processeur interne au circuit
10. En fait l'unité de gestion 12 est un système classique, qui selon la présente invention, peut multiplier ses performances et ses possibilités de traitement.
L'unité de gestion 10 contient une interface usager notamment, qui décide des calculs à effectuer en séquences ou en parallèle.
L'unité de gestion 12 est connectée à l'interface fonctionnelle 14. L'interface fonctionnelle 14 assure, d'une part, l'échange de données entre l'unité de gestion 12 et l'unité de parallélisation 16 et d'autre part, le
cadencement des opérations de traitement mises en œuvre dans l'unité de parallélisation 16.
Ultimement, l'unité de parallélisation 16 délivre un signal sur une sortie 18. Comme l'illustre la Figure 1, l'unité de parallélisation 16 comprend un certain nombre de blocs fonctionnels matériels qui seront décrits en détails par la suite en références aux figures correspondantes, les figures concernées par les blocs étant indiquées dans chacun d'entre eux.
Brièvement décrite, l'unité de parallélisation 16 comprend un premier bloc fonctionnel 17 d'établissement de paramètres définissant des caractéristiques de données à produire et un second bloc fonctionnel 19 de mise en oeuvre de ces paramètres en les appliquant à des données dites de niveau zéro afin d'engendrer des données dites de niveaux supérieurs. Il est à noter que, pour faciliter la compréhension, chaque bloc est identifié par un mot-clé. L'unité de traitement 16 suivant la présente invention agit comme un co-processeur parallèle. Il est à noter que l'unité de traitement 16 suivant la présente invention pourrait être intégrée dans une même entité (circuit intégré par exemple) que l'unité de gestion 12, dans le cas d'une unité de gestion 12 sous forme de processeur.
(La Figure 2 (2A et 2B) est un schéma de l'interface 14 destinée à l'échange de données entre l'unité de gestion 12 et l'unité de parallélisation 16, et au cadencement des opérations effectuées dans l'unité de parallélisation 16. L'interface 14 comprend un oscillateur à quartz 20 qui fournit un signal d'horloge de base CLK à un compteur binaire 22 à trois bits. Trois sorties Q0, Q1 , Q2 de ce compteur 22 constituent un signal CCAL décrit ultérieurement.
Les trois sorties Q0, Q1, Q2 du compteur 22 sont appliquées à un décodeur binaire 24, qui décode un signal à trois bits sur huit sorties C0 à C7. Les sorties C0 à C3 du décodeur 24 cadencent quatre sous-périodes P2_AMP, P2_S1, P2_S2 et P2-FLT d'une période P1 qui est cadencée par l'intermédiaire d'une porte ET 26. Les sorties C4 et C5 du décodeur 24 cadencent respectivement des sous-périodes P3 et P4, tandis que les sorties C6 et C7 sont appliquées à une porte ET 28 par l'intermédiaire de laquelle est cadencée une sous-période PCPU.
Il est à noter que la période P1 , et les sous-périodes P3, P4 et P2_AMP, P2_S1 , P2_S2 et P2-FLT ont toutes la même durée, mais que les intervalles de temps pendant lesquelles elles déterminent une activité dans l'unité de parallélisation 16 sont fixés par la durée de leur niveau bas en logique négative, dite «impulsion active », les impulsions actives étant déphasées les une par rapport aux autres dans les diverses sous-périodes. Les personnes versées dans l'art apprécieront qu'en logique positive, un circuit équivalent comprend des portes complémentaires, par exemple des portes ET deviendraient des portes OU.
La sortie C0 du décodeur 24 est également appliquée à une entrée RESET d'une bascule S-R 30. La bascule 30 reçoit sur une autre entrée SET un signal CS_CPU, en provenance de l'unité de gestion 12, qui représente des demandes d'accès de l'unité de gestion 12. Plus précisément, la bascule 30 fournit périodiquement un signal ATTENTE_CPU sur une borne 32 pour mettre l'unité de gestion 12 en attente lors d'une requête exprimée par le signal CS_CPU, pendant la durée cumulée des impulsions actives des sous-périodes P2_AMP, P2_S1 , P2_S2, P2-FLT, P3 et P4. Durant les impulsions actives du signal PCPU, l'unité de gestion 12 est autorisée à transmettre des adresses, des données et des commandes de lecture/écriture à l'unité de parallélisation 16 et peut également recevoir des données.
L'oscillateur à quartz 20 est par ailleurs relié à un compteur binaire 34 à n bits, l'unité de parallélisation 16 comprenant un nombre « N » de cellules égal à 2π. Le compteur 34, ainsi synchronisé sur le signal d'horloge CLK de l'oscillateur à quartz 20, est commandé par le signal C7 du décodeur 24 qui le fait progresser d'une unité au terme de chaque période P1. Une sortie Qn du compteur 34 délivre une adresse de base de cellule ADR_Base à un bloc de sélection d'adresses de cellules 100 pour déterminer une succession d'adresses de base des cellules, par exemple 0 à 191, dans le cas de 192 emplacements de mémoires dans une cellule. Comme évoqué plus haut, l'unité de gestion 12 peut communiquer via l'interface 14 avec l'unité de parallélisation 16 pendant la sous-période PCPU. A cet effet, la sortie PCPU de la porte 28 et le signal de requête d'accès CS_CPU sont appliquées à une porte OU 36 dont une sortie peut activer un signal de sélection SEL du bloc 100. Dans le cas où l'état logique du signal SEL détermine que la sortie QN du compteur 34 constitue l'adresse d'une cellule active à un instant considéré, la sortie du compteur 34 passe de l'entrée ADR_Base du bloc de sélection d'adresses de cellules 100 vers une sortie partagée AC (adresse instantanée de la cellule) de ce bloc. Dans le cas où l'état logique du signal SEL détermine que le programme de gestion de l'unité de gestion 12 fournit cette adresse, le signal SEL active deux blocs d'interface 130 et 140 décrits plus loin (voir Figure 2B).
Il est rappelé que les cellules de l'unité de parallélisation 16 sont matérialisées ponctuellement au cours de séquences de traitement successives dites PCAL permettant la préparation de données de premier niveau, un signal PCAL impliquant le signal P1 combiné aux données P3 et P4, à l'exclusion du signal PCPU ou «cycle d'accès » qui détermine dans chaque période P1 le temps d'accès autorisé pour l'unité de gestion 12. Ces séquences de traitement PCAL composent ensemble un cycle P durant lequel
sont successivement effectués des traitements de données de premier niveau pour toutes les cellules, le cycle P étant exécuté à la fréquence d'échantillonnage du système, qui correspond à la fréquence d'un signal ACT. Il sera rappelé par la suite que la matérialisation des cellules est réalisée en stockant, de façon temporaire et cyclique, des données produites de cellules à des emplacements de mémoire d'une pluralité de mémoires affectées à des fonctions de traitement et / ou de commande, et prévues matériellement dans l'unité de parallélisation 16. Chacune de ces mémoires comporte autant d'emplacements qu'il y a de cellules dans l'unité de parallélisation 16. Pour autant que cela soit nécessaire, de l'information sous forme d'adresses ou de données peut aussi sélectivement être décrite aux emplacements de mémoires concernant les cellules respectives à partir de l'unité de gestion 12 pendant la sous-période PCPU suivant chaque séquence PCAL. Les mémoires peuvent être chargées en écriture, lues et déchargées de diverses façons, notamment par l'unité de gestion 12. En d'autres termes, à la fin de chaque séquence PCAL et dans l'intervalle de temps entre deux impulsions du signal ACT, l'unité de parallélisation 16 matérialise des cellules par les contenus des emplacements de mémoires dédiées à cette tâche, chaque cellule étant composée des emplacements de même adresse de ces mémoires. Le contenu de chaque cellule peut varier ou non d'une séquence à l'autre, en fonction de caractéristiques des données de premier niveau à produire.
Du fait de cette façon de procéder, une grande partie de l'unité de parallélisation 16 peut être utilisée en partage de temps, ce qui économise une grande quantité de composants.
Les blocs 130 et 140 de la Figure 2B permettent de transférer des adresses, des données et des commandes de lecture/écriture à l'unité de
parallélisation 16 lorsqu'ils sont activés par un signal de sélection SEL issu de la porte 36 et que le signal de sortie ATTENTE_CPU de la bascule 30 est désactivé.
Le bloc de contrôle d'accès 120 peut recevoir de l'unité de gestion 12 des adresses ADR_CPU sur une entrée 120a, un signal de commande de lecture RD_CPU sur une entrée 120b, un signal de commande d'écriture WR_CPU sur une entrée 120c et un signal de sélection CS_CPU sur une entrée 120d. Une sortie 120e du bloc de contrôle d'accès 120 permet de transférer des valeurs d'adresse vers le bloc de sélection d'adresses de cellules 100 (Figure 2A), le bloc de sélection de lecture/écriture de mémoires 140 (Figure 2B) et vers d'autres éléments de l'unité de parallélisation 16, ce qui sera décrit par la suite en relation à un signal ACPU notamment.
Le bloc de contrôle de données 130 (Figure 2B) comporte une entrée 130a de réception de données en provenance de l'unité de gestion 12, une entrée 130b de commande de lecture, une entrée 130c de commande d'écriture et une sortie 130e de transfert de données DCPU vers divers éléments de l'unité de parallélisation 16 comme décrit plus loin. Il est à noter que le transfert des données peut être bidirectionnel.
Le bloc de sélection de lecture/écriture de mémoires 140 comprend une entrée 140a de réception d'adresses de lecture/écriture en provenance du bloc 120, une entrée 140b de commande de lecture recevant le signal RD_CPU, une entrée 140c de commande d'écriture recevant le signal WR_CPU et une entrée 140d de sélection raccordée à la sortie de la porte 36. Ce bloc 140 comprend également des sorties 140e et 140f connectées respectivement à un bus de commande de lecture 150a et à un bus de commande d'écriture 150b, ces deux bus véhiculant sélectivement des données respectives de commande de lecture/écriture vers toutes les mémoires de l'unité de parallélisation 16. Les identifications de ces données
sont indiquées in extenso sur la Figure 2B et se retrouvent aux endroits correspondants des autres figures encore à décrire.
La sortie de la porte 26 est combinée logiquement avec la sortie du bloc de sélection d'adresse 100 dans une porte NON-ET 160 fournissant le signal de sortie ACT qui est la fréquence d'échantillonnage de l'unité de parallélisation 16.
Ainsi, l'interface 14 du système de traitement de données 10 assure d'une part le cadencement des opérations (horloge de type oscillateur à quartz 20) et d'autre part la gestion des demandes d'accès (signalé par CS_CPU) de l'unité de gestion 12 vers l'unité de parallélisation 16 (par le signal Attente_CPU). Elle transmet en sortie, vers l'unité de parallélisation 16, une fréquence d'échantillonnage (signal ACT), des données de commande de lecture/écriture des mémoires (signal ACPU), une adresse instantanée de cellule (signal AC), des données DCPU. En outre, selon une caractéristique de la présente invention, l'interface 14 du système de traitement 10 inclut une capacité de sélections de mémoires d'accès, notamment des entrées WIN et WINMOD (voir Figure 14), permettant de choisir entre des données d'interface externe ou provenant de l'unité de gestion 12. Comme illustré sur de la Figure 1 , le premier bloc fonctionnel
17 comprend un bloc de valeurs de paramètres 200, un bloc de distribution de paramètres 250, un bloc 300 et un bloc de bornes temporelles 180, sous forme d'un circuit d'élaboration de valeurs de paramètres désigné globalement par la référence 200.
La Figure 3 (3A et 3B) représente un schéma d'un circuit d'élaboration d'un paramètre déterminant une propriété de données. En particulier, la Figure 3 illustre le bloc de valeurs de paramètres 200, qui
transmet en sortie un signal ADR_CTR (Figure 3B) décrit plus loin, et échange de façon bidirectionnelle des données DCPU (avec l'interface fonctionnelle 14) et PU (avec l'unité de gestion 12).
Dans l'ensemble des schémas de l'unité de parallélisation 16 illustrés par la suite, chaque mémoire est symbolisée par un carré auquel sont associées des entrées et /ou sorties de données, et par un rectangle plus petit auquel sont associées une entrée d'adresse, une entrée de commande d'écriture et / ou une entrée de commande de lecture.
La Figure 3 représente donc un circuit 200 d'élaboration d'un paramètre qui se répète, selon une caractéristique de la présente invention, cinq fois dans l'unité de parallélisation 16 (voir Figure 4). Autrement dit, au cours de chaque séquence PCAL, plus précisément durant les cinq impulsions actives des sous-périodes P2_AMP, P2_S1 , P2_S2, P2-FLT, et P2_PM, chaque circuit 200, incorporé respectivement dans les blocs 200A à 200E (voir Figure 4), forme l'un parmi cinq paramètres incluant Amplitude, Secondaire- 1 /Fréquence, Secondaire-2/Phase, Filtre et Maître-Multifonctions, décrits plus loin, pouvant être affectés au traitement des données de premier niveau. La valeur de paramètre correspondant VAL, désigné respectivement par AMP, FRE, PHA, FLT et VPM, obtenue après l'impulsion active des sous-périodes P2_AMP, P2_S1 , P2_S2, P2-FLT, et P2_PM respectives apparaît sur une borne de sortie 210 des circuits 200A à 200E. Les caractéristiques correspondantes d'amplitude, de fréquence, de phase, de filtrage et autres telles que largeur d'impulsion variable, interpolation, par exemple, correspondant au paramètre multifonctions qui est essentiellement une fonction d'usage multiple ou non prédéterminé, des données successives de premier niveau calculées pour chaque cellule sont ainsi déterminées.
Ceci étant, chaque circuit 200A à 200E d'élaboration de paramètres comprend une mémoire M1 (voir Figure 3A) dans laquelle peut
être stockée, selon le cas, la valeur de base du paramètre Amplitude, Secondaire-1 /Fréquence, Secondaire-2/Phase, Filtre et Maître-Multifonctions des cellules. Ces valeurs sont reçues de l'unité de gestion 12 par l'intermédiaire de la sortie 130e du bloc 130 (voir Figure 2) pendant les impulsions actives de la sous-période PCPU durant lesquelles l'unité de gestion 12 est autorisée à accéder à l'unité de parallélisation 16.
Une mémoire M2 est destinée à mémoriser des valeurs d'incréments d'un paramètre au cas ou celui-ci doit subir un changement pour l'élaboration d'une donnée par rapport à un même paramètre d'une donnée élaborée précédemment. Ces valeurs d'incrément sont également fournies par l'unité de gestion 12 via la sortie 130e du bloc 130.
Les sorties des mémoires 1 et M2 sont appliquées à un circuit 220 permettant d'introduire une interpolation automatique entre différentes valeurs de paramètre successives pour atténuer des sauts de valeur, le cas échéant.
Ainsi, la sortie de la mémoire M2 est appliquée à une première unité arithmétique U1 chargée d'effectuer sur des données A et B qui lui sont appliquées l'opération B^A, la donnée B étant fournie par une unité arithmétique U2 qui effectue sur ses données d'entrée A et B l'opération A-B. La donnée A de cette unité arithmétique U2 est chaque fois la sortie de la différence entre la nouvelle valeur stockée dans la mémoire M1 du paramètre et sa valeur courante stockée dans une mémoire M3 (Figure 3B).
Le résultat du calcul effectué dans l'unité arithmétique U1 est appliqué, en tant que donnée A, à une autre arithmétique U3 qui effectue sur ses données d'entrée l'opération A+B. La donnée d'entrée B de cette unité arithmétique U3 provient de la mémoire M3 qui est destinée à mémoriser temporairement et pour chaque cellule la valeur de paramètre calculée pendant la séquence PCALP précédente, inscrite au cours de l'impulsion
active de la sous-période P4 de la séquence PCAL précédente. La mémoire M3 est donc connectée par son entrée de données à la sortie 210 (VAL) et par sa sortie de données à l'entrée de donnée B de l'unité arithmétique U2.
D'autres modifications peuvent être apportées à un paramètre dans le circuit respectif 200A à 200E, en particulier dans la partie du circuit qui est représentée à la Figure 3B.
Cette partie de circuit comprend une mémoire M5 commandée en lecture/écriture par des données R3 et W3 en ce qui concerne l'amplitude, la fréquence, la phase ou le filtrage ou le paramètre multifonctions. La mémoire M5 permet d'identifier, le cas échéant, par l'intermédiaire des circuits de la Figure 10, une source de données (provenant d'une autre cellule, d'entrée ou de groupe selon le décodage du circuit de Figure 10) qui produit une donnée DATA_CTR qui est une donnée dans le traitement effectué dans le circuit de la Figure 3B pour l'un des blocs 200A à 200E. La sortie de la mémoire M5 est connectée à un tampon d'adresse 230 dont les valeurs d'entrée peuvent passer en sortie sous la commande de la sous-période P2.
Une mémoire M4 est commandée en lecture/écriture par des données R4 et W4. Sa sortie est appliquée à une unité arithmétique U4 chargée d'effectuer sur des données A et B l'opération B - A, la donnée B étant fournie par DATA_CTR. Le résultat du calcul effectué dans l'unité arithmétique U4 est envoyé sur une bascule bistable 240 activée en écriture sur l'impulsion active de la sous-période P2 concernée, en fonction de la nature du paramètre à modifier. La sortie de la bascule bistable 240 est connectée à une entrée A d'une unité arithmétique U5 qui permet d'effectuer sélectivement un calcul combinatoire tel qu'un calcul de somme ou un calcul de produit sur des valeurs appliquées à ses entrées. L'entrée B de cette unité arithmétique U5 est raccordée à une bascule bistable 260 dont une entrée,
activée au cours de l'impulsion active de la sous-période P3, est raccordée à une sortie d'un multiplexeur 265. Le multiplexeur 265 reçoit la sortie de la mémoire M2 et le résultat du calcul effectué par l'unité arithmétique U3.
Selon une caractéristique de la présente invention, le multiplexeur 265 permet une sélection de mise en fonction vectorielle (A) ou directe (B) d'un paramètre. Ainsi, pour l'ensemble des paramètres identifiés en Figure 5 et décrits en détail en Figure 4, lesdits paramètres, qui habituellement dans l'art sont inscrits sous forme vectorielle par un paramètre de base pour une valeur à atteindre et par une valeur d'incrément pour déterminer l'incrément entre chaque pas d'horloge afin d'atteindre cette valeur, sont ici inscrits selon une forme vectorielle additionnée d'un mode direct sélectionné par le multiplexeur 265 de la Figure 3A. Plus précisément, dans le cas où la transmission du paramètre est directement activée, la valeur est simplement inscrite dans le paramètre de base sans incrémentation.
De plus, selon une caractéristique de la présente invention, un paramètre d'atténuation est introduit dont le but est d'atténuer une valeur de contrôle adressée par une mémoire M5. Il s'agit d'un paramètre inscrit qui applique à une valeur de contrôle reçue une multiplication en virgule fixe (1 ou moins, signée pour inverser si négative) : à 1 la valeur de contrôle n'est pas atténuée; à 0,5 elle est divisée par 2; et à -0.5 elle est inversée et divisée par 2. Plus précisément, si les valeurs sont ainsi encodées (virgules fixes +/- 1.00), la fonction B/A est en réalité B*A (multiplication) où A est en virgule fixe dont le maximum absolu est 1 , alors que si les valeurs de A sont entières, comme par exemple +/- 4095, la fonction B/A est effectivement un diviseur. Comme il sera expliqué plus loin, la sélection de l'opération ainsi effectuée par l'unité arithmétique U5 est commandée par l'état binaire d'un signal de commande de mode MODE FCT.
La Figure 4 (4A-4E) illustre des détails de la Figure 3, en particulier comment cinq circuits d'élaboration d'un paramètre peuvent être utilisés pour déterminer cinq paramètres fixant des caractéristiques de données. Tel qu'évoqués précédemment, sont représentés des jeux de données d'entrée et de sortie, respectivement produits par les cinq circuits 200A à 200E. Suivant une caractéristique de la présente invention, les paramètres sont modifiés par rapport aux systèmes de parallélisation de signal connus dans l'art. Ainsi, un bloc 200A est affecté au paramètre Amplitude, un bloc 200B est affecté au paramètre Secondaire-1/Fréquence, un bloc 200C est affecté au paramètre Secondaire-2/Phase, un bloc 200D est affecté au paramètre Filtre et un bloc 200E est affecté au paramètre multifonctions dit "Maître-Multifonctions". Chaque bloc 200A, 200B, 200C, 200D et 200E est cadencé sélectivement pendant chaque séquence PCAL au moment ou l'impulsion active de la sous-période correspondante est produite et reçoit des données d'écriture et de lecture R1/W1 , R2/W2 et R3/W3 et R4/W4 en provenance respectivement des bus de commande 150a et 150b de la Figure 2. Chaque bloc reçoit également dès données d'entrée sur le bus DCPU et le signal AC de numéro ou d'adresse de cellule (voir Figure 2). Les sorties respectives AMP, FRE, PHA, FLT et VPM de chaque bloc sont traitées dans d'autres parties de l'unité de parallélisation 16 comme décrit ci-après. H en est de même des données transitant sur les bornes restantes des blocs 200A à 200E.
Chaque donnée de premier niveau, correspondant pendant une séquence PCAL à l'une des cellules est formée à partir d'une donnée de niveau zéro x désignée spécifiquement et extraite de l'une des sources de données de niveau zéro. Une telle donnée de niveau zéro doit généralement être affectée d'une valeur temporelle pour pouvoir contribuer à l'élaboration
d'une donnée de premier niveau. Alternativement, suivant une caractéristique de la présente invention, une donnée peut être sélectivement produite sur une base non temporelle comme il sera présenté plus loin en relation à la Figure 6 (multiplexeur 350). Ainsi, suivant une caractéristique de la présente invention les paramètres utilisés comprennent (Figures 4 et 5) :
• les paramètres Amplitude et Filtres avec inclusion d'une sélection de valeur directe et atténuation de la valeur de contrôle;
• le paramètre multifonctions, qui est un paramètre non attribué s'appliquant pour des opérations arithmétiques directes sur les paramètres, et pouvant, comme les autres paramètres, recevoir des valeurs de contrôles. Ce paramètre peut être combiné avec les paramètres Secondaire-1/Fréquence et Secondaire-2/Phase, pour extension de traitement (Figure 5); « le paramètre Secondaire-1 /Fréquence avec inclusion d'une sélection de valeur directe et atténuation de la valeur de contrôle. Ce paramètre est attribué aux fréquences en mode temporel. Cette attribution peut lui être retirée pour combinaison avec les paramètres multifonctions et Secondaire-2/Phase, pour extension de traitement (Figure 5); et
• le paramètre Secondaire-2/Phase avec inclusion d'une sélection de valeur directe et atténuation de la valeur de contrôle. Ce paramètre est normalement attribué aux phases en mode temporel. Cette attribution peut lui être retirée pour combinaison avec les paramètres Multifonctions et Secondaire-1 /Fréquence, pour extension de traitement (Figure 5).
L'extension de traitement selon une caractéristique de la présente
invention fournit un signal IN_FN. Elle est permise par un circuit impliquant le nouveau paramètre multifonctions (Figures 3 et 4) dans la combinaison des fonctions de paramètres. La Figure 5 illustre un tel circuit d'extension des fonctions de traitement sur les paramètres de la Figure 4. Sont combinés dans l'ordre les paramètres Secondaire-1 /Fréquence et Secondaire-2/Phase par l'intermédiaire d'unités arithmétiques U501 à U502 dont les sorties respectives sont dirigées vers un multiplexeur M503, afin d'effectuer ensuite une combinaison avec le paramètre multifonctions par l'intermédiaire d'unités arithmétiques U504 à U506, les opérations étant sélectionnées pour être en toute combinaison addition, multiplication ou division de façon à fournie en sortir d'un multiplexeur M507 le signal IN_FN.
Par ailleurs, l'unité de parallélisation 16 comprend un bloc de valeurs 300, représenté à la Figure 6, permettant d'engendrer une valeur binaire, appelée «valeur de désignation de donnée de niveau zéro » ou plus brièvement «valeur de désignation » POS_X. La Figure 6 illustre un circuit générateur de valeurs temporelles ou non temporelles (directes) permettant de désigner des données de niveau zéro, utilisés pour préparer des données de premier niveau. POS-X est fournie en base temporelle sur une entrée SEL du multiplexeur 350 en fonction de données produites par un additionneur U60. POX est essentiellement fonction de deux autres valeurs binaires dont la première est la valeur FRE élaborée par le bloc 200B de la Figure 4. Cette première valeur binaire représente un intervalle de temps exprimant le rapport entre la fréquence d'une cellule quelconque par rapport à une fréquence de base dont elle est un facteur multiplicatif. Pour calculer les valeurs de désignation de POS_X en mode temporel une autre valeur d'intervalle temporel ou intervalle de base (signal ENS_FRE) est requise. Cet intervalle
dépend de la valeur de la fréquence fondamentale de la donnée à générer d'une part, et du nombre de points d'échantillonnage utilisés d'autre part. Il est à noter que ceci a lieu en mode temporel seulement, car en mode non temporel (direct), comme expliqué plus bas, le multiplexeur 350 n'utilise plus les données obtenues sur U50 et dans ce cas la valeur FRE est une donnée non définie qui entre dans le calcul de IN_FN alors sélectionné par 350 et obtenu par le circuit de la figure 5.
Dans le circuit 300, les valeurs de l'intervalle relatif FRE et de l'intervalle de base ENS_FRE sont appliquées aux entrées respectives A et B d'une unité arithmétique U40 dans laquelle elles sont multipliées. La partie entière du résultat de la multiplication effectuée par l'unité arithmétique U40 est appliquée à une entrée A d'une seconde unité arithmétique U50 effectuant la somme des valeurs appliquées à ses entrées A et B, tandis que la partie décimale du résultat de la multiplication est appliquée à un diviseur de taux binaire 310 dans lequel elle est décomptée par le signal ACT. Il est à noter que les valeurs en question sont en réalité exprimées en numération binaire.
La sortie de l'unité arithmétique U50 est appliquée à une entrée SEL
B d'un multiplexeur 320 qui, sous la commande d'un signal SC_ETR, permet de sélectionner, d'une séquence PCAL à l'autre, le type de croissance de la valeur POS_X en fonction de plusieurs cas d'utilisation des sources de données de niveau zéro, comme il sera expliqué plus loin. Dans l'un de ces cas, la croissance de la valeur POS_X est constante (0001 par exemple) et appliquée sur une connexion 330. La sortie du multiplexeur 320 est reliée à un bloc 340 qui, sous la commande d'un signal SGN, affecte un signe positif ou négatif à une valeur extraite d'une mémoire M50.
Il est à noter que si le signal négatif est sélectionné, la séquence de données générée peut être reproduite à l'envers dans le temps, car la valeur POS_X est alors décrémentée, d'une période P1 à l'autre, de la quantité
déterminée dans le circuit, au lieu d'être incrémentée.
La mémoire M50, dite d'accumulation, chargée par l'impulsion de la sous-période P4, stocke pour toutes les cellules la valeur POS_X antérieure. La sortie du bloc 340 de détermination de signe est appliquée à une entrée B d'une unité arithmétique U60 dont une entrée A est reliée à la sortie de la mémoire M50. Cette unité arithmétique U60 fait la somme de ses données d'entrée. Suivant une caractéristique de la présente invention, le résultat est envoyé dans un multiplexeur 350 qui permet, sous la commande d'un signal MOD_PX, d'adresser en sortie soit la sortie de l'unité arithmétique U60, soit la valeur IN_FN décrite en relation avec la Figure 5. Le multiplexeur 350 permet la sélection d'un mode opératoire sur une fonction en mode temporel ou sur une donnée.
Ainsi, dans le cas non temporel, dit direct, il n'y a pas d'incrémentation de POS_X selon des valeurs de fréquence. POS_X dépend de valeurs indépendantes IN_FN résultantes de traitements (voir Figure 5 et précédemment sur les Figures 3 et 4), puis POS_X détermine une fonction (voir table des Figures 18 et 19) ou des fonctions (Figures 11 à 13) comme en mode temporel. La sortie du multiplexeur 350 est connectée à un multiplexeur 355, qui permet, sous la commande d'un signal CD NIT, d'adresser à sa sortie soit la sortie du multiplexeur 350, soit une valeur d'initialisation INIT_X, encore à décrire, à partir de laquelle la valeur POS_X va être incrémentée. La valeur de INIT_X peut être égale à zéro dans certain cas, lorsque le mode d'opération de la cellule utilise un générateur, c'est à dire si soit si SC_ECH et SC_ETR sont inactifs, comme expliqué plus bas en relation à la Figure 18A (tampon 196). La sortie du multiplexeur 355 est connectée à une bascule bistable de synchronisation 360 dans laquelle la valeur est écrite par l'impulsion active de la sous-période P3.
La sortie de la bascule 360 est raccordée, d'une part, à l'entrée de
données de la mémoire M50, et d'autre part, en tant que donnée B, à une entrée d'une unité arithmétique U70 qui reçoit sur une autre entrée la valeur PHA provenant du circuit d'élaboration de paramètre 200 (bloc 200C de la Figure 4). Le résultat du calcul effectué dans l'unité arithmétique U70 (somme de ses données d'entrée A et B) est la valeur POS_X, sortie du bloc 300.
Il a été évoqué plus haut que l'unité de parallélisation 16 matérialise en partage de temps un nombre N de cellules dans lesquelles sont élaborées des valeurs de données de premier niveau à partir de valeurs de données de niveau zéro affectées de paramètres d'amplitude, de fréquence, de phase et de filtrage prédéterminés par exemple, alors que le paramètre multifonctions agit sur la production de IN_FN en se combinant avec FRE et PHA (voir Figure 5).
Il est rappelé que l'unité de parallélisation 16 présente également des moyens pour matérialiser en partage de temps un nombre m de groupes de cellules qui, comme ces dernières, sont représentés par des valeurs stockées à des emplacements de mémoire d'une pluralité de mémoires. Ainsi, selon une caractéristique de la présente invention, chaque groupe transporte un résultat de calcul effectué par les cellules qui en font partie, un groupe assurant le parallélisme des niveaux 0 (cellules) et la pluralité des groupes assurant un second niveau de parallélisme, les mémoires assurant l'accès à ces différents résultats.
Dans un même ordre d'idées, les données de second niveau traitées dans les divers circuits peuvent à leur tour être réparties sur un jeu de q sorties par un cumul approprié des données de second niveau pour former des données de troisième niveau constituant collectivement les sorties de l'unité de parallélisation 16 de la Figure 1.
Ainsi, selon une caractéristique de la présente invention, un circuit de génération de l'axe x (Figure 6) permet d'introduire au choix la donnée POS_X
sur un axe x selon une démarche temporelle (récursive ou non-résursive, récursive désignant une démarche où un calcul est effectué par évolution sur des valeurs de séquences précédentes de traitement), ou non-temporelle dite directe. Dans le mode temporel, comme il est connu dans l'art, POS_X évolue de manière incrémentale suivant les fréquences (FRE, ENS_FRE) et phases (PHA). Dans le mode direct, la valeur IN_FN qui est calculée en sortie de l'extension de traitement (Figure 5) est directement appliquée sur POS_X sans processus récursif ou sans évolution sur des valeurs des séquences précédentes de traitement. Ces mécanismes sont mis en œuvre par des composants standards illustrés sur la Figure 7. En particulier, la Figure 7 (7A et 7B) illustre un circuit 400 d'attribution de données de premier niveau à des circuits de l'unité de parallélisation 16 du système 10. Le circuit 400 permet d'affecter des cellules prédéterminées à un groupe prédéterminé de la pluralité de groupes de l'unité de parallélisation 16.
A un instant déterminé par le cadencement du signal ACT, la valeur d'une donnée de second niveau d'un groupe sélectionné pour cet instant est représenté par un signal ACCJΞNS (en haut à droite sur la Figure 7A), et constitue une sortie du circuit d'attribution 400. Cette valeur se trouve ponctuellement à une adresse correspondant à ce groupe d'une mémoire d'accumulateur M6 adressée par un signal AACCJΞNS et dont l'entrée de données est raccordée à la sortie d'une unité arithmétique U9 chargée d'effectuer la multiplication de ses entrées A et B. L'écriture dans la mémoire M6 est commandée par l'intermédiaire de l'impulsion active de la sous-période P4. Celle-ci lui parvient à travers une porte OU 41 recevant également un signal C_ENS désignant la dernière cellule dont la donnée de premier niveau qui vient d'être calculée doit, pour une attribution donnée, être incorporée à la valeur de donnée de premier niveau devant être fournie par ce groupe.
L'unité arithmétique U9 reçoit sur son entrée A des données de sortie stockées dans une bascule bistable 42 qui reçoit ces données en entrée à partir d'une unité arithmétique U10. L'unité arithmétique U10 effectue la somme des valeurs qui lui sont appliquées sur ses entrées A et B. L'écriture des données dans la bascule 42 se fait pendant l'impulsion active de la sous- période P3. La sortie de la bascule 42 est également raccordée à une mémoire d'accumulation intermédiaire M7 dans laquelle des données peuvent être inscrites pendant l'impulsion active de la sous-période P4. En sortie de la mémoire M7, ces données sont appliquées à une entrée B de l'unité arithmétique U10. Celle-ci reçoit sur une entrée A la valeur accumulée ACC_CEL de la cellule courante soumise à une porte ET 52 avec un bit C_SCEL provenant en tant que bit de poids le plus fort d'une mémoire M9 à 192 emplacements, à titre d'exemple, ou à autant d'emplacements que de cellules (256 emplacements ou 1024 par exemple). La porte ET 52 permet d'additionner la valeur de donnée d'une cellule courante, si le bit C_SCEL est à « 1 ». Dans le cas contraire, la valeur n'est pas additionnée sur le groupe. Ainsi, l'entrée A de l'unité arithmétique U9 reçoit une valeur constituée par la somme de toutes les valeurs accumulées ACC_CEL des cellules attribuées à un groupe donné, somme qui apparaît à la sortie de la bascule 42. En outre, l'unité arithmétique U9 reçoit sur son entrée B une valeur d'amplitude provenant d'une mémoire M8 à 64 emplacements, par exemple pour 64 groupes soit 64 valeurs d'amplitudes de groupes, dans laquelle sont stockées des valeurs d'amplitude qui peuvent y être inscrites par l'unité de gestion 12 sous la commande d'un signal d'écriture W_ENS_AMP (Figures 2 et 7). La valeur d'amplitude peut être lue dans la mémoire M8 sous la commande du signal R_ENS_AMPL pour ajuster la valeur calculée d'amplitude du groupe courant considéré.
L'entrée de données de la mémoire M9 est connectée au bloc 130 de
la Figure 2 pour recevoir de l'unité de gestion 12 des valeurs d'adresses spécifiant pour chacune des cellules à quel groupe cette cellule va appartenir pour participer à la production d'une donnée de niveau deux. L'écriture de ces valeurs d'adresse dans cette mémoire M9 se fait aux adresses correspondant respectivement aux cellules concernées. L'écriture et la lecture de la mémoire M9 sont réalisées sous la commande de données R_ENS_CEL et W_ENS_CEL respectivement. La même valeur détermine l'adresse de la mémoire M7 qui accumule ces données sous la commande de l'impulsion active de la sous-période P4. Chaque valeur d'adresse écrite dans la mémoire M9 est assortie d'un bit d'identification.
L'écriture des données d'amplitude des groupes dans la mémoire M8 peut se faire à des adresses pouvant provenir soit de la mémoire M9 (A_ENS), soit directement du bloc 100 de la Figure 2. La sélection de l'adresse est effectuée par l'intermédiaire d'un multiplexeur 43. L'adresse AC passe dans ce multiplexeur 43 lorsque l'un ou l'autre des données W_ENS_CEL ou R_ENS_CEL est à zéro. Dans le cas contraire, le signal A_ENS, est transmis.
Le circuit d'attribution 400 comprend également une partie de mise en phase des cellules et des groupes et de déclenchement d'un groupe sélectionné, commandée de façon non synchrone par un signal W_DEC provenant du bloc 140 de la Figure 2 (voir Figure 7B). Pour cela, le signal W_DEC commande l'écriture de l'adresse du groupe à mettre en phase dans une bascule bistable 44 recevant cette adresse de l'unité de gestion 12. Le signal W_DEC est synchronisé sur la fréquence ACT par l'intermédiaire d'une bascule 45, de trois bascules bistables 46, 47 et 48, et d'une porte NON-ET 49.
La sortie Q barre (/Q)de la bascule 46 fournit un signal ACTJNIT qui permet d'activer un comparateur 50 destiné à comparer deux valeurs
d'adresse, à savoir celle provenant de la mémoire M9 et celle qui est délivrée par la bascule 44. En cas d'égalité des deux valeurs d'adresse, un signal ÇJNIT d'initialisation de cellule est délivré. Ce signal est utilisé notamment dans le circuit 300 d'incréments temporels de la Figure 6 pour le multiplexeur 350.
Le circuit d'attribution 400 de la Figure 7 permet également de fournir le signal ENS_FRE utilisé dans le circuit 300 de la Figure 6. Un multiplexeur 52 permet d'envoyer sélectivement à une mémoire M10 les valeurs d'adresse A_ENS ou les valeurs d'adresse AC en fonction de l'état des données d'écriture/lecture W_ENS_CEL et R_ENS_CEL fournies par le bloc 140 de la Figure 2 pour inscrire dans cette mémoire la valeur ENS_FRE provenant de l'unité de gestion 12 à l'adresse du groupe courant devant travailler avec cette valeur d'intervalle.
La Figure 8 (8A-8B) illustre un circuit 600 d'attribution de données de second niveau à un circuit monté juste en amont de la sortie de l'unité de parallélisation. Selon une caractéristique de la présente invention, le circuit 600, compris dans le bloc 19 de l'unité de parallélisation 16 (voir Figure 1), permet de regrouper sélectivement des données de second niveau sur des sorties 0.0 à q.7 pour générer des données de troisième niveau qui, dans l'exemple décrit, sont les données de sortie 18 de l'unité de parallélisation 16 (voir Figure 1). Il y a huit sorties dans l'exemple. Elles sont traitées dans le circuit représenté à la Figure 9.
Comme représenté plus loin à la Figure 11 , dans un espace à trois dimensions les sorties 0.0 à 0.7 sont les huit coins d'un cube. Une mémoire M11 permet de répartir un poids entre quatre coins de gauche et de droite, une mémoire M12 permet répartir un poids entre quatre coins supérieurs et inférieurs et une mémoire M13 permet répartir un poids entre quatre coins en avant et en arrière. Les traitements sont effectués séquentiellement par des
données SOE X, SOE Z et SOE Y. Les valeurs sortant d'un multiplicateur 411 sont les huit valeurs relatives de ACC_ENS sur chacun des coins selon les poids établis par les mémoires respectives. Les huit valeurs sont transférées sur les sorties suivant une sélection déterminée par une mémoire M14 et sauvegardées par le circuit de la Figure 9 au moyen des mémoires représentées.
En référence à la Figure 3, il a été dit précédemment que les valeurs de paramètres utilisées pour l'élaboration des données de premier niveau peuvent être modifiées notamment par des actions sur les cellules provenant soit de l'intérieur soit de l'extérieur de l'unité de parallélisation 16. Autrement dit, il est possible de considérer que chaque donnée de premier niveau peut être calculée en agissant sur une cellule donnée à partir de différentes sources. La sélection d'une telle source est réalisée à partir de l'unité de gestion
12 qui charge à cet effet la mémoire M4 (voir Figure 3). Les valeurs de sélection de source stockées pour les cellules respectives dans cette mémoire M4 sont transférées sur une sortie du tampon 230 activée sur l'impulsion active de la sous-période P2, sortie à laquelle apparaissent des valeurs de commande de sélection de source ADR_CTR au moment où elles doivent respectivement être disponibles pour opérer la sélection d'une modification de valeur de paramètre pour la cellule courante.
La Figure 10 illustre davantage de détails sur le bloc de distribution 250 qui reçoit le signal ADR_CTR en provenance du tampon d'adresse 230. La
Figure 10 illustre comment les paramètres élaborés dans les circuits des
Figures 3 et 4 peuvent être utilisés pour influencer la production des données en fonction de plusieurs sources de données de calcul, internes ou externes.
Dans l'exemple décrit ici, une source de modification de valeur de paramètre d'une cellule peut être constituée sélectivement soit par une autre cellule, soit par un groupe, soit encore par une entrée extérieure à l'unité de parallélisation 16 selon le cas (signal de détection de paramètre). Il est à noter que le terme «entrée » désigne ici un ensemble de blocs destiné à adapter des données pour traitement dans l'unité de parallélisation 16.
Le bloc de source ou d'entrée 250, dit de distribution des paramètres, dans l'unité de parallélisation 16 (voir Figure 1), comprend une première logique de sélection 250a dont le signal de commande est formé par les bits 1 à 5 de poids le plus fort des valeurs ADR_CTR mémorisées dans la mémoire M5 de la Figure 3. Ces bits de poids le plus fort permettent de transmettre de l'entrée vers la sortie de la logique de sélection 250a, et ce de façon sélective pour chaque cellule, l'une parmi quatre valeurs de modification de donnée qui sont respectivement les valeurs ACC_CEL, ACC ΞNS, et ACC_DET et IN_CEL engendrées à partir de données de premier niveau (cellule) ou de second niveau (groupe), d'un détecteur sur l'entrée du signal (d'amplitude, de fréquence ou de bande) et d'une entrée de signal, comme il sera détaillé plus loin.
Le signal de sortie ainsi sélectionné est appelé DATA_CTR et peut être utilisé en tant que valeur de modification de valeur de paramètre pendant le traitement ultérieur d'une donnée de premier niveau d'une cellule quelconque.
Les bits de la valeur ADR_CTR sont également appliqués à une seconde logique de sélection 250b qui permet de répartir les sources de valeurs de modification selon quatre cas : sources d'autres cellules (mémoires accumulation), sources de groupes (mémoires d'accumulation), sources d'entrées en provenance d'interface et sources de détecteurs.
Le premier de ces cas concerne l'accumulation de d'entrées destinées
à des cellules dans une mémoire M130 d'accumulation de cellules à l'aide d'une adresse AACC_CEL (voir Figure 11), en provenance d'un multiplexeur 250-1. L'adresse a normalement la valeur AC; durant le sous-période P1 , elle a la valeur des bits de poids forts de la valeur ADR_CT lorsqu'elle détermine une valeur entre 0 et 191 dans le cas de 192 cellules par exemple. Il est à noter que le circuit de la Figure 10 s'applique dans le cas de 192 cellules, et que le décodage différerait pour un autre nombre de cellules. Les données ACC_CEL sur DATA_CTR sont alors activées par un tampon BX1 de la logique 250a.
Le second cas concerne la mémoire M6 d'accumulation de groupes de la Figure 7 qui reçoit l'adresse AACCJΞNS par un multiplexeur 250-2 de la logique 250b. Cette adresse est normalement la valeur A_ENS, mais durant le sous-période P1 , elle a la valeur ADR_CTR, lorsque les bits de poids fort de la valeur ADR_CTR sont situés entre 192 et 207 car le décodage des bits adr(4..8) donne 192, avec ADR_CTR(0..3) donne 192 à 192+15 puisque seuls les groupes 0 à 15 peuvent, dans l'exemple, être dirigés vers des entrées de cellules même s'il y a 64 groupes. De fait, le circuit de la Figure 10 illustre le principe de décoder ADR_CTR pour diriger sélectivement différents éléments. Un homme du métier saura adapter l'organisation du décodage selon la Figure 10 en fonction de besoins particuliers. Les données ACC_ENS sur DATA_CTR sont alors activées par un tampon BX6 de la logique 250a.
Le troisième cas concerne la sélection d'entrées par la valeur AACCJN fournie par une porte 250-3 de la logique 250b de la Figure 10. Ainsi, selon une caractéristique de la présente invention, la source d'entrée de données peut sélectivement provenir d'interfaces externes ou être directement adressées par un CPU externe, ce circuit étant décrit plus loin en Figure 14. Les données IN_CEL sur DAT_CTR sont alors activées par un tampon BX2
de la logique 250a.
Le quatrième cas concerne les entrées fournies par des détecteurs d'entrées ACC_DET illustrés en Figure 16. Elles sont activées sur DAT_CTR respectivement pour la détection de niveau (Figure 16A- B10) par un tampon BX3 de la logique 250a, pour la détection de fondamentale (Figurel 6A - B11 ) par un tampon BX4 de la logique 250a, pour la détection de bandes (Figure 16B - B15) par un tampon BX5 de la logique 250a.
Présentement, dans les processeurs disponibles, les sorties de données sont sélectionnées de manière absolue à partir des valeurs de ACC_ENS (soit la valeur de chaque groupe dans la matrice de groupes), selon qu'un groupe est distribué sur l'une ou l'autre des sorties et combiné aux autres groupes également distribués sur les mêmes sorties ou d'autres sorties. Les valeurs sur les différents axes sont VXA-B, VZA-B, VYA-B et l'attribution sur des axes est calculée de façon séquentielle sur des multiplicateurs, ou bien un caractère de type parallélisme est introduit en utilisant autant de multiplicateurs, contrairement au circuit des multiplexeurs de la Figure 9. Les multiplicateurs représentés à la Figure 8A sont partagés sur les 8 sorties. Ainsi, pour obtenir un parallélisme complet, les calculs sur les 8 sorties cadencés par SOEX, .. ,SOEZ peuvent être effectués par 24 multiplicateurs pour 3 axes sur 8 sorties, au lieu de calculer séquenciellement les 8 sorties.
Selon une caractéristique de la présente invention, il est permis une distribution graduelle, qui permet d'assigner sur des niveaux spécifiques les sorties ACC_ENS de chaque groupe. En effet, l'assignation est déterminée sur trois axes (ou plus au besoin), c'est à dire pour huit sorties dans une section donnée. Dans une assignation sur trois axes (ou huit sorties) par exemple, par analogie à l'espace, X (par les valeurs VXA-B adressées par W_SX) détermine une distribution Gauche-Droite, Z (par les valeurs VZA-B
adressées par W_SZ) détermine une distribution Avant-Arrière et Y (par les valeurs VYA-B adressées par W_SY) détermine une distribution Haut-Bas. Dans le cas où les huit sorties forment les arrêtes d'un cube, comme décrit plus haut en relation avec la Figure 8, une distribution spatiale graduelle est obtenue sur les trois axes. Il est entendu qu'une telle fonction peut être généralisée (quatre axes, etc.).
Ainsi, la Figure 9, qui illustre un circuit de sélection des entrées sur les blocs de contrôle de paramètres de la Figure 8, montre une combinaison des groupes sur une section de sortie donnée, sur les huit (ou seize ou plus) sorties. De plus les sorties sont regroupées en sections de huit (ou seize, ou plus), la valeur dans une mémoire M14 adressée par W_SN déterminant la section sur laquelle est transféré chaque groupe. Un multiplexeur 900 choisit la section si une seule section doit être utilisée. Si plusieurs sections peuvent être utilisées sur un groupe donné, le multiplexeur 900 est retiré, la valeur adressée par W_SN est alors un bitmap. Le circuit représenté à la Figure 9 mémorise des données produites en Figure 8, ce qui est nécessaire étant donnée la séquence SOEX, SOEZ, SOEY. Les valeurs successives sur 8 sorties de sections calculées séquentiellement par un circuit commun en Figures 8 peuvent ainsi être utilisées sur des registres distincts, soit les différentes bascules commandées par les signaux SEL_S0 .. SEL_S7 respectifs.
Selon une caractéristique de la présente invention, l'attribution des données reçues sur les entrées (Figures 10 et 14) est généralisée de manière à ce que les entrées soient transférées sur les contrôles de paramètres sélectivement, de la même manière qu'une sortie de cellule peut contrôler un paramètre choisi d'une autre cellule.
La Figure 11 (1 A et 11B) illustre un circuit 70 de sélection de modes,
compris dans le bloc 19 de l'unité de parallélisation 16 (voir Figure 1). De fait, le traitement des données de premier niveau dans les cellules peut être effectué selon un certain nombre de modes de fonctionnement et également en fonction de données de sortie établies par l'un quelconque d'un certain nombre de blocs d'entrée. Ceux-ci à leur tour peuvent établir leurs propres données de sortie à partir de sources proprement dites qui peuvent être internes et / ou externes à l'unité de parallélisation 16.
La détermination du choix des modes et des blocs d'entrée est faite sous la commande de l'unité de gestion 12 qui peut à cet effet charger une mémoire M120 dite de configuration avec des données apparaissant, le cas échéant, sur la sortie 130e du bloc 130 de l'interface 14 (voir Figure 2). Ces données représentent des valeurs de détermination qui sont stockées respectivement pour chaque cellule aux emplacements de la mémoire M120 où elles peuvent être écrites ou lues sous la commande des données d'écriture / lecture W_MOD et R_MOD provenant du bloc 140 (voir Figure 2). Les bits de ces valeurs de détermination correspondent aux différentes configurations que peut adopter l'unité de parallélisation 16.
Ainsi les trois bits de poids le moins fort MOD_SC0 à MOD 3C2 sont appliqués à un bloc de sélection 71 qui selon les valeurs de ces bits peut activer huit modes de fonctionnement mis en œuvre respectivement dans quatre blocs d'entrée 72 à 74, le bloc d'entrée 74 contenant les éléments de la Figures 15 (échantillonneur) et ceux de la Figure 14 (Entrées Temps réel), qui forment des données de niveau zéro.
Le bloc d'entrée 72 permet de mettre en œuvre un mode de fonctionnement dans lequel l'unité de parallélisation 16 utilise des générateurs de forme d'onde intégrés. Le bloc 72 sera plus loin en référence à la Figure
12 (données d'activation SC_SIN, SC_CAR, SC_TRI, SC_RMP, SC_RMN).
Le bloc d'entrée 73 permet de mettre en œuvre un mode de
fonctionnement dans lequel l'unité de parallélisation 16 utilise son propre générateur de bruit. Le bloc 73 sera décrit plus loin en référence à la Figure 13.
Le bloc d'entrée 74 permet de mettre en œuvre un mode de fonctionnement dans lequel l'unité de parallélisation 16 utilise des données préalablement engendrées et mémorisées (signal SC_ECH) ou des données utilisées en temps réel (signal SC_ETR) pouvant provenir de l'extérieur de l'unité de parallélisation 16. Ces deux modes seront examinés en détail plus loin en relation avec les Figures 14 et 15. Les données engendrées respectivement dans les blocs 72, 73 et 74 apparaissent sur un bus 75 selon un mode de fonctionnement sélectionné, le signal transitant sur ce bus 75 étant appelé CCYC. Ce signal CCYC est appliqué à un bloc de filtrage 76 dont la structure est illustrée à la Figure 17. Le bloc de filtrage 76 fournit des données affectées de caractéristiques de filtrage prédéterminées, son signal de sortie étant désignés par CFLT. Chaque échantillon du signal CFLT est appliqué à une entrée A d'une unité arithmétique U120 dans laquelle sa valeur est multipliée par la valeur de paramètre d'amplitude courante AMP appliquée à une entrée B de l'unité arithmétique U120. Le résultat de la multiplication est écrit dans une mémoire d'accumulation M 130, à une adresse déterminée par la valeur d'adresse AACC_CEL fournie par la logique de sélection 250b (voir Figure 10), sous la commande de l'impulsion active de la sous-période P4. La mémoire M130 est à écriture pour les données accumulées de chaque cellule, ces données pouvant être lues par AACC_CEL si une autre cellule requiert de recevoir la valeur d'une tierce cellule pour les calculs avec DATA_CTR, l'écriture à une adresse donnée chassant la valeur antérieure écrite vers la sortie. Le signal correspondant est représentatif des données successives de premier niveau et est appelé ACC_CEL en tant que sortie des cellules.
Les quatre bits de poids intermédiaire (MOD_F1_AMP à MOD_F1_S2) des valeurs lues dans la mémoire M 120 sont destinés à déterminer le mode de traitement sur les paramètres d'amplitude, de fréquence, de phase et de filtrage et sur le paramètre multifonctions, effectué dans l'unité arithmétique U5, respectivement de chacun des circuits 200A à 200E de la Figure 5. Leur valeur binaire place cette unité arithmétique U5 en mode d'addition ou en mode de multiplication.
Les trois bits MOD_CCY, MOD_DCY, MOD_ALT issus de la mémoire M120 déterminent sélectivement les modes de fonctionnement en continu, en répétition et en « aller-retour » de la génération des données de premier niveau issues des cellules. Ces bits sont appelés respectivement MOD_CCY, MOD_DCY et MOD_ALT. Ces données seront décrites plus loin en références aux Figures 18 et 19.
Selon une caractéristique de la présente invention, une partie de circuit illustré sur la Figure 11 permet l'ajout de bits de commande rendus nécessaire aux ajouts de fonctions, soit des modes de fonctionnement des extensions de traitements MOD_F2_S, MOD_F»_M (Figure 5), le bloc multifonctions MOD_F1_M (Figure 4E), les modes temporel et non-temporel (direct) MOD_PX, les sélections de modes vectoriels/directs MOD_VAL_AMP etc.
Le bloc d'entrées internes 72 est maintenant décrit en relation à la Figure 12, qui illustre un circuit générateur de données de premier niveau à partir de données de niveau zéro présentes à l'intérieur même de l'unité de parallélisation 16. Le bloc d'entrée 72 comprend quatre générateurs de fonction 81 à 84 destinés à produire des données de niveau zéro et auxquels est appliquée la valeur temporelle POS_X calculée dans le circuit 300 de la Figure 6. Ainsi, la plupart du temps, la valeur POS_X est en fait une valeur d'adresse.
Le premier générateur de fonction 81 est une table de sinus dans laquelle est mémorisé un nombre prédéterminé de valeurs de sinus, ce nombre étant égal à 2A, « A » étant égal à 10 dans l'exemple considéré. En fait, la table 81 est une mémoire à 2A emplacements qui peuvent être adressés par des valeurs d'adresse déterminées par les A bits les moins significatifs de la valeur de désignation POS_X. Par exemple si A = 10, ce sont les dix bits les moins significatifs de la valeur POS_X qui préparent chaque donnée de premier niveau, à savoir qu'ils déterminent la valeur de sinus à extraire de la table 81 , pour autant naturellement que ce mode de fonctionnement soit sélectionné. La valeur d'adresse formée par la valeur courante POS_X est appliquée à la table 81 par la ligne 85. L'accès à la table 81 est validé par le signal SC_SIN provenant de la logique de sélection 71 de la Figure 11. Il est à noter que la valeur de désignation POS_X peut comporter un nombre de bits bien plus grand que le nombre A, 32 par exemple, un même jeu d'adresses de la table 81 pouvant donc être parcouru successivement un très grand nombre de fois pendant l'incrémentation de la valeur POS_X jusqu'à sa valeur maximale au cours du fonctionnement de l'unité de parallélisation 16.
Le second générateur 82 est capable d'engendrer une forme d'onde carrée en déterminant des instants de changement de polarité des données de premier niveau à engendrer. Le générateur 82 est activé sur un signal SC_CAR provenant de la logique de sélection 71 de la Figure 11. Le changement est opéré en fonction du signe du bit le plus significatif des A bits de la valeur courante de POS_X qui est appliquée par la ligne 86. Dans ce cas, POS_X ne constitue donc pas une adresse de mémoire proprement dite.
Le troisième générateur 83 permet d'engendrer des fonctions de forme triangulaire. Il s'agit essentiellement d'une fonction arithmétique calculant une oscillation triangulaire sur la base de l'adresse sur A bits les moins significatifs
du signal POS_X en tant qu'adresses d'emplacements. Ces valeurs d'adresses lui sont appliquées par la ligne 87. Les adresses et les fonctions résultantes sont résumées à l'intérieur du bloc représentant le générateur 83. Ce dernier est activé sous la commande d'un signal SC_TRI provenant de la logique de sélection 71 de la Figure 1 .
Le quatrième générateur 84 est également une fonction arithmétique calculant une oscillation en rampe positive ou négative sur la base de l'adresse sur A bits les moins significatifs de la valeur POS_X. Une suite de valeurs ainsi stockées peut être parcourue en positif ou en négatif sous la commande de données SC_RMP et SCJ MN respectivement, provenant de la logique de sélection 71 de la Figure 11 et appliquée à une porte ET 88. La sortie de la porte 88 permet de valider l'activation du générateur 84, le niveau de signal SC_RMP déterminant le sens de la suite des valeurs calculées. La fonction engendrée par les adresses est également indiquée à l'intérieur du bloc représentant le générateur 84.
La Figure 13 décrit un autre circuit générateur de données de premier niveau à partir de données de niveau zéro également produites à l'intérieur même de l'unité de parallélisation 16. La Figure 13 illustre le détail du bloc d'entrée 73, générateur de bruit, de la Figure 11. Le bloc 73 sert à engendrer des données de premier niveau dans le cas ou ceux-ci doivent présenter des valeurs d'amplitude aléatoire. Ce bloc d'entrée 73 comprend un générateur de nombres aléatoires 90 fonctionnant en continu. A l'apparition d'une impulsion d'échantillonnage ACT, le nombre engendré à l'instant correspondant est transmis à une bascule bistable 91 dans laquelle il est écrit à l'apparition de l'impulsion P1 correspondante. Si la bascule 91 est en même temps activée par un signal de validation SC_BRT, la donnée correspondante est sortie de la bascule 91 et la valeur de l'a donnée courante est basée sur cette donnée.
En référence à la Figure 14, qui illustre un circuit destiné à attribuer sélectivement un groupe d'entrées externes au système, afin d'utiliser ces entrées en tant que sources de formation de données de premier niveau, une partie du bloc d'entrée 100 du bloc 19 de l'unité de parallélisation 16, à savoir un circuit d'attribution d'entrées, va maintenant être décrite. Il peut y avoir « e » entrées numérotées de 0 à e, seize entrées pouvant par exemple être prévues. Typiquement, chaque entrée est connectée en amont à un convertisseur analogique/numérique relié à son tour à une source de données analogiques (non représentés) produisant des données XIN_0 à XIN_e. Par ailleurs, selon une caractéristique de la présente invention, des données peuvent aussi être acheminées par l'unité de gestion 12 directement sur le bus de données DCPU dont l'adressage est décodé sur des lignes d'écritures WIN0 à WINm, par exemple des données XIN de transducteurs de courant, pression, vitesse, température, signal audio, signal électrique, positionnement, commutation, etc. , des données produites par l'unité de gestion 12, des commandes ou des données telles que des données de calculs complexes, commutation, etc. Comme une personne versée dans l'art saura l'apprécier, cette caractéristique de la présente invention permet au système d'étendre son champ d'applications à tous liens flexibles entre une unité de gestion 12 et des données recueillies permettant d'utiliser les ressources parallèles de la présente invention pour du calcul processeur, de l'asservissement, de commandes en robotique etc.
Les données sélectionnées des entrées 0 à e sont appelées IN_0 à IN_e. Selon une caractéristique de la présente invention, pour pouvoir les attribuer, le bloc d'entrée 100 comprend un décodeur 101 qui reçoit en entrée un code d'attribution d'entrée AACCJN en provenance du multiplexeur 250-3 de la Figure 10. Le décodeur 101 possède des sorties S0 à Se pouvant activer des tampons B0 à Be dont les entrées reçoivent respectivement les données
d'entrée IN_0 à IN_e. Par conséquent, en fonction de l'état du multiplexeur 250-3, une entrée externe pour une cellule donnée est appliquée à un bus 103 commun à tous les tampons B0 à Be. Le signal transitant sur le bus 103 est appelé 1N_CEL et il forme donc des données de niveau zéro. II est à noter que le signal IN_CEL, tout comme les données
ACC_CEL, ACC_ENS et ACCJDET, peuvent être utilisés comme valeur de paramètre sélectionné pour autant qu'il soit autorisé à passer à la sortie de la logique 250a de la Figure 10 sous la commande du signal ADR_CTR. En cas d'autorisation, la valeur IN_CEL est transférée comme signal DATA_CTR pour pouvoir être combinée de façon multiplicative ou additive avec la valeur courante d'un paramètre sous la commande du signal MODE_FCT.
Selon une caractéristique de la présente invention telle qu'illustrée sur la Figure 14, l'adresse AACCJN fournit l'adresse d'une entrée pour un contrôle donné. Ainsi, les entrées, dans le système suivant la présente invention, ont deux origines possibles, c'est à dire : soit par une interface externe (convertisseur AD ou autre type d'interface), soit par un accès direct 104 de l'unité de gestion 12 (adressée par WIN0 à WINm), chaque entrée choisissant sa source suivant un bitmap adressé par WINMOD dans une bascule 102 associée. Les bits correspondants de WM(0 à e), lorsqu'ils sont mis à la valeur '0' sélectionnent des données XIN correspondantes, alors que lorsqu'ils sont mis à la valeur '1', ils sélectionnent les données adressés par les bits WIN correspondants, par exemple sur 'e' et 'm' égaux à huit si la valeur hexadécimale 'OF' est écrite sur la bascule 102, c'est à dire si WM0 à WM3 sont aux valeurs '1 ' et WM4 à WM7 sont aux valeurs '0', entraînant des multiplexeurs M_0 à M_e à acheminer les données du CPU sur les lignes WIN0 à WIN4 sur les bus IN_0 à IN_3 et les données XIN_4 à XIN_7 sur les bus IN 4 à IN 7.
La Figure 15 illustre un circuit 74 de mémorisation de données de niveau zéro et de sélection de l'utilisation temporelle de ces données pour l'élaboration des données de premier niveau dans les cellules de l'unité de parallélisation 16, selon un mode ECH ou ETR.
Ce circuit comprend une mémoire de données M150 de grande capacité dans laquelle peut être stockée une grande quantité de données de niveau zéro. A titre d'exemple, cette mémoire M150 peut avoir 232 emplacements. Il est à noter toutefois que la mémoire M 150 peut avoir une capacité plus ou moins importante en fonction de la longueur d'un enregistrement de données successives désiré. Il est à noter également que la mémoire M150 est la seule du système présentant une mémoire importante si cela est requis. La gestion de l'adressage de cette mémoire par les cellules est accomplie par le circuit des Figures 18 et 19. Les adresses de la mémoire M 150 proviennent d'un multiplexeur 121, à 32 bits par exemple, comportant une entrée A à laquelle est appliqué le signal d'adresse ACPU (voir Figure 2) provenant de l'interface 14. Ces adresses sont donc déterminées par l'unité de gestion 12. Par ailleurs, l'entrée de données de la mémoire M 150 de données de niveau zéro est connectée au bloc 130 de l'interface 14 de sorte que l'unité de gestion 12 peut inscrire des données dans cette mémoire M150 à des adresses qu'elle aura elle- même fixées. Ce mode de stockage dans la mémoire M 150 permet d'utiliser en tant que données de niveau zéro par exemple, des données sélectionnées graphiquement par un utilisateur sur un écran de l'unité de gestion 12, le programme d'application de cette unité de gestion 12 étant naturellement conçu spécialement pour cette fonction. L'adresse ACPU est activée par des données W_ECH_CYC et R_ECH_CYC qui commandent respectivement l'écriture et la lecture par l'unité de gestion 12.
L'autre entrée B du multiplexeur 121 est connectée à la sortie du circuit 300 de la Figure 6 dont il reçoit ainsi la valeur courante POS_X utilisée ici également en tant qu'adresse, mais cette fois pour la mémoire M 150 (valeur courante de POS_X). Cette entrée B est sélectionnée lorsque les données W_ECH_CYC et R_ECH_CYC sont actives. En effet, ces données provenant du bloc 140 de l'interface 14 (voir Figure 2) sont appliquées toutes deux à une porte OU 122 dont une sortie est reliée à l'entrée d'activation du multiplexeur 121. Si l'autre de ces deux données est active, une entrée A du multiplexeur 121 est activée. Par ailleurs, la commande de lecture/écriture dans la mémoire M150 peut sélectivement être réalisée par ces même données W_ECH_CYC et R_ECH_CYC. A cet effet, le signal R_ECH_CYC est appliqué directement à l'entrée de commande de lecture de la mémoire M150, tandis que le signal W_ECH_CYC est appliqué à une porte ET 123 dont la sortie est connectée à l'entrée de commande d'écriture de la mémoire M 150.
L'autre entrée de la porte 123 est reliée à la sortie d'une porte OU 124. La porte 124 reçoit sur une première entrée le signal correspondant à l'impulsion active de la période P1, et sur une seconde entrée le signal S_ETR qui peut être activé lorsque la donnée dans la mémoire M120 de la Figure 11 désigne le mode de fonctionnement correspondant à la sortie du décodeur 71.
La sortie de la porte 124 est appliquée à une entrée d'activation d'un tampon 125. Selon une caractéristique de la présente invention, le tampon
125 reçoit sur son entrée un signal en provenance d'un multiplexeur 126. La sortie du tampon 125 est connectée à l'entrée de données de la mémoire M150.
Une sortie de la porte 124 est par ailleurs connectée à une entrée de la porte 123 pour permettre l'activation d'une entrée d'écriture de la mémoire M150.
Ainsi, l'écriture des données de niveau zéro peut être réalisée à des adresses qui dépendent soit de l'unité de gestion 12 par le signal ACPU sur activation par le signal W_ECH_CPU pour l'écriture d'un échantillon dans la mémoire M150, soit par l'incrémentation de 0001 de la valeur POS_X courante. Cette sélection se fait en fonction de l'état du signal de sélection SC_ETR permettant de placer le multiplexeur 320 dans l'une ou l'autre de ces configurations.
Par conséquent, l'adresse à laquelle les donnés sont inscrites dans la mémoire M150 dépend de l'adresse spécifiée par l'unité de gestion 12 ou de l'incrémentation par ' l' de la valeur POS_X sous la commande du signal SC_ETR. Cette dernière façon d'incrémenter correspondant en réalité à une reproduction en temps réel des données de niveau zéro (d'où le sigle ETR : Entrées en Temps Réel). Il est à noter que lorsque la mémoire M150 est dans le mode de fonctionnement en temps réel, les données inscrites sortent simultanément de la mémoire. Dans l'autre mode de fonctionnement, dit d'échantillonnage (ECH), les données peuvent demeurer dans la mémoire pendant un temps prédéterminé, la mémoire fonctionnant alors en quelque sorte comme un magnétophone.
Lorsque le signal SC-ETR est actif, la mémoire M150 est utilisée alternativement en écriture (P1) et en lecture pour obtenir la donnée de niveau zéro. Lorsque le signal SC_ECH (voir Figure 11) est actif, la mémoire M 150 n'est utilisée en écriture que pour inscrire une nouvelle donnée. La mémoire est normalement utilisée en lecture, la donnée étant lue de la même manière que pour la table de sinus du bloc 81 de la Figure 12, sauf que, dans le cas de la mémoire M 150, la donné peut être modifiée en tout temps et point par point et la dimension de la table des données contenue dans la mémoire M150 peut être prédéterminée ou choisie à volonté contrairement à la table de sinus du bloc 81.
La Figure 15 représente donc un accès sélectif aux tables. L'accès à une table demeure déterminé par POS_X. La valeur transférée à la mémoire M150 peut provenir de l'unité de gestion 12, comme il est connu à l'homme du métier. Selon une caractéristique de la présente invention, cette valeur peut provenir en second lieu d'une fonction IN_FN qui est combinatoire (dans un cas particulier et au plus simple d'une entrée, mais aussi d'un calcul complexe). Dans ce cas, le calcul, sauvegardé en mémoire et auto indexé, peut toujours aussi être lu par POS_X. Selon une caractéristique de la présente invention, cette valeur peut provenir en troisième lieu de la fonction finale de traitement CCYC qui donne une donnée à partir de POS_X (par exemple une valeur de courbe), comme connu dans les systèmes actuels, mais avec l'extension des fonctions de traitement sur les paramètres notamment. Par conséquent, la table peut servir en écriture de valeurs calculées non-temporelles (directes) ou temporelles IN_FN, ou temporelles CCYC, et en lecture de données transcrites par l'adresse POS_X qui provient de traitement à partir de paramètres suivant le mode temporel ou non- temporel (direct).
La Figure 16 (16A et 16B) illustre un circuit 140 d'analyse de données d'entrée permettant de déterminer des paramètres caractérisant des données de premier niveau élaborées à partir de données de niveau zéro ayant pour origine des données venant de l'extérieur. Le circuit 140 analyse des données d'entrée appliquées aux entrées IN_0 à IN_e de l'unité de parallélisation 16.
Un tel circuit est connu dans l'art, mais est rappelé afin de compléter la description du système selon un mode de réalisation de la présente invention.
Le circuit 140 est destiné à déceler dans les données d'entrée des propriétés d'amplitude, de fréquence et de répartition d'amplitude en fonction de la fréquence (bandes), ces propriétés, en étant converties en données
numériques, permettant d'ajuster les valeurs de paramètres avec lesquelles les cellules vont travailler pour former des données de premier niveau dans l'unité de parallélisation 16.
Les entrées du circuit de détection 140 sont connectées en parallèle aux entrées IN_0 à IN_e de l'unité de parallélisation 16 formant ensemble le signal E de la Figure 1. Par conséquent, les entrées des circuits d'attribution de la Figure 16 et de détection de la Figure 18 sont reliées respectivement en parallèle.
Le circuit de détection 140 comprend un premier groupe de détecteurs 141_0 à 141_e permettant de déterminer la valeur absolue des amplitudes des données numériques sonores qui sont appliquées par des convertisseurs analogiques/numériques (non représentés) sur les entrées respectives IN_0 à lN_e. Ils sont également conçus pour établir la valeur moyenne sur un nombre de données successives et pour fournir une valeur numérique correspondante à leur sortie.
Le circuit de détection 140 comprend un second groupe de détecteurs 142_0 à 142_e permettant de déterminer une valeur d'amplitude moyenne dans chacune d'une pluralité de p bandes de fréquences des suites de données appliquées respectivement sur les entrées IN_0 à IN_e. Ces valeurs d'amplitude moyenne apparaissent sous la forme d'un code numérique et pour chacune des p bandes sur une sortie déterminée 0 à p de chaque détecteur 142-0 à 142_e.
De plus, le circuit de détection 140 comprend un troisième groupe de détecteurs 143_0 à 143_e chargés de déterminer des propriétés temporelles des suites de données d'entrée et notamment les instants de passage par zéro, la moyenne de leur fréquence et une valeur de comptage. Ces données sont présentées sous forme de codes numériques sur chacune des sorties des détecteurs 143 0 à 143 e.
Toutes les valeurs numériques issues des détecteurs du circuit 140 peuvent sélectivement être placées dans une mémoire d'accumulation M160 à 192 emplacements, (où, comme précisé plus haut, ce nombre d'emplacements de 192 est un exemple pour destiner un détecteur à l'une ou l'autre des cellules, par exemple 192 cellules; si ce nombre d'emplacements est différent l'encodage de sélection des Figures 10 est modifié en conséquence) sous la commande de l'impulsion active de la sous-période P4. Les adresses auxquelles ces valeurs sont inscrites dans cette mémoire sont formées par les bits de poids faible du signal ADR_CTR appliqué au bloc distributeur 250 représenté sur les Figures 3 et 10. Les bits de poids fort de ce signal déterminent respectivement la position de plusieurs sélecteurs auxquels sont appliquées les valeurs de sortie des détecteurs. Ainsi, les sorties des détecteurs 141_O à 141_e sont appliqués à 'e' entrées d'un sélecteur 144 en fonction d'une série de bits d'amplitude du signal ADR_CTR. L'activation sélective de ces bits permet de passer une sortie déterminée des détecteurs 141_O à 141_e sur la sortie du sélecteur qui sera alors inscrite sous la commande de l'impulsion active de la sous-période P4 dans une partie correspondante de l'emplacement de cette mémoire désignée par la partie d'adresses concomitante du signal ADR_CTR. 11 en est de même pour d'autres groupes de bits, formant des bits de
«bandes» du signal ADR_CTR et permettant de positionner des sélecteurs 145_0 à 145_p de telle façon que sur leur sortie, on puisse regrouper des valeurs d'amplitude correspondant respectivement aux diverses bandes O à p sur lesquelles travaillent les détecteurs 142_O à 142_e. Les valeurs correspondant à ces bandes regroupées peuvent également être sélectionnées à l'aide d'un sélecteur 146 qui reçoit sur ses entrées DO à De les valeurs ainsi regroupées. La sortie du sélecteur 146 forme une partie du signal numérique envoyé dans les emplacements de la mémoire M160. Enfin,
un sélecteur 147 permet à l'aide des bits de fréquence du signal ADR_CTR d'attribuer les valeurs numériques de sortie des détecteurs 143_0 à 143_e aux divers emplacements de mémoire de la mémoire M 160.
Par conséquent, la mémoire M 160 peut contenir, pour chacune des cellules de l'unité de parallélisation 16, une valeur numérique dont les données mémorisées représentent les valeurs des paramètres d'amplitude et de fréquence des données numériques appliquées de l'extérieur à l'unité de parallélisation 16.
Comme représenté sur la Figure 3, les valeurs de paramètre ainsi relevées sur le signal d'entrée peuvent être utilisées pour intervenir dans le calcul des valeurs des paramètres (valeur VAL) pour autant qu'à l'instant considéré le signal ACC_DET soit autorisé à passer à la sortie du bloc 250a de la Figure 10 sous la commande du signal ADR_CTR provenant du CPU comme représenté sur la Figure 2. Le signal DATA_CTR peut être combiné de façon additive ou de façon multiplicative à la valeur courante d'un paramètre sous la commande du signal MODE_FCT qui est appliqué à l'unité arithmétique U4 de la Figure 3B, ce signal MODE_FCT étant lui-même sélectionné par l'intermédiaire du contenu de la mémoire M120 (Figure 11) chargée par l'unité de gestion 12. L'élaboration des données de premier niveau dans les cellules peut donc être déterminée par quatre jeux de valeurs de paramètre contenues respectivement dans les données ACC_CEL, ACC_ENS, ACC_DET et IN_CEL, comme cela ressort de la Figure 10.
La Figure 17 illustre un circuit permettant, en phase finale d'élaboration des données de premier niveau, de tenir compte de certains coefficients de filtrage, sous forme d'un circuit de filtrage 160, tel que connu dans l'art, permettant d'appliquer un filtrage approprié au signal CCYC comme représenté par le bloc 76 de la Figure 11.
Ce circuit de filtrage 160 comporte un séquenceur 161 des fonctions de filtrage. Le séquenceur 161 reçoit le signal CCAL de l'interface 14 (Figure 2) pour faire tourner un compteur de séquence, et le signal FLT du circuit de la Figure 3 en tant que paramètre déterminant le filtrage en sélectionnant, en bout de ligne, des coefficients de filtrage dans une mémoire M180, de façon à déterminer une adresse d'une table dans laquelle est contenue une courbe de coefficients de filtrage prédéterminée. Le séquenceur 161 détermine ainsi un code d'opération de filtrage apparaissant sur une sortie 161a. Le séquenceur 161 est également capable d'engendrer deux types de valeurs d'adresse apparaissant sur des sorties 161 c et 161 b respectivement.
La valeur d'adresse de la sortie 161b est appliquée à une mémoire M 170 de calculs de filtrage. La mémoire M 170 présente un nombre prédéterminé d'emplacements, par exemple Cette mémoire M170 est identifiée comme une mémoire d'états, telle que connue dans l'art dans le cas d'un algorithme IIR (pour « Infinité Inpulse Response ») ou FIR (pour « Finite Impulse Response »), dans laquelle le nombre d'états est proportionnel au nombre de coefficients pour un type de filtre donné (type d'algorithme, Courbe, Pente). Ainsi, un filtre d'un type donné comportant vingt coefficients sur huit états, comporteraient quarante coefficients pour seize états etc. La mémoire de coefficients est partagée entre les cellules, mais chaque cellule comporte ses propres emplacements d'état, de sorte que 192 cellules avec 16 états utiliseraient 3072 emplacements et une mémoire de 16384 donnerait pour 192 cellules 85 états. La sortie d'adresse 161c est appliquée à une entrée B d'un multiplexeur 162 dont une entrée A peut recevoir directement des valeurs d'adresse du bloc 120 de l'interface 14. Ces valeurs sont inscrites par l'unité de gestion 12 pour caractériser ces filtres (coefficients) dans une mémoire
M180. Le processus de filtrage permet de lire ces données pour le traitement.
La sélection de l'entrée B du multiplexeur 162 est réalisée sous la
commande de la sortie d'une porte ET 163 qui s'ouvre à la condition que l'une de trois données soit présente, à savoir le signal de lecture R_FLT_COEF, le signal d'écriture W_FLT_COEF ou un signal de commande de lecture de coefficient constituant une sortie 164a d'un bloc 164 de détermination de fonction de filtrage IIR (pour « Infinité Inpulse Response », voir plus haut). La sortie du multiplexeur 162 est appliquée à la mémoire M 180 de coefficients de filtrage. Cette mémoire M180 reçoit ses données directement de l'unité de gestion 12. Ces données sont inscrites aux adresses appropriées sous la commande d'un signal d'écriture provenant d'une porte ET 165. Une première entrée de la porte 165 est connectée au bloc 140 de l'interface 14 (signal de lecture R_FLT_COEF), une autre entrée étant reliée à la sortie 164a du bloc 164 de détermination de fonctions de filtrage.
La sortie de données de la mémoire M 180 est appliquée à une entrée 164b du bloc 164. Pour la lecture de coefficients, l'entrée et la sortie de données de la mémoire M170 de calculs de filtrage sont respectivement connectées à la sortie 164c et à l'entrée 164d du bloc 164. Ce dernier reçoit le code d'opération du bloc 161 sur son entrée 164e. La lecture dans la mémoire M 170 est commandée par un signal provenant de la sortie 164f, tandis que la commande d'écriture provient de la sortie 164g du bloc 164. Enfin, ce bloc 164 comporte une entrée 164h à laquelle est appliqué le signal CCYC issu sélectivement des blocs 72, 73 et 74 de la Figure 11 , tandis que les données "filtrées" apparaissent à la sortie 164i du bloc 164. La mémoire M170 permet de stocker temporairement les données intermédiaires de filtrage, ces données produisant le signal filtré sur la sortie 164i, soit le signal CFLT qui est le signal utilisé dans la Figure 11 pour déterminer la donnée de niveau 1. Le code d'opération permet de commander les transitions des données entre les entrées et les sorties du bloc 164.
Les Figures 18 (18A et 18B) et 19 (19A et 19B) illustrent un circuit 180 de production de bornes temporelles ou d'adressage non temporel (direct) utilisées au cours de l'élaboration de données de premier et de second niveaux. Le circuit 180 de détermination des bornes temporelles ou d'adressage de certains processus de production des données va être décrit, tel qu'utilisé dans l'art. Il est à noter que, comme le système selon la présente invention comporte en amont des éléments non temporels (directs), POS_X étant déterminé au choix soit par incrémentation ou par adressage conséquent à des traitements, les bornes temporelles sont des bornes d'adressage en termes généraux. Ainsi les bornes de bouclage décrites plus bas ne sont pas nécessaires de même que les commandes de direction MOD_CYC, MOD_ALT, MOD_DCY qui sont inactivées en mode non temporel (mode direct). Ces processus de production sont le mode de données de calcul, lorsque l'unité de parallélisation 16 travaille avec des données provenant de la mémoire M150 de la Figure 15 et le mode de données en temps réel. La validation du circuit de détermination 180 est donc assurée au moment opportun par l'un ou l'autre des données SCJECH ou SC_ETR appliquées à une porte ET 181 représentée en haut de la Figure 18A. Le circuit de détermination 180 comprend :
- une mémoire M190 dans laquelle peuvent être stockées des valeurs d'instants de début (c'est-à-dire des valeurs représentant un instant prédéterminé sur l'axe des temps par accumulation d'un nombre déterminé de valeurs analogues à des valeurs POS_X) d'une suite de données déterminées. Cette mémoire M190 peut être chargée avec une valeur d'instant de début pour chacune des cellules. La valeur d'adresse est formée par le signal AC et les données sont inscrites/lues dans la mémoire à partir de l'unité de gestion 12 sous la commande des données W_ECH_DEB/R_ECH_DEB;
- une mémoire M200, qui permet de stocker d'une façon analogue des instants de fin d'une suite de données. Les données sont écrites/lues dans cette mémoire par les données W_ECH_FIN/R_ECH_F1N;
- deux mémoires M210 et M220, dans lesquelles peuvent être stockées des valeurs de "boucle", plus précisément des valeurs temporelles représentant un instant de début de boucle et un instant de fin de boucle, le terme boucle devant être compris ici comme étant une répétition cyclique d'une même suite de données par une ou plusieurs cellules. Les mémoires M210 et M220 peuvent être écrites et lues sous la commande respective des données W_ECH_B1/R_ECH_B1 et W_ECH_B2IR_ECH_B2. Les données proviennent chaque fois l'unité de gestion 12;
- des comparateurs 182 à 185, associés respectivement à chaque mémoire M190 à M220, et dont une entrée A est reliée à la sortie de données de la mémoire associée et une entrée B reçoit la valeur courante de POS_X. Les comparateurs 182 et 184 fournissent un signal de validation lorsque leur entrée B est inférieure ou égale à leur entrée A et les comparateurs 183 et 185 fournissent un signal de validation lorsque l'entrée B est supérieure ou égale à l'entrée A;
- des logiques d'activation 186 à 190, reliées respectivement aux sorties des comparateurs 182 à 185, et recevant chacune plusieurs données qui y sont combinées logiquement pour assurer le cas échéant l'activation de tampons de sortie 192 à 195 dont les sorties peuvent fournir sélectivement la valeur INIT_X qui est une valeur particulière d'initialisation à partir de laquelle POS_X est ensuite incrémentée par les valeurs de désignation calculées dans le circuit 300. Les logiques d'activation 186 à 191 reçoivent également les données de mode MOD_CCY, MOD_DCY et MOD_ALT qui sont contenues dans les données de sortie de la mémoire M120 de la Figure 11 ;
- un autre tampon de sortie 196, qui permet de fixer la valeur INIT_X
à zéro lorsque l'un au l'autre des données SC_ECI-I ou SC_ETR est inactif, à travers un inverseur 197;
- une mémoire de signe M230 dans laquelle peut être inscrit un signe déterminant le sens de progression de la valeur POS_X. Cette mémoire M230 est adressée par le signal AC et reçoit le bit de signe à mémoriser pour les cellules d'un multiplexeur 198. Celui-ci reçoit comme signal de sélection le signal CJNIT du comparateur 50 de la Figure 7. Ce signal passe le signe approprié vers la sortie du multiplexeur 198 lorsque le signal CJNIT est actif. Sinon le signal de signe provient d'une porte logique 199 qui combine logiquement la sortie de la mémoire M230 avec un signal de mode MOD_ALT. Lorsque ce dernier est actif (O'), le signe change à chaque écriture dans la mémoire M230; et
- un autre multiplexeur 200 est commandé par ce même signal de mode MOD_ALT pour établir sélectivement le signal SGN utilisé dans le bloc 34 du circuit 300 de la Figure 6. Une entrée A de ce multiplexeur reçoit un signal T_DIR et une entrée B le signal de mode MOD_DCY.
Les tampons 194 et 195 sont rendus actifs par l'intermédiaire de portes ET respectives 201 et 202 et l'écriture dans la mémoire M230 est commandée par l'intermédiaire d'une logique 203.
Le tampon 192 fixe la borne à un point ou à un instant de début EJDEB de la suite de données de calcul, lorsque POS_X atteint une adresse de début
EJDEB ou moins sur le comparateur 182 dans le cas d'un mode non cyclique
(MOD_CCY1) décroissant (MOD_DCY=0), la sélection étant effectuée par la porte 186.
Le tampon 193 fixe la borne à un point de fin E_FIN de la suite de données de calcul, lorsque POS_X atteint une adresse de fin E_FIN ou plus sur le comparateur 183 dans le cas d'un mode non cyclique (MOD_CCY1)
croissant (MOD_DCY=1), la sélection étant faite par la porte 187.
Le tampon 194 fixe la borne à un point de boucle-1 EJ31 d'une suite de données en boucle, lorsque la valeur POS_X atteint une adresse boucle-2 E_82 ou plus sur le comparateur 185 dans le cas d'un mode cyclique (MOD_CCYO), croissant (MOD_CCY=1 ) et non alternatif (MOD_ALT=1 ), la sélection étant effectuée par les portes 191 et 201. Cette mise à valeur s'applique aussi dans le cas d'un mode cyclique (MOD_CCY=0) alternatif (MOD_ALT=O), mais en décrémentation (T_DIR=0), lorsque la valeur POS_X atteint l'adresse boucle-1 EJ3I ou moins sur le comparateur 184, la sélection étant effectuée par les portes 188 et 201. En mode alternatif, la valeur de TJDIR sera mise à O par la porte 203, lors de la fixation de la borne E_B1 pour mettre la progression en décrémentation.
Le tampon 195 fixe la borne à un point de boucle-2 E-82 de la suite de données de calcul, lorsque la valeur POS_X atteint une adresse boucle-1 E_BI ou moins sur le comparateur 184 dans le cas d'un mode cyclique (MOD_CCYO), décroissant (MOD_DCY=O) et non alternatif (MOD_ALT=1), la sélection étant effectuée par les portes 189 et 202. Cette mise à valeur s'applique aussi dans le cas d'un mode cyclique (MOD_CCY=O), alternatif (MOD_ALT=O) et en incrémentation (T_DIR=i), lorsque la valeur POS_X atteint l'adresse boucle-2 E_B2 ou plus sur le comparateur 185, la sélection étant effectuée par les portes 190 et 202.
La fixation des bornes s'effectue par le signal INIT_X transféré au multiplexeur 350 de la Figure 6, qui réinitialise la valeur POS_X par la commande CDJNIT issue de la porte 208.
Comme représenté sur la Figure 19, le signal INIT_X peut également être produit sélectivement par la sortie de deux tampons 204 et 205 qui reçoivent respectivement les données E_DEB et E_FIN des mémoires M190
et M200. Ces tampons sont activés par la combinaison logique appropriée des données CJNIT (mise en phase ou mise à l'adresse initiale en mode non temporel dit mode direct), le signal de mode MODJDCY et le signal de sortie de la porte OU 181, cette combinaison logique étant assurée par des portes OU 206 et 207.
Le tampon 204 fixe la valeur (ou position) initiale de POS_X sur l'activation de CJNIT et des données de mode SCJΞCH/SCJΞTR. Lorsque MOD_DCY=1 (croissant), le point de début E_DEB constitue la valeur d'initialisation transmise à INIT_X, si MOO_DCY=0 (décroissant) et le point de fin E_FIN constitue la valeur initiale transmise à INIT_X. Ce dernier signal est alors sélectionné sur le multiplexeur 350 de la Figure 6 pour initialiser la valeur POS_X.
De plus, le signal CJNIT passe par une porte ET 208 (haut sur la Figure 18). Cette porte fournit le signal CDJNIT. Le fonctionnement de ce circuit 180 de détermination des bornes temporelles et d'adressage va maintenant est rappelé brièvement. Lorsqu'une cellule est mise en phase ou à l'adresse initiale en mode non temporel (mode direct), la valeur POS_X doit être mise à sa valeur initiale par l'intermédiaire du multiplexeur 350 du circuit 300 de la Figure 6. Lorsque l'unité de parallélisation 16 est placée dans l'un des modes commandés respectivement par les données SC_SIN, 35 SC_CAR, SC_TRI, SC_RMP ou SC_RMN, la valeur initiale INIT_X de POS_X est égale à zéro. Cette valeur passe par le tampon 196 qui est activée en l'absence de l'un ou l'autre des données SC_ECH ou SC_ETR. Par contre, lorsque l'un ou l'autre des modes SC_ECH ou SCJΞTR est commandé, la valeur INIT_X est déterminée par un instant de départ d'une cellule donnée sur l'axe des temps. La valeur temporelle correspondante est la valeur E_DEB stockée pour la cellule considérée dans la mémoire M190, si l'incrément de la valeur POS_X doit être positif (signal
MOD_DCY=1). Dans le cas où cet incrément est négatif (signal MOD_DCY=O), la valeur initiale est la valeur E_FIN stockée dans la mémoire M200 pour la cellule considérée.
Pour chaque cellule, une suite de données de premier niveau peut être délimitée dans le temps par des bornes temporelles entre lesquelles la valeur POS_X peut évoluer, soit en s'incrémentant, soit en se décrémentant, soit encore en faisant une "boucle", ce qui revient à répéter un certain nombre de fois la même suite de données de calcul. Une telle répétition en boucle peut aussi se faire de plusieurs façons : "en avant", "en arrière" ou en alternance "en avant" et "en arrière".
Bien entendu, les valeurs POS_X ainsi délimitées constituent chaque fois une adresse pour la mémoire M 150 de la Figure 15 qui stocke des valeurs de données à reproduire soit en temps réel (Mode ETR), soit à partir de données qui y ont été stockées auparavant (Mode ECH). Ainsi, pour résumer, il apparaîtra clairement aux personnes versées dans l'art que le système de la présente invention comprend :
- un circuit de configuration de fonctions arithmétiques et logiques sur différents niveaux à l'intérieur d'une cellule, qui choisit les type d'opérations à effectuer, tel qu'illustré aux Figure 3a (220, 265), Figure 5 (M503.M507), Figure 6 (350, 340, 320, 355), Figure 7a (M9, 43, 42, M8, 52), Figuré 7B, Figure 8A (M11 , M12, M13), Figure 8B (M14), Figure 10, Figure 11A (M 120), Figure 14 (101 , 102), Figure 17 (162, 163, 161), Figure 18A (M190, M200, 182, 183, 180, 181, 186, 187, 208), Figure 18B (M210, M220, 184, 185, 200, 201 , 188-191 , 202, 203, M230, 198, 199), et Figure 19;
- un circuit d'exécution des différentes fonctions arithmétiques et logiques, incorporées dans chaque cellule sur différents niveaux, vers une fonction finale donnant un résultat unique de sorte que, au choix et sur chaque
cellule, le résultat soient utilisé de manière spécifique, comprenant :
• des mémoires d'adresses dans lesquelles chaque adresse correspond à une cellule, telles que les mémoires M4 et M5 (Figure 3B) et la mémoire M120 (Figure 11A);
• des mémoires de résultats dont chaque adresse contient un résultat unique telles les mémoires M6 et M7 reliées par une bascule de résultat 42 (Figure 7A), la mémoire accumulatrice de cellules M130 (Figurel 1 B); et des bascules de données en sorties (voir Figure 9 ); et
• des bascules de donnée de sorties (Figure 9).
- un circuit de transfert des résultats des cellules sur une matrice de résultats des cellules, comprenant :
• des circuits d'activation en écriture des mémoires de résultats (M6 et M7) et de la bascule de résultat (42) qui les relie (signaux d'activation respectifs : 41 , P4 et P3);
• une matrice accumulatrice de cellules M130 (Figure 11B) permettant la redirection vers d'autres cellules; et
• un circuit qui adresse la matrice accumulatrice de cellules M130, représenté sur la Figure 10 par exemple, lorsque le signal P4 est actif pour l'écriture.
- un circuit d'assignation sélective des cellules dans des groupes distincts et indépendants pour combiner les résultats respectifs des cellules, tel qu'illustré à la Figure 7 notamment (composants 42, M9, 52, U10, M7);
- un circuit de transfert des résultats des groupes sur une matrice de résultats des groupes, permettant l'assignation des matrices de groupe (Figure 7A : mémoire M6) vers les sorties (voir Figures 8A, 8B);
- un circuit de saisie des données à partir d'interfaces de données pour les accumuler dans une matrice d'entrées, représenté par exemple à la Figure 14 par des multiplexeurs produisant les données IN_0 à IN_e et commandés par une bascule 102;
- un circuit de sélection de la provenance des données sur les différentes fonctions des différentes cellules, comprenant :
• un circuit, illustré notamment en Figure 10A, partagé sur les séquences de traitements successives pour établir des provenances des données choisies parmi d'autres cellules suivant les valeurs de la mémoire M5 (Figure 3B pour chaque bloc 4A à 4E), d'autres entrées ou d'autres groupes pour être transférées sur des opérateurs via le bus DATA__CTR sur les Figures 4A, 4B, 4C, 4D, 4E décrits en détails sur les figures 3A et 3B; et
• des mémoires destinées au transfert direct des données (M1 , M2, M4 à la Figure 3).
- un circuit de corrélation de l'action sur chaque entrée de donnée provenant de matrices à un niveau variable, représenté à la Figure 3B par exemple par une mémoire d'atténuation (M4) pour chaque bloc des Figures 4A à 4E, où la mémoire M4 permet d'établir le poids de la valeur d'entrée DATA_CTR par le diviseur U4 acheminée à la bascule 240, le résultat obtenu agit alors avec la donnée B au choix sur l'opérateur U5 en addition, multiplication etc.;
- un circuit de définition des fonctions appliquées sur les cellules selon une nature générale ou partiellement définie selon le mode de fonctionnement
de chaque cellule, les fonctions étant arithmétiques (voir Figure 5), ou implantées (Figures 11A et 11B avec le détail des fonctions aux Figures 12 à 15);
- un circuit d'attribution de tables à la sortie de fonction de chaque cellule de manière à pouvoir utiliser la mémorisation en lecture ou en écriture, tel qu'illustré aux Figures 14 et 15;
- un circuit d'application d'une séquence supplémentaire de fonctions arithmétiques au résultat d'une cellule, où les fonctions arithmétiques peuvent être ajoutées et choisies sur des lignes de code, tel qu'illustré aux Figures 17, 18A, 18B qui représentent une fonction de filtrage numérique;
- un circuit d'application des fonctions à l'intérieur de chaque groupe de sorte que les fonctions soient effectuées sur le résultat du groupe dont les résultats proviennent d'un groupe choisi de cellules, en amplitude (Figure 7A (M9, 43, M8)), en fréquence (Figure 7A (M9), Figure 7B (53, M10)) et en mise en phase ou d'adresse initiale en mode non temporel (mode direct) (Figure 7B (44 à 50));
- un circuit de transfert des sorties de groupes sur une matrice de sortie, sélectivement pour chaque groupe et progressivement sur une ou plusieurs sorties de la matrice de sortie, tel qu'illustré aux Figures 8A, 8B, et
9; - un circuit de sélection de la provenance de la valeur de chaque entrée de la matrice d'entrées, illustré à la Figure 14 (102, 101 et multiplexeurs avec commandes sur les circuits des Figures 10A et 10B, adressés par les mémoires (M5) de chaque bloc 4A à 4E de la Figure 3B, activés par les
mémoires de mode (M 120) de la Figure 11A (SC_ETR);
. - un circuit de sélection de la destination de la valeur de chaque sortie de la matrice de sortie (voir Figures 8A, 8B et 9); et
- un circuit d'extension de traitement de sorte que les fonctions de cellule puissent s'appliquer sur des niveaux multiples et que l'inscription de valeurs sur ces données soit de provenance sélective, permettant des niveaux multiples de traitements aux entrées (voir Figure 5).
Il apparaîtra clairement aux personnes versées dans l'art que le système modulaire selon la présente invention peut posséder une architecture aussi simple que minimum de deux cellules reliées entre elles de telle sorte que leurs résultats sont combinés sur une sortie, et qu'une architecture parallèle utilise à toute fin pratique au moins huit cellules.
Selon un second aspect de la présente invention, une méthode de traitement de données est proposée, basée sur une architecture en cellules et permettant un traitement parallèle de données fournies en entrée et produisant des données de sortie. Les différentes actions de la méthode selon un mode de réalisation possible sont énumérées maintenant en relation aux Figures 20A à 20E. .
Ainsi, la méthode (1000) comprend la configuration d'une architecture en cellules (1100), par des actions de :
- configuration de fonctions arithmétiques et logiques sur différents niveaux à l'intérieur de chaque cellule (1110), comprenant des actions de :
• configuration indépendante de chaque fonction de chaque niveau de chaque cellule comme additive, soustractive, multiplicative, divisive, logique, décisionnelle ou autre(1111); • établissement de liens modifiables entre les fonctions de chaque cellule(1112); et
• application des fonctions sur des données de provenance externe ou inteme(1113)
- exécution des différentes fonctions arithmétiques et logiques vers une fonction finale donnant un résultat unique de sorte qu'au choix et sur chaque cellule le résultat soit utilisé de manière spécifique (1120), comprenant des actions de :
• établissement direct des différentes fonctions comme donnée résultante transférée sur un ensemble de mémoires (1221);
• établissement des fonctions par l'intermédiaire de tables de conversion ou d'indexation (1222);
• établissement des différentes fonctions par l'incorporation de fonctions séquentielles supplémentaires (1123); et • application au choix du résultat en mode non temporel (dit mode direct),en mode temporel, ou en mode récursif (1124).
- un transfert du résultat de chaque cellule sur une matrice de résultats des cellules (1130).
Par la suite, la méthode (1000) comprend l'établissement de groupes regroupant des cellules(1200), incluant :
- un transfert des résultats des cellules sur une matrice de résultats
des cellules (1210);
- une assignation sélective des cellules dans des groupes distincts et indépendants pour combiner les résultats respectifs des cellules (1220);
- un transfert des résultats des groupes sur une matrice de résultats des groupes (1230).
De plus, la méthode 1000 comprend la configuration de l'entrée du circuit (1300) incluant :
- une saisie de données à partir d'interfaces de données pour les accumuler dans une matrice d'entrées (1310);
- une sélection de la provenance des données sur les différentes fonctions des différentes cellules (1320), comprenant des étapes de :
• Inscription sélective d'une donnée directement d'un processeur (1321); transfert sélectif d'un élément donné de la matrice des groupes (1322);
• transfert sélectif d'un élément donné de la matrice de groupes (1324); et
• transfert sélectif d'un élément de la matrice d'entrées (1325). - une corrélation de l'action sur chaque entrée de données provenant de matrices telles que le mémoire M4 (Figure 3B) à un niveau variable de manière à les interelier (1330); et
- une sélection de la provenance de chaque entrée de la matrice des entrées (1340), comprenant des actions de : • sélection directe d'une entrée d'une interface d'entrées de données (1341);
• sélection directe d'un processeur hôte (1342).
La méthode 1000 comprend une configuration du circuit pour des traitements parallèles (1400), incluant :
- une définition des fonctions appliquées sur les cellules selon une nature générale ou partiellement définie en fonction d'un mode de fonctionnement de chaque cellule (1410), comprenant des actions de :
• définition de fonctions générales d'ordre arithmétiques ou logiques sans attributions pré-établies en mode de fonctionnement normal (non récursif) (1411); et • définition de fonctions mixtes comprenant des fonctions attribuées pour des opérations en mode temporel (amplitude, fréquence, phase, fonction de séquence) et des fonctions non attribuées (1412).
- une attribution de tables à la sortie des fonctions de chaque cellule permettant une mémorisation en lecture ou en écriture (1420), par des actions de :
• saisie du résultat de cellule et mémorisation auto-indéxée à pas variable sur une zone de mémoire aux limites définissables, c'est à dire pouvant peuvent êtres modifiées au besoin de telle sorte que pour chaque cellule l'accès à une zone de mémoire est définissable, ces zones pouvant être spécifiques en longueur et région pour chaque cellule, distinctes, entrelacées ou communes (1421 ); • lecture de tables sur une zone de mémoire aux limites définissables de manière à attribuer une valeur de résultat donnée à une valeur de table utilisable pour des processus de conversion (1422).
- une application d'une séquence supplémentaire de fonctions arithmétiques, pouvant être choisies sur des lignes de code, au résultat de chaque cellule (1430);
- une application des fonctions à l'intérieur de chaque groupe de sorte que les fonctions s'effectuent sur le résultat d'un groupe dont les résultats proviennent d'un ensemble sélectionné de cellules (1440) ; et
- un ajout des données de sorte que les fonctions des cellules s'appliquent sur des niveaux multiples et que l'inscription de valeurs sur ces données soit de provenance sélective (1450).
Finalement, la méthode 1000 comprend la configuration des sorties du circuit (1500), incluant des actions de :
- un transfert des sorties de groupes sur une matrice de sortie, sélectivement pour chaque groupe et progressivement sur au moins une sortie de la matrice de sortie (1510), incluant des actions de :
• transfert progressif et dynamique des données d'un groupe à une ou plusieurs sorties d'une section de la matrice des sorties et combinatoirement avec d'autres groupes (1511);
• sélection d'une section de la matrice des sorties sur laquelle un groupe est transféré (1512).
- une sélection de la destination de chaque sortie de la matrice des sorties (1520), incluant des actions de :
• transfert direct de la valeur à une sortie d'une interface de sorties de données (1521), • transfert direct de la valeur au processeur hôte (1522).
Clairement, la méthode 1000 utilise une unité de gestion 12, une interface fonctionnelle 14; et une unité^de parallélisation 16. Les actions
d'établissement d'une architecture de cellules (1100), d'établissement de groupes regroupant des cellules (1200), de configuration du circuit pour des traitements parallèles (1400), de configuration de l'entrée du circuit (1300) et de configuration des sorties du circuit (1500) constituent une unité de traitement parallèle 16 telle que décrite plus haut, qui traite des données d'entrées et fournies des données de sorties en communiquant avec une unité de gestion 12 par l'intermédiaire d'une interface fonctionnelle 14.
L'action de configuration de l'entrée du circuit (1300) est effectuée par l'interface 14 du système de traitement, qui inclut une capacité de sélections de mémoires d'accès, notamment des entrées WIN et WINMOD (voir Figure
14), permettant de choisir entre des données d'interface externe ou provenant de l'unité de gestion 12.
II est à noter qu'il ne s'agit évidemment pas d'actions chronologiques, mais plutôt d'actions permettant d'établir une configuration d'un processeur de traitement parallèle de données tel que décrit plus haut.
De plus, les personnes versées dans l'art apprécieront que la modularité de l'architecture présentée dans le système et la méthode selon la présente invention permet de combiner des fonctions sur des données de divers type. Ainsi, les données aux différentes étapes décrites peuvent être des signaux ou des données de calculs par exemple.