FR 2508669 A1 19821231 FR 8112908 A 19810624 La présente invention concerne les dispositifs électroniques ayant pour but de présenter des résultats ou provoquer des actions sur la ba- se d'un certain nombre d'informations telles que grandeurs d'entrées, mode de traitement voulu, etc. Pour atteindre ce but on a recours selon les cas à des systèmes analogiques o les grandeurs peuvent prendre n'importe quelle valeur dans une gamme donnée (par exemple voltmètre), à une logique c blée o des conditions présentes ou absentes, posées à des entrées, produisent une ou plusieurs informations de sortie, les traitements allant d'une simple opération telle que ET, OU, à des opé- rations arithmétiques (numériques) ou faisant appel à l'élément temps (systèmes séquentiels), à des systèmes comportant un logiciel (software) plus ou moins pro- grammable ou modifiable et le plus souvent construits autour d'un micro- processeur, à un ordinateur. Les deux premières solutions sont spécialisées en ce sens qu'elles doivent être réalisées une fois pour toutes en fonction d'une applica- tion précise. Les deux dernières peuvent être à usage multiple, un ensemble donné pouvant se prêter à plusieurs applications par modification de la pro- grammation. Il est évident qu'un dispositif pouvant se prêter à une multiplici- té d'emplois est très intéressant puisqu'il peut être produit en série, même si les applications ne portent chacune que sur un nombre limité de pièces. Malheureusement, la programmation présente deux inconvénients ma- jeurs: les systèmes faisant appel au microprocesseur demandent, pour chaque nouvelle application, un temps parfois considérable de programmation et ce travail doit être fait par un personnel hautement qualifié; les ordinateurs faisant usage de langages plus évolués sont plus rapi- des à programmer et ne demandent pas forcément la connaissance de leur structure interne Par contre, leur coût est notablement plus élevé et ils ne se prêtent par conséquent qu'à des cas justifiant un tel inves- tissement. -2 Le but de la présente invention est de réaliser un dispositif logi- que programmable permettant de prendre en compte un certain nombre de données, de les traiter et de délivrer des instructions ou grandeurs de sortie tout en évitant les inconvénients précités, le dispositif pouvant être programmé très rapidement, aisément modifié pour une application nouvelle, et ceci par des instructions simples, faciles à assimiler par des gens peu au fait du jargon informatique. Un autre objectif de l'invention est de réaliser un dispositif tel que le nombre d'entrées et de sorties peut être augmenté à volonté, réa- gissant plus vite que les ensembles basés sur un programme séquentiel tel qu'il est utilisé dans un microprocesseur ou un ordinateur, et pou- vant gérer simultanément plusieurs traitements sans que ceux-ci n'inter- fèrent les uns avec les autres. L'invention est exposée dans la description qui suit et pour l'in- telligence de laquelle on se référera au dessin dont la figure 1 unique est une illustration schématique d'un dispositif selon l'invention. Le dispositif selon l'invention est représenté schématiquement sur la figure 1. Trois mémoires ou groupes de mémoires 1, 2 et 3 contiennent respec- tivement des mots-instructions, des mots-grilles et des paires d'adres- ses Ces trois mémoires contiennent chacune le même nombre de mots, cha- que mot étant composé d'un certain nombre de bits, généralement 4, 8 ou 16 dans l'état actuel des circuits à disposition Chaque mot est repéré par son numéro d'ordre que l'on nommera "adresse-mémoire" dans ce qui suit. Un générateur d'adresses cycliques 4 fournit les adresses-mémoires de la première à la dernière, puis recommence périodiquement à cadence rapide Les trois mémoires sont connectées en parallèle, c'est-à-dire que le numéro d'adresse-mémoire est commun pour les trois mémoires 1, 2, 3. Un circuit 5 permet de limiter le balayage à une zone donnée, par exemple de l'adressc-mémoire no 142 à l'adresse-mémoire no 1017 ou tout autre numéro, selon le besoin Ceci permet de stocker plusieurs programmes dans un même jeu de mémoires Le système comporte en outre trois bus 6, 12, 15, c'est-àdire trois groupes de lignes reliant entre eux les divers éléments. Le bus-données 6 peut être branché à la mémoire-instruction 1 par une porte 7 ainsi qu'aux circuits d'entrée 8, de sortie 9, au compara- teur 10, à des registres Il ou d'autres périphériques, conformément à -3- ce qui va être expliqué plus loin. Le bus-grille 12 est relié directement à la mémoire-grille 2. La mémoire-adresses 3 est reliée, d'une part, à un décodeur interne 13 permettant d'adresser certains éléments propres au fonctionnement du dispositif, d'autre part par une porte 14 au bus-adresses 15. Le comparateur 10 permet de savoir si, à un instant donné, le mot- instruction lu de la mémoire I correspond à celui reçu sur le bus-donnée 6, en provenance d'un élément d'entrée 8, d'un registre Il ou d'un autre périphérique. Enfin, un circuit spécial 16 qui sera ci-après nommé drapeau d'éga- lité peut être levé ou abaissé en fonction du résultat fourni par le comparateur 10. Pour mieux illustrer le fonctionnement de l'ensemble, nous prendrons un exemple non-limitatif dans lequel chaque mémoire peut contenir 2048 mots de 8 bits, et par conséquent o chaque bus 6, 12, 15 comporte 8 li- gnes Dans cet exemple, nous considérerons que le comparateur 10 peut être commandé de manière à ce qu'il lève le drapeau d'égalité 16, donc donne une comparaison comme vraie, lorsqu'une nouvelle condition est rem- plie (mode OU) ou abaisse le drapeau d'égalité 16 si une comparaison aboutit à l'inégalité (condition ET). On peut montrer que, dans cette configuration, l'ensemble compara- teur 10, drapeau d'égalité 16 donne une réponse positive (vraie) lorsqu' une somme de produits logiques est satisfaite On pourrait de même faire un produit de sommee, mais on s'en tiendra au premier cas dans l'exemple en question. Lorsque le drapeau d'égalité 16 est levé, il ouvre la porte 14 du busadresse 15 qui va recevoir, au pas suivant de l'adresse-mémoire, une paire d'adresses 15 A et 15 B provenant de la mémoire 3 L'une de ces a- dresses 15 A est celle d'une source d'information: groupe d'entrées 8, registre 11, mémoire-instruction I ou autre, dont le contenu sera présen- té sur le bus-données 6, et l'autre, 15 B est la destination: groupe de sortie 9, registre 11, comparateur 10, ou autre. La mémoire-grille 2 alimente le bus-grille 12 dont le rôle princi- pal est de ne pas prendre en considération certains bits d'un mot qui, dans l'exemple pris ici, en comporte huit Ceci peut être utile aussi bien pour un groupe d'entrées dont seules quelques unes sont significati- ves pour une décision ou pour un groupe de sorties dont un seul ou quel- ques bits doivent être modifiés Dans le cas des entrées, la grille in- tervient au niveau du comparateur 10 puisque c'est celui-ci qui détermine -4 - si une condition est remplie ou non. Ce fonctionnement peut être illustré par l'exemple suivant Mémoire: Bit no 1 2 3 4 5 6 7 8 instruction 1 1 0 0 O 1 O O grille 1 1 1 O O 1 O O Entrées (bus-donnée) 1 1 O 1 O 1 1 O donc accepté: 1 1 O X X 1 X X X étant O ou 1. La grille valant "O" pour les bits 4-5-7 et 8, ceci signifie que la condition est admise comme réalisée si les bits d'entrée pour lesquels la grille vaut " 1 " correspondent à l'instruction contenue dans la mémoi- re 1. On rencontrerait un tel cas dans une commande de machine si le fait d'appuyer sur un bouton Stop devait être pris en compte quels que soient les états des autres informations d'entrée Il y aurait alors une ins- truction 10000000 et une grille 10000000 si le premier bit signifiait que le bouton Stop a été actionné et l'instruction suivante mettrait in- conditionnellement toutes les sorties à zéro pour interrompre le proces- sus en cours. Les entrées 8 peuvent être soit un groupe d'éléments de commande, par exemple des boutons à disposition de l'opérateur, soit des éléments propres à la machine ou au processus: contacts de fin de course, cap- teurs divers, indicateurs de grandeurs physiques (vitesse, température, tension, etc) soit des consignes données sous forme numérique (codeurs, clavier, périphérique à sortie digitale, etc). Dans l'exemple précité, une entrée numérique pourra comporter deux chiffres décimaux, puisque 8 bits permettent de les transmettre sous for- me binaire codée décimale (BCD). Les sorties 9 peuvent être des groupes de huit sorties indépendan- tes, par exemple chacune commandant l'enclenchement ou le déclenchement d'un élément tel que moteur, valve, témoin lumineux, etc, ou être éga- lement une information numérique Dans ce cas, le nombre de chiffres à transmettre n'est pas forcément limité à deux dans le cas d'un bus à 8 bits, puisqu'il suffit de faire en sorte que l'élément de sortie soit muni d'un registre à décalage enregistrant deux chiffres de plus lorsqu' il est adressé plusieurs fois consécutivement, ce qui permet de diriger des informations numériques comportant un nombre quelconque de chiffres vers des périphériques tels qu'affichage, imprimante, registres, etc. La *kre chose vaut pour les entrées qui peuvent fournir des infor- - mations numériques comportant un nombre quelconque de chiffres, par groupe de deux si le bus est à 8 bits. Il en va encore de même pour ce qui a été nommé jusqu'ici registres 11 Ils peuvent enregistrer des informations unitaires sur I à 8 bits grâce à la grille 2 ou les données numériques. Il sera souvent utile de prévoir un ou plusieurs registres Il adres- sables bit par bit, grâce à la grille 2, pour départager des situations identiques des entrées Il se peut, en effet, que pour un même état des entrées, des décisions différentes puissent ou doivent être prises en fonction de situations rencontrées précédemment. Une séquence d'instructionspeut par exemple se présenter comme suit: Instruction Grille Adresse- entree sortie 0 O O O O O O O 1 1 1 1 1 1 1 5 1 151 11 1 1 1 1 1 1 1111 1 11 6 2 112 01 O O O 00 00 O1 1 O O O O 0 7 2 113 10 O O 00 O O 1 O O O O O O 0 5 1 114 00 O O 00 O 1 1 1 O O O O O 1 O 3 Ce qui pourrait signifier dans une commande de machine: 110 SI tous les éléments du bloc d'entrée no 5 = O 111 ET que le compteur 6 est à 255 112 ET que le poussoir no 2 du bloc d'entrée no 7 est à 1, le poussoir no 3 étant à O 113 OU que le poussoir no 1 du bloc d'entrée no 5 = 1 quelle que soit la position des autres 114 ALORS mettre les sorties 1 et 2 du bloc 3 à O ET la sortie 8 à 1. La sortie 114 n'est donc donnée que si l'équation logique ( 110 ET 111 ET 112) OU ( 113) = 1 est satisfaite, ce qui est indiqué par le drapeau d'égalité 16. On voit que l'adresse-sortie no I demande le comparateur 10 en o- pération OU, la no 2 en opération ET, tandis que l'adresse-entrée no O demande l'ouverture de la porte 7 qui mettra sur le bus-donnée 6 le con- tenu de la mémoire-instruction 1 Ceci actionnera le bloc de sortie no. 3 qui tiendra compte, en outre de l'état de la grille 2. On notera que l'instruction 1 et la grille 2 se combinent en ET, bit par bit, le résultat permettant d'enclencher ou déclencher une sor- tie Le résultat sera en général mémorisé. Ce système présente donc un jeu d'instructions très complet avec Adresse- mémoire -6- entre autres contrôle de l'état de tout ou partie des bits d'un bloc d'entrée 8 contrôle de l'état d'un registre Il combinaison de ces contrôles sous forme d'une somme de produits transfert d'une instruction en mémoire I vers une sortie 9 ou un re- gistre Il transfert d'une entrée vers une sortie 9 ou un registre Il commande du changement de l'état de tout ou partie des bits d'un bloc de sortie 9. On constate qu'un registre Il peut fonctionner comme entrée et com- me sortie. Si des opérations arithmétiques sont désirées ou si un grand nombre de registres Il est nécessaire ou encore si l'élément temps doit être pris en considération pour fixer la durée d'une action, temporiser, etc, il peut être avantageux de décentraliser une partie de la program- mation à un registre "intelligent". Un exemple non-limitatif serait celui d'un bloc entrée-sortie 17 comportant un microprocesseur avec sa mémoire-programme morte (ROM) et une certaine capacité de mémoire temporaire vive (RAM) dans laquelle on crée le nombre de registres voulus On peut alors prévoir un jeu d'ins- tructions telles que: contrôler si un registre Il est à O ou non mettre un registre Il à zéro transférer un nombre dans un registre Il depuis une entrée ou la mé- moire-instruction I effectuer des transferts de registre à registre Il compter: incrémenter ou décrémenter compter ou décompter une fréquence pour fixer des durées, temporiser, mesurer la durée d'un évènement effectuer des comparaisons entre registres Il et fournir le résultat A = B, A> B, A effectuer des opérations arithmétiques. Pour gagner du temps, on peut mettre les nombres à traiter sur le bus-donnée 6 et les instructions sur le bus-grille 12. L'avantage de la décentralisation de ces opérations est qu'elles peuvent s'effectuer sans empêcher le déroulement de l'analyse cyclique 4 des adresses-mémoires 3, ce qui résulte en un notable gain de vitesse de traitement. Par opposition, dans les dispositifs usuels à microprocesseur ou mi- -7- ni-ordinateur, un changement d'état des entrées crée une interruption, c'est-à-dire une demande d'accès à l'unité centrale qui, si elle l'accep- te, est alors mobilisée exclusivement pour cette tâche. Au contraire, le système selon l'invention est toujours disponible pour une ou plusieurs prises de décisions au cours de chaque cycle des adresses-mémoires Si le programme contient par exemple 1000 instruc- tions et que la fréquence d'analyse est de I M Hz, cela signifie que cha- que instruction est testée 1000 fois par seconde, l'action de sortie correspondante étant produite dans la microseconde qui suit une compa- raison satisfaite. En ce qui concerne la programmation de l'ensemble, les mémoires 1, 2 et 3 peuvent être du type mémoire morte (ROM), mais on utilisera de préférence des mémoires mortes programmables par l'utilisateur (PROM) ou mieux, des mémoires mortes programmables et effaçables que l'on peut ef- facer et reprogrammer (EPROM). Il est possible d'écrire les programmes sous la forme décrite dans l'exemple précédemment donné, mais on fera de préférence appel à un lo- giciel de développement qui permet très simplement d'établir le program- me, voire de le transférer dans les mémoires 1, 2, 3 à partir d'ins- tructions claires pour le non-initié. On créera d'abord un vocabulaire mnémonique selon lequel on baptise- ra les entrées 8, les registres Il et les sorties 9 On introduit alors les instructions sous forme d'équations logiques telles que AUT=O * FC = 1 * CTOP = O +STP = 1 =MOT=O * LT 3 = 1 qui pourraient signifier: si le bouton AUT (automatique) n'est pas ac- tionné ET que le capteur de fin de course FCI est actionné ET que le compteur d'opérations CTOP est à zéro OU que le bouton STP (stop) est pressé ALORS couper le moteur ET allumer la lampe-témoin no 3. Le logiciel attribue les adresses d'entrée et de sortie 3 et crée les mots instruction I et grille 2 correspondants Il peut également préparer directement les données nécessaires à la transcription dans des mémoires mortes programmables éventuellement effaçables (PROM, EPROM). Le dispositif selon l'invention présente, outre ce qui a été dit, l'avantage que, n'étant pas séquentiel, les groupes d'instructions peu- vent 8 tre introduits dans n'importe quel ordre Il suffit qu'une condi- tion ou un groupe de conditions soit suivi de l'action correspondante. Mais, chacun de ces groupes conditions-actions peuvent être loges n'im- 8 - porte o en mémoire Ceci est particulièrement utile lors du développe- ment puisque l'on peut à tout moment ajouter de nouveaux éléments au programme ou en éliminer sans rien changer au reste. Enfin, puisque l'analyse cyclique 4 peut être limitée 5 à une par- tie seulement des mémoires 1, 2, 3, ceci pouvant être modifié à volonté, il est possible de stocker plusieurs programmes avec, par exemple, divers modes de fonctionnement, des programmes d'autp-contrôle et de diagnostic en cas de panne, etc. Au cas o un tel dispositif reçoit une nouvelle affectation, il suf- fit de reprogrammer les trois mémoires 1, 2, 3 sans aucune modification de composants ou de circuits. Dans la description qui précède, ainsi que dans les revendications est utilisé le terme "grille" Ce terme est à peu près équivalent à ce- lui de "masque" habituel dans le domaine des microprocesseurs Un masque sert à ne prendre en compte que certains bits dans un mot alors que dans le cas présent la grille peut également être appliquée à des sorties mémorisées, ce qui implique des opérations plus complexes que la simple opération ET du masquage En outre, le bus-grille 12 est également susceptible de véhiculer des instructions à destination de périphériques intelligents, ce qui est encore plus qu'un simple masquage Aussi a-t-on choisi le terme "grille" de préférence à "masque". 9 - REVENDICATIONS 1 Dispositif logique programmable caractérisé par le fait qu'il comporte trois mémoires ou groupes de mémoires ( 1, 2, 3), la première contenant des mots-instructions ( 1), la seconde des mots-grille ( 2) per- mettant de prendre en considération tout ou partie d'un mot, la troisiè- me des paires d'adresses ( 3), définissant des éléments-sources ou destinations à mettre en communication, et comportant en outre au moins un comparateur logique ( 10) permettant de savoir si une condition est réa- lisée en vue de la faire suivre d'une action, les mémoires ( 1, 2, 3) é- tant explorées cycliquement ( 4) et en synchronisme entre elles. 2 Dispositif selon la revendication 1, caractérisé par le fait qu' il comporte en outre un premier bus ( 6) ou groupe de lignes permettant de mettre en communication soit une entrée ( 8) avec le comparateur ( 10), un registre ( 11) ou un élément de sortie ( 9), soit la mémoire- instruction ( 1) avec un registre ( 11) ou un élément de sortie ( 9), et un deuxième bus ( 12) appliquant le mot-grille ( 2) au comparateur ( 10), à un registre ( 11) ou à un élément de sortie ( 9), et un troisième bus ( 15) amenant les adresses provenant de la mémoire-adresses ( 3) aux circuits d'entrée et de sortie ( 8, 9). 3 Dispositif selon l'une quelconque des revendications 1 et 2, ca- ractérisé par le fait que le comparateur ( 10) arme un drapeau d'égalité ( 16) si une succession de comparaisons satisfont à une équation logique contenant des opérations ET et des opérations OU présentées sous forme d'une somme de produits ou d'un produit de sommes, ce drapeau ( 16) libé- rant alors l'instruction à donner ( 7) lorsqu'une certaine situation des entrées a ainsi été reconnue comme vraie. 4 Dispositif selon l'une quelconque des revendications 1 à 3, ca- ractérisé par le fait qu'un ou plusieurs périphériques à programmes dé- centralisés ( 17) prennent en charge des opérations d'arithmétique, de comparaison, de comptage d'unités de temps ou toute autre impliquant un fonctionnement non-directement fourni par le système central, et ceci de manière à ne pas interférer avec le programme principal ni en retarder l'exécution. Dispositif selon la revendication 1, caractérisé par le fait qu'un générateur d'adresses cycliques ( 4) opère l'analyse cyclique des mémoires ( 1, 2, 3), cette analyse étant limitée entre une adresse initi- ale et une adresse finale par un limiteur de balayage ( 5), libérant ain- si d'autres parties de mémoire pour y loger des programmes secondaires ou d'aide au diagnostic en cas de défaut. - 6 Dispositif selon la revendication 1, caractérisé par le fait qu'un logiciel approprié ( 17) permet de présenter les conditions et dé- cisions sous forme mnémonique et les traduit directement en instructions de programmation pour les mémoires.