<Desc/Clms Page number 1>
EQUIPEMENT DE TRAITEMENT DE DONNEES ET SYSTEME DE
RECONNAISSANCE DE PAROLE L'UTILISANT La présente invention revendique la priorité d'une demande de brevet déposée aux Etats-Unis d'Amérique le 3 novembre 1982 sous le NO 439, 018 au nom de : George VENSKO, Lawrence CARLIN, John Charles POTTER, Allen Richard SMITH.
<Desc/Clms Page number 2>
L'invention se rapporte à un système dispersé pour le traitement de données et à une méthode pour transférer des données entre une pluralité d'ordinateurs. Plus particulièrement, l'invention se rapporte à l'utilisation de l'équipement et de la méthode pour une reconnaissance continue de la parole en temps réel en utilisant un vocabulaire substantiel.
Les systèmes de reconnaissance automatique de la parole fournissent des moyens permettant une interface entre les ordinateurs et d'autres machines suivant un mode de communication naturel et facile. Lorsque cela est requis, cela permet aux opérateurs de tels ordinateurs et machines d'y inscrire des données, d'obtenir des informations et de contrôler des systèmes lorsque leurs mains et leurs yeux sont occupés, que cela se passe dans le noir ou lorsqu'ils ne peuvent demeurer en permanence au terminal. En outre, des machines utilisant la voix normale pour les informations d'entrée nécessitent beaucoup moins d'entraînement pour l'utilisateur que ce qui est demandé par les systèmes basés sur des claviers, commutateurs, boutons poussoirs et autres dispositifs mécaniques complexes.
Une approche connue pour la reconnaissance automatique de la parole et plus particulièrement de mots isolés comporte ce qui suit : échantillonnage périodique d'un signal d'entrée de parole audio filtré par un filtre passe-bande (BPF) pour créer des trames de données et ensuite, un retraitement de cellesci pour les convertir en des trames retraitées de valeurs
<Desc/Clms Page number 3>
paramétriques qui conviennent le mieux pour le traitement de la parole ; emmagasinage d'une pluralité de gabarits (chaque gabarit est une pluralité de trames antérieurement créées et traitées, dont les valeurs paramétriques représentent un mot et qui lorsqu'elles sont prises ensemble forment le vocabulaire de référence du système de reconnaissance automatique de la parole) ;
et comparaison des trames traitées de parole avec les gabarits suivant un algorithme prédéterminé tel que l'algorithme de programmation dynamique (DAP) décrit dans l'article de F. Itakura, intitulé"Minimum prediction residual principle applied to speech recognition", IEEE Trans. Acoustics, Speech and Signal Processing, Vol. ASSP-23, pp 67-72, février 1975, pour trouver le meilleur chemin ou la meilleure adaptation pour l'alignement dans le temps entre un gabarit donné et le mot parlé.
Des systèmes de reconnaissance de mots isolés tels que ceux esquissés ci-dessus imposent à l'usager une pause artificielle entre chaque mot ou phrase. Cette exigence est souvent trop restrictive dans un environnement où la charge de travail est élevée et souvent pénible. Un tel environnement exige un débit de parole continu suivant le mode naturel.
Cependant les problèmes liés à l'identification des limites des mots dans la reconnaissance continue de la parole, associée avec les exigences d'un vocabulaire élargi et la nécessité d'un traitement d'un controle de syntaxe pour identifier seulement des phrases prédéterminées significatives, nécessitent un traitement supplémentaire et plus complexe.
Il est souhaitable par conséquent de fournir d exi- gences de traitement additionnemoe arc un équipement peu important et d'un coût peu élevé et une méthode qui est facilement adaptable à l'évolution pour accomoder des exigences de vocabulaire et de syntaxe plus grandes tout en fournissant un traitement sûr et approchant celui en temps réel.
<Desc/Clms Page number 4>
En résumé, un équipement et une méthode de traitement de données pour accomplir une fonction prédéterminée telle qu'une reconnaissance continue de la parole sont la base de l'invention. Ils comprennent au moins deux ordinateurs couplés par un bus de contrôle à distance, chacun ayant une mémoire partagée qui lui est associée et chacun permettant d'accomplir un traitement local des données emmagasinées dans la mémoire partagée. Ils comprennent en outre des moyens de transfert de données associés avec chacun des ordinateurs et des mémoires partagées et qui leur sont couplés pour transférer au moins une partie des données entre les mémoires partagées par un accès direct aux mémoires. Ce transfert est accompli pendant et sans interférence avec le traitement local des parties restantes des données présentes dans les mémoires partagées.
Une reconnaissance continue de la parole est accomplie en convertissant continuellement les mots parlés en des trames de données paramétriques qui conviennent mieux pour un traitement subséquent de la parole. La conversion a lieu dans un ordinateur de données d'entrée. Un vocabulaire des mots devant être reconnu est emmagasiné comme gabarit dans au moins deux ordinateurs de gabarits. Des trames de données paramétriques sont transférées aux processeurs de gabarits pour être comparées avec les gabarits qui sont emmagasinés. Des données de gabarit sont redistribuées parmi les processeurs de gabarit avec chaque nouvelle trame de données paramétriques devant être traitée pendant que les trames antérieures de données paramétriques sont traitées par les processeurs de gabarit.
Suivant les réalisations préférées, il y a au moins huit processeurs de gabarit et au moins trois cent mots de vocabulaire emmagasinés dans ceux-ci comme gabarit.
Les caractéristiques et buts de l'invention mentionnés ci-dessus ainsi que d'autres deviendront plus claires en se référant à la description détaillée qui fait suite et prise en
<Desc/Clms Page number 5>
conjonction avec les dessins qui l'accompagnent, dans lesquels :
La Fig. 1 est un diagramme sous forme de blocs d'une réalisation préférée de la présente invention comprenant une pluralité de processeurs et d'équipement de transfert de données ;
La Fig. 2 est un diagramme sous forme de blocs montrant en plus de détails la partie de l'invention de la Fig. 1 se rapportant à la série de filtres passe-bande ;
La Fig. 3 est une table donnant les caractéristiques de filtrage de la partie filtre passe-bande de la Fig. 2 ;
La Fig. 4 est un diagramme sous forme de blocs montrant plus de détails d'un processeur et d'un équipement de transfert de données de la Fig. 1 ;
La Fig. 5 est un diagramme de temps montrant les évènements principaux pour le processeur utilisé dans la présente invention et les signaux de demande minutés pour l'accès à la partie de l'équipement de la Fig. 4 concernant le bus de données partagé ;
La Fig. 6 est un diagramme de temps dans le cas d'un processeur interrompant un autre à l'aide de leur section de transfert de données ;
La Fig. 7 est un diagramme de temps d'une partie de circuit DMA d'un processeur esclave et d'un équipement de transfert de données commandé par le processeur maître et l'équipement de transfert de données ;
La Fig. 8 est un diagramme de temps pour un transfert de données par accès direct à la mémoire (DMA) entre une source et un processeur de destination de la Fig. 1 ;
La Fig. 9 est un diagramme sous forme de blocs d'un circuit de décodage d'adresse du contrôleur partagé de la Fig. 4 ;
La Fig. 10 est un diagramme sous forme de blocs montrant une partie du contrôleur partagé de la Fig. 4 pour générer des requêtes de partage du bus de données sur une base
<Desc/Clms Page number 6>
prioritaire ;
La Fig. 11 est un diagramme sous forme de blocs d'une partie du contrôleur partagé pour synchroniser les demandes sur le bus de données partagés avec l'horloge locale du processeur associé avec ce dernier ;
La Fig. 12 est un diagramme de temps de l'opération de la Fig. 11 ;
La Fig. 13 est un diagramme sous forme de blocs d'une partie du contrôleur partagé qui génère des signaux d'horloge et d'autorisation pour les dispositifs couplés au bus de données partagé de la Fig. 4 ;
La Fig. 14 est un diagramme sous forme de blocs d'une partie du contrôleur partagé qui génère des signaux de validation de données lorsque des données sont transférées du bus de données partagé pour être transmise par le bus de contrôle à distance ;
La Fig. 15 est un diagramme sous forme de blocs du contrôleur pour le contrôle à distance faisant partie de la Fig. 4 ;
La Fig. 16 est un diagramme sous forme de blocsd'une partie du contrôleur partagé pour établir les signaux de source DMA et de commande de destination ;
La Fig. 17 est un diagramme sous forme de blocsd'une partie du contrôleur partagé montrant le compteur DMA et son circuit de commande.
La Fig. 1 est un diagramme sous forme de blocsd'une réalisation préférée d'un équipement à processeurs distribués particulièrement adapté pour un équipement de reconnaissance continu de parole désigné généralement par 100. Il comprend des moyens de conversion de parole désignés généralement par 102 qui comportent un microphone 104, tel que le modèle SM10 de Shure Brothers, Inc. ; le circuit préamplificateur 106 tel que le modèle PMM-2 de Bogen Co pour amplifier l'entrée
<Desc/Clms Page number 7>
audio provenant du microphone ; une série de circuits de filtres passe-bande 108, tele que décrit en plus de détails à la Fig. 2, pour fournir un échantillonnage numérique de spectre de la sortie audio du circuit de préamplification 106 ;
et un processeur d'entrée 110 pour traiter les échantillons de spectre afin de les convertir en des données paramétriques convenant mieux à un traitement subséquent de la parole. L'équipement 100 comprend en outre une pluralité de processeurs de gabarit tels que 130, 140 and 150 qui emmagasinent des mots antérieurement traités ou des portions de parole appelées gabarits, ces processeurs fonctionnant pour comparer des données paramétriques du processeur d'entrée 110 avec les gabarits emmagasinés suivant un algorithme prédéterminé et pour emmagasiner les résultats ; un processeur maître 160 pour une analyse de syntaxe des résultats reçus de la pluralité des processeurs de gabarit, pour commander le transfert de données parmi les processeurs 110,130, 140 et 150, et pour accomplir d'autres fonctions s'étendant à l'ensemble du système ;
un bus de protection à distance 170 pour fournir des signaux pour l'écoulement et la commande des données parmi les différents processeurs ; et des moyens de transfert de données 180,182, 184,186 et 188 respectivement associées avec chacun des processeurs 110,130, 140,150 et 160.
La Fig. 1 présente aussi les caractéristiques additionnelles suivantes : connexion du processeur maître 160 à un ordinateur hôte ou mémoire de masse par le bus 190 ; une connexion vers un terminal video 192 et une connexion vers un synthétiseur de parole 194 tel que le DT1000 Digitalker de National Semiconductor, et le haut-parleur 196.
En se référant maintenant à la Fig. 2, un diagramme sous forme de blocs et plus détaillé de la série de filtres passe-bande 108 est montré. La sortie du préamplificateur 106
<Desc/Clms Page number 8>
sur le conducteur 112 de la Fig. 1 est transmise vers un étage d'amplificateur d'entrée 200 qui a une largeur de bande de 3 db à 10 kHz. Ceci est suivi d'un amplificateur d'accentuation 202 à 6 db/octave ayant des fréquences sélectionnables de 500 ou 5000 Hz. Ceci est une pratique courante pour fournir plus de gain aux fréquences élevées par rapport aux fréquences basses puisque les premières sont généralement plus faibles pour l'amplitude des données de parole.
A la sortie de l'amplificateur 202, le signal est divisé et est fourni aux entrées de filtre anti-alias 204 (avec une fréquence de coupure de 1,4 kHz) et 206 (avec une fréquence de coupure de 10,5 kHz). Ceux-ci sont fournis pour éliminer une reproduction inverse qui peut résulter suite à léchantillonnage subséquent.
Les sorties des filtres 204 et 206 sont amenées respectivement auccircuits de filtre passe-bande BPF 208 et BPF 210. Ils comprennent respectivement les canaux 1-9 et 10-19 Chacun des canaux 1-18 contient un filtre d'une octave. Le canal 19 contient un filtre d'une octave complète.
Les filtres de canaux sont réalisés d'une manière conventionnelle en utilisant les dispositifs à capacitance commutée du type R5604 et R5606 de Reticon. La Fig. 3 donne la fréquence d'entrée d'horloge, la fréquence centrale et une largeur de bande de 3 db pour les 19 canaux des filtres BPF 208 et 210.
Les fréquences d'entrée d'horloge requises pour ces derniers circuits sont générées de manière conventionnelle à partir d'un circuit générateur d'horloge 212 alimenté par une horloge 213 à 1,632 MHz.
Les sorties des circuits BPF 208 et 210 sont redressées, passées à travers un filtre passe-bas (fréquence de coupure à 30 Hz) et simultanément échantillonnées dans 19 circuits d'échantillonnage et de maintien (type LF398 de National Semiconductor) dans le circuit d'échantillonnage 214.
<Desc/Clms Page number 9>
Les 19 échantillons de canaux sont alors multiplexés par les multiplexeurs 216 et 218 (type DG506 de Siliconix) et convertis en une version numérique par le convertisseur 220 (log A/D) du type DF331 de Siliconix. Ce convertisseur a une sortie sérielle de 8 éléments binaires qui est convertie en un format parâlèle par l'enregistreur série/parallèle 222 (type DM86LS62 de National Semiconductor) pour être envoyée au processeur d'entrée 110 par le bus 114.
Une horloge 224 de 2 MHz génère différents signaux pour le circuit 214, les multiplexeurs 216 et 218 et pour le convertisseur analogue/numérique 220. Une commande d'échantillonnage et de maintien est envoyée au circuit 214 toutes les 10 millisecondes par un conducteur 215. Alors chacun des circuits d'échantillonnage et de maintien est multiplex séquentiellement (une fois toutes les 500 microsecondes) en réponse à un signal de sélection de cinq éléments binaires transmis par le bus 217 vers les circuits 216 et 218 à partir des circuits d'horloge 226. Quatre éléments binaires sont utilisés par chaque circuit tandis qu'un élément sélectionne le circuit. Il faut par conséquent 10 millisecondes pour convertir 19 canaux échantillonnés plus une référence de terre échantillonnée en une version numérique.
Ces 20 signaux numériques sont appelés une trame de données. Une fois par trame, un signal d'état est généré à partir du circuit générateur d'horloge 226 et fourni au processeur d'entrée 110 par le conducteur 228. Il sert à synchroniser l'horloge du circuit de filtre 108 sur l'entrée du processeur d'entrée 110. Le circuit de générateur d'horloge 226 fournit en outre un signal d'exploration pour la disponibilité des données à (2 kHz) par le conducteur 230 vers ce processeur.
Ceci fournit 20 signaux d'interruption par trame au processeur 110.
Ce dernier est programmé d'une façon bien connue
<Desc/Clms Page number 10>
(voir le Advance Information Booklet No ADl-814-Rl de Motorola pour les unités de microprocesseurs à 16 éléments binaires de la série MC68000) pour accepter les trames de données (chacune comprenant 19 coefficients de filtre passe-bande) et réduire chaque trame à 16 coefficients. Alors, en utilisant un processus connu d'encodage à un taux de trame variable, des trames de données superflues, c'est-à-dire des trames de données similaires, sont éliminées afin de simplifier le traitement ultérieur. L'encodage à un taux de trame variable réduit le taux de trame de 100 trames par seconde (chacune correspondant à 10 millisecondes) à 50 trames/sec en moyenne.
Afin d'opérer une réduction supplémentaire pour le traitement, les 16 coefficients sont réduits à un nombre plus petit tel que 5 ou 10 en appliquant une transformation linéaire à chaque trame de coefficients devant être traitée ultérieurement. Une transformation bien connue est la transformation linéaire (mel-cosine) décrite dans les références suivantes (1) Davis, S. B., et Mermelstein, P., "Evaluation of Acoustic Parameters for Monosyllabic Word Identification", Journal Acoust. Soc. Am., Vol. 64, Suppl. l, pp. S180-Sl81, Fall 1978 (abrégé) ; et (2) S. Davis et P. Mermelstein,"Comparison of Parametric Representations for Monosyllabic Word Recognition in Continuously Spoken Sentences", IEEE Trans. Acoust., Speech, Signal Proc., Vol. ASSP-28 pp.
257-366.
Le processeur d'entrée est également programmé pour faire la somme des 19 coefficients dans chaque trame de données reçue des circuits de filtre passe-bande 108 comme mesure d'amplitude de chaque trame. Un algorithme de détection d'énergie est alors appliqué pour déterminer le début et la fin d'une expression ou partie de parole. Lorsqu'une expression est détectée, c'est-à-dire que les résultats de l'algorithme de détection d'énergie indiquent qu'une nouvelle partie de parole
<Desc/Clms Page number 11>
a commencé, la trame de 5 ou 10 valeurs de cosinus-mel est marquée et un traitement subséquent est accompli. Il y a au moins une approche connue pour dériver un algorithme de détection d'énergie qui convient pour l'usage ci-dessus (voir à ce sujet L. F. Lamel, L. R. Rabiner, A. E. Rosenberg et J. G.
Wilpon,"An Improved Endpoint Detector for Isolated Word Recognition", IEEE Trans. ASSP, Vol. 29, No 4, Aug., 1981).
Chaque mot du vocabulaire que l'équipement 100 est capable de reconnaître (suivant une syntaxe prédéterminée) peut être représenté par une séquence d'une pluralité de points pris d'un espace multidimensionnel à cosinus-mel décrit dans des articles de David et Mermelstein mentionnés ci-dessus. Par exemple, un vocabulaire de 300 mots peut être représenté par différentes séquences prises de 250 points prédéterminés. Chacun d'eux, après avoir subi une transformation cosinus-mel, est représenté par 5 ou 10 valeurs de cosinus-mel appelées un caractère. Il y a alors 250 caractères de 5 ou 10 valeurs de cosinus-mel emmagasinés dans une matrice de caractère.
Chaque nouvelle trame inconnue de valeurs de cosinus-mel devant être reconnue est convertie en un vecteur de distance de caractère de 250 valeurs en calculant les distances euclidiennes entre la trame inconnue et chacun dis caractères dans la matrice. Ceci est effectué dans le processeur d'entrée 110. Les vecteurs de distance d'un caractère sont emmagasinés dans un tampon dans ce processeur jusqu'à ce qu'il soient transférés au processeur de gabarit par le processeur maître 160.
Un gabarit représente une partie de référence de la parole tel qu'un mot de vocabulaire construit à partir d'une pluralité de caractères. Chaque gabarit représente un mot du vocabulaire de l'équipement 100. Dans un système à 300 mots, il y aurait approximativement 300 gabarits.
Le nombre de gabarits emmagasinés dans un processeur et par
<Desc/Clms Page number 12>
et par conséquent le nombre de processeurs de gabarit requis dépend de la quantité de traitement requise et du délai de reconnaissance toléré. On peut estimer qu'avec un délai de reconnaissance en temps réel de 10%, c'est-à-dire un délai de reconnaissance de 0,3 secondes sur une expression longue de 3 secondes, de 3 à 4 processeurs de gabarit seront requis.
Chacun d'eux compare chaque vecteur de distance de caractère reçu du processeur d'entrée 110 par le bus de contrôle à distance 170 avec les gabarits qui lui ont été attribués en concordance avec l'algorithme de comparaison programmé dans la mémoire de programme du processeur de gabarit. Un algorithme convenant à cette fin est l'algorithme de programmation dynamique (DPA) auquel on s'est référé antérieurement ou des algorithmes dérivés. Puisque chaque vecteur de distance de caractère représente seulement de 10 à 30 millisecondes de temps de parole ce qui est beaucoup moins que le temps moyen nécessaire pour exprimer un mot comme représenté par un gabarit, plusieurs vecteurs de distance de caractère peuvent en conséquence être comparés à chaque gabarit.
Un avantage du DPA est qu'il compense pour des variations allant jusqu'à 4 à 1 en ce qui concerne le temps nécessaire pour exprimer un mot.
Pendant la remise à zéro du système, le processeur maître va inscrire des gabarits dans les processeurs de gabarit par les moyens de circuit portant les nombres pairs 182-188 et le bus de contrôle à distance 170 de telle sorte qu'au début du processus de reconnaissance, la charge de calcul pour les processeurs de gabarit sera approximativement égale. Le processeur maître indique aussi à chaque processeur de gabarit lequel de ses gabarits doit être traité en concordance avec la syntaxe prédéterminée.
Le processeur maître, par les moyens de circuit portant les nombres pairs 180-186 et le bus de commande à distance 170,
<Desc/Clms Page number 13>
après que le début d'une expression a été détecté, provoque le transfert du vecteur de distance de caractère vers chacun des processeurs de gabarit à des fins de comparaison. Par une commande d'interruption, le processeur maître assure que les processeurs de gabarit commencent le traitement des vecteurs de distance de caractère sur une base de trame. Quand chacun des processeurs de gabarit a traité le DPA sur chacun des gabarits qui lui ont été assignés pour le dernier vecteur de distance de caractère et que les résultats ont été obtenus, ils génèrent une interruption sur le processeur maître 160 pour l'informer que les résultats sont prêts à être transférés.
Tous les processeurs de gabarit ne prendront pas le même temps pour traiter les gabarits qui lui ont été assignés sur une base de trame à trame. La quantité de temps qui est nécessaire sera signaléeau processeur maître ensemble avec les résultats du DPA. Le processeur 110 transfère les résultats des processeurs de gabarit au processeur maître par les moyens de circuit portant les nombres pairs 182-188 et le bus 170. Le processeur maître accomplit une analyse de syntaxe des résultats qui peut entraîner la spécification de nouveaux gabarits pour le traitement de la trame suivante.
En fonction de l'analyse de syntaxe et de la quantité de temps que chaque processeur de gabarit utilise pour traiter ceux qui lui ont été assignés, les gabarits sont réattribués parmi les processeurs de gabarit par le processeur maître à l'aide des moyens de circuit portant les nombres pairs 182-188 et le bus de contrôle à distance 170. Un nouveau vecteur de distance de caractère est alors envoyé au processeur de gabarit et le processus recommence jusqu'à ce que la reconnaissance soit accomplie.
Le processeur maître 160 doit accomplir trois fonctions principales, c'est-à-dire l'analyse de syntaxe à partir des résultats des processeurs de gabarit sur une base de trame ; le contrôle du transfert de données par les
<Desc/Clms Page number 14>
moyens de circuit portant des nombres pairs 180-188 et les lignes de commande à distance 170 ; et des fonctions s'étendant à l'ensemble du système telles que la fourniture des résultats, d'une interface d'opération, etc. (autres que diriger les transferts de données).
On devra apprécier que les avantages de l'équipement 100 pour l'utilisation pour la reconnaissance continue de la parole en temps réel résident dans la capacité de traitement parallèle et celle de traiter une grande quantité de transferts et communications de données entre les processeurs sur une base de trame à trame (la plupart des expressions ne dépasseront pas 3 secondes et un délai de reconnaissance de 10% ou 0, 3 secondes n'est pas ou à peine perceptible. Par des applications en temps réel on entend ici une reconnaissance se produisant
EMI14.1
avec un délai de l'ordre de 10% de la durée de l'expression).
Des taux d'entrée/sortie programmés seraient inadéquats pour traiter les échanges de données significatifs requis ici entre les processeurs. Avec la présente invention cependant, des échanges de données entre ceux-ci sent accomplis par des moyens de circuit 180-188 et le bus de commande à distance 170 sans interférence avec le travail de traitement des différents processeurs. Comme on le décrira ultérieurement, les circuits 180 etc. comportent des circuits de commande partagés et de contrôle àdstance qui acccmplissent la synchroni- sation du processeur maître et des autres requêtes à distance avec le processeur local pour le transfert de données à partir et vers la mémoire partagée du processeur local.
Les circuits de commande donnent aussi une priorité aux requêtes de telle façon que les requêtes distantes n'interféreront pas avec le traitement local.
En ce référant maintenant à la Fig. 4, un équipement 400 convenant pour l'utilisation comme processeur/combinaison de moyens de circuits 110/180 ; 130/182 ; 140/184 ; 150/186 ; et
<Desc/Clms Page number 15>
160/188 est montré en plus de détails de même qu'une partie du bus de commande à distance 170.
Le coeur de la section processeur de l'équipement 400 est le dispositif microprocesseur 402. D'autres dispositifs qui pourraient être utilisés pour réaliser la présente invention sont le 8086 de Intel, le Z8000 de Zilog et le ADM2901. La puce 402 est couplée localement à : un contrôle local 403 par un bus de commande de microprocesseur 404 ; et une mémoire locale à accès aléatoire (RAM) 405.
Cette dernière et la puce 402 sont couplées entr'elles par un bus de données local 410 à 16 éléments binaires.
Le traitement par les processeurs particuliers est accompli en concordance avec les programmes emmagasinés dans la mémoire locale 405. Dans le cas d'un processeur de gabarit tel que 130 à la Fig. 4, un programme pour réaliser le . DPA est emmagasiné dans la mémoire locale. Le contrôleur local 403 est couplé à la mémoire locale 405 par le bus de commande local 420. Une pluralité d'autres dispositifs peuvent être attachée aux bus locaux respectivement 420 pour la commande et 410 pour les données. Voir par exemple le circuit entrée/sortie d'interface sériel 422 du type RS232 ; un circuit de chronométrage 424 ; un circuit d'interface de synthèse de voix 426 ; un circuit d'interface BPF 423 ; et un second circuit d'interface entrée/sortie 430 sériel du type RS232.
Tous ces circuits sont conventionnels et sont illustrés pour montrer l'utilité de la présente solution. Ils ne sont pas décrits en détails ici.
Les circuits de l'équipement 400 associés avec la partie du processeur local décrite ci-dessus comprennent : une mémoire partagée 406 couplée à un bus de données partagé 412 à 16 éléments binaires qui à son tour est connecté au bus 410 par un commutateur de bus conventionnel 412 ; un circuit de commande partagé 440 ; un circuit de commande à distance 442 ;
<Desc/Clms Page number 16>
des circuits d'accès direct auxmémoires (DMA) comprenant le circuit de comptage DMA 444 couplé au circuit de commande partagé 440, la source DMA et les enregistreurs de destination 446 et 447 ainsi qu'un enregistreur DMA entrée/sortie à 16 éléments binaires couplés entre un bus de données à commande à distance 450 et le bus de données partagé 412 ;
un enregistreur programmé entrée/sortie 452 à 16 éléments binaires également couplé entre le bus de données contrôlé à distance 450 et le bus de données partagé 412 ; et des circuits d'interruption 454 et 456 à 16 éléments binaires respectivement pour les opérations locales et à distance.
Les enregistreurs edrée/sortie 448 et 452 sont aussi couplés au circuit de commande à distance 442 et au circuit de commande partagé 440 dont ils recoivent des signaux de commande et d'horloge.
Avant de décrire les circuits de la Fig. 4 en plus de détails, le chronométrage de base de l'unité de microprocesseur 402 est donné en relation avec le diagramme de temps de la Fig. 5. Le MC68000 utilise un signal d'horloge 500 de 8 MHz généré par une horloge externe. Les cycles de transfert de données du microprocesseur sont synchronisés sur cette horloge et chacun d'eux peut-être considéré comme constitué par huit états d'horloge 0-7. De cette horloge, un signal 502 d'horloge 3P à 8 MHz est généré en utilisant des techniques de circuit de chronométrage conventionnelles.
L'horloge 3P (502) est en avance sur l'horloge 500 à 8 MHz d'une demi largeur d'impulsion. Une autre horloge, non montrée, CLK1P, utilisée par le circuit de la Fig. 4, est déphasée de 180 par rapport à la CLK3P. Le MC68000 génère un signal de balayage d'adresse/AS 504 qui indique que les signaux d'adresse (23 éléments binaires) du microprocesseur qui s'est affirmé sont stables et valides. Le signal/AS 504 est annulé à la seconde retombée de l'horloge de 8 MHz se
<Desc/Clms Page number 17>
produisant pendant un signal 506 (/DTACK) fourni au microprocesseur une fois que le transfert de données associé avec le cycle entrée/sortie est achevé.
Comme montré à la Fig. 5, le cycle de transfert interne de données du MC68000 (lecture/inscription) peut être accompli en un minimum de 4 cycles d'horloges à 8 MHz (huit états, 0-7). Cela pourrait prendre plus de temps. Dans ce cas, le signal/DTACK est alors retardé et la suppression du signal/AS est retardée de plusieurs cycles d'horloge.
D'autres signaux de chronométrage générés de façon conventionnelle et utile pour exécuter des requêtes locales par le microprocesseur sont le signal 508 (END) conmspondant au premier cycle d'horloge complet (états 0 et 1) dans un cycle de transfert de données ; les signaux 510 (END-1) et 512 (END-2) qui ne nécessitent pas d'autres explications ; et les signaux 513 (LOCAL), 514 (LEN), 515 (REQL) et 516 (/CEDRAM) dont le but sera décrit plus loin (ici on peut uniquement noter que 514 démarre à la fin d'une impulsion END et se termine à la fin d'une impulsion END-2).
En se référant maintenant aux figures, une vue d'ensemble de l'opération de la Fig. 4 est fournie. Toutes les combinaisons de moyens processeur/circuit 110/180 ; 130/182 ; 140/184 ; 150/186 ; et 160/188 se présentent sensiblement de la même façon que l'équipement 400. Ils sont programmés différemment pour accomplir des tâches différentes et dans la réalisation préférée, le processeur maître est le seul qui peut transmettre une adresse de 23 éléments binaires aux autres processeurs (esclaves). En outre, les enregistreurs d'interruption 454 et 456 de la plaquette maître ne sont pas utilisés.
Lorsqu'un maître désire interrompre un esclave, il utilise l'enregistreur 454 (ALQ) de l'esclave et lorsque ce dernier veut interrompre le maître, il le fait à travers son propre enregistreur 456 (IRQ). Les opérations et les requêtes
<Desc/Clms Page number 18>
effectuées par une unité de microprocesseurs à son propre bus partagé 412 sont appelées des requêtes locales tandis que celles faites par un maître pour utiliser le bus partagé de l'esclave sont appelées des requêtes à distance.
Lorsque le processeur d'entrée 110 a fini de générer un vecteur de distance de caractère ou quand un processeur de gabarit a terminé de traiter une trame, il va interrompre le processeur maître 160 par les registres d'interruption.
Par exemple, une unité de microprocesseur esclave 402 envoie une adresse à 23 éléments binaires avec le signal d'exploration d'adresse/AS 602 sur le bus 460 vers le contrôleur partagé 440 de l'esclave. Ce dernier décode les éléments binaires de l'adresse et identifie le registre de requête d'interruption distant 456 (IRQ) par un signal de commande IRQRWL (Fig. 9) comme destination pour les données de l'unité de microprocesseur 402. Ce dernier signal est combiné avec un signal 516 (CEDRAM) de requête basée sur une horloge locale et synchronisé (Fig. 13) dans le contrôleur partagé 440 pour générer 604 (CLKIRQR).
Le contrôleur partagé 440 ouvre le commutateur 414 par le bus 461 pour passer les données de l'unité de microprocesseur 402 au bus partagé 412. Ce contrôleur insère les données dans le registre 456 avec le signal CLKIRQR qui a été transmis par le bus 462.
Dès que les données sont verrouillées dans le registre d'interruption 456, le contrôleur partagé 440 envoie un signal d'interruption de trois éléments binaires sur le bus 463 directement à l'unité de microprocesseur du processeur maître. En réponse, ce dernier transmet un signal d'adresse d'accusé de réception d'interruption de 23 éléments binaires et le signal 606 (/ASR) par le bus de commande à distance 466 en retour au contrôleur partagé de l'esclave ayant provoqué l'interruption (les processeurs esclaves sont câblés de telle sorte que chacun a une priorité d'interruption
<Desc/Clms Page number 19>
respective par rapport à tous les autres.
Lorsque le processeur maître renvoie le signal d'interruption précité, il est seulement reçu par le processeur esclave ayant la priorité la plus élevée et pour lequel il existe couramment une requête d'interruption). Le contrôleur partagé 440 de l'esclave décode les signaux d'accusé de réception d'interruption et génère ensuite un signal de commande de requête d'interruption lu à distance (IRQRRDR (Fig. 9) qui est combiné avec un signal de requête distant et synchronisé dans le contrôleur partagé pour générer un signal d'autorisation de sortie 608 (/OEIRQR, Fig. 13) qui place les données dans le registre d'interruption de l'esclave sur le bus partagé 412.
Au même instant, le contrôleur partagé de l'esclave forme un signal de commande d'inscription distante REMOTEW et un signal de commande de lecture à distance REMOTERD (Fig. 9) qui sont combinés avec un signal de requête de synchronisation distante et synchronisé pour générer des signaux 610 (CLKPIO) et 612 (/OEREG) qui sont transmis au registre 452 (PIO) de l'esclave par le bus 464. Le contrôleur partagé forme aussi un signal de validation de données 614 (/DVPIO) qui est formé en combinant le signal de commande REMOTERD avec un signal de requête de synchronisation distante et synchronisé à l'intérieur du contrôleur partagé 440 (Fig. 14). Le signal/DVPIO est transmis sur le bus de commande à distance 466 vers le contrôleur à distance du processeur maître.
Le signal CLKPIO constitue l'horloge pour insérer les données dans le registre PIO de l'esclave et le signal/OEREG les rend disponible au bus de données à distance. Le signal 614 (/DVPIO) indique que les données sont déjà transférées dans le registre 452 (PIO) de l'esclave ou seront transférées par un signal CLK3P.
Le contrôleur à distance maître 442 (voir Fig. 15 pour les détails de la commande à distance) reçoit 614 (/DVPIO)
<Desc/Clms Page number 20>
par le conducteur 467 et génère lessignaux 616 (CLKREG) et 618 (/OEPIO) qui sont transmis sur le bus 469 vers le PIO du maître pour amener les données du bus de données distant dans le registre PIO du maître. Le contrôleur à distance du maître génère aussi : un signal 620 (TACKPIO) transmis par le conducteur 470 en retour au contrôleur partagé de l'esclave pour interrompre le signal/DVPIO ; un signal 622 (FULLIN) qui est également transmis (Fig. 15) en réponse au signal /DVPIO. Ce signal FULLIN est transmis sur le conducteur 471 à son contrôleur partagé pour informer le contrôleur partagé du maître que le registre 452 (PIO) du maître a des données prêtes pour le bus de données partagé 412.
Il est décodé par le contrôleur partagé pour produire des signaux de commande REGRD et LOCAL (Fig. 9) qui, à leur tour, sont combinés avec un signal de requête local et synchronisés pour produire/OEREG (Fig. 13) qui rend les données dans le PIO du maître disponibles au bus de données partagé. Les données sont alors synchronisées dans l'unité de processeur maître. Un signal A/DTACK est généré (Fig. 10) par le contrôleur partagé du maître et envoyé à l'unité 402 de microprocesseur du maître par 472.
Les données initialement envoyées au registre d'interruption à distance de l'esclave constituent un vecteur qui est utilisé par le maître pour localiser une position dans la mémoire locale du maître. Là, le maître trouve l'identité de l'esclave et l'information nécessaire concernant les données devant être envoyées afin d'effectuer un transfert, par exemple l'identité des processeurs de source et de destination, la position et la quantité des données devant être transférées et où elles doivent être localisées dans le processeur de destination. Au finse la discussion qui fait suite, le processeur qui contient les données devant être transférées est appelé un processeur source tandis que celui auquel
<Desc/Clms Page number 21>
les données seront transférées est appelé le processeur de destination.
Les données doivent être transférées rapidement et pendant des cycles de traitement locaux sans interruption de ces cycles par les processeurs impliqués dans les transferts.
Ceci est effectué par un transfert de données à accès direct de mémoire (DMA). De tels transferts peuvent être utilisés pour envoyer des données de vecteur de distance de caractères du processeur d'entrée 110 à chacun des proces- seurs da gabarit 130, 140.... 150 ; pour transférer des données de gabarit parmi les processeurs de gabarit 130,140, ... 150 ; ou pour transférer des données de résultat d'un processeur de gabarit au processeur maître.
En revenant maintenant à une interruption de ce dernierpar un processeur esclave comme décrit ci-dessus, l'interruption est utilisée pour informer le maître que le processeur esclave provoquant l'interruption est en train d'achever une tâche de traitement. A ce moment, le maître décide quels sont les transferts de données qui doivent avoir lieu. Lorsque l'instant est approprié pour un transfert basé sur les interruptions reçues, le maître établit un transfert DMA en utilisant une opération entrée/sortie programmée comme décrit ci-dessous en connexion avec les figures 4,5 et 7.
Afin d'effectuer un transfert de données de mémoire entre les processeurs, tel qu'un transfert de données de gabarit d'un esclave à un autre, le processeur maître inscrit une adresse de démarrage de destination à 16 éléments binaires vers le processeur de destination à l'aide d'une opération entrée/ sortie programmée. Ceci informe le processeur de destination où les données à transférer doivent être emmagasinées dans sa mémoire partagée 406. Ensuite, le processeur maître inscrit un mot de comptage de mot de source à 16 éléments binaires et un mot d'adresse de démarrage de source de la même longueur pour le processeur de source devant transmettre les données.
<Desc/Clms Page number 22>
Cette information informe le processeur de source quant à la quantité de données devant être transférées et où les trouver dans sa mémoire partagée.
Le processeur maître place le mot d'adresse de démarrage de destination à 16 éléments binaires sur son bus bedonnées et transmet un mot d'adresse à 23 éléments binaires et le signal/AS 702 à son contrôleur partagé sur le bus 460. Ce dernier accomplit ce qui suit : il décode l'adresse et génère un signal de commande REGW (Fig. 9) qui est combiné avec un signal de requête synchronisé localement et synchronisé pour générer un signal 704 (CLKPIO) ; il actionne le commutateur 14 du bus de données ; il utilise le signal CLKPIO pour synchroniser les données de l'unité de microprocesseur 402 à travers le commutateur 412, par le bus de données partagé 412, dans le côté B du registre 452 (PIO) ;
il génère un signal 706 (/DVPIO, Fig. 14) qui est transmis sur le bus de commande à distance 466 vers le processeur esclave qui sera celui de destination pour les données ; et il ouvre le commutateur 480 pour permettre la transmission de l'adresse à 23 éléments binaires et du signal/AS vers le processeur de destination par le bus de commande à distance 466. Le processeur maître attend maintenant un signal/DTACK.
Le contrôleur partagé de destination esclave décode le signal d'adresse pour son ID et quant il trouve le contrôleur partagé, génère le signal de commande REMOTEW (Fig. 9) qui est transmis au contrôleur à distance de l'esclave par le bus 474. Ceci autorise le signal/DVPIO transmis du processeur maître dans le contrôleur à distance de l'esclave 442 (Fig. 15).
En réponse, le contrôle à distance esclave (Fig. 15) accomplit ce qui suit : il génère le signal 708 (/OEPIO) qui est transmis au PIO du maître ; il génère et transmet 710 (TACKPIO) en retour au contrôleur partagé du maître pour annuler le signal/DVPIO ; il génère 712 (CLKREG) transmis par le bus 469 au registre
<Desc/Clms Page number 23>
PIO de l'esclave pour synchroniser le mot d'adresse de desti-
EMI23.1
e nation dans le registre PIO ; et il génère un signal 714 (FULLIN) transmis au contrôleur partagé de l'esclave.
Entretemps, le contrôleur partagé de l'esclave de destination décode aussi FULLIN et l'adresse du maître pour générer 718 (/OEREG) et le transmet au 452 (PIO) par le bus 464. Ceci rend le mot d'adresse de démarrage de destination disponible sur le bus partagé 412 de l'esclave pour inscription dans le compteur DMA 444 de l'esclave.
Le contrôleur partagé de l'esclave génère un signal de commande de requête à distance (REQR) qui est aligné et synchronisé pour former720 (REN) et génère un signal de commande 722 (DMADR, Fig. 9) qui est transmis par le bus 482 au registre de destination 447 (DMA Ces signaux établissent le registre 447 (avec CLK3P) qui retourne un signal 724 (DMADEST) vers le contrôleur partagé de l'esclave par le conducteur 483 (voir Fig. 16). Ce dernier signal est utilisé par le contrôleur partagé pour générer une augmentation d'une unité pour le compteur 444 (DMA) sur le conducteur 484 (vair ag 17).
En même temps que le contrôleur partagé décode DMADR, il décode un signal de commande 725 (DMAR, Fig. 9) qui est combiné avec un signal de requête synchronisé à distance et synchronisé et utilisé par le contrôleur partagé pour autoriser (par le bus 485) l'adresse de démarrage de destination afin de la synchroniser (726, CLKDMA) dans le compteur DMAvoir Fig. 17). Le contrôleur partagé génère aussi 728 (/DTACK) qui est transmis en retour au microprocesseur maître pour annuler/AS.
Le processeur maître commence encore deux transferts entrée/sortie programmés : (1) afin de charger le mot de comptage de mot de source dans le compteur DMA du processeur de source ; et (2) afin de charger le mot d'adresse de démarrage de source dans le compteur DMA. Ces mots sont inscrits de la même façon
<Desc/Clms Page number 24>
que l'adresse de démarrage de destination comme aecrir ci-dessus.
Cependant, comme l'adresse de démarrage de source (DMA) est inscrite dans le compteur 444 (DMA), le contrôleur partagé de source décode l'adresse du processeur maître pour générer un signal de commande DMASR (Fig. 9) qui est combiné avec un signal de requête synchronisé à distance et synchronisé pour établir le registre de source 446 (DMA) par le bus 486.
Ce registre transmet alors un signal DMASRC en retour au contrôleur partagé 440 par le conducteur 487.
Un transfert de données DMA à travers les circuits DMA est accompli en transmettant l'adresse de démarrage de source ou de destination à 16 éléments binaires emmagasinée dans le compteur 444 (DMA) vers le contrôleur partagé 440 par le bus 490 où l'adresse est décodée pour sélectionner la position de mémoire appropriée dans la mémoire partagée 406. Après transfert des données, l'adresse est augmentée d'une unité. Une description détaillée de ce processus est donnée ci-dessous.
Un signal DMASRC ou DMADEST (respectivement établi dans les registres 446 et 447) est requis pour établir une requête DMA alignée et synchronisé pour transférer des données d'un microprocesseur à un autre par les circuits DMA. Un signal DMASRC est utilisé sur le flanc montant d'un signal CLK3P pour augmenter d'une unité l'adresse de démarrage de source emmagasinée dans le compteur de source DMA. De façon similaire, le signal DMADEST est utilisé pour augmenter d'une unité le compteur de destination DMA.
Un signal DMASRC convenablement aligné et synchronisé en provenance du contrôleur partagé de source génère un signal 810 (/INCSRC, Fig. 17) qui synchronise les données de la mémoire partagée 406 sur le bus partagé 412 dans le côté B du registre entrée/sortie 448 (DMA). Au même instant, le contrôleur partagé de source génère un signal 812 (/DVDMA) de validation
<Desc/Clms Page number 25>
de données (Fig. 14) qui est transmis sur le conducteur 493 vers le bus de commande à distance 466 et ensuite par le conducteur 494 au contrôleur de destination commandé à distance.
En réponse, ce dernier accomplit ce qui suit : il génère 814 (/OEDMA, Fig. 15) qui est transmis sur le conducteur 495 au bus de commande à distance 466, à travers le contrôleur partagé de source, et ensuite par le bus 496 vers le DMAI/0 de source pour placer les données qui sont emmagasinées sur le bus de commande à distance 450 ; il génère et transmet 816 (TACKDMA, Fig. 15) sur le conducteur 497 au bus 466 et ensuite au contrôleur partagé de source pour annuler le signal/DVDMA ; il génère un signal 818 (CLKREG, Fig. 15) transmis par le bus 496 au DMAI/0 de destination qui y inscrit les données du bus de données de contrôle à distance 450 ;
et il génère un signal 820 (FULDD, Fig. 15) transmis au contrôleur partagé de destination où il est combiné avec DMADEST et ENXFER pour générer 822 (/INCEST, Fig. 17) lequel signal de sortie permet aux données d'être transférées sur le bus partagé du processeur de destination.
Delà les données font l'objet d'une inscription synchronisée dans la mémoire partagée de destination à une position identifiée par l'adresse courante emmagasinée dans le compteur DMA. Les compteurs de source et de destination sont automatiquement augmentés d'une unité et le transfert de données d'accès de mémoire directe est répété lors du prochain intervalle de temps disponible. Le signal 813 de la bascule 1722 (J-K) bloque/INCSRC jusqu'à ce que TACKDMA soit généré.
Le contrôleur partagé 440 accomplit deux fonctions principales : (1) ensemble avec d'autres signaux tels que FULLIN, il décode une partie du signal d'adresse à 23 éléments binaires reçu soit localement d'une puce 402 d'un microprocesseur associé ou d'une position distante d'une puce de processeur maître par le bus de commande à distance 466 pour générer les
<Desc/Clms Page number 26>
différents signaux de commande qui identifient le dispositif local devant être atteint et comment, par exemple pour lire à partir de la mémoire partagée ou y inscrire des données, les circuits DMA (compteur, registre et entrée/sortie), les registres d'interruption, le PIO ou le contrôleur à distance ;
et il aligne et synchronise le signal de commande pour acquérir la commande du bus de données partagé 412 sans jamais interrompre ou retarder l'accès de la puce de microprocesseur locale à la mémoire partagée 406 par le bus partagé 412.
La Fig. 9 montre la logique de décodage du contrôleur partagé désignas généralement par 900 en plus de détails. Ce circuit logique génère les signaux de commande mentionnés ci-dessus auxquels on se réfère de manière identique aux dessins. Par exemple, la puce de microprocesseur local 402 transmet un signal d'adresse respectivement au : décodeurs locaux 902 et 904. Une partie de l'adresse est tout d'abord décodés par des circuits de décodage préliminaire 903 avant d'être transmise aux décodeurs 902 et 904. Ces derniers génèrent les signaux de commande montrés. Par exemple, le signal de commande IRQRWL indique que la puce 402 de microprocesseur local (L) souhaite inscrire (W) dans le registre 456 (IRQ) d'interruption à distance.
Egalement montré à la Fig. 9 sont les décodeurs à distance 906 et 908 qui, en réponse à des éléments binaires d'adresse reçus de la puce de microprocesseur maître, dont une portion passe à travers les circuits de décodage préliminaire 905, génèrent les signaux de commande montrés. Par exemple, quand le processeur maître souhaite interrompre un processeur esclave, le maître envoie une adresse au contrôleur partagé de l'esclave (décodeur 906 et 908) et génère un signal d'inscription (w) à distance (R) pour le registre 454 (ILQ) d'interruption locale de l'esclave.
<Desc/Clms Page number 27>
Outre les éléments binaires d'adresse, un signal FULLIN est utilisé par les numéros pairs 902-908 du registre de décodage lorsqu'on désire accéder au registre PIO ou DMA. Le signal FULLIN lorsqu'il est positif, indique que soit le registre PIO soit le registre DMA a verrouillé les données. Sans FULLIN les signaux de commande pour ces registres ne seront pas décodés.
Des descriptions qui précèdent, on appréciera que plus d'un demandeur peut demander un transfert de données sur le bus de données partagé 412 au même instant. Par exemple, un microprocesseur esclave peut demander le bus de données partagé qui produit un signal de commande LOCAL à la Fig. 9 ; le microprocesseur maître peut demander le bus de données partagé de l'esclave produisant un signal de commande REMOTE à la Fig. 9 ; ou les registres 446 ou 447 (DMA) de source ou de destination peuvent requérir le bus de données partagé en réponse à des signaux DMADEST et DMASRC (voir Fig. 10). De toute évidence, toutes ces requêtes ne peuvent être accordées en même temps de telle sco B qu'elles doivent faire l'objet de priorités etette synchronisées avec une horloge locale telle que CLK3P.
La priorité la plus élevée est donnée à la puce de microprocesseur local pour la commande du bus de données partagé. Lorsqu'une requête locale est faite, les circuits de décodage 900 produisent un signal de commande 513 (LOCAL) qui est combiné avec un signal 514 (LEN) pour produire un signal 515 (REQL) d'un cycle. Il est aligné avec CLK3P pour produire un signal de requête de bus de données partage local aligné 516 (CEDRAM). Ce dernier donne la commande du bus de données partagé à la puce 402 du processeur esclave local.
En se référant maintenant à la Fig. 10, un circuit pour accorder des priorités et synchroniser les requêtes de
<Desc/Clms Page number 28>
bus de données partagées est montré en plus de détails.
Si le processeur maître désire obtenir le contrôle d'un bus de données partagé d'un esclave, un signal 518 (REMOTE) sera généré par le décodeur 908. Ceci est combiné avec le signal explorateur d'adresse du maître dans la porte 1004 (AND). Le signal de sortie de cette porte est transmis à la porte 1006 (AND) où il est associé avec la sortie de la porte 1002 (AND). La sortie de la porte 1006 génère un signal de requête de bus de données partagé pour contrôle à distance 520 (REQR). Si un signal 515 (REQL) est présent à l'entrée de la porte 1002 (LOW/REQL), aucun signal 520 (REQR) n'est possible. La sortie de la porte 1006 est transmise à l'entrée J du circuit bascule 1008 (dual J-K) où il est synchronisé avec CLK3P pour générer un signal REQR aligné 522 (REN).
Un signal DMASRC ou DMADEST des registres 446 ou 447 va générer une sortie positive en provenance de la porte 1010 (OR), le signal 524. Il est transmis à la porte 1012 (AND) qui produit un signal 526 (REQD) de requête de bus de données partagé DMA. La sortie de la porte 1002 est aussi utilises pour autoriser la porte 1012 de telle façon qu'un signal REQD n'est pas possible quand un signal REQL est présent.
De façon analogue, si un signal REQR est présent, l'inverseur 1014 fournit une entrée basse à la porte 1012 pour l'inhiber.
Par conséquent, si un signal REQL est présent, ni REQR ni REQD n'est possible. Si REQR est présent, alors REQD n'est pas possible. Ce dernier est aligné avec CLK3P par le circuit bascule 1016 (J-K) pour produire un signal REQD synchronisé 528 (DEN). Le signal/REQL est autorisé par la porte 1002 grâce à la sortie de la porte 1001 (NOR) dont les entrées sont/AS et C06. Lorsque ce dernier est présent, il étend /AS jusqu'au flanc montant suivant de CLK3P.
Une puce 402 de microprocesseur local utilise au moins quatre cyrcles d'horloge à 8 MHz pour achever une
<Desc/Clms Page number 29>
opération de lecture ou d'inscription. Généralement, les données sont transférées vers ou hors de la puce au milieu de l'état 3 de CLKOP. Les transferts de données dans le bus de données partagé prennent seulement deux cycles d'horloge à 8 MHz avec les données sur le bus présentes pendant seulement un cycle d'horloge. Si une requête locale est faite pour le bus de données partagé, les données seront présentes sur le bus pendant un cycle à partir du milieu de l'état 3 jusqu'au milieu de l'état 5. Cependant, un nouveau transfert local n'est pas possible avant le prochain état 3.
Par conséquent, il est possible d'insérer les autres transferts de données sur le bus de données partagées avant le prochain transfert local aussi longtemps qu'ils sont terminés lors du prochain état 3.
Le circuit de la Fig. 11 désigné généralement par 1100, faisant partie du contrôleur partagé 440, est un contrôleur séquentiel ou synchronisateur destiné à synchroniser les requêtes de bus de données partagées pour contrôle à distance et DMA avec l'horloge du processeur local. Le circuit permet accès au bus de données partagé et deux transferts de données d'horloge sur le bus de données partagé démarrant au milieu des états 3,5 et 7.
Les entrées vers les portes 1101-1105 (NAND) sont les signaux explorateur d'adresse de microprocesseur local AS, CLK3P, END-1 et les signaux de requête REQL, REQR et REQD du circuit 1000. Ce dernier produit ENXFER, ENACCESS et CIO utilisés par 1000 pour empêcher toute requête à distance ou DMA (REQR et RAQD) d'être constituée pendant l'intervalle entre le début de l'état 2 et le début de l'état 6. L'alignement dans le temps des signaux ENXFER et CIO est montré à la Fig 12. Le circuit 1100 comprend en outre les circuits de bascule d'entrée 1100 (D), PROMS 1108 et 1110, et les bascules D de sortie 1112, 1114,1116 et 1118.
<Desc/Clms Page number 30>
L'accès local à un bus de données partagé (cest-àdire un transfert de données impliquant la puce de microprocesseur 402) est seulement permis à partir du milieu de l'état 3 et se termine au milieu de l'état 5. Si aucune requête locale n'est présente (pas de REQL), alors RBQR ou REQD, s'il est présent, aura un accès au milieu de l'état 3. Si une requête locale était présente, alors une requête ou DMA peut être accordée au milieu de l'état 5. Si une requête de bus de données partagé DMA ou de contrôle à distance se produit après l'état 5 mais avant l'état 7, elle sera accordée au milieu de ce dernier état.
Aucun accès ne sera accordé au bus de données partagé entre le milieu de l'état 7 et celui de l'état 3 car une requête locale, si elle doit se produire, interviendra pendant cette période et on doit lui accorder accès au bus lorsqu'elle se produit.
La Fig. 12 montre la chronologie des évènements
EMI30.1
dans le circuit de la Fig. 11. Les signaux 1204 (AS) et 1208 se combinent pour fournir le début ou (C12)partie/ST de 1212 sur le conducteur U20 à la Fig. 11, tandis que les signaux END-1 et Cil se combinent pour produire la fin ou partie/E. Les signaux/ST et/E ensemble avec CLK3P produisent le signal 1214 (/SYNC). Les signaux C9 et C10 deviennent haut suite à ce dernier.
Un signal REQL admis par C9 ou REQR ou REQD admis par C10 entraînera un signal/ACCESS bas sur le conducteur 1122 tandis que ce signal combiné avec CLK3P produit/ACC (signaux 1224 et 1232) qui peuvent seulement se produire au milieu des états 3,5 ou 7 comme indiqué précédemment à cause de la présence de C9 et C10. Ces derniers sont produits par le PROM 11 en réponse aux signaux/SYNC et/ACC.
Ce dernier est transmis au PROM 11 par le conducteur 1124 et il y produit immédiatement C07 (1126 ou 1234)
<Desc/Clms Page number 31>
où il y produit immédiatement C07 (1226 ou 1234) qui provoque la production de ENXFER (1228 ou 1236) lors du prochain cycle LCK3P du circuit basculeur 1116.
La Fig. 13 montre comment le contrôleur partagé combine les signaux de commande des circuits de décodage de la Fig. 9 avec les signaux de requête de bus partagé alignés et de synchronisation des Figs. 10 et 11 pour produire les signaux d'autorisation d'horloge et de sortie respectivement pour les registres d'interruption 454 et 456 local et de contrôle à distance, et le registre 452 (PI0). Les portes 1302 et 1304 (NAND) combinent leurs entrées pour fournir un signal d'autorisation de sortie pour le registre 456 (IRQ) en provenance soit d'une requête locale (CEDRAM) ou à distance
EMI31.1
(REN). Les portes 1306 et 1308 combinent leurs entrées pour générer un signal d'horloge IRQ (CLKIRQR) en réponse soit à une requête locale ou à distance.
Des circuits similaires existent aussi pour générer des signaux d'autorisation de sortie et d'horloge pour les registres d'interruption locaux.
En se référant à la Fig. 5 on devra noter que les signaux de requête 515,520 et 526 précèdent les signaux de requête aligné associés 516,522 et 528. Les signaux de requête alignésindiquent que des signaux de commande pour les dispositifs du bus de données partagé sont autorisés. Ils le sont à cause de la présence antérieure des signaux de requête 515,520 et 526.
<Desc/Clms Page number 32>
Au contraire des registres d'interruption 454 et 456 qui sont seulement connectés à un seul bus de données, le bus de données partagé 412 (P10), le registre 452 est connecté à deux bus de données, le bus de données 412 et le bus de données controlé à distance 450. L'insertion synchronisée des données dans le registre P10 à partir du bus de données partagées et l'extraction des données P10 sur le bus de données partagé sont effectuées par le contrôleur partagé. Les portes 1310 et 1312 (NAND) combinent leurs entrées pour générer des signaux d'horloge de requête distante CLKP10 tandis que les portes 1314 et 1316 (NAND) combinent leurs entrées pour générer le signal d'autorisation de sortie locale et distante/OEREG.
Lorsque les données sont insérées dans le registre P10 à l'aide de CLKP10, le contrôleur partagé insère un signal de validation de données/DVP10 qui est inscrit sur le bus de commande à distance au contrôleur distant du processeur auquel les données seront transmises.
Le circuit pour générer un signal/DVP10 est montré à la Fig. 14. Il fait partie du contrôleur partagé 440 et comprend les portes d'entrée 1402 et 1404 (NAND) ; la porte 1406 (NAND) et le basculeur 1408 (dual J-K). Les signaux de commande utilisés pour générer CLKP10 sont aussi employés pour obtenir/DVP10.
Le contrôleur distant du microprocesseur de destination commande les mouvements de données d'un registre P10 par le bus de données distant 450 et vers un autre registre P10 à partir du bus de données distant. Il fait ceci en générant les signaux/OEP10 et CLKREG en réponse au signal/DVPIO. La Fig. 15 montre les détails du contrôleur distant 442 qui comprend : une première logique de décodage d'entrée comprenant les portes 1502 à 1508 (NOR) ; le circuit de décodage 1510 (5-8) ; les basculeurs
<Desc/Clms Page number 33>
1512 et 1514 (D-QUAD) ; le basculeur 1516 (Dual J-K) ; et des circuits d'entrée pour ce basculeur comprenant l'i nverseur 1520 et la porte 1522 (NOR).
Dans le cas d'un transfert de données P10, le signal/DVP10 est autorisé à travers la porte 1506 seulement lorsque le contrôleur partagé associé a décodé un signal de commande REMOTEW ou REGRD. Le circuit de décodage 1510 utilise la sortie de la porte 1506 et génère des sorties transmises aux circuits 1512 et 1514 ainsi qu'au basculeur 1516 qui, à son tour, génère les signaux/OEP10, CLKREG, TACKPiQét FULLIN. Le signal TACKP10 est renvoyé au contrôleur partagé émetteur pour annuler /DVPlO. Le signal FULLIN indique que le registre local P10 possède les données comme décrit ci-avant. En relation avec la Fig. 4, le contrôleur partagé utilise le signal FULLIN et une adresse de microprocesseur pour générer /OEREG vers P10 qui place les données sur le bus de données partagé.
Le signal/OEREG est utilisé pour remettre le basculeur J-K à zéro.
La production des signaux d'interruption de synchronisation du registre P10 et d'autorisation de sortie a été décrite ci-dessus en relation avec les Fig. 13 à 15.
Celle de signaux similaires pour le registre 448 (DMAIO) sera maintenant décrite en relation avec les Figs. 14 à 17.
A la Fig. 16, les portes d'entrée 1602,1604, 1606 et 1608 (NOR) combinent les signaux de commande appropriés (DMASL, DMASR, DMADL, DMADR), les signaux d horloge et de synchronisation (CEDRAM, REN et ENXFER) pour générer des signaux d'établissement de registre de source DMA et de destination qui sont passés à travers le circuit de porte intermédiaire 1610 (QUAD NOR) pour établir le circuit basculeur 1612 (dual J-K). Les sorties Q du basculeur 1612 constituent les signaux de commande DMASRC et DMADEST.
<Desc/Clms Page number 34>
En se référant à la Fig. 10, soit le signal DMASRC ou DMADEST est utilisé pour générer une requête DMA pour un bus de données partagé REQD. Comme mentionné antérieurement, ceci se produit seulement si aucun signal REQL ou REQR n'est présent. Aussi longtemps quun registre 446 ou 447 est établi cependant, le circuit de la Fig. 10 va générer REQD en absence de REQL ou REQR. La Fig. 10 génère un signal DEN en réponse à REQD lors du flanc avant de CLK3P. A la Fig. 17, les portes d'entrée 1702 et 1704 (NAND) combinent une requête locale ou distante et des signaux d'alignement de synchronisation pour inscrire
EMI34.1
1 1 l'adresse de démarrage de source ou de destination ou de comptage de mots de source à partir du bus de données partagé sur le bus 1706.
Les sorties des portes 1702 et 1704 sont combinées par les portes 1708,1710 et 1712 (NOR) avec trois éléments binaires d'adresse provenant du processeur maître pour y identifier si le mot qui est inséré est une adresse de démarrage ou un comptage de mots.
Aussitôt que l'adresse de démarrage est décodée, on sélect tionne une position d'adresse particulière dans l'une parmi 8 puces de mémoire.
Les signaux DMADEST et DMASRC sont aussi utilisés à la Fig. 17 pour permettre d'ajouter une unité à l'adresse de démarrage avec l'horloge CLK3P. Les portes 1716 et 1718 (NAND) combinent soit le DMADEST ou DMASRC avec DEN et ENXFER suivant que le compteur 444 (DMA) est utilisé comme compteur de source ou de destination. Les sorties de portes 1716 et 1718 sont combinées par une porte 1720 (NAND) pour produire un signal d'autorisation lorsque soit DMADEST ou DMASRC est autorisé par sa porte respective (NAND) pour fournir une entrée basse à la porte 1720.
Après que les compteurs DMA ont été établis par le processeur maître ou après qu'une unité a été ajoutée aux compteurs,
<Desc/Clms Page number 35>
EMI35.1
les données d'une adresse dans la mémoire partagée selectionnées par le compteur DMA doivent être déplacées mémoire partagée à travers Tas mgistres de source et de destination DMAI/0 vers une position dans la mémoire partagée de destination sélectionnée par l'adresse du compteur de destination.
Avant qu'une unité ne puisse être ajoutée dans le compteur DMA, les données doivent être déplacées en synchronisme dans et hors du DMAI/0. Le signal IINCSRC de la porte 1718 est transmis du contrôleur partagé sur le bus 492 pour synchroniser les données de la mémoire partagée de la source 448 {DMAI/0). Un signal/DVDMA est généré à partir du basculeur 1408 à la Fig. 14 en réponse aux signaux C07 et DEN à la porte 1410. En réponse au /DVDMA ou en l'absence d'un signal/DVP10 ou d'une demande du compteur distant sur le bus distant, le circuit de la Fig. 15 génère/OEDMA pbur la source DMAI/0. Au même instant, un signal TACKDMA est généré qui revient à la porte 1412 à la Fig. 14 pour remettre à zéro le basculeur J-K et annuler DVDMA.
A ce moment, la sortie de l'inverseur 1414 à la Fig. 14 (/TACKDMAIN) est transmise au basculeur 1722 (J-K) qui combine les portes DMASRC avec un signal de requête DEN et un signal de transfert de synchronisation ENXFER à travers la porte NAND 1718 pour ajouter une unité au compteur 440. Cette opération ne peut être effectuée sur le compteur de destination avant que les données de sortie adressées à la source DMAI/0 ne soient avec certitude transmises à travers la destination DMAI/0 et emmagasinées dans la mémoire de destination. A l'instant où 10EDMA et TACKDMA sont générés, le signal CLKREG de la Fig. 15 l'est également et ceci synchronise les donnéesdu bus distant à la destination DMAI/0.
Lorsque le contrôleur partagé de destination accepte/DVDMA, il génère aussi un signal du décodeur 1510 (5-a pour le basculeur 1512 (J-K) qui établit une sortie
<Desc/Clms Page number 36>
Q pour fournir FULDD indiquant que la destination DMAI/0 peut être remplie par CLKREG. Le signal FULDD est transmis à la porte 1716 (NAND) dans le contrôleur partagé de destination pour permettre, à l'instant approprié, à DMADEST d'ajouter une unité au compteur DMA après être passé à travers la porte 1724 {AND). La sortie de la porte 1716 (NAND),/INDEST, est transmise par le bus 492 à la destination DMAI/0 pour autoriser la sortie des données qui passent immédiatement par le bus de données partagé 412 pour adresser la mémoire partagée avant que le signal d'augmentation d'une unité ne soit autorisé.
Après la dernière augmentation à partir du compteur de source DMA, une fin de signal DMA (EODMA) est générée par. le compteur de source 444. Ceci est utilisé par le circuit contrôleur de source de la Fig. 16 pour établir le basculeur 1620. Ce signal est aussi passé par la porte
EMI36.1
1622 (NAND) pour transmettre/DMASRCB sur le conducteur 1624 vers le contrôleur partagé de destination. Le signal /DMASRCB arrive sur le conducteur 1622 et est autorisé à travers la porte 1624 par/DMDEST pour établir le basculeur 1626 (J-K) qui, à son tour, établit le basculeur 1628 (D).
Ce dernier établit le basculeur 1629 (D) qui à son tour remet à zéro le registre de destination 447 (un des basculeurs J-K dans 1612). Le signal DMADEST devient alors bas.
Entretemps, au microprocesseur de la source, le basculeur 1620 (D), établi par EODMA, établit à son tour le basculeur 1630. La sortie Q basse est passée à travers la porte 1632 (NOR) par le signal d'augmentation de compteur ADMAINC de la porte 1720 (AND) et passée à travers la porte 1610 (NAND) par DMASRC ppur remettre à zéro le registre de source 446 (DMASRC devient bas).
Les circuits DMA en réponse aux mots d'adresse de démarrage de destination et de source et au comptage de mots de source insérés dans les compteurs DMA par le
<Desc/Clms Page number 37>
processeur maître (à l'aide d'un transfert entrée sortie) et commandés par les circuits de signaux de requête du bus de données partagé et les circuits de synchronisation, fournissent un transfert de données entre les mémoires partagéesui a lieu indépendemment de tout contrôle par le processeur et pendant le traitement local de données emmagasinées dans les mémoires partagées et sans interférence avec celui-ci. Le transfert de données de cette façon est distribué, car un compteur de source dans le DMA est situé à une position de traitement et un compteur DMA de destination est situé en un endroit séparé.
Bien que les principes de l'invention aient été décrits ci-dessus en se référant à des exemples particuliers, il est bien entendu que cette description est faite seulement à titre d'exemple et ne constitue aucunement une limitation de la portée de l'invention.