Implémentation dans l'architecture des calculatrices programmables soviétiques "Electronics MK-52"



Dans cet article, je veux parler de l'architecture des microcalculateurs programmables soviétiques en utilisant la calculatrice électronique MK-52 comme exemple et comment elle peut être intégrée à son architecture.

Les calculatrices soviétiques de la famille " Electronics B3-34 " ("Electronics MK-56", "Electronics MK-61" et "Electronics MK-52") étaient particulièrement populaires en URSS. La raison en était non seulement un prix abordable de 65 roubles pour le MK-54, 85 roubles pour le MK-61 ou 115 roubles pour le MK-52, mais aussi un langage de programmation développé. Cette famille de calculatrices est devenue la norme de facto pour de nombreux utilisateurs. Un grand nombre de livres ont été consacrés à la programmation sur ces machines et à la publication d'algorithmes prêts à l'emploi. L'électronique MK-52 a même volé dans l'espace sur le vaisseau spatial Soyouz TM-7, où il était censé être utilisé comme secours en cas de dysfonctionnement de l'équipement de navigation de descente. Même dans la marine soviétique, la calculatrice MK-52 Electronics avec l'unité d'extension de mémoire Astro PDU était pendant un certain temps un outil standard pour les calculs de navigation.



Le microcalculateur MK-52 appartient à la deuxième génération de microcalculateurs programmables soviétiques.

La première génération était la famille B3-21 (comprenant MK-46 , MK-64 et MS 1103 ). Le modèle de base B3-21 a été développé en 1975 et produit en série depuis 1977. Elle avait une pile de travail pour deux nombres (B3-21, ainsi que la famille B3-34 - calculatrices avec RPN - notation polonaise inversée (ou non bloquante) - où les nombres sont d'abord saisis sur la pile, puis le bouton de fonctionnement est enfoncé).



En plus de la pile de travail, il y avait une pile d'anneaux supplémentaire de 6 numéros. Vous pouvez écrire un nombre dans un cercle sur cette pile, puis l'extraire. Et sept autres registres de mémoire avec les numéros 2 à 8 (huit dans MK-46, MK-64 et MC 1103) sont des registres de mémoire ordinaires pour stocker des nombres. Le nombre d'étapes de programme pour B3-21 est de 60. Dans les modèles MK-46, MK-64 et MC 1103, il y en a 66. Les derniers modèles sont des calculatrices de bureau avec des blocs pour surveiller les paramètres à partir d'appareils externes. Dans MK-46, il n'y avait que la possibilité de recevoir des codes numériques, et dans MK-64 et MS 1103, une cassette avec un convertisseur analogique-numérique a été installée, et une puce supplémentaire K145IK1801, qui a organisé l'interaction. En raison de l'installation de cette puce, un registre de mémoire supplémentaire avec le numéro 9 et six étapes de programme supplémentaires sont apparus. La lecture a eu lieu via le registre numéro 9 en entrant le code de commande. De même, en passant, les MK-61 et MK-52 étaient équipés de la puce K745IK1306, qui, en plus de fonctions supplémentaires, a ajouté un registre et sept étapes de programme supplémentaires, mais plus à ce sujet plus tard.

Quelque part en 1980, la deuxième génération de microcalculateurs programmables est apparue face à "Electronics B3-34". Les premiers exemplaires ont coûté 120 roubles, mais l'usine a rapidement réduit le prix à 85 roubles et a vendu le modèle quelque part jusqu'en 1985. En général, la tarification des calculatrices fait l'objet d'une discussion pour un article séparé: quelque part, les prix ont diminué au fur et à mesure de leur publication, quelque part ils ont augmenté. Si vous êtes intéressé, vous pouvez consulter mon site pour connaître les changements de prix au fil des ans - j'essaie de collecter autant d'informations que possible. La calculatrice B3-34 a été remplacée par des fonctions similaires, mais plus compactes MK-54, MK-56 de bureau. Quelques années plus tard, la puce K745IK1306 est apparue avec des fonctions supplémentaires, et a publié de nouveaux modèles MK-61 dans un boîtier similaire au MK-54, et le MK-52 horizontal avec une EEPROM interne K1601PP1 à 512 étapes (chose unique, je n'ai pas vu d'autres calculatrices avec EEPROM dans le monde : ils ont soit une RAM CMOS à faible consommation, soit un flash plus moderne) et deux connecteurs pour connecter des appareils: le premier a été utilisé pour connecter des modules de mémoire externe des "unités d'extension de mémoire PDU", et le second était technologique et rien n'y était connecté (l'usine a expliqué comment la technologie connecteur biologique pour les tests en cours de production).

Vue arrière:





Par rapport aux microcalculateurs de première génération, l'amélioration était significative. Le nombre de registres pour stocker les numéros est passé de 8/9 à 14/15.
La pile opérationnelle de deux registres a augmenté de deux autres registres - X, Y, Z, T. Un registre de la dernière valeur du registre X est apparu avant d'effectuer la dernière opération arithmétique - BX (nous avons enregistré les registres d'exploitation X, Y, Z, T avec le dernier registre X, plutôt dans l'ensemble, les calculatrices Hewlett Packard avec des registres similaires, cependant, c'est là que se termine l'identité avec HP). La zone de programme de 60/66 étapes est passée de 98 étapes (pour B3-34, MK-54, MK-56, MC 1104) à 105 étapes (pour MK-61 et MK-52).

Dans le programme, vous pouvez utiliser des boucles automatiques dans les registres L0-L3, puis le registre correspondant est réduit de 1, par rapport à zéro et de branchement à l'adresse.
Les calculateurs de deuxième génération ont considérablement amélioré la mise en œuvre de l'adressage indirect. Tout registre de mémoire peut être utilisé comme index pour enregistrer / récupérer des numéros, ainsi que pour des transitions indirectes vers des programmes et des sous-programmes, y compris avec une condition. Dans ce cas, la valeur du registre de saut indirect sera automatiquement réduite (registres 0-3), augmentée (registres 4-6) ou laissée inchangée.

Toutes ces actions automatiques avec registres économisent considérablement la zone de programme et facilitent la programmation.

Vous pouvez parler de travailler avec le MK-52 pendant longtemps. Je viens de parler brièvement des capacités de ces machines pour ceux qui ne travaillent pas avec elles.

Je voudrais commencer la conversation sur l'architecture avec une histoire. La famille des calculatrices B3-21 et B3-34 est le développement de l'Institut de recherche scientifique sur les microdispositifs de Kiev (NIIMP). Les premières calculatrices appelées « Electronics 4-71 » sont apparues en 1971. Deux entreprises ont été chargées de fabriquer des calculatrices sur de grands circuits intégrés - le NIIMP de Kiev et le Leningrad Svetlana - lors du 24e Congrès du PCUS en 1971. En conséquence, à peu près au même moment, deux modèles de calculatrices sont apparus - l'électronique 4-71 susmentionnée et l' électronique 24-71 ( obtenez-vous le nom des modèles?). Le modèle 4-71 a été réalisé sur le contrôle des microprogrammes, en tant que premières calculatrices de la famille Iskra, avec une logique sur les machines Moore en collaboration avec le bureau de conception spécial de l'État de Leningrad. Autrement dit, lorsque le bouton est enfoncé, les déclencheurs nécessaires cliquent (selon la fonction du bouton), qui forment le passage des microcommandes correspondantes. Automates - c'est certainement bon, mais vous n'irez pas loin en termes d'amélioration. Même les calculatrices Iskra-114 du State Special Design Bureau en 1974 avaient déjà des ROM K5YAP011001 (probablement les premières dans les microcircuits de puce-ROM de l'URSS) avec firmware.

Et donc, en 1973, NIIMP est apparu comme le microcontrôleur de sa propre conception. Enregistrez ce site par référence de son vivant - il existe de nombreuses informations intéressantes sur NIIMP. Le premier microcalculateur électronique B3-09 sur la puce K145IK2A est sorti comme la "première crêpe" et n'a pas pris racine, mais ses modifications B3-09M Electronics , B3-14M et B3-14 ont explosé, des centaines de milliers de pièces ont été produites chaque année et résolu le problème du calcul du déficit. Il n'y avait pas assez de calculateurs de notre production pendant ces années et ils étaient importés de l'étranger, à la fois des pays socialistes et des pays capitalistes. Rappelez-vous le film "Office Romance" en 1977? Vous pouvez voir, à partir de 9h15 , quels calculateurs sont sur les tables - principalement le transistor GDR "Soemron 220" et le bulgare "Elka 50" de la première modification.



Des photos plus grandes peuvent être vues sur le site Web de Radio Pictures: K145IK2 , K145IK501 , K145IK502P .

Ce sont des cristaux de microcircuits K145IK2, IK501 et IK502. Comme vous pouvez le voir, les puces d'une calculatrice simple à quatre opérations arithmétiques K145IK2 coïncident pratiquement avec les puces de la calculatrice programmée "B3-21" (K145IK501, 502 et 503). Ces derniers ne diffèrent que par le «firmware». Le numéro de micrologiciel est affiché sur une couche distincte après le nom.





Et c'est déjà une puce de cristal plus parfaite K145IK1302 , qui fait partie des calculatrices programmables de la famille "Electronics B3-34", dont la "Electronics MK-52", dont parle cet article.

Trois zones sont visibles au centre de la puce (marquées en vert). Il s'agit de la mémoire des microcommandes, de la mémoire des programmes de synchronisation et de la mémoire des programmes. Le jaune indique les registres à décalage en anneau.
Le processeur de la calculatrice fonctionne à une fréquence de 75 à 100 kHz. Le processeur possède un ALU (bit arithmetic logic device) à un bit avec plusieurs sources et récepteurs.

Pour quatre microtactes, le processeur exécute une micro-commande (sur un ordinateur portable). Chaque micro-commande indique quel ensemble de sources prendre pour l'additionneur et où mettre le résultat.
Au total, le microcircuit possède 68 microcommandes d'une longueur de 27 bits chacune, 128 programmes de synchronisation différents et 256 cellules pour les commandes.

Le microprocesseur de la calculatrice (il serait plus précis de dire le microcontrôleur, car à l'intérieur il y a à la fois ROM, RAM et ports d'entrée-sortie) fonctionne selon un principe cohérent. Tous les registres sont des registres à décalage.



À l'intérieur du processeur, tout est bouclé et ressemble à un parc d'attractions avec des carrousels, une grande roue et un bus idéal avec les visiteurs, avec une porte fonctionnant à l'entrée, l'autre à la sortie, et les visiteurs se déplacent progressivement du début à la fin.
Un employé du parc (micro-commande), vérifiant avec un cahier (champ de micro-commande), sur chaque microtact, extrait (ou non) du carrousel de cellules approché, de la grande roue ou du prochain passager du bus (c'est-à-dire le prochain registre), les dirige vers l'attraction "additionneur", où certaines actions ont lieu avec eux et le résultat est renvoyé, également en fonction des champs de la micro-commande. Cette routine est valide pour 4 bits, après quoi le numéro de mesure est incrémenté.

Comme les registres sont circulaires, les développeurs ont dû régler correctement leur taille. En conséquence, le nombre de base pour les calculatrices de la famille K145IK13 était le nombre 42.

Cette longueur (42 tétrades) a des registres séquentiels - registres M, R et ST. Afin de ne pas attendre que les nombres nécessaires avancent tout au long de l'anneau, il existe en outre plusieurs registres 4 bits et un bit comme le registre de transfert disponibles dans chaque cycle d'horloge. Un nombre avec une mantisse de 8 bits et un ordre de 2 bits occupe 14 tétrades (un tiers de 42). Exactement trois nombres s'inscrivent dans le registre en anneau, ce qui permet, par exemple, d'implémenter le registre de mémoire et le stockage de deux nombres lors du calcul entre parenthèses, comme il est implémenté dans la calculatrice "Electronics B3-32" sur K145IK1301.

Avec le nombre 42, la soi-disant "mémoire des programmes de synchronisation" travaille également dur, qui contiennent les adresses des microcommandes qui doivent être exécutées.

Il est appelé programme de synchronisation car il est étroitement synchronisé avec la taille du registre en anneau et le numéro de mesure 0-41 - un cycle en anneau.

Chaque programme de synchronisation contient neuf nombres de microcommandes qui doivent être exécutées.
Les commandes de synchronisation sont assez intéressantes. Les développeurs ont analysé les algorithmes et calculé que, en tenant compte des transferts, une opération ALU typique sur un ordinateur portable nécessite trois cycles d'horloge, et les actions effectuées sont assez similaires. Et ils ont fait en sorte que les microcommandes, en fonction du numéro de mesure (0-41), soient toujours exécutées dans le matériel dans l'ordre suivant:
0, 1, 2, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5



J'ai marqué en jaune les mêmes sections (microcommandes 3, 4, 5), qui sont exécutées sept fois de suite. Cela suffit pour traiter un numéro à huit chiffres. En fait, ce sont des microalgorithmes prêts à l'emploi. D'une part, de telles boucles intégrées réduisent la capacité de la ROM requise pour le programme, mais d'autre part, imaginez qu'une telle séquence s'exécute toujours sur chaque ligne du programme.

Puisqu'une tétrade est traitée en trois mesures, les données pendant ce temps parviennent à sortir dans un anneau. En raison de cette caractéristique, les nombres dans les registres en anneau ne sont pas stockés dans des cellules consécutives, mais dans chaque tiers, de sorte qu'ils arrivent juste à temps pour la fin des cycles 3, 4, 5.

La figure ci-dessous montre la zone de mémoire du programme. La mémoire des programmes de chacun de ses champs contient des informations sur trois programmes de synchronisation qui doivent être exécutés en un cycle de sonnerie. Il existe également une nuance: le troisième programme de synchronisation est généralement utilisé pour toutes sortes de branches. Dans le registre R, les cellules 36 et 39 sont affectées à l'adresse du programme en cours d'exécution, elles apparaissent simplement sur les horloges correspondantes lorsque les deux premiers programmes de synchronisation sont exécutés, et le troisième programme de synchronisation traite cette adresse.

Bien sûr, l'intérieur du microprocesseur fonctionne encore plus compliqué. Seule une description de celui-ci avec toutes les nuances occupe plus d'une douzaine de pages du livre Trokhimenko Y.K. «Microcalculateurs programmables. Appareil et utilisation "(google book).

Cette architecture à trois niveaux de traitement - mémoire de programme avec adresses de programmes de synchronisation, mémoire de programmes de synchronisation avec nombre de microcommandes et mémoire de microcommandes avec un ensemble de sources et récepteurs est la base de toute une famille de microcircuits K145IK2, K145IK13xx, K145IK18xx et K145IK19xx, seulement ils ont des tailles de registre différentes, l'adressage et le branchement sont effectués sur un autre et d'autres améliorations et modifications sont apportées.

Et la chose la plus intéressante que les développeurs ont faite en 1973, c'est qu'ils ont amené le cerveau du processeur pour l'expansion. Je veux dire les registres de sonnerie. Dans le premier calculateur de masse B3-09M, la capacité du registre était suffisante et aucune expansion n'était nécessaire. Mais que faire si l'attraction n'est pas suffisante? Vous pouvez augmenter sa taille ou en mettre une autre à côté. Afin de ne pas augmenter la taille de la ROM, et donc la taille du cristal, pour réduire le rendement des cristaux appropriés dans le processus de production et d'autres difficultés, les développeurs ont pris plusieurs processeurs identiques et ont fait un registre d'anneau commun.



Ici, sur la photo à gauche, une partie du cristal K145IK2 et à droite, K145IK5. Vous pouvez faire attention au coin supérieur gauche. Il y a déjà dans le processus de production un petit cavalier qui ferme deux plots de contact (registre d'anneau). Et dans K145IK5, ce cavalier ne l'est pas et le registre d'anneau n'est pas fermé.

En 1975, les premiers échantillons de la calculatrice programmable " Electronics B3-21 " sont apparus. Vous pouvez y voir jusqu'à trois processeurs de type K145IK5 - K145IK501, K145IK502 et K145IK503. Ils ne diffèrent que par le firmware.

Le premier processeur K145IK502 est engagé dans l'entrée et la sortie au clavier de l'indicateur, le traitement des actions en mode automatique et l'entrée et l'exécution du programme.
K145IK501 est engagé dans des opérations arithmétiques et K145IK503 - dans des opérations trigonométriques. Et comme une capacité était également nécessaire pour stocker le programme utilisateur et les registres de mémoire, en plus de l'écart dans le même registre, ils ont mis la puce K145IR1, qui est un grand registre à décalage. En conséquence, trois manèges sont apparus avec trois bus connectés en série et un train. Et toutes les données se déplacent constamment le long d'un anneau commun avec la vitesse d'un générateur d'horloge.

Grâce à Felix Lazarev, qui a pu lire le firmware de ces microcontrôleurs et comprendre l'architecture, nous avons obtenu un émulateur de calculatrices telles que MK-61 et B3-34, où vous pouvez étudier son travail plus en détail et jouer avec l'activation et la désactivation des puces de l'anneau commun.

Le premier microcalculateur de la deuxième génération " Electronics B3-34 " utilisait des puces K145IK1302 (entrée / sortie, modes de fonctionnement), K145IK1303 (fonctions mathématiques) et deux registres K145IR2 de 1008 bits chacun.



Au total, deux registres M et deux registres de 1008 bits forment chacun un anneau de 42 * 4 + 42 * 4 + 1008 + 1008 = 2352 bits.

Les développeurs ont divisé l'ensemble du champ de données en trois zones identiques de 784 bits (196 tétrades ou 98 octets). Le programme utilisateur est stocké dans la première zone (98 étapes), les registres de données dans la deuxième zone (14 registres avec les nombres 0-9, a, b, c, d sont chacun 14 tétrades) et la troisième zone est celle de service.

Quelques années après l'apparition du B3-34, deux nouveaux modèles sont apparus - le MK-61 et le MK-52. Ils ont ajouté une autre puce K145IK1306, où les opérations avec degrés et les opérations logiques sont calculées. La bague a commencé à ressembler à ceci:



Veuillez noter que dans K145IK1306 il y a le même registre M que dans K145IK1302 et K145IK1303. L'apparition de cette puce a ajouté un registre de mémoire (14 tétrades) à l'anneau, sept autres étapes de programme (14 tétrades) et la zone de service a augmenté de 14 tétrades.

Dans le MK-52, il existe également une puce K745IK1801, qui transfère les données d'une puce EEPROM ou d'une unité d'extension de mémoire amovible. Mais il n'utilise pas d'anneau de registre.

La répartition de l'ensemble de l'anneau de données dans les calculatrices de type MK-61 et MK-52 est illustrée dans la figure ci-dessous:



Comme je l'ai dit, l'anneau entier est divisé en trois zones: M1, M2 et M3.

Dans la région M1, il existe des registres de mémoire 0-9, a, b, c, d, e. La chose intéressante à leur sujet est que pour stocker des nombres, vous avez besoin de 12 tétrades (1 est le signe de la mantisse, 8 est le signe de la mantisse, 3 est l'ordre) et 14 tétrades sont allouées pour un registre (de sorte qu'il est divisé en 42 dans le processeur). Par conséquent, deux cahiers pour chaque registre ne sont pas utilisés.

Dans le domaine de M3 se trouve la mémoire de programme. Tout y est simple - 98 étapes pour B3-34 et 105 étapes (14 tétrades de plus) pour MK-61 et MK-52.

La zone M2 est la plus intéressante. En plus des registres X, Y, Z, T, BX, il contient également la région Ms, le canal de communication KS et Label.

Les zones illustrées ne se suivent pas. Rappelez-vous, j'ai dit que dans le programme de synchronisation, il y a plusieurs opérations répétitives qui prennent trois cycles d'horloge et provoquent le stockage des nombres dans les registres sur une cellule sur trois? C'est ce qui est implémenté dans les données en anneau. D'abord, la première tétrade de la région M1 est transmise, puis la première tétrade de la région M2, puis la première tétrade de la région M3. Viennent ensuite les seconds cahiers et ainsi de suite.Et tandis que pendant trois cycles d'horloge, les microcommandes 3, 4, 5 sont élaborées dans le programme de synchronisation, les zones inutiles sont ignorées.

Lorsque j'ai traité de la distribution des données dans un anneau commun, j'étais très déprimé par la zone désignée comme Mme Il est assez grand, occupant un sixième de la zone de données de l'anneau. Et cette zone n'est pas utilisée dans la calculatrice. Lors du développement de l'architecture, les développeurs ont fourni l'opportunité de créer une "zone de programme de données". C'est un tel domaine dans lequel on peut écrire soit un programme soit des registres de données. De plus, une zone assez large - 56 étapes de programme. Dans les calculatrices, il était censé inclure des fonctions spéciales en combinaison avec le bouton [K] pour l'échange (au-dessus des boutons 1 et 2, il y a maintenant une place vide). Mais, je le répète, dans les modèles en série, cette zone a disparu, et nous aurions donc pu avoir plus de registres de mémoire ou un programme 56 étapes de plus. Ce domaine a été négligemment mentionné dans la revue "Technique-Youth", n ° 7 pour 1986.

image

L'élément le plus important de synchronisation dans les données en anneau est le soi-disant «Label». Il s'agit d'une séquence de neuf cahiers constitués d'unités. Lorsque le code «Tag» apparaît, le compteur interne des processeurs est réinitialisé et la sonnerie commence à compter par rapport au code Tag. Au tout début, après avoir allumé la machine, le processeur de tête K145IK1302 initialise l'anneau et forme la marque. Les commandes et le contenu des registres sont sélectionnés de sorte que le code d'étiquette ne puisse être trouvé ni dans les données ni dans le programme.

Les utilisateurs avancés de calculatrices de la famille B3-34 ont entendu parler du «mannequin» - une opération non documentée lorsque seul un point décimal est affiché sur l'indicateur. Il s'agit d'un code composé uniquement d'unités. Lorsque ce code apparaît, le compteur interne s'égare et la calculatrice commence à paniquer - deux codes apparaissent. L'étiquette et toute la synchronisation s'égarent - la calculatrice prend une zone mémoire pour une autre.

L'adressage interne est relatif au code d'étiquette. Lorsque la puce K745IK1306 avec un registre supplémentaire M est apparue, le nombre de cellules a augmenté et elles ont été conditionnellement ajoutées à la fin, car dans l'architecture, toute la zone de données dans l'anneau est continue. Dans cette architecture, vous pouvez ajouter un autre processeur tel que K145IK13, puis il deviendra un registre de mémoire de plus, et 7 étapes de programme supplémentaires seront ajoutées (maximum 112).

Très probablement, la représentation interne des données fonctionne de manière similaire dans la calculatrice non programmable Electronics MK-44 , fabriquée sur le même microprocesseur K145IK1305. C'était l'une des calculatrices de bureau les plus populaires de notre pays. Il a trois registres de mémoire. Je me demandais ce qui arriverait si j'arrachais l'anneau du registre M sorti et y ajoutais de la mémoire. L'expérience a été un succès . Le processeur a «récupéré» la mémoire apparue et il y avait dix registres de mémoire dans la calculatrice.

Et comment les processeurs interagissent-ils entre eux? Ils «communiquent» avec un champ spécial appelé «canal de communication» (CS). Les calculatrices de la famille B3-21 et les calculatrices de la famille B3-34 ont un processeur principal. Dans notre cas, il s'agit de K145IK502 pour B3-21 et K145IK1302 pour B3-34. Ils initialisent l'anneau lorsqu'il est allumé, forment le code «étiquette» et interagissent avec l'opérateur, organisant l'entrée au clavier et la sortie vers l'indicateur. D'autres processeurs sont en mode veille et attendent des commandes.

Un «canal de communication» est deux cahiers dans lesquels le processeur principal peut mettre un nombre - un octet avec un code d'opération.

Si le processeur principal ne peut pas traiter l'opération avec un code seul lorsqu'il travaille dans le cadre du programme ou en mode manuel, il place le code d'opération dans le registre de la sonnerie de la sonnerie et commence à attendre.

Les processeurs esclaves surveillent en permanence le registre du COP dans l'anneau de données. Dès qu'un code d'opération apparaît qui peut être traité par le processeur esclave, il commence à le traiter, par exemple, effectuer la fonction d'addition, calculer le sinus, etc. Le processeur esclave extrait indépendamment les registres nécessaires de l'anneau lorsqu'ils y parviennent dans un anneau, les rend opérations, et le résultat remet. Une fois que le processeur a effectué ses actions, il efface le registre du canal de communication, écrasant le bloc-notes le plus bas avec le numéro "F". Autrement dit, si le numéro 10 est apparu dans le canal de communication (code d'addition), alors à la fin du comptage, le numéro 1F sera inscrit dans le registre du COP.

En même temps que le code d'opération est défini dans le canal de communication, un compteur de veille spécial, comme une horloge de surveillance, est activé dans la puce de la tête. Si aucun processeur esclave ne peut traiter la commande via le canal de communication, après un certain temps, le processeur hôte effacera le canal de communication et affichera un message d'erreur «YYGOG» sur l'indicateur.

Les puces esclaves utilisent ce délai si une erreur avec un nombre s'est produite pendant le processus de calcul. Par exemple, un utilisateur a tenté d'extraire une racine d'un nombre négatif. Dans ce cas, la puce esclave ne place rien dans le canal de communication et, après quelques secondes, le processeur hôte lui-même affiche un message d'erreur. Par conséquent, dans les calculatrices, la sortie de l'inscription "EGGOG" avec de telles erreurs a pris tellement de temps.

Le processeur principal peut ne pas savoir quels autres processeurs se trouvent dans l'anneau. Il place simplement le code dans le canal de communication, et d'autres processeurs le traitent. Vous pouvez, par exemple, remplacer la puce K745IK1306 par une autre, ou effectuer votre développement sur la base d'un microcontrôleur, comme vous l'avez fait à l'époque soviétique dans la calculatrice électronique MS-1104 .

En plus du bus de données série, les calculatrices de type «MK-52 Electronics» ont une interface avec EEPROM et modules d'extension de mémoire externe. Comme je l'ai écrit ci-dessus, le MK-52 possède une puce de mémoire effaçable électriquement K1601PP1, dans laquelle jusqu'à 512 étapes de programme peuvent être écrites. Au lieu de la mémoire de programme, des registres de mémoire numérique peuvent être enregistrés. Ce qu'il faut écrire - la mémoire de programme ou les registres, est déterminé par le commutateur "D-P" sur le panneau avant. Les mêmes zones d'EEPROM peuvent être utilisées à la fois pour le stockage de programmes et pour le stockage de registres. Vous pouvez écrire des registres dans l'EEPROM et les données enregistrées peuvent être extraites dans la zone de programme et vice versa.

Type de calculatrice côté microcircuit: Grands microcircuits



:



En plus de l'EEPROM interne, des modules de mémoire interchangeables "PDU" (unités d'extension de mémoire) ont également été produits. Ils sont une puce ROM où les programmes sont enregistrés.
Total modules connus:

  • PDU "Astro", également connu sous le nom de BRP-2 - programmes de navigation. Le module a été utilisé sur des navires, ce que j'ai écrit au début de l'article.
  • BRP-3 contenait des programmes mathématiques
  • BRP-4 - programmes mathématiques et programmes ménagers, y compris les jeux.

Les ROM étaient assez volumineuses et, dans une PDU, se trouvaient en fait dans des programmes à partir de deux modules. Autrement dit, les propriétaires du module BRP-3 pourraient ouvrir le boîtier, souder le cavalier et obtenir le module BRP-2 Astro.

Lorsque j'ai lu les clichés, j'ai trouvé un cliché d'un module de destination inconnu dans le module BRP-4. Il n'y a pas encore d'informations sur l'utilisation de ces vidages.

La puce de communication avec EEPROM ou PDU K745IK1801 est assez indépendante. Elle est également assise sur l'anneau de la calculatrice, mais ne suit pas les commandes. Il se souvient uniquement du contenu du registre X comme l'adresse et la longueur de l'accès à la ROM ou à l'EEPROM en appuyant sur le bouton [A ↑], et en appuyant sur le bouton [↑ ↓], il commence à effacer, lire ou écrire depuis, ou vers le programme ou la zone de données.

Par rapport à la ROM PDU, l'adresse dans le code parallèle est toujours définie sur le bus, et la PDU fournit toujours le contenu de la cellule.

Le module PDU est inséré dans la prise correspondante à l'arrière de la calculatrice MK-52.

Certes, chaque utilisateur de MK-52, ayant acheté une calculatrice, a vu deux connecteurs à l'arrière du boîtier - grand pour PDU et petit, on ne sait pas pourquoi. Dans les instructions et dans les magazines, les développeurs ont expliqué que ce connecteur n'est utilisé qu'à des fins technologiques au stade de la production.
Peut-être que certaines modifications non série de la calculatrice MK-52 ont été produites, mais je n'en ai pas entendu parler. Tout le temps, je voulais développer une sorte d'appareil qui pourrait s'asseoir sur ce connecteur et l'utiliser au travail.

Si vous vous tournez vers le conceptcalculatrice, vous pouvez voir qu'en plus des tensions d'alimentation et des signaux d'horloge, les signaux de l'anneau provenant de l'entrée et de la sortie de la puce K745IK1801 sont également émis vers le connecteur. Afin d'infiltrer et d'enregistrer quelque chose dans le ring, il fallait le casser. Bien sûr, changer quelque chose dans le schéma MK-52 est la dernière option. Mais il s'est avéré que le signal de sortie de l'anneau de puce K745IK1801 est faible. Très probablement, il est légèrement serré à l'une des tensions d'alimentation et il peut être surchargé assez librement avec son signal. Alors je l'ai fait. Le microcontrôleur surveille l'anneau MK-52, l'analyse et peut lire et écrire des données.

En conséquence, nous avons obtenu un appareil - le module FRS-BRP. Voici un diagramme schématique:

image

Le cœur du module est le microcontrôleur STM32F205. Il interrompt depuis le générateur de fréquence interne du calculateur lit bit par bit les données transmises le long de l'anneau. Surveille simultanément le bus parallèle pour émuler l'unité d'extension de mémoire. Un grand nombre de comparateurs sont nécessaires pour la détection correcte des niveaux logiques. Le fait est que la calculatrice utilise une tension négative de 0 à -15 volts. Cette tension est générée à partir d'une source d'alimentation de 5 volts. La carte devait également utiliser ces tensions, mais pas seulement à -15 volts, mais à -5 et -3,3. En conséquence, la tension qui est de 0 volt dans la calculatrice de la carte FRS-SRP est devenue +5 volts, et celle qui -5 volts est devenue nulle. Sur les comparateurs, tout peut être bien filtré, il y en a beaucoup, mais ils sont maintenant très bon marché. Fondamentalementles comparateurs participent au décodage des signaux du bus parallèle de l'émulateur PDU. Bien sûr, la PDU elle-même peut être émulée en envoyant des données directement à l'anneau. Mais pour l'authenticité, afin que l'utilisateur appuie sur les «mêmes» boutons qui sont décrits dans les instructions pour la PDU, j'ai décidé de faire un émulateur à part entière.



Maintenant, peu de gens utiliseront la calculatrice MK-52 pour son usage prévu. Il existe des moyens de calcul plus efficaces. Mais pour les passionnés, pour ceux qui veulent gérer sa structure interne, qui veulent utiliser des programmes éprouvés ou ceux qui veulent jouer à ces jeux qui ont rendu les utilisateurs du milieu des années 80 fous, ce module peut être utile.

Ce que ce module peut faire:

  1. Il s'affiche sur l'écran OLED de contenu pour sélectionner deux registres de calculatrice RAM (0-9, A, B, C, D, E) en même temps. En mode compte de programme, lorsque l'écran principal de la calculatrice clignote, vous pouvez cliquer sur les boutons du module pour afficher les registres.
  2. () -, -3, -4, -5 ( -5 , ).
  3. (105 ) 1 130.
  4. 130 (105 ).
  5. . 3, 4 (0-9, A, B, C, D, E) 130 .
  6. , (, ) 50 .
  7. («-1», «-2», «-3», «-1», «-2», «»).
  8. 7451303 , , . , 7451303 , « », , .
  9. 0x28 (K *) 0x29 ( /).

Comme je l'ai écrit ci-dessus, le code d'opération est transmis sur le canal de communication. Désormais, presque tous les codes sont occupés et seules trois commandes inutilisées peuvent être saisies à partir de la télécommande - les codes 27, 28 et 29. En principe, elles sont suffisantes pour certaines tâches. Bien que je ne sache pas quelles commandes peuvent être implémentées car la calculatrice pour son usage prévu n'est plus un gâteau, mais le fait du traitement est fascinant.

Eh bien, et bien sûr - communication avec un ordinateur via USB. Le module met en œuvre des commandes de dialogue simples, vous pouvez lire et écrire le contenu des données, du programme, des zones de service ou de l'anneau entier. Il peut être enregistré sur disque, extrait, analysé, modifié et écrit sur une calculatrice. Voici une capture d'écran:

image

Vous pouvez, par exemple, mettre un certain nombre dans le canal de communication et voir comment il sera traité par d'autres puces. Ou découvrez ce qui se passe si une cellule de service est écrite différemment. Ou vérifiez s'il est possible de retirer la calculatrice de l'état "sombre", si le registre X est corrigé à travers le module à travers le module, disons de 500 à 0, cela le sortira-t-il de la stupeur?

Malheureusement, seule une sonnerie de données sort de la calculatrice. Et d'autres états comme un compteur de logiciels, un signe - si la calculatrice calcule selon le programme ou s'affiche sur l'indicateur, etc. - cette information se trouve dans le registre interne R.

Mais les développeurs l'ont fait sortir. Si vous regardez le circuit du même MK-52, vous pouvez voir qu'il y a un "certain cavalier" - c'est la sortie et l'entrée du registre "R". Autrement dit, si vous le souhaitez, vous pouvez vous connecter à ce bus et en examiner plus attentivement l'intérieur.

De tels registres déduits se trouvent probablement dans tous les microcircuits des familles K145IK5, K145IK13, K145IK18 et même K145IK19. Le célèbre microcircuit de la montre «K145IK1901» a également mis en évidence les registres M et R. Vous pouvez vous en assurer en consultant le schéma électrique.



J'ai même, à titre d'expérience, connecté aux registres de l'horloge sur K145IK1901 et pris où il avait les données.

En conclusion de l'article, je dirai que la famille de microcontrôleurs mentionnée était très populaire dans CCCP, un grand nombre de calculatrices - des modèles ont été lancés sur la base:

  • K145IK2 - B3-09, B3-09M, B3-14, B3-14M;
  • K145IK5xx - B3-05M, B3-21, MK-46, MK-64, MS-1103, MK-59, Elwro 330;
  • K145IK13xx - B3-32, MK-44, B3-34, MK-54, MK-56, MK-52, MK-61, MS-1104.

Sur les microcircuits des séries K145IK18xx et K145IK19xx, il y a des appareils électroménagers, parmi ceux connus sont des minuteries pour micro-ondes, des horloges , des minuteries pour la photographie, des contrôleurs de bande dans des magnétophones et plus encore.

C'est tout ce que je voulais dire. J'espère que c'était intéressant. Merci de votre attention.

Source: https://habr.com/ru/post/fr467501/


All Articles