AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 TICS TL - Now Transistor Level

Aller en bas 
AuteurMessage
onilink_
Modérateur
avatar

Messages : 9050
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: TICS TL - Now Transistor Level   Dim 2 Sep 2018 - 15:32

J'ai étudié pendant quelques semaines le premier microprocesseur disponible sur le marché, le Intel 4004.
Il a l'avantage d'être a la fois très complexe et très simple.
Complexe dans le sens ou il permet de faire tout ce qu'on processeur permet de faire, ou presque.
Simple dans le sens ou son architecture 4 bit n'utilise que peu de transistors (dans les 2000).

Bref, c'est un parfait terrain de jeu pour ceux qui aiment les architectures d'ordinateurs, car assez ancien pour être décortiqué.
De plus beaucoup de documentation est disponible sur le net, des schémas, des émulateurs, etc...

Par contre, visualiser et comprendre des transistors c'est assez difficile, du coup j'ai fait une version de TICS totalement différente de la précédente, qui était basée sur des règles strictes pour augmenter les performances au max.
Comme dans TICS, on peut éditer nos circuits sur une bête image bitmap, avec le même système de fils. La différence est qu'on a désormais 3 composants:
- Power (en rouge foncé)
- Ground (en bleu ciel)
- Transistor (en vert foncé)

J'ai crée mon premier circuit intéressant, qui est un compteur + afficheur 7 segments hexa:

=> https://i.imgur.com/09gfslF.gif
On remarque que contrairement a TICS, les boucles et les double sens ne sont plus interdit.
Par contre, certains éléments vont nécessiter un signal d'horloge (le compteur par exemple).

Chose amusante, la structure de la ROM (bloc tout en bas) est très propre et simple.

J'ai aussi réussi à faire une mémoire dynamique dont chaque cellule n'utilise que trois transistors, en me basant
sur les registres du 4004:

=> https://i.imgur.com/yxNZG0s.png
Version lisible a gauche et version compressée a droite.

Il faut quelques étapes pour une lecture ou une écriture, mais la densité de stockage est plutôt épatante.
Dans le 4004 original par contre, il faut un système de lecture et réécriture permanente sans quoi les bits finissent par
s'effacer (d’où le nom: mémoire dynamique).
Dans mon simulateur ce n'est pas le cas, mais je me demande si ça ne pourrait pas être intéressant a ajouter.


Sinon le but de tout ça, ça serait d'en faire un petit puzzle game.
Du coup la je planche sur l'interface, l'éditeur, les puzzles etc...
J'espère que je perdrais pas la motive trop vite, car faire les éditeurs c'est toujours le truc le moins fun.

_________________

Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1412
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: TICS TL - Now Transistor Level   Dim 2 Sep 2018 - 20:26

Je te souhaite vraiment d'y parvenir. C'est un chouette projet.
Si il y a un petit port WebAssembly, ce serait vraiment sympa ;fleche_d

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9050
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: TICS TL - Now Transistor Level   Dim 2 Sep 2018 - 21:02

Merci,
j'utilise que des techos cross platform donc y a pas de raison que je puisse pas.
On verra quand j'aurais mon éditeur beh

_________________

Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9050
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: TICS TL - Now Transistor Level   Sam 15 Sep 2018 - 22:04

J'ai réussi a reproduire le intel 4003 (qui est un registre a décalage utilisé comme I/O expander du MCS-4):


Et il est fonctionnel bien entendu.

_________________

Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9050
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: TICS TL - Now Transistor Level   Sam 29 Sep 2018 - 20:36

@arthuro si tu passes par la un de ces 4, je cherche un algorithme pour passer d'un graphe a une image (transistors/portes logiques).
Autant passer d'une image a un graphe est trivial, autant dans l'autre sens je ne vois pas du tout quel genre d'algo il faudrait.
Vu que t'as fait diagon j'imagine que t'y vois un peu plus clair que moi a ce niveau.

_________________

Revenir en haut Aller en bas
Craki
Utilisateur confirmé: Rang ****
avatar

Messages : 1475
Localisation : Dans l’univers de métamatière

MessageSujet: Re: TICS TL - Now Transistor Level   Dim 30 Sep 2018 - 2:57

Genre faire du placement de graphe ? Le meilleur qui se fasse, c'est graphviz, et c'est open source. Par contre, t'auras pas tea jolis symboles de transistor. En ce moment, je suis des cours de Verilog. Si ça se trouve, ça peut faire ce que tu cherches aussi.

_________________
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1412
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: TICS TL - Now Transistor Level   Dim 30 Sep 2018 - 16:32

Super oni.

A quoi ressemble ton graph? Je suis pas certain de ce que tu souhaite faire.

Est ce que tu as un graph un peu comme un réseau de neurone où les neurone sont les portes logique et les arêtes les fils? Tu souhaite placer les portes sur un espace 2D en essayant de minimiser les croisement et la surface utilisée. C'est bien ça?


