Brevet FR2394212A1 — publié le 19790105

L'invention concerne une logique séquentielle programmée permettant de réaliser un système logique de commande ; elle est applicable notamment dans les industries de l'électronique et dans les télécommunications. On connaît déjà un grand nombre de systèmes logiques de diverses structures adaptées au problème à résoudre. Les logiques câblées ont l'avantage d'être faites sur mesure pour un problème donné et elles ont une très grande rapidité de fonctionnement. Cependant leur structure rigide les limite à deux types d'applications, d'une part au problème où le critère de rapidité est déterminant, d'autre part aux applications parfaitement définies et figées telles qu'interface, aiguilleur, registre tampon, mémoire. Seules des grandes séries permettent d'amortir les coûts d'étude. L'avènement du microprocesseur a fourni un outil programmé de grande souplesse et qui peut être standardisé. Cependant cet outil plus particulièrement adapté au traitement des nombres, est mal adapté à un grand nombre d'applications aux systèmes de télécommunications, et souvent surdimensionné.Il existe également des logiques programmées faites à partir de composants standards mais qui ont l'inconvénient d'être conçues uniquement pour une application particulière. Le but de l'invention est de réaliser une logique programmée permettant de résoudre un grand nombre de problèmes logiques courants grâce à une structure adaptée au traitement bit par bit et comportant une grande capacité d'adressage. Une telle logique serait avantageusement réalisée en circuit intégré standard implanté sur une carte de circuit imprimé. L'invention a pour objet une logique séquentielle programmée pour réaliser des opérations logiques en décomposant lesdites opérations en une succession de tests de variables d'entrée, de commandes de variables de sortie et d'opérations internes, et comportant une base de temps, une mémoire principale adressée par un compteur ordinal et des moyens d'accès aux dites variables, caractérisée par le fait que, chaque ordre stocké dans la mémoire principale comportant un code d'opération, des données, une première adresse desdits moyens d'accès et une seconde adresse pour charger le compteur ordinal, la logique comporte une mémoire auxiliaire à accès direct adressée par ladite première adresse et recevant en entrée lesdites données, un circuit de test des variables d'entrée et de la sortie de la mémoire auxiliaire, et un circuit de contrôle de positionnement du compteur ordinal commande par le code d' opé- ration et la sortie du circuit de test. La logique selon l'invention comporte avantageusement un compteur d'indices permettant d'indicer la première adresse. Elle comporte également un registre de sauvegarde du contenu du compteur ordinal permettant d'effectuer des boucles de sous-programme. On va maintenant décrire à titre d'exemple une forme de réalisation de l'invention à l'aide de la figure annexée qui représente un schéma d'ensemble d'une logique programmée. Dans cette réalisation la mémoire M utilisée est formée de I à 4 bottiers comportant des mots de 24 bits. Le mot mémoire est formé d'un code d'opération COP de 3 bits, de deux éléments binaires de données dO, dl, d'une premiere adresse ai de 8 bits, d'une seconde adresse a2 de 10 bits, et d'un bit I destiné à la validation d'un compteur d'indices CI. L'accès aux variables d'entrée VE est effectué par un multiplexeur MX. La commande des variables de sortie VS est effectuée par un démultiplexeur DX suivi d'un groupe de bascules BS. Le multiplexeur et le démultiplexeur sont adressés par la première adresse ai par l'intermédiaire d'un additionneur AD. L'une des entrées de l'additionneur reçoit les 8 bits de l'adresse ai. L'autre entrée est reliée à la sortie d'un aiguilleur Ai positionné par le bit I ; les deux entrées de cet aiguilleur sont reliées, l'une à la masse et l'autre à la sortie du compteur d'indices CI Un compteur ordinal CO contient l'adresse du mot mémoire en cours de lecture ; l'entrée d'horloge H de ce compteur est reliée à une sortie Y d'une base de temps BT. A la réception d'une impulsion sur son entrée H le compteur ordinal est soit incrémenté d'une unité si son entrée de validation V est à l'état 1, soit rechargé à partir de son entrée E si l'entrée de chargement L est à ltetat 1.L'entrée E est reliée à la sortie d'un aiguilleur A2 ; l'une des entrées de cet aiguilleur reçoit la seconde adresse a2 du mot mémoire ; la seconde entrée de l'aiguilleur est reliée à la sortie s d'un registre de sauvegarde RS. L'entrée E du registre RS est reliée à la sortie S du compteur ordinal CO. Dans cette réalisation on utilise six ordres définis par un code d'opération COP à 3 bits. Ce code est reçu à l'entrée d'un décodeur D comportant six sorties 0 à 5.Les ordres correspondants sont les suivants - numéro O : saut systématique, - numéro l : test d'une variable d'entrée VE, - numéro 2 : commande d'une variable de sortie VS, - numéro 3 : commande d'une variable de sortie avec saut, - numéro 4 : saut en début d'un sous-programme, - numéro 5 : retour du sous-programme. Le circuit de contrôle des opérations de saut comporte une porte "OU" CC dont la sortie est reliée à l'entrée de chargement L du compteur CO et à l'entrée d'un inverseur Il dont la sortie est reliée à l'entrée de validation V du compteur CO. La porte CC est à 5 entrées dont 4 sont reliées aux sorties 0, 3, 4, 5 du décodeur D ; la Sème entrée est reliée à la sortie d'une porte "ET" Pi dont une entrée est reliée à- la sortie 1 du décodeur D. Une opération de test consiste à comparer la variable d'entrée VE au bit d'informations dO de la mémoire M. Pour cela la sortie du multiplexeur TZ est reliée à travers un groupe de portes P2, P3 à l'entrée d'une mémoire de test MT, par exemple une bascule de type D.Un comparateur CP dont la sortie contrôle la porte Pi, a ses entrées reliées d'une part à la sortie dO de la mémoire M et d'autre part à la sortie Q de la bascule MT. En cas d'égalité de la variable VE et du bit do, l'entrée L du chargement du compteur CO sera validée. La sortie 4 du décodeur D est reliée à l'entrée du chargement L du registre ES. La sortie 5 du décodeur D est reliée à l'entrée de validation V du registre ES et à l'entrée de positionnement A de l'aiguilleur A2. La commande des sorties se fait par émission d'une impulsion X en sortie X de la base de temps à travers deux portes "ET" en série (P4, P5) commandant l'entrée de chargement H des bascules de sortie BS.La porte P4 est contrôlée par une porte "OU" P6 dont les deux entrées sont reliées aux sorties 2 et 3 du décodeur D ; d'autre part la porte P5 est contrôlée par le bit dl du mot mémoire M. En effet, ce bit dl est utilisé pour distinguer les variables externes et internes au système; il est à l'état I dans le cas des variables externes VS. Les données de fonctionnement interne peuvent être stockées dans une mémoire auxiliaire MA ; dans cette réalisation les données internes sont à un seul bit et l'entrée E de la mémoire MA est reliée à la sortie dO de la mémoire M.L'état de la mémoire MA peut être testé par le comparateur CP ; pour cela la sortie S de la mémoire blA est reliée par une porte "ET" P7 et par la porte P3 à l'entrée de la bascule il. La porte P7 est contrôlée par le bit dl de la mémoire M à travers un inverseur I2 dont la sortie est également reliée à l'entrée de validation V de la mémoire MA.De cette manière l'utilisation de la mémoire est validée pour la valeur O du bit dl. Certains points d'entrée et de sortie de la logique sont utilisés pour la commande interne des circuits, par exemple la sortie du compteur d'indices CI est reliée à un groupe d'entrées du multiplexeur MX, de même certaines sorties du démultiplexeur DX sont reliées à l'entrée d'horloge du compteur CI et aux entrées de remise à zéro R du compteur CI, du registre ES et de la bascule MT. La programmation de cette logique utilise avantageusement un language évolué qui pourra être traduit en binaire sur un calculateur. Le programme traduit est introduit dans la mémoire M qui peut être une mémoire morte de type ROM ou une mémoire reprogrammable du type REPROM. Le fonctionnement du dispositif est le suivant. Pour chaque opération la base de temps BT délivre deux impulsions consécutives X et Y. L'impulsion X est utilisée pour le positionnement des circuits et l'impulsion Y pour la progression ou le chargement du compteur ordinal en fin d'instruction. Pour une instruction de saut systématique la sortie O du décodeur alimente à travers la porte CC l'entree L de chargement du compteur ordinal CO l'aiguilleur A2 dont son entrée A est alimentée par la sortie 5 du décodeur D, est positionné pour la réception de l'adresse a2 de la mémoire Me A l'appa rition de l'impulsion Y sur son entrée H le compteur ordinal CO est chargé avec cette adresse. Pour une opération de test d'une variable VE les portes "ET", PI et P2 sont validées. A l'apparition de l'impulsion X la valeur de la variable est stockée dans la bascule E aiguilleur A2 étant positionné sur la même entrée qu'en cas de saut systématique. Si la variable VE est égale à l'élément binaire do, le comparateur CP délivre un état I en sortie et le compteur CO sautera a l'adresse a2. En cas d'inégalité la sortie de la porte CC reste à l'état O et l'entrée de validation V du compteur ordinal passe à l'état 1. A l'arrivée de l'impulsion Y le compteur CO est donc simplement incrémenté d'une unité. Pour La commande d'une sortie, le bit di est à l'état I et la sortie 2 du décodeur est à l'état 1. Les portes P4 et P5 sont validées. A l'arrivée de l'impulsion X les bascules de sorties intéressées sont chargées et l'impulsion Y fait progresser le compteur ordinal d'une unité. Pour la commande d'une sortie avec saut le processus est similaire mais à l'arrivée de l'impulsion Y la sortie de la porte CC est à l'état I et le compteur ordinal est chargé avec l'adresse a2. L'instruction de saut en début de sous-programme alimente la sortie 4 du décodeur D et valide donc l'entrée de chargement du registre de sauvegarde. L'impulsion X charge donc le contenu du compteur ordinal dans ce registre et l'impulsion Y charge dans le compteur CO la partie a2 du mot mémoire qui donne L'adresse de début du sous-programme. L'instruction de fin du sous-programme valide la sortie 5 du décodeur D relié à l'entrée d'incrémentation V du registre ES et l'aiguilleur A2 est positionné sur la sortie S du registre RS. L'impulsion X incrémente donc le registre d'une unité puis l'impulsion Y charge dans le compteur ordinal cette valeur incrémentée Cet exemple de réalisation impose que L'adresse de l'ins- truction de saut au sous-programme et l'adresse de retour soient consécutives dans le programme principal. Le dispositif suivant l'invention, permet de résoudre un certain nombre de problèmes logiques en décomposant la solution en une succession d'opérations de tests -et de commandes et les moyens utilisés ont été simplifiés et standardises le plus possible. Sans augmenter la complexité du dispositif il est evidemment possible d'adjoindre d'autres moyens pour des applications particu lières, par exemple dans des applications de système de commutation il sera utile de disposer de temporisations. Une solution simple consiste à utiliser un circuit de temporisation relié à-une entrée du multiplexeur tIX et à une sortie du démultiplexeur DX, la fin de temporisation commandant la remise à zéro du compteur ordinal ; dans ce cas l'adresse zéro comporterait une instruc tion de tests de fin de temporisation. Il est évidemment possible sans sortir du cadre de l'invention de modifier la capacité des différentes parties du mot mémoire en utilisant un code d'opération différent, des mots de données et d'adresses de longueurs différentes. On peut également remplacer les moyens d'entrée et de sortie, les moyens de tests et les registres par des moyens équivalents. REVENDICATIONS 1/ Logique séquentielle programmée pour réaliser des opérations logiques en décomposant lesdites opérations en une succession de tests de variables entrée, de commandes de variables de sortie et d'opérations internes, et comportant une base de temps, une mémoire principale adressée par un compteur ordinal et des moyens d'accès auxdites variables, caractérisée par le fait que, chaque ordre stocké dans la mémoire principale (lI) comportant un code d'opération (COP), des données (dO, dl), une première adresse (ai) desdits moyens d'accès (MX DX), et une seconde adresse (a2) pour charger le compteur ordinal (CO), la logique comporte une mémoire auxiliaire (riA) a accès direct adressée par ladite première adresse (ai) et recevant en entrée lesdites données (dO, dl), un circuit de tests (CT)des variables d'entrée (VE) et de la sortie (S) de la mémoire auxiliaire, et un circuit de contrôle (CC) de positionnenement du compteur ordinal commandé par le code d'opération et la sortie du circuit de test. 2/ Logique séquentielle suivant la revendication i, caractérisée par le fait que les moyens d'entrée comportent un multiplexeur (E=) dont la sortie est reliée par un circuit a portes (P2, P3) a I'entrée du circuit de test (CT), et en ce que le circuit de test (CT) comporte une mémoire (MT) permettant de stocker ltinformation entrante et un comparateur (CP) permettant de comparer la valeur de la variable d'entrée (VE) a la valeur d'un élément de donnée mémoire (dO), la sortie (S) du comparateur (CP) étant validée par le code d'opération, de test. 3/ Logique séquentielle suivant la revendication 2, caractérisée par le fait que la mémoire auxiliaire (MA) reçoit en entrée une partie des données stockées en mémoire principale (M) et a sa sortie reliée au circuit de test (CT), le choix entre le test d'une donnée entrante (VE) et d'une donnée en mémoire auxiliaire étant effectué en fonction d'une valeur d'un élément binaire stocké en mémoire principale (M). 4/ Logique séquentielle suivant la revendication 1 permettant d'effectuer des sous-programmes caractérisée par le fait qu'elle comporte un registre de sauvegarde (RS) du contenu du compteur ordinal et un aiguilleur (A2) dont une entrée est reliée à la sortie du registre de sauvegarde et la seconde entrée est reliée à la sortie de la mémoire principale (M) délivrant ladite seconde adresse (a2), la sortie de l'aiguilleur étant reliée à l'entrée du compteur ordinal, et le contenu du registre de sauvegarde étant incrémenté d'une unité avant son chargement dans le compteur ordinal en fin de sous-programme. 5/ Logique séquentielle suivant la revendication 1 caractérisée par le fait qu'elle comporte un compteur d'indices (CI) et un additionneur (AD) à deux entrées dont une entrée reçoit ladite première adresse (ai) et dont la seconde entrée est reliée à la sortie du compteur d'indices à travers un aiguilleur (Ai) contrôlé par une partie (I) de l'ordre stocké en mémoire principale (M), l'une des entrées de l'aiguilleur étant reliée à la sortie du compteur d'indices et la seconde entrée recevant une valeur binaire zéro, et la sortie de lfaddi- tionneur étant reliée à l'entrée d'adressage desdits moyens d'entrée et de sortie, et de la mémoire auxiliaire.