Tiny Turing Machine

De fablabo



Petite machine de Turing

Tiny Turing Machine.jpg

Contributeur·ice·s

Statut du projet

Fonctionnel

Statut de la publication

{{{status_pub}}}

License

Creative Commons Attribution CC-by-nc-sa-3.0 France

Inspiration

Fichiers source

Outils

Ingrédients

Lien





Petite machine de Turing où l’information écrite dans les cases du “ruban” (20 cases) est codée par l’état d’une led :

– 0 : led clignotante

– 1 : led allumée

– vide : led éteinte

Conformément au principe d’une machine de Turing, la logique de contrôle est assurée par l’exploitation d’une table de transitions traduisant le graphe des états possibles du système et évoluant en fonction des informations lues et transmises par la tête de lecture/écriture. La logique de contrôle opère les quatre fonctions suivantes :

– lecture de l’information inscrite dans la case au dessus de laquelle se trouve la tête ;

– écriture d’une information dans la case au dessus de laquelle se trouve la tête ;

– demande de déplacement de la tête d’une case à droite ou à gauche ;

– mise à jour de l’état courant du système à partir de la table de transitions et mémorisation.

Schéma de principe

Schema principe.jpg

La carte UNO gère l’automate du système. Elle adresse via l’UC les requêtes de lecture/écriture à la tête (HEAD) et réceptionne ou délivre les données correspondantes. L’UC délivre à l’ensemble des cases du ruban (CASE-BANDE) une base de temps CLK par rapport à laquelle sont modulées les données codant l’état de la case (cf. tableau ci-après). La transmission CASE-BANDE → HEAD se fait par émission lumineuse d’une LED et par émission infra-rouge en sens inverse. L’UC par ailleurs pilote le moteur de déplacement de la tête en fonction des demandes de la carte UNO. Des boutons poussoirs BPs permettent de sélectionner les différents programmes de l’automate (addition, soustraction…).

Codage signaux.jpg

Applications

Des graphes d’états pour la reconnaissance de palindromes, l’addition, la soustraction et la multiplication de nombres binaires ont été produits.

Exemple du graphe d’états pour l’addition de 2 nombres binaires :

Addition ttm.jpg


Chaque noeud du graphe correspond à un état de la machine.

Informations sur les arcs :

  • 1ère ligne → caractère lue : 0, 1 ou vide (□);
  • 2ème ligne → caractère écrit (0, 1, □ ou rien) + déplacement tête (>:droite, <:gauche).


Les deux nombres sont écrits l’un à la suite de l’autre séparés par une case vide. La tête de lecture/écriture est initialement positionnée à gauche du premier caractère. Le calcul consiste ici à incrémenter le premier nombre autant de fois qu’il est possible de décrémenter le second jusqu’à ce que ce dernier soit nul. Le résultat final prend donc la place du premier nombre.

Exemple pour le calcul de 5 + 3 :

Etat initial du ruban : 101 11

Etat final du ruban : 1000 00

Fabrication

Les principales pièces de la machine ont été fabriquées à la Platforme C/Ping à Nantes. Découpe laser des plateaux, impression 3D de la tête, des rails de guidage des cartes et de nombreux petits éléments.


Tiny Turing Machine.jpg