_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9050
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: TICS TL - Now Transistor Level   Lun 1 Oct 2018 - 10:23

C'est simple, pour interpréter mes circuits de transistor, je "parse" l'image et je la convertis en graphe.


https://i.imgur.com/v3VVtqa.png

=>

Graphe:
- un transistor est un sommet
- un GND / VCC est un sommet (unique, a priori)
- puis le tout est relié par des arrêtes

J'ai ensuite un algo pour faire la simulation directement sur ce graphe, avec une propagation et stabilisation du signal.


Maintenant l'idée, c'est justement de permettre de repasser a une image équivalente a celle du dessus, a partir de seulement mes données de graphe.
Le truc intéressant, c'est qu'on sait par exemple qu'un transistor à toujours 3 arrêtes max.

Le but c'est même pas de limiter au maximum les croisements (vu que ça coûte rien dans le simulateur), c'est juste d'avoir un truc relativement compact et pas trop moche visuellement. Mais au final tant que ça marche c'est déjà plutôt pas mal (le top serait que ça parte pas dans tous les sens si y a pas besoin, surtout).

@Craki
Je pourrais essayer de voir quel algo ils utilisent ouais, par contre mon truc est moins "général" (3 arrêtes max depuis une node transistor) donc y a probablement moyen d'avoir un truc plus simple ou efficace.

Sinon bien vu, j'aimerais faire un verilog like pour avoir une abstraction haut niveau.
Autant générer des graphes depuis un langage descriptif ça me parait pas trop compliqué, autant transformer mes graphes en une image pas trop dégueux ça me dépasse un peu.

_________________

Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1412
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: TICS TL - Now Transistor Level   Dim 7 Oct 2018 - 18:42

Et bien c'est compliqué (voir très compliqué).

Quelques idées:

1) Il faut trouver une position (x,y) pour chaque éléments. On peut minimiser 2 termes:
A) Pour l'ensemble des arêtes, la somme du carré de leurs longueurs.
B) Pour l'ensemble des couples de noeuds, on veut minimiser exp(distance - R) (R une constante fixé)

A + B est différentiable en la position des noeuds. Utiliser une descente de gradient pour trouver une solution pas trop mauvaise.

2) Placer les noeuds selon 1), placer les arêtes en utilisant un algorithme de plus courts chemins.
Si impossible, augmenter R et recommencer.

3) Utiliser un algorithme de type liquid rescale pour compacter un peu plus le graph.

Tu en dis quoi? Bon, c'est au moins 10 nuits de travail et le résultat n'est pas garantis.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9050
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: TICS TL - Now Transistor Level   Dim 7 Oct 2018 - 20:36

Ahah, franchement j'ose pas encore me lancer, c'est vrai que tout ce a quoi j'ai pensé a l'air bougrement complexe, et tu ne fais que confirmer.

Je pense qu'une chose pourra m'aider, c'est de faire des blocs logiques de base, pré-faits, puis utiliser l'assemblage automatique qu'entre ces blocs logiques.
Comme ça au final, ça diminuera beaucoup la complexité, sans qu'on perde totalement le côté automatique de la chose.

Mais bon, il faut quand même que j'arrive a implémenter un algo fonctionnel (même si a la limite je m'en fou des longueurs de câbles entre gros blocs logiques).

_________________

Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9050
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: TICS TL - Now Transistor Level   Jeu 18 Oct 2018 - 19:20

J'ai réussi a faire une partie qui me tenait beaucoup a cœur, la simulation de "layout" (comme ce qui est directement gravé sur silicium).

Une xnor fonctionnelle: http://wyvup.com/?c=A25hrnt
Bleu = metal
Rouge = poly
Vert et orange = diff

On a VCC et GND suivis de 2 inputs pour la porte XNOR, la sortie étant le câble qui va jusqu'a tout a droite.

_________________

Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9050
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: TICS TL - Now Transistor Level   Sam 20 Oct 2018 - 10:28

J'arrive enfin a simuler de vrai circuits.
Petite démo d'un counter du 4004 (un seul bit sur l'image, mais ça se chaîne avec des blocs identiques):

https://i.imgur.com/7nPxJYA.gif
et la photographie du DIE:

https://i.imgur.com/tieCg4X.png

_________________

Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
avatar

Messages : 7419
Localisation : Essonne

MessageSujet: Re: TICS TL - Now Transistor Level   Dim 28 Oct 2018 - 20:20

Mais t'est complètement dingue !
C'est génial, tu peut simuler une photo d'un die !

ça veut dire que tu peut exporter en vhdl plus ou moins facilement ta simu, et la synthétiser sur une vraie puce, et du coup copier des anciens systèmes !
Ou plus pédagogiquement afficher les diférentes étapes de fonctionnement d'une puce !

C'est juste grandiose, je t'applaudis biens haut !

PS :
Fait une page propre sur un site web, et envoie un mail à hack a day, tu aura des visiteurs, c'est quasiment certain.
Furrtek et Deus ex silicium pourront aussi être intérésés je pense. Mais je m’égare...

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
l'antique http://www.membres.lycos.fr/thedarkminousite/
Bienvenue au 2542eme utilisateur : Samolo !
Revenir en haut Aller en bas
http://www.tdms.fr
onilink_
Modérateur
avatar

Messages : 9050
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: TICS TL - Now Transistor Level   Dim 28 Oct 2018 - 21:46

Merchi Smile
Ouais, j'y ai pensé, mais pour ça faut que je finisse le projet :p

Par contre ça simule pas n'importe quel DIE, pour l'instant c'est limité a deux technologies (voir 3): celle du 4004 (équivalent a du nmos), a priori pmos (vu que c'est juste complémentaire a nmos), et cmos (comme le 6502).
De plus les circuits sont simplifiés au niveau de la simulation, donc tout ce qui est électronique analogique ça ne passe pas (pas de prise en compte des décalages temporels, des valeurs de résistance différentes, etc).
En revanche, tout le reste ça devrait rouler (je sais que pour le 4004 et le 6502 il n'y a pas de soucis, et niveau pédagogie je pense que le 6502 c'est le must).

Actuellement je décortique le 4004 complètement en me basant sur les schémas que j'ai trouvé sur internet (le 4004 est bien documenté).
Le but est de présenter les composants un a un (comme le counter plus haut), animés, et leur fonctionnement.

J'ai presque finalisé les registres il y a peu (c'était assez tendu car il y avait des condensateurs et des bootstrap qu'il a fallu "parser", sans parler des séquences de lecture/écriture des registres en eux même qui sont pas forcement évident).


Bref la l'idée c'est de finir mon "jeu"/puzzle ludique, qui aura plusieurs modes.
Mais en gros, l’intérêt premier sera d'apprendre les bases du reverse engineering hardware, en partant du plus simple (création de circuits a base de portes logiques) jusqu’à des modes de plus en plus proches du hardware (mode transistors schématisés, comme tout en haut, puis mode layout, comme le post précédent).

Si j'ai la motive, je pourrais pousser le concept encore plus loin avec du reverse engineering software... basé sur du hardware simulé :V


Du coup la je bosse sur un truc qui change un peu.
J'essaye de faire un shader qui transforme des layouts "binaires" (simples images noir et blanc) en images réalistes comme celle ci: https://i.imgur.com/w0Gg2Dq.png
Et c'est pas évident happy1

Ça servira au dernier mode de jeu.
En gros le joueur aura un layout réaliste comme sur l'image, et il devra redessiner un layout (qui pourra être simulé) par dessus pour faire ses tests, afin de comprendre un circuit et le re-designer sous forme de schémas (de transistors).

_________________

Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9050
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: TICS TL - Now Transistor Level   Dim 11 Nov 2018 - 21:09

Histoire de poster un peu...

Je me suis mis en tête de faire un simulateur hautement optimisé, en espérant réussir a faire tourner une atari (voir une nes) en temps réel depuis des layouts de transistor.
Des fous se sont déjà amusé à digitaliser et faire fonctionner le 6502 avec une simulation transistor level: http://visual6502.org/JSSim/index.html

Le problème c'est que leur algo est très lent (en plus d'être implémenté en javascript).
Sur github un mec a refait l'implé en C et il arrive a une vitesse moyenne de 1/150 ieme des performances originales du chipset (qui est cadencé a 1Mhz ~).
Le but est donc d'arriver a faire une opti d'un ordre de grandeur > 100 ...

Comme j'ai déjà fait une machine virtuelle pour exécuter des circuits logiques de manière très rapide, j'essaye donc de faire une conversion transistors => portes logiques pour espérer ensuite gagner BEAUCOUP de performances dans la simulation.

L'idée est donc de découper le circuit en sous parties, déterminer un équivalent en portes logique de ces sous circuits, puis déterminer l'ordre d’exécution afin de convertir ensuite le tout en instructions pour ma VM NAND (bref, compiler un circuit de transistors). Il faut aussi prendre en compte les mémoires.

Et une petite image bonus:

> chaque couleur représente le niveau de priorité d'un ensemble de sous circuits.

_________________

Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1412
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: TICS TL - Now Transistor Level   Dim 11 Nov 2018 - 23:26

Wow, j'espère que tu va y arriver. En tous cas c'est un beau projet!

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: TICS TL - Now Transistor Level   

Revenir en haut Aller en bas
 
TICS TL - Now Transistor Level
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Vos enfants ont-ils des tics?????
» Tics faciaux
» Tics nerveux
» tics nerveux !
» Les tics

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Informations :: Projets-
Sauter vers